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;