use of io.atlasmap.v2.SubStringAfter in project atlasmap by atlasmap.
the class StringComplexFieldActions method subStringAfter.
@AtlasFieldActionInfo(name = "SubStringAfter", sourceType = FieldType.STRING, targetType = FieldType.STRING, sourceCollectionType = CollectionType.NONE, targetCollectionType = CollectionType.NONE)
public static String subStringAfter(Action action, String input) {
if (input == null || input.length() == 0) {
return input;
}
if (action == null || !(action instanceof SubStringAfter) || ((SubStringAfter) action).getStartIndex() == null || ((SubStringAfter) action).getStartIndex() < 0 || ((SubStringAfter) action).getMatch() == null || (((SubStringAfter) action).getEndIndex() != null && ((SubStringAfter) action).getEndIndex() < ((SubStringAfter) action).getStartIndex())) {
throw new IllegalArgumentException("SubStringAfter action must be specified with a positive startIndex and a string to match");
}
SubStringAfter subStringAfter = (SubStringAfter) action;
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());
}
use of io.atlasmap.v2.SubStringAfter in project atlasmap by atlasmap.
the class AtlasBaseActionsTest method testActions.
@Test
public void testActions() throws Exception {
List<ActionDetail> actions = DefaultAtlasContextFactory.getInstance().getFieldActionService().listActionDetails();
for (ActionDetail d : actions) {
System.out.println(d.getName());
}
this.runActionTest(new Uppercase(), "fname", "FNAME", String.class);
this.runActionTest(new Lowercase(), "fnAme", "fname", String.class);
this.runActionTest(new Trim(), " fname ", "fname", String.class);
this.runActionTest(new TrimLeft(), " fname ", "fname ", String.class);
this.runActionTest(new TrimRight(), " fname ", " fname", String.class);
this.runActionTest(new Capitalize(), "fname", "Fname", String.class);
this.runActionTest(new SeparateByDash(), "f:name", "f-name", String.class);
this.runActionTest(new SeparateByUnderscore(), "f-na_me", "f_na_me", String.class);
SubString s = new SubString();
s.setStartIndex(0);
s.setEndIndex(3);
this.runActionTest(s, "12345", "123", String.class);
SubStringAfter s1 = new SubStringAfter();
s1.setStartIndex(3);
s1.setEndIndex(null);
s1.setMatch("foo");
this.runActionTest(s1, "foobarblah", "blah", String.class);
SubStringBefore s2 = new SubStringBefore();
s2.setStartIndex(3);
s2.setEndIndex(null);
s2.setMatch("blah");
this.runActionTest(s2, "foobarblah", "bar", String.class);
PadStringRight ps = new PadStringRight();
ps.setPadCharacter("X");
ps.setPadCount(5);
this.runActionTest(ps, "fname", "fnameXXXXX", String.class);
PadStringLeft pl = new PadStringLeft();
pl.setPadCharacter("X");
pl.setPadCount(5);
this.runActionTest(pl, "fname", "XXXXXfname", String.class);
String result = (String) runActionTest(new GenerateUUID(), "fname", null, String.class);
assertTrue(Pattern.compile("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}").matcher(result).matches());
}
use of io.atlasmap.v2.SubStringAfter in project atlasmap by atlasmap.
the class StringComplexFieldActionsTest method testSubStringAfter.
@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);
}
}
Aggregations