package nl.ipo.cds.etl.operations.transform;
import nl.ipo.cds.attributemapping.operations.annotation.Execute;
import nl.ipo.cds.attributemapping.operations.annotation.Input;
import nl.ipo.cds.attributemapping.operations.annotation.MappingOperation;
@MappingOperation (propertiesClass = SubstringTransform.Settings.class)
public class SubstringTransform {
@Execute
public String execute (final @Input("string") String input, final Settings settings) {
if (input == null || input.isEmpty ()) {
return "";
}
final int start = settings.getStartIndex () - 1;
final int end = Math.min (start + settings.getLength (), input.length ());
if (start >= end || start < 0) {
return "";
}
return input.substring (start, end);
}
public final static class Settings {
private int startIndex = 1;
private int length = 1;
public int getStartIndex() {
return startIndex;
}
public void setStartIndex(int startIndex) {
this.startIndex = startIndex;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
}
}