@Test public void testSubStringAfter() { SubStringAfter action = new SubStringAfter(); action.setStartIndex(3); action.setEndIndex(null); action.setMatch("foo"); assertNull(StringComplexFieldActions.subStringAfter(action, null)); assertEquals("", StringComplexFieldActions.subStringAfter(action, "")); assertEquals("blah", StringComplexFieldActions.subStringAfter(action, "foobarblah")); assertEquals("blahfoo", StringComplexFieldActions.subStringAfter(action, "foobarblahfoo")); assertEquals("barblah", StringComplexFieldActions.subStringAfter(action, "barblah")); action.setEndIndex(7); assertEquals("blah", StringComplexFieldActions.subStringAfter(action, "foobarblahfoo")); action.setEndIndex(3); assertEquals("", StringComplexFieldActions.subStringAfter(action, "foobarblahfoo")); try { StringComplexFieldActions.subStringAfter(null, "aa"); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { assertTrue(true); } try { SubStringAfter err = new SubStringAfter(); StringComplexFieldActions.subStringAfter(err, "aa"); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { assertTrue(true); } try { SubStringAfter err = new SubStringAfter(); err.setEndIndex(5); err.setStartIndex(0); StringComplexFieldActions.subStringAfter(err, "aa"); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { assertTrue(true); } try { SubStringAfter err = new SubStringAfter(); err.setEndIndex(0); err.setStartIndex(5); StringComplexFieldActions.subStringAfter(err, "aa"); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { assertTrue(true); } }
@AtlasActionProcessor public static String subStringAfter(SubStringAfter subStringAfter, String input) { if (input == null || input.length() == 0) { return input; } if (subStringAfter == null || subStringAfter.getStartIndex() == null || subStringAfter.getStartIndex() < 0 || subStringAfter.getMatch() == null || (subStringAfter.getEndIndex() != null && subStringAfter.getEndIndex() < subStringAfter.getStartIndex())) { throw new IllegalArgumentException( "SubStringAfter action must be specified with a positive startIndex and a string to match"); } int idx = input.indexOf(subStringAfter.getMatch()); if (idx < 0) { return input; } idx = idx + subStringAfter.getMatch().length(); return doSubString(input.substring(idx), subStringAfter.getStartIndex(), subStringAfter.getEndIndex()); }
StringComplexFieldActions implements AtlasFieldAction { @AtlasActionProcessor public static String subStringAfter(SubStringAfter subStringAfter, String input) { if (input == null || input.length() == 0) { return input; } if (subStringAfter == null || subStringAfter.getStartIndex() == null || subStringAfter.getStartIndex() < 0 || subStringAfter.getMatch() == null || (subStringAfter.getEndIndex() != null && subStringAfter.getEndIndex() < subStringAfter.getStartIndex())) { throw new IllegalArgumentException( "SubStringAfter action must be specified with a positive startIndex and a string to match"); } int idx = input.indexOf(subStringAfter.getMatch()); if (idx < 0) { return input; } idx = idx + subStringAfter.getMatch().length(); return doSubString(input.substring(idx), subStringAfter.getStartIndex(), subStringAfter.getEndIndex()); } }
StringComplexFieldActions implements AtlasFieldAction { @AtlasActionProcessor public static String subStringAfter(SubStringAfter subStringAfter, String input) { if (input == null || input.length() == 0) { return input; } if (subStringAfter == null || subStringAfter.getStartIndex() == null || subStringAfter.getStartIndex() < 0 || subStringAfter.getMatch() == null || (subStringAfter.getEndIndex() != null && subStringAfter.getEndIndex() < subStringAfter.getStartIndex())) { throw new IllegalArgumentException( "SubStringAfter action must be specified with a positive startIndex and a string to match"); } int idx = input.indexOf(subStringAfter.getMatch()); if (idx < 0) { return input; } idx = idx + subStringAfter.getMatch().length(); return doSubString(input.substring(idx), subStringAfter.getStartIndex(), subStringAfter.getEndIndex()); }  }
StringComplexFieldActions implements AtlasFieldAction { @AtlasActionProcessor public static String subStringAfter(SubStringAfter subStringAfter, String input) { if (input == null || input.length() == 0) { return input; } if (subStringAfter == null || subStringAfter.getStartIndex() == null || subStringAfter.getStartIndex() < 0 || subStringAfter.getMatch() == null || (subStringAfter.getEndIndex() != null && subStringAfter.getEndIndex() < subStringAfter.getStartIndex())) { throw new IllegalArgumentException( "SubStringAfter action must be specified with a positive startIndex and a string to match"); } int idx = input.indexOf(subStringAfter.getMatch()); if (idx < 0) { return input; } idx = idx + subStringAfter.getMatch().length(); return doSubString(input.substring(idx), subStringAfter.getStartIndex(), subStringAfter.getEndIndex()); }  @AtlasActionProcessor static String append(Append append, String input); @AtlasActionProcessor(sourceType = FieldType.ANY) static String concatenate(Concatenate concat, List<String> inputs); @AtlasActionProcessor static Boolean endsWith(EndsWith endsWith, String input); @AtlasActionProcessor static String format(Format format, List<Object> input); @AtlasActionProcessor static String genareteUUID(GenerateUUID action); @AtlasActionProcessor static Number indexOf(IndexOf indexOf, String input); @AtlasActionProcessor static Number lastIndexOf(LastIndexOf lastIndexOf, String input); @AtlasActionProcessor static String padStringRight(PadStringRight padStringRight, String input); @AtlasActionProcessor static String padStringLeft(PadStringLeft padStringLeft, String input); @AtlasActionProcessor static String prepend(Prepend action, String input); @AtlasActionProcessor static String replaceAll(ReplaceAll replaceAll, String input); @AtlasActionProcessor static String replaceFirst(ReplaceFirst replaceFirst, String input); @AtlasActionProcessor(sourceType = FieldType.ANY) static String[] split(Split split, String input); @AtlasActionProcessor(sourceType = FieldType.ANY) static String[] repeat(Repeat repeat, String input); @AtlasActionProcessor static Boolean startsWith(StartsWith startsWith, String input); @AtlasActionProcessor static String subString(SubString subString, String input); @AtlasActionProcessor static String subStringAfter(SubStringAfter subStringAfter, String input); @AtlasActionProcessor static String subStringBefore(SubStringBefore subStringBefore, String input); }
StringComplexFieldActions implements AtlasFieldAction { @AtlasActionProcessor public static String subStringAfter(SubStringAfter subStringAfter, String input) { if (input == null || input.length() == 0) { return input; } if (subStringAfter == null || subStringAfter.getStartIndex() == null || subStringAfter.getStartIndex() < 0 || subStringAfter.getMatch() == null || (subStringAfter.getEndIndex() != null && subStringAfter.getEndIndex() < subStringAfter.getStartIndex())) { throw new IllegalArgumentException( "SubStringAfter action must be specified with a positive startIndex and a string to match"); } int idx = input.indexOf(subStringAfter.getMatch()); if (idx < 0) { return input; } idx = idx + subStringAfter.getMatch().length(); return doSubString(input.substring(idx), subStringAfter.getStartIndex(), subStringAfter.getEndIndex()); }  @AtlasActionProcessor static String append(Append append, String input); @AtlasActionProcessor(sourceType = FieldType.ANY) static String concatenate(Concatenate concat, List<String> inputs); @AtlasActionProcessor static Boolean endsWith(EndsWith endsWith, String input); @AtlasActionProcessor static String format(Format format, List<Object> input); @AtlasActionProcessor static String genareteUUID(GenerateUUID action); @AtlasActionProcessor static Number indexOf(IndexOf indexOf, String input); @AtlasActionProcessor static Number lastIndexOf(LastIndexOf lastIndexOf, String input); @AtlasActionProcessor static String padStringRight(PadStringRight padStringRight, String input); @AtlasActionProcessor static String padStringLeft(PadStringLeft padStringLeft, String input); @AtlasActionProcessor static String prepend(Prepend action, String input); @AtlasActionProcessor static String replaceAll(ReplaceAll replaceAll, String input); @AtlasActionProcessor static String replaceFirst(ReplaceFirst replaceFirst, String input); @AtlasActionProcessor(sourceType = FieldType.ANY) static String[] split(Split split, String input); @AtlasActionProcessor(sourceType = FieldType.ANY) static String[] repeat(Repeat repeat, String input); @AtlasActionProcessor static Boolean startsWith(StartsWith startsWith, String input); @AtlasActionProcessor static String subString(SubString subString, String input); @AtlasActionProcessor static String subStringAfter(SubStringAfter subStringAfter, String input); @AtlasActionProcessor static String subStringBefore(SubStringBefore subStringBefore, String input); static final String STRING_SEPARATOR_REGEX; static final Pattern STRING_SEPARATOR_PATTERN; }