You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2015/12/29 16:52:03 UTC

svn commit: r1722163 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java

Author: schor
Date: Tue Dec 29 15:52:03 2015
New Revision: 1722163

URL: http://svn.apache.org/viewvc?rev=1722163&view=rev
Log:
add Comparable interface impl, fixups for prettyprint

Modified:
    uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java

Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java?rev=1722163&r1=1722162&r2=1722163&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java Tue Dec 29 15:52:03 2015
@@ -43,12 +43,14 @@ import org.apache.uima.cas.function.JCas
 import org.apache.uima.cas.function.JCas_setter_int;
 import org.apache.uima.cas.function.JCas_setter_long;
 import org.apache.uima.cas.function.JCas_setter_short;
+import org.apache.uima.cas.impl.SlotKinds.SlotKind;
 import org.apache.uima.internal.util.StringUtils;
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.jcas.cas.BooleanArray;
 import org.apache.uima.jcas.cas.ByteArray;
 import org.apache.uima.jcas.cas.CommonArray;
 import org.apache.uima.jcas.cas.DoubleArray;
+import org.apache.uima.jcas.cas.FSArray;
 import org.apache.uima.jcas.cas.FloatArray;
 import org.apache.uima.jcas.cas.IntegerArray;
 import org.apache.uima.jcas.cas.JavaObjectArray;
@@ -79,7 +81,7 @@ import org.apache.uima.util.Misc;
  *     -- can't be static - may be multiple type systems in use
  * 
  */
-public class FeatureStructureImplC implements FeatureStructure, Cloneable {
+public class FeatureStructureImplC implements FeatureStructure, Cloneable, Comparable<FeatureStructure> {
 
   // note: these must be enabled to make the test cases work
   public static final String DISABLE_RUNTIME_FEATURE_VALIDATION = "uima.disable_runtime_feature_validation";
@@ -237,8 +239,10 @@ public class FeatureStructureImplC imple
   }
   
   /**
+   * starts with _ 
    * @return the UIMA TypeImpl for this Feature Structure
    */
+@Override
   public int _getTypeCode() {
     return _typeImpl.getCode();
   }
@@ -766,11 +770,17 @@ public class FeatureStructureImplC imple
     
     final TypeImpl ti = this._typeImpl;
     if (ti != null) { // null for REMOVED marker
-      ti.getFeaturesAsStream()
+      if (ti.isArray() && (fs instanceof FSArray)) {
+        for (TOP item : ((FSArray)fs)._getTheArray()) {
+          getPrintRefs(printRefs, item);
+        }
+      } else {
+        ti.getFeaturesAsStream()
           .filter(fi -> fi.getRangeImpl().isRefType)     // is ref type
           .map(fi -> this.getFeatureValue(fi)) // get the feature value
           .filter(refFs -> refFs != null)            // skip null ones
           .forEachOrdered(refFs -> getPrintRefs(printRefs, refFs));
+      }
     }
   }
 
@@ -843,7 +853,7 @@ public class FeatureStructureImplC imple
     switch (_getTypeCode()) {
     case TypeSystemImpl.stringArrayTypeCode: {
       StringArray a = (StringArray) this;
-      printArrayElements(a.size(), a::get, indent, buf);
+      printArrayElements(a.size(), i -> a.get(i), indent, buf);
       return;
     }
     case TypeSystemImpl.intArrayTypeCode: {
@@ -889,10 +899,9 @@ public class FeatureStructureImplC imple
       buf.append(fi.getShortName() + ": ");
       TypeImpl range = (TypeImpl) fi.getRange();
       
-      if (range.getCode() == TypeSystemImpl.stringTypeCode ||
-          range.isStringSubtype()) {
+      if (range.isStringOrStringSubtype()) {
         String stringVal = getStringValue(fi);
-        stringVal = (null == stringVal) ? "<null>" : "\"" + stringVal + "\"";
+        stringVal = (null == stringVal) ? "<null>" : "\"" + Misc.elideString(stringVal, 15) + "\"";
         buf.append(stringVal + '\n');
         continue;
       }
@@ -941,7 +950,11 @@ public class FeatureStructureImplC imple
           buf.append(", ");
         }
         String element = f.apply(i); //this._casView.ll_getStringArrayValue(this.getAddress(), i);
-        buf.append("\"" + element + "\"");
+        if (null == element) {
+          buf.append("null");
+        } else {
+          buf.append("\"" + Misc.elideString(element, 15) + "\"");
+        }
       }
       
       if (arrayLen > numToPrint) {
@@ -955,4 +968,25 @@ public class FeatureStructureImplC imple
     throw new CASRuntimeException(CASRuntimeException.INTERNAL_ERROR); // dummy, always overridden
   }
   
+  public void setIntLikeValue(SlotKind slotKind, FeatureImpl fi, int v) {
+    switch(slotKind) {
+    case Slot_Boolean: setBooleanValue(fi, v == 1); break;
+    case Slot_Byte: setByteValue(fi, (byte) v); break;
+    case Slot_Short: setShortValue(fi, (short) v); break;
+    case Slot_Int: setIntValue(fi, v); break;
+    case Slot_Float: setFloatValue(fi, Float.intBitsToFloat(v)); break;
+    default: assert(false);
+    }
+  }
+
+
+  /* (non-Javadoc)
+   * Supports "natural" compare order based on id values
+   * @see java.lang.Comparable#compareTo(java.lang.Object)
+   */
+  @Override
+  public int compareTo(FeatureStructure o) {
+    return Integer.compare(this._id, o.id());
+  }
+  
 }