protected Iterator createFeatureValueIterator()

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>());
	}