You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2014/03/08 13:39:14 UTC

svn commit: r1575535 - in /uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta: action/ActionFactory.java action/SetFeatureAction.java verbalize/ActionVerbalizer.java

Author: pkluegl
Date: Sat Mar  8 12:39:14 2014
New Revision: 1575535

URL: http://svn.apache.org/r1575535
Log:
UIMA-3670
- fixed SETFEATURE action

Modified:
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ActionFactory.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/SetFeatureAction.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ActionFactory.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ActionFactory.java?rev=1575535&r1=1575534&r2=1575535&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ActionFactory.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ActionFactory.java Sat Mar  8 12:39:14 2014
@@ -26,6 +26,7 @@ import java.util.logging.Level;
 import org.antlr.runtime.Token;
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.expression.IRutaExpression;
+import org.apache.uima.ruta.expression.RutaExpression;
 import org.apache.uima.ruta.expression.bool.IBooleanExpression;
 import org.apache.uima.ruta.expression.feature.FeatureMatchExpression;
 import org.apache.uima.ruta.expression.list.ListExpression;
@@ -149,16 +150,9 @@ public class ActionFactory {
     return new RemoveFilterTypeAction(types);
   }
 
-  public static AbstractRutaAction createSetFeatureAction(IStringExpression f, Object v,
+  public static AbstractRutaAction createSetFeatureAction(IStringExpression f, IRutaExpression v,
           RutaBlock parent) {
-    if (v instanceof INumberExpression) {
-      return new SetFeatureAction(f, (INumberExpression) v);
-    } else if (v instanceof IBooleanExpression) {
-      return new SetFeatureAction(f, (IBooleanExpression) v);
-    } else if (v instanceof IStringExpression) {
-      return new SetFeatureAction(f, (IStringExpression) v);
-    }
-    return null;
+    return new SetFeatureAction(f, v);
   }
 
   public static AbstractRutaAction createUnmarkAction(TypeExpression f,
@@ -191,7 +185,8 @@ public class ActionFactory {
     return new TrieAction(list, map, ignoreCase, ignoreLength, edit, distance, ignoreChar);
   }
 
-  public static AbstractRutaAction createExecAction(String ns, TypeListExpression tl, IStringExpression view, RutaBlock env) {
+  public static AbstractRutaAction createExecAction(String ns, TypeListExpression tl,
+          IStringExpression view, RutaBlock env) {
     return new ExecAction(ns, tl, view);
   }
 
@@ -224,7 +219,8 @@ public class ActionFactory {
     return new AddAction(var == null ? null : var.getText(), list);
   }
 
-  public static AbstractRutaAction createGetListAction(Token var, IStringExpression op, RutaBlock env) {
+  public static AbstractRutaAction createGetListAction(Token var, IStringExpression op,
+          RutaBlock env) {
     return new GetListAction(var == null ? null : var.getText(), op);
   }
 

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/SetFeatureAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/SetFeatureAction.java?rev=1575535&r1=1575534&r2=1575535&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/SetFeatureAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/SetFeatureAction.java Sat Mar  8 12:39:14 2014
@@ -27,6 +27,7 @@ import org.apache.uima.cas.text.Annotati
 import org.apache.uima.ruta.RutaBlock;
 import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.UIMAConstants;
+import org.apache.uima.ruta.expression.IRutaExpression;
 import org.apache.uima.ruta.expression.bool.IBooleanExpression;
 import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.expression.string.IStringExpression;
@@ -40,58 +41,18 @@ public class SetFeatureAction extends Ab
 
   private final IStringExpression featureStringExpression;
 
-  private IStringExpression stringExpr;
+  private final IRutaExpression expr;
 
-  private INumberExpression numberExpr;
-
-  private IBooleanExpression booleanExpr;
-
-  private TypeExpression typeExpr;
-
-  protected SetFeatureAction(IStringExpression feature) {
+  public SetFeatureAction(IStringExpression feature, IRutaExpression expr) {
     super();
     this.featureStringExpression = feature;
-  }
-
-  public SetFeatureAction(IStringExpression feature, IStringExpression stringExpr) {
-    this(feature);
-    this.stringExpr = stringExpr;
-  }
-
-  public SetFeatureAction(IStringExpression feature, INumberExpression numberExpr) {
-    this(feature);
-    this.numberExpr = numberExpr;
-  }
-
-  public SetFeatureAction(IStringExpression feature, IBooleanExpression booleanExpr) {
-    this(feature);
-    this.booleanExpr = booleanExpr;
-  }
-
-  public SetFeatureAction(IStringExpression feature, TypeExpression typeExpr) {
-    this(feature);
-    this.typeExpr = typeExpr;
+    this.expr = expr;
   }
 
   public IStringExpression getFeatureStringExpression() {
     return featureStringExpression;
   }
 
-  public IStringExpression getStringExpr() {
-    return stringExpr;
-  }
-
-  public INumberExpression getNumberExpr() {
-    return numberExpr;
-  }
-
-  public IBooleanExpression getBooleanExpr() {
-    return booleanExpr;
-  }
-
-  public TypeExpression getTypeExpr() {
-    return typeExpr;
-  }
 
   @Override
   public void execute(RuleMatch match, RuleElement element, RutaStream stream, InferenceCrowd crowd) {
@@ -101,35 +62,43 @@ public class SetFeatureAction extends Ab
     for (AnnotationFS annotationFS : matchedAnnotations) {
       Feature feature = annotationFS.getType().getFeatureByBaseName(featureString);
       if (feature != null) {
+        Type range = feature.getRange();
+        String rangeName = range.getName();
         stream.getCas().removeFsFromIndexes(annotationFS);
-        if (stringExpr != null) {
+        if (rangeName.equals(UIMAConstants.TYPE_STRING) && expr instanceof IStringExpression) {
+          IStringExpression stringExpr = (IStringExpression) expr;
           String string = stringExpr.getStringValue(parent, match, element, stream);
           annotationFS.setStringValue(feature, string);
-        } else if (numberExpr != null) {
-          String range = feature.getRange().getName();
-          if (range.equals(UIMAConstants.TYPE_INTEGER)) {
+        }else  if (range.equals(UIMAConstants.TYPE_INTEGER) && expr instanceof INumberExpression) {
+            INumberExpression numberExpr = (INumberExpression) expr;
             int v = numberExpr.getIntegerValue(parent, match, element, stream);
             annotationFS.setIntValue(feature, v);
-          } else if (range.equals(UIMAConstants.TYPE_DOUBLE)) {
+          } else if (range.equals(UIMAConstants.TYPE_DOUBLE) && expr instanceof INumberExpression) {
+            INumberExpression numberExpr = (INumberExpression) expr;
             double v = numberExpr.getDoubleValue(parent, match, element, stream);
             annotationFS.setDoubleValue(feature, v);
-          } else if (range.equals(UIMAConstants.TYPE_FLOAT)) {
+          } else if (range.equals(UIMAConstants.TYPE_FLOAT) && expr instanceof INumberExpression) {
+            INumberExpression numberExpr = (INumberExpression) expr;
             float v = (float) numberExpr.getFloatValue(parent, match, element, stream);
             annotationFS.setFloatValue(feature, v);
-          } else if (range.equals(UIMAConstants.TYPE_BYTE)) {
+          } else if (range.equals(UIMAConstants.TYPE_BYTE) && expr instanceof INumberExpression) {
+            INumberExpression numberExpr = (INumberExpression) expr;
             byte v = (byte) numberExpr.getIntegerValue(parent, match, element, stream);
             annotationFS.setByteValue(feature, v);
-          } else if (range.equals(UIMAConstants.TYPE_SHORT)) {
+          } else if (range.equals(UIMAConstants.TYPE_SHORT) && expr instanceof INumberExpression) {
+            INumberExpression numberExpr = (INumberExpression) expr;
             short v = (short) numberExpr.getIntegerValue(parent, match, element, stream);
             annotationFS.setShortValue(feature, v);
-          } else if (range.equals(UIMAConstants.TYPE_LONG)) {
+          } else if (range.equals(UIMAConstants.TYPE_LONG) && expr instanceof INumberExpression) {
+            INumberExpression numberExpr = (INumberExpression) expr;
             long v = numberExpr.getIntegerValue(parent, match, element, stream);
             annotationFS.setLongValue(feature, v);
-          }
-        } else if (booleanExpr != null) {
+        } else if (range.equals(UIMAConstants.TYPE_BOOLEAN)&& expr instanceof IBooleanExpression) {
+          IBooleanExpression booleanExpr = (IBooleanExpression) expr;
           boolean v = booleanExpr.getBooleanValue(parent, match, element, stream);
           annotationFS.setBooleanValue(feature, v);
-        } else if (typeExpr != null) {
+        } else if (expr instanceof TypeExpression) {
+          TypeExpression typeExpr = (TypeExpression) expr;
           Type t = typeExpr.getType(parent);
           List<AnnotationFS> inWindow = stream.getAnnotationsInWindow(annotationFS, t);
           if (feature.getRange().isArray()) {
@@ -143,4 +112,8 @@ public class SetFeatureAction extends Ab
       }
     }
   }
+
+  public IRutaExpression getExpr() {
+    return expr;
+  }
 }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java?rev=1575535&r1=1575534&r2=1575535&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java Sat Mar  8 12:39:14 2014
@@ -328,16 +328,7 @@ public class ActionVerbalizer {
     } else if (action instanceof SetFeatureAction) {
       SetFeatureAction a = (SetFeatureAction) action;
       String e1 = verbalizer.verbalize(a.getFeatureStringExpression());
-      String e2 = "";
-      if (a.getBooleanExpr() != null) {
-        e2 = verbalizer.verbalize(a.getBooleanExpr());
-      } else if (a.getNumberExpr() != null) {
-        e2 = verbalizer.verbalize(a.getNumberExpr());
-      } else if (a.getStringExpr() != null) {
-        e2 = verbalizer.verbalize(a.getStringExpr());
-      } else if (a.getTypeExpr() != null) {
-        e2 = verbalizer.verbalize(a.getTypeExpr());
-      }
+      String e2 = verbalizer.verbalize(a.getExpr());
       return name + e1 + ", " + e2 + ")";
     } else if (action instanceof GetFeatureAction) {
       GetFeatureAction a = (GetFeatureAction) action;