in CasViewerEclipsePlugin/uimaj-ep-casviewer-core/src/main/java/org/apache/uima/casviewer/ui/internal/annotations/FSContentProvider.java [265:364]
public static void getFSValues (FeatureStructure aFS, CAS aTCAS, int aNestingLevel,
PrintStream aOut)
{
Type stringType = CasIndexRepository.stringType;
// printTabs(aNestingLevel, aOut);
aOut.println(aFS.getType().getName());
//print all features
List<Feature> aFeatures = aFS.getType().getAppropriateFeatures();
Iterator<Feature> iter = aFeatures.iterator();
while (iter.hasNext())
{
Feature feat = (Feature)iter.next();
// printTabs(aNestingLevel + 1, aOut);
//print feature name
aOut.print(feat.getShortName());
aOut.print(" = ");
//print feature value (how we get this depends on feature's range type)
String rangeTypeName = feat.getRange().getName();
if (aTCAS.getTypeSystem().subsumes(stringType, feat.getRange())) {
// must check for sub-types of string
String str = aFS.getStringValue(feat);
if (str == null) {
aOut.println("null");
} else {
aOut.print("\"");
if (str.length() > 64) {
str = str.substring(0,64) + "...";
}
aOut.print(str);
aOut.println("\"");
}
} else if (CAS.TYPE_NAME_INTEGER.equals(rangeTypeName)) {
aOut.println(aFS.getIntValue(feat));
} else if (CAS.TYPE_NAME_FLOAT.equals(rangeTypeName)) {
aOut.println(aFS.getFloatValue(feat));
} else if (CAS.TYPE_NAME_STRING_ARRAY.equals(rangeTypeName)) {
StringArrayFS arrayFS = (StringArrayFS)aFS.getFeatureValue(feat);
if (arrayFS == null) {
aOut.println("null");
} else {
String[] vals = arrayFS.toArray();
aOut.print("[");
for (int i=0; i < vals.length - 1; i++) {
aOut.print(vals[i]);
aOut.print(',');
}
if (vals.length > 0) {
aOut.print(vals[vals.length - 1]);
}
aOut.println("]\"");
}
} else if (CAS.TYPE_NAME_INTEGER_ARRAY.equals(rangeTypeName)) {
IntArrayFS arrayFS = (IntArrayFS)aFS.getFeatureValue(feat);
if (arrayFS == null) {
aOut.println("null");
} else {
int[] vals = arrayFS.toArray();
aOut.print("[");
for (int i=0; i < vals.length - 1; i++)
{
aOut.print(vals[i]);
aOut.print(',');
}
if (vals.length > 0)
{
aOut.print(vals[vals.length - 1]);
}
aOut.println("]\"");
}
} else if (CAS.TYPE_NAME_FLOAT_ARRAY.equals(rangeTypeName)) {
FloatArrayFS arrayFS = (FloatArrayFS)aFS.getFeatureValue(feat);
if (arrayFS == null)
{
aOut.println("null");
} else {
float[] vals = arrayFS.toArray();
aOut.print("[");
for (int i=0; i < vals.length - 1; i++)
{
aOut.print(vals[i]);
aOut.print(',');
}
if (vals.length > 0) {
aOut.print(vals[vals.length - 1]);
}
aOut.println("]\"");
}
} else {
// non-primitive type
FeatureStructure val = aFS.getFeatureValue(feat);
if (val == null) {
aOut.println("null");
} else {
getFSValues(val, aTCAS, aNestingLevel + 1, aOut);
}
}
}
} // getFSValues