Class ArrayParseResult
java.lang.Object
de.iip_ecosphere.platform.connectors.parser.ArrayParseResult
- All Implemented Interfaces:
InputParser.ParseResult<String>
- Direct Known Subclasses:
TextLineParser.TextLineParseResult
An array-based parse result for data parsed to strings.
- Author:
- Holger Eichelberger, SSE
-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedArrayParseResult(String[] data) Creates an array-based parse result.protectedArrayParseResult(String[] data, int baseIndex, ArrayParseResult parent) Creates an array-based parse result. -
Method Summary
Modifier and TypeMethodDescriptionintIf the actual element is an array, return the size.protected String[]getData()Returns the data object.voidgetData(de.iip_ecosphere.platform.support.function.IOConsumer<String> ifPresent, String name, int... indexes) Returns the value of the data field for the given fieldnameor with via the givenindex.Returns the value of the data field for the given fieldnameor with via the givenindex.intReturns the number of parsed data fields.getFieldName(de.iip_ecosphere.platform.support.function.IOConsumer<String> valueCons, int... index) Returns the name of the field.private intgetIndex(int[] indexes) Returns the one-dimensional array index into the data.voidgetLocalData(de.iip_ecosphere.platform.support.function.IOConsumer<String> ifPresent, String name, int... indexes) Returns the value of the data field for the given fieldnameor with via the givenindex.getLocalData(String name, int... indexes) Returns the value of the data field for the given fieldnameor with via the givenindex.Sets the hierarchical substructure denoted bynameas current scope for further resolution.stepOut()Steps out of the actual context set byInputParser.ParseResult.stepInto(String, int).Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface de.iip_ecosphere.platform.connectors.parser.InputParser.ParseResult
getFieldName
-
Field Details
-
data
-
parent
-
baseIndex
private int baseIndex
-
-
Constructor Details
-
ArrayParseResult
Creates an array-based parse result.- Parameters:
data- the parsed data
-
ArrayParseResult
Creates an array-based parse result.- Parameters:
data- the parsed databaseIndex- the base index set as context root, {code 0} for top-levelparent- the parent result representing the context where a#stepInto(String, int)happened, null for the top context
-
-
Method Details
-
getDataCount
public int getDataCount()Description copied from interface:InputParser.ParseResultReturns the number of parsed data fields.- Specified by:
getDataCountin interfaceInputParser.ParseResult<String>- Returns:
- the number of data fields (non-negative)
-
getFieldName
public String getFieldName(de.iip_ecosphere.platform.support.function.IOConsumer<String> valueCons, int... index) Description copied from interface:InputParser.ParseResultReturns the name of the field. This operation may not be efficient on all input parsers, in particular if no index positions are recorded. However, for generically parsing back some structures, this operation is required.- Specified by:
getFieldNamein interfaceInputParser.ParseResult<String>- Parameters:
valueCons- a value consumer to handle the value of the field (if found) in the same step, may be null for noneindex- the path of (nested) 0-based indexes to the field, the sum must be less thanInputParser.ParseResult.getDataCount()- Returns:
- the name of the field or empty if not known
-
getData
Description copied from interface:InputParser.ParseResultReturns the value of the data field for the given fieldnameor with via the givenindex. Primary index goes via name and if not given/mapped, index-based access shall be used as fallback. Names may be hierarchical. May be overridden if direct access to names is provided by the parsed structure, e.g., in JSON. Thus, no index-access is provided in the first place by this interface.- Specified by:
getDatain interfaceInputParser.ParseResult<String>- Parameters:
name- the name of the data field, may contain hierarchical names separated byInputParser.SEPARATOR, may be based on the scope set byInputParser.ParseResult.stepInto(String, int)indexes- the path of (nested) 0-based indexes to the field, the sum must be less thanInputParser.ParseResult.getDataCount()- Returns:
- the data value
- Throws:
IOException- if the mapped index or the givenindex<0 || index >=InputParser.ParseResult.getDataCount()
-
getLocalData
Description copied from interface:InputParser.ParseResultReturns the value of the data field for the given fieldnameor with via the givenindex. Primary index goes via name and if not given/mapped, index-based access shall be used as fallback. No hierarchical name interpretation happens here (local). In combination withInputParser.ParseResult.stepInto(String, int), this method shall be faster thanInputParser.ParseResult.getData(String, int...).- Specified by:
getLocalDatain interfaceInputParser.ParseResult<String>- Parameters:
name- the name of the data fieldindexes- the path of (nested) 0-based indexes to the field, the sum must be less thanInputParser.ParseResult.getDataCount()- Returns:
- the data value
- Throws:
IOException- if the mapped index or the givenindex<0 || index >=InputParser.ParseResult.getDataCount()
-
getIndex
private int getIndex(int[] indexes) Returns the one-dimensional array index into the data.- Parameters:
indexes- the path of (nested) 0-based indexes to the field, the sum must be less thangetDataCount()- Returns:
- the 0-based index
-
getLocalData
public void getLocalData(de.iip_ecosphere.platform.support.function.IOConsumer<String> ifPresent, String name, int... indexes) throws IOException Description copied from interface:InputParser.ParseResultReturns the value of the data field for the given fieldnameor with via the givenindex. Primary index goes via name and if not given/mapped, index-based access shall be used as fallback. No hierarchical name interpretation happens here (local). In combination withInputParser.ParseResult.stepInto(String, int), this method shall be faster thanInputParser.ParseResult.getData(IOConsumer, String, int...).- Specified by:
getLocalDatain interfaceInputParser.ParseResult<String>- Parameters:
ifPresent- consumer called if a data value was found. The value is passed toifPresentfor further processingname- the name of the data fieldindexes- the path of (nested) 0-based indexes to the field, the sum must be less thanInputParser.ParseResult.getDataCount()- Throws:
IOException- if an exception occurred inifPresent
-
getData
public void getData(de.iip_ecosphere.platform.support.function.IOConsumer<String> ifPresent, String name, int... indexes) throws IOException Description copied from interface:InputParser.ParseResultReturns the value of the data field for the given fieldnameor with via the givenindex. Primary index goes via name and if not given/mapped, index-based access shall be used as fallback. Names may be hierarchical. May be overridden if direct access to names is provided by the parsed structure, e.g., in JSON. Thus, no index-access is provided in the first place by this interface. This method shall not throw any exception.- Specified by:
getDatain interfaceInputParser.ParseResult<String>- Parameters:
ifPresent- consumer called if a data value was found. The value is passed toifPresentfor further processingname- the name of the data field, may contain hierarchical names separated byInputParser.SEPARATOR, may be based on the scope set byInputParser.ParseResult.stepInto(String, int)indexes- the path of (nested) 0-based indexes to the field, the sum must be less thanInputParser.ParseResult.getDataCount()- Throws:
IOException- if an
-
stepInto
Description copied from interface:InputParser.ParseResultSets the hierarchical substructure denoted bynameas current scope for further resolution. When overriding, declare the actual type as result type.- Specified by:
stepIntoin interfaceInputParser.ParseResult<String>- Parameters:
name- non-hierarchical name of contained substructureindex- the 0-based indexes to the field, must be less thanInputParser.ParseResult.getDataCount()- Returns:
- the sub parse-result taking
nameas context, use#stepOut()to leave that context
-
stepOut
Description copied from interface:InputParser.ParseResultSteps out of the actual context set byInputParser.ParseResult.stepInto(String, int). When overriding, declare the actual type as result type.- Specified by:
stepOutin interfaceInputParser.ParseResult<String>- Returns:
- the actual (parent) context, may be null if this step out was illegal in a non-nested context
-
getData
Returns the data object.- Returns:
- the data object
-
getArraySize
public int getArraySize()Description copied from interface:InputParser.ParseResultIf the actual element is an array, return the size.- Specified by:
getArraySizein interfaceInputParser.ParseResult<String>- Returns:
- the size, may be negative
-