Package net.sf.basedb.util.parser
Class ColFunction
- java.lang.Object
-
- net.sf.basedb.util.parser.ColFunction
-
- All Implemented Interfaces:
JepFunction
,org.nfunk.jep.function.PostfixMathCommandI
public class ColFunction extends Object implements JepFunction
Adds acol()
function to Jep. The col function is used with theFlatFileParser
to get the value of a data column. The argument to the col function is either the column name or index (0-based). Use theFlatFileParser.getMapper(String)
with an argument starting with an equal sign to create a mapper that uses Jep.FlatFileParser ffp = ... Mapper diameterMapper = ffp.getMapper("=col('Radius') * 2"); while (ffp.hasMoreData()) { Data data = ffp.nextData(); float diameter = diameterMapper.getFloat(data); }
- Version:
- 2.0
- Author:
- nicklas
- Last modified
- $Date: 2019-03-21 13:37:48 +0100 (tors, 21 mars 2019) $
-
-
Field Summary
Fields Modifier and Type Field Description private Map<String,Integer>
columnHeaders
private FlatFileParser.Data
data
private Formatter<Date>
dateFormat
private boolean
ignoreNonExistingColumns
private Type
nextValueType
private NumberFormat
numberFormat
private ParsePosition
pos
-
Constructor Summary
Constructors Constructor Description ColFunction(List<String> columnHeaders, NumberFormat numberFormat)
ColFunction(List<String> columnHeaders, NumberFormat numberFormat, Formatter<Date> dateFormat)
ColFunction(Map<String,Integer> columnHeaders, NumberFormat numberFormat)
ColFunction(Map<String,Integer> columnHeaders, NumberFormat numberFormat, Formatter<Date> dateFormat)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
checkNumberOfParameters(int n)
private Integer
findColumn(String regex)
Find column index by checking each column header against a regular expression.String
getFunctionName()
Get the name of this function.int
getNumberOfParameters()
void
run(Stack stack)
void
setCurNumberOfParameters(int n)
void
setData(FlatFileParser.Data data, Type valueType)
void
setIgnoreNonExistingColumns(boolean ignoreNonExistingColumns)
Set to TRUE to ignore non-existing columns.
-
-
-
Field Detail
-
numberFormat
private final NumberFormat numberFormat
-
pos
private final ParsePosition pos
-
data
private FlatFileParser.Data data
-
nextValueType
private Type nextValueType
-
ignoreNonExistingColumns
private boolean ignoreNonExistingColumns
-
-
Constructor Detail
-
ColFunction
public ColFunction(Map<String,Integer> columnHeaders, NumberFormat numberFormat)
-
ColFunction
public ColFunction(Map<String,Integer> columnHeaders, NumberFormat numberFormat, Formatter<Date> dateFormat)
- Since:
- 3.15
-
ColFunction
public ColFunction(List<String> columnHeaders, NumberFormat numberFormat)
-
ColFunction
public ColFunction(List<String> columnHeaders, NumberFormat numberFormat, Formatter<Date> dateFormat)
- Since:
- 3.15
-
-
Method Detail
-
getFunctionName
public String getFunctionName()
Description copied from interface:JepFunction
Get the name of this function. It is used when registering the function with aJEP
parser.- Specified by:
getFunctionName
in interfaceJepFunction
- Returns:
- The string "col"
- See Also:
JEP.addFunction(String, PostfixMathCommandI)
-
getNumberOfParameters
public int getNumberOfParameters()
- Specified by:
getNumberOfParameters
in interfaceorg.nfunk.jep.function.PostfixMathCommandI
- Returns:
- Always 1
-
setCurNumberOfParameters
public void setCurNumberOfParameters(int n)
- Specified by:
setCurNumberOfParameters
in interfaceorg.nfunk.jep.function.PostfixMathCommandI
-
checkNumberOfParameters
public boolean checkNumberOfParameters(int n)
- Specified by:
checkNumberOfParameters
in interfaceorg.nfunk.jep.function.PostfixMathCommandI
-
run
public void run(Stack stack) throws ParseException
- Specified by:
run
in interfaceorg.nfunk.jep.function.PostfixMathCommandI
- Throws:
ParseException
-
setIgnoreNonExistingColumns
public void setIgnoreNonExistingColumns(boolean ignoreNonExistingColumns)
Set to TRUE to ignore non-existing columns. Set to FALSE to throw an exception (default).- Since:
- 2.6
-
setData
public void setData(FlatFileParser.Data data, Type valueType)
-
findColumn
private Integer findColumn(String regex)
Find column index by checking each column header against a regular expression. The first match found is returned. The map is updated with a new regex -> index entry.- Returns:
- The column index or null if no column is found or if the string is not a valid regular expression
-
-