use of org.apache.uima.jcas.tcas.Annotation in project stanbol by apache.
the class UIMALocal method concertToCasLight.
private List<FeatureStructure> concertToCasLight(JCas jcas, String typeName) {
List<FeatureStructure> ret = new ArrayList<FeatureStructure>();
Type type = jcas.getTypeSystem().getType(typeName);
List<org.apache.uima.cas.Feature> featList = type.getFeatures();
for (FSIterator<org.apache.uima.cas.FeatureStructure> iterator = jcas.getFSIndexRepository().getAllIndexedFS(type); iterator.hasNext(); ) {
org.apache.uima.cas.FeatureStructure casFs = iterator.next();
logger.debug("Processing UIMA CAS FeatureSet:" + casFs.toString());
FeatureStructure newFs = new FeatureStructure(UUID.randomUUID().toString(), type.getShortName());
for (org.apache.uima.cas.Feature casF : featList) {
String fName = casF.getShortName();
logger.debug("Feature Name:" + fName);
if (casF.getRange().getName().equals("uima.cas.Sofa")) {
continue;
}
if (casF.getRange().isPrimitive()) {
logger.debug("Getting primitive value...");
if (casF.getRange().getName().equals("uima.cas.String")) {
String fVal = casFs.getStringValue(casF);
newFs.addFeature(new Feature<String>(fName, fVal));
} else if (casF.getRange().getName().equals("uima.cas.Integer")) {
int fVal = casFs.getIntValue(casF);
newFs.addFeature(new Feature<Integer>(fName, fVal));
} else if (casF.getRange().getName().equals("uima.cas.Short")) {
short fVal = casFs.getShortValue(casF);
newFs.addFeature(new Feature<Integer>(fName, (int) fVal));
} else if (casF.getRange().getName().equals("uima.cas.Byte")) {
byte fVal = casFs.getByteValue(casF);
newFs.addFeature(new Feature<Integer>(fName, (int) fVal));
} else if (casF.getRange().getName().equals("uima.cas.Double")) {
double fVal = casFs.getDoubleValue(casF);
newFs.addFeature(new Feature<Double>(fName, fVal));
} else if (casF.getRange().getName().equals("uima.cas.Float")) {
float fVal = casFs.getFloatValue(casF);
newFs.addFeature(new Feature<Double>(fName, (double) fVal));
} else {
Object fVal = casFs.clone();
newFs.addFeature(new Feature<Object>(fName, fVal));
}
} else {
logger.debug("Getting FeatureStructure value...");
throw new UnsupportedOperationException("This client cannot handle FeatureStructure features");
}
if (casFs instanceof Annotation && "coveredText".equals(fName)) {
newFs.setCoveredText(((Annotation) casFs).getCoveredText());
}
}
logger.debug("FeatureStructure:" + newFs);
ret.add(newFs);
}
return ret;
}
Aggregations