Github user mattf-horton commented on a diff in the pull request: https://github.com/apache/incubator-metron/pull/516#discussion_r110292164 --- Diff: metron-platform/metron-common/src/main/java/org/apache/metron/common/dsl/functions/StringFunctions.java --- @@ -343,4 +343,89 @@ public Object apply(List<Object> args) { return String.format(format, formatArgs); } } + + @Stellar( name="CHOP" + , description = "Remove the last character from a String" + , params = { "the String to chop last character from, may be null"} + , returns = "String without last character, null if null String input" + ) + public static class chop extends BaseStellarFunction { + + @Override + public Object apply(List<Object> strings) { + + if(strings.size() == 0) { + throw new IllegalArgumentException("[CHOP] missing argument: string to be chopped"); + } + + String chop = StringUtils.chop((String) strings.get(0)); + return chop; + } + } + + @Stellar( name = "PREPENDIFMISSING" + , description = "Prepends the prefix to the start of the string if the string does not already start with any of the prefixes" + , params = { "str - The string.", "prefix - The prefix to prepend to the start of the string", "prefixes - Additional prefixes that are valid" } + , returns = "A new String if prefix was prepended, the same string otherwise." + ) + public static class prependifmissing extends BaseStellarFunction { + + @Override + public Object apply(List<Object> strings) { + + String prefixed; + switch (strings.size()) { + case 2: prefixed = org.apache.commons.lang3.StringUtils.prependIfMissing((String) strings.get(0), (String) strings.get(1)); + break; + case 3: prefixed = org.apache.commons.lang3.StringUtils.prependIfMissing((String) strings.get(0), (String) strings.get(1), (String) strings.get(2)); + break; + default: throw new IllegalArgumentException("[PREPENDIFMISSING] incorrect arguments. Usage: PREPENDIFMISSING <String> <prefix> [<prefix>...]"); + } + return prefixed; + } + } + + @Stellar( name = "APPENDIFMISSING" + , description = "Appends the suffix to the end of the string if the string does not already end with any of the suffixes" + , params = { "str - The string.", "suffix - The suffix to append to the end of the string", "suffixes - Additional suffixes that are valid terminators" } + , returns = "A new String if suffix was appended, the same string otherwise." + ) + public static class appendifmissing extends BaseStellarFunction { + + @Override + public Object apply(List<Object> strings) { + + String suffixed; + switch (strings.size()) { + case 2: + suffixed = org.apache.commons.lang3.StringUtils.appendIfMissing((String) strings.get(0), (String) strings.get(1)); + break; + case 3: + suffixed = org.apache.commons.lang3.StringUtils.appendIfMissing((String) strings.get(0), (String) strings.get(1), (String) strings.get(2)); + break; + default: + throw new IllegalArgumentException("[APPENDIFMISSING] incorrect arguments. Usage: APPENDIFMISSING <String> <prefix> [<prefix>...]"); + } + return suffixed; + } + } + + @Stellar( name = "COUNTMATCHES" + , description = "Counts how many times the substring appears in the larger string" + , params = { "str - the CharSequence to check, may be null", "sub - the substring to count, may be null"} + , returns = "the number of occurrences, 0 if either CharSequence is null" --- End diff -- "the number of non-overlapping occurrences..."
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---