Package org.apache.uima.cas.impl
Class FeatureValuePathImpl
- java.lang.Object
-
- org.apache.uima.cas.impl.FeatureValuePathImpl
-
- All Implemented Interfaces:
FeatureValuePath
public class FeatureValuePathImpl extends java.lang.Object implements FeatureValuePath
Contains CAS Type and Feature objects to represent a feature path of the form feature1/.../featureN. Each part that is enclosed within / is referred to as "path snippet" below. Also contains the necessary evaluation logic to yield the value of the feature path. For leaf snippets, the following "special features" are defined:coveredText()can be accessed usingevaluateAsStringtypeName()can be accessed usingevaluateAsStringfsId()can be accessed usingevaluateAsInt. Its result can be used to retrieve an FS from the current LowLevel-CAS.uniqueId()can be accessed usingevaluateAsInt. Its result can be used to uniquely identify an FS for a document (even if the document is split over several CAS chunks)
- A feature path may contain 0 or more features of type
FSArray, but not as the last path snippet. The next path snippet must contain the fully qualified type name, example:family/members[0]/somepackage.Person:name - A feature path may also contain 0 or 1 feature of type
IntArray, StringArray, FloatArray, but only as the last path snippet.
[index]returns the array entry atindex[last]returns the last entry of the array[]returns an array of values.[]is only allowed 0 or 1 time in a feature path. If it is used,getValueTypewill return one of the following:CAS.TYPE_NAME_STRING_ARRAY ,CAS.TYPE_NAME_INTEGER_ARRAY,CAS.TYPE_NAME_FLOAT_ARRAY.
FSArray, an actual feature name can be omitted, and only the array access operator can be used. Examples:[]/somepackage.Person:coveredText() [last]/somepackage.Person:fsId()
Usage- To create the feature path, use
FeaturePath.getFeaturePath. Note that the client code needs to keep track of the "start type" of the feature path, that is, the type that contains the attribute used in the first snippet of the path. - At
typeSystemInitof your component (CAS consumer or TAE), calltypeSystemInitof the feature path. - Call
getValueTypeto find out whether the feature path evaluates to a String, and int, a float, or their array counterparts. - Depending on the leaf type, call the appropriate
evaluateAsmethods
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Objectevaluate(int currentFS, LowLevelCAS cas)java.lang.FloatevaluateAsFloat(int currentFS, LowLevelCAS cas)java.lang.Float[]evaluateAsFloatArray(int currentFS, LowLevelCAS cas)java.lang.IntegerevaluateAsInt(int currentFS, LowLevelCAS cas)java.lang.Integer[]evaluateAsIntArray(int currentFS, LowLevelCAS cas)java.lang.StringevaluateAsString(int currentFS, LowLevelCAS cas)Evaluates each snippet of the feature path.java.lang.String[]evaluateAsStringArray(int currentFS, LowLevelCAS cas)static FeatureValuePathImplgetFeaturePath(java.lang.String featurePath)intgetFSType()Returns the type for which the last feature in the feature path is defined.java.lang.StringgetValueType()Returns the type that this feature path will evaluate to.java.lang.StringtoString()voidtypeSystemInit(int fsType, LowLevelTypeSystem ts)
-
-
-
Method Detail
-
getFeaturePath
public static FeatureValuePathImpl getFeaturePath(java.lang.String featurePath) throws CASRuntimeException
- Throws:
CASRuntimeException
-
evaluate
public java.lang.Object evaluate(int currentFS, LowLevelCAS cas)- Specified by:
evaluatein interfaceFeatureValuePath
-
evaluateAsFloat
public java.lang.Float evaluateAsFloat(int currentFS, LowLevelCAS cas)- Specified by:
evaluateAsFloatin interfaceFeatureValuePath
-
evaluateAsFloatArray
public java.lang.Float[] evaluateAsFloatArray(int currentFS, LowLevelCAS cas)- Specified by:
evaluateAsFloatArrayin interfaceFeatureValuePath
-
evaluateAsInt
public java.lang.Integer evaluateAsInt(int currentFS, LowLevelCAS cas)- Specified by:
evaluateAsIntin interfaceFeatureValuePath
-
evaluateAsIntArray
public java.lang.Integer[] evaluateAsIntArray(int currentFS, LowLevelCAS cas)- Specified by:
evaluateAsIntArrayin interfaceFeatureValuePath
-
evaluateAsString
public java.lang.String evaluateAsString(int currentFS, LowLevelCAS cas)Evaluates each snippet of the feature path. Returns a String representation of the leaf value of the path. Returnsnullif some feature within the path is not set. If the leaf snippet isCOVERED_TEXT, returns the covered text ofcurrentFS.- Specified by:
evaluateAsStringin interfaceFeatureValuePath- Parameters:
currentFS- the current Feature Structurecas- CAS- Returns:
- A string representation of the leaf value.
-
evaluateAsStringArray
public java.lang.String[] evaluateAsStringArray(int currentFS, LowLevelCAS cas)- Specified by:
evaluateAsStringArrayin interfaceFeatureValuePath
-
getFSType
public int getFSType()
Returns the type for which the last feature in the feature path is defined. Assumes thattypeSystemInithas been called prior to this method.- For a feature path
feature1/.../featureN-1/featureN, returns the type of featureN. - For a feature path
feature1/.../featureN-1/typeN:featureN, returns the type code for typeN. (For example, if the range type of featureN-1 is FSList or FSArray) - For a feature path
feature1, where feature1 is simple-valued, returns the type that was used intypeSystemInit
- Specified by:
getFSTypein interfaceFeatureValuePath- Returns:
- the type for which the last feature in the feature path is defined.
- For a feature path
-
getValueType
public java.lang.String getValueType()
Returns the type that this feature path will evaluate to. Can be used to select the correct "evaluateAs" method.- Specified by:
getValueTypein interfaceFeatureValuePath- Returns:
- String the type that this feature path will evaluate to. Will be one of the following:
- CAS.TYPE_NAME_STRING
- CAS.TYPE_NAME_STRING_ARRAY
- CAS.TYPE_NAME_INTEGER
- CAS.TYPE_NAME_INTEGER_ARRAY
- CAS.TYPE_NAME_FLOAT
- CAS.TYPE_NAME_FLOAT_ARRAY
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
typeSystemInit
public void typeSystemInit(int fsType, LowLevelTypeSystem ts) throws CASRuntimeException- Specified by:
typeSystemInitin interfaceFeatureValuePath- Throws:
CASRuntimeException
-
-