package net.ion.craken.node.convert.rows.function;
import net.ion.craken.node.ReadNode;
import net.ion.craken.node.convert.rows.ColumnParser;
import net.ion.craken.node.convert.rows.IColumn;
import net.ion.framework.util.NumberUtil;
import net.ion.framework.util.StringUtil;
public class SubstrFunction extends SingleColumn{
private IColumn col ;
private String label ;
private IColumn begin ;
private IColumn end ;
public SubstrFunction(ColumnParser cparser, String[] args, String label){
col = cparser.parse(args[0]) ;
begin = cparser.parse(args[1].trim());
end = args.length == 3 ? cparser.parse(args[2].trim()) : cparser.parse(String.valueOf(Integer.MAX_VALUE)) ;
this.label = label ;
}
public String getLabel() {
return label;
}
public Object getValue(ReadNode node) {
String result = StringUtil.toString(col.getValue(node));
return result.substring( NumberUtil.toIntWithMark(begin.getValue(node), 0) , Math.min(NumberUtil.toIntWithMark(end.getValue(node),0), result.length())) ;
}
}