in Lucas/src/main/java/org/apache/uima/lucas/indexer/analysis/AnnotationTokenStream.java [471:517]
protected Iterator<String> createFeatureValueIterator(
FeatureStructure srcFeatureStructure,
Collection<String> featureNames) {
List<String> values = new LinkedList<String>();
Type featureType = srcFeatureStructure.getType();
if (featureNames.size() == 0)
values.add(currentAnnotation.getCoveredText());
for (String featureName : featureNames) {
Feature feature = featureType.getFeatureByBaseName(featureName);
if (feature.getRange().isArray()) {
StringArray fsArray = (StringArray) srcFeatureStructure
.getFeatureValue(feature);
if (featureNames.size() == 1) {
for (int i = 0; i < fsArray.size(); i++)
values.add(fsArray.get(i).toString());
} else {
String value = "";
for (int i = 0; i < fsArray.size(); i++) {
value = value.concat(fsArray.get(i).toString());
if (i < fsArray.size() - 1)
value = value.concat(delimiter);
}
values.add(value);
}
} else
values.add(getValueForFeature(srcFeatureStructure, feature,
featureFormats.get(feature.getShortName())));
}
String value = "";
if (delimiter != null) {
for (int i = 0; i < values.size(); i++) {
if (values.get(i) == null)
continue;
value = value.concat(values.get(i));
if (i < values.size() - 1)
value = value.concat(delimiter);
}
values.clear();
values.add(value);
}
return Iterators.filter(values.iterator(),
new NotNullPredicate<String>());
}