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 2015/05/18 21:32:37 UTC

svn commit: r1680076 - in /uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta: RutaStream.java action/ImplicitFeatureAction.java expression/feature/SimpleFeatureExpression.java

Author: pkluegl
Date: Mon May 18 19:32:37 2015
New Revision: 1680076

URL: http://svn.apache.org/r1680076
Log:
no jira - allow out of window assignment with feature expressions for now... further testing

Modified:
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ImplicitFeatureAction.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/SimpleFeatureExpression.java

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java?rev=1680076&r1=1680075&r2=1680076&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java Mon May 18 19:32:37 2015
@@ -785,11 +785,15 @@ public class RutaStream extends FSIterat
   
   
   public boolean isVisible(AnnotationFS annotationFS) {
+    return isVisible(annotationFS, false);
+  }
+  
+  public boolean isVisible(AnnotationFS annotationFS, boolean ignoreWindow) {
     if (annotationFS == null) {
       return false;
     }
     AnnotationFS windowAnnotation = filter.getWindowAnnotation();
-    if (windowAnnotation != null
+    if (!ignoreWindow && windowAnnotation != null
             && (annotationFS.getBegin() < windowAnnotation.getBegin() || annotationFS.getEnd() > windowAnnotation
                     .getEnd())) {
       return false;

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ImplicitFeatureAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ImplicitFeatureAction.java?rev=1680076&r1=1680075&r2=1680076&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ImplicitFeatureAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/ImplicitFeatureAction.java Mon May 18 19:32:37 2015
@@ -34,8 +34,10 @@ 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.feature.FeatureExpression;
 import org.apache.uima.ruta.expression.feature.FeatureMatchExpression;
 import org.apache.uima.ruta.expression.feature.GenericFeatureExpression;
+import org.apache.uima.ruta.expression.feature.SimpleFeatureExpression;
 import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.expression.string.IStringExpression;
 import org.apache.uima.ruta.expression.type.ITypeExpression;
@@ -71,7 +73,7 @@ public class ImplicitFeatureAction exten
     }
     Collection<AnnotationFS> featureAnnotations = expr.getFeatureAnnotations(annotations, stream,
             element.getParent(), false);
-    if(featureAnnotations.isEmpty()) {
+    if (featureAnnotations.isEmpty()) {
       // null value in feature, but we require the host
       featureAnnotations = annotations;
     }
@@ -135,15 +137,27 @@ public class ImplicitFeatureAction exten
         }
       }
     } else if (argExpr instanceof GenericFeatureExpression && !feature.getRange().isPrimitive()) {
-      TypeExpression typeExpr = ((GenericFeatureExpression) argExpr).getFeatureExpression()
-              .getTypeExpr(element.getParent());
+      FeatureExpression fe = ((GenericFeatureExpression) argExpr).getFeatureExpression();
+      TypeExpression typeExpr = fe.getTypeExpr(element.getParent());
       Type t = typeExpr.getType(element.getParent());
       List<AnnotationFS> inWindow = stream.getAnnotationsInWindow(a, t);
-      if (feature.getRange().isArray()) {
-        a.setFeatureValue(feature, UIMAUtils.toFSArray(stream.getJCas(), inWindow));
+      if (fe instanceof SimpleFeatureExpression) {
+        SimpleFeatureExpression sfe = (SimpleFeatureExpression) fe;
+        List<AnnotationFS> featureAnnotations = new ArrayList<>(sfe.getFeatureAnnotations(inWindow,
+                stream, element.getParent(), false));
+        if (feature.getRange().isArray()) {
+          a.setFeatureValue(feature, UIMAUtils.toFSArray(stream.getJCas(), featureAnnotations));
+        } else if (!featureAnnotations.isEmpty()) {
+          AnnotationFS annotation = featureAnnotations.get(0);
+          a.setFeatureValue(feature, annotation);
+        }
       } else {
-        AnnotationFS annotation = inWindow.get(0);
-        a.setFeatureValue(feature, annotation);
+        if (feature.getRange().isArray()) {
+          a.setFeatureValue(feature, UIMAUtils.toFSArray(stream.getJCas(), inWindow));
+        } else {
+          AnnotationFS annotation = inWindow.get(0);
+          a.setFeatureValue(feature, annotation);
+        }
       }
     }
   }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/SimpleFeatureExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/SimpleFeatureExpression.java?rev=1680076&r1=1680075&r2=1680076&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/SimpleFeatureExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/SimpleFeatureExpression.java Mon May 18 19:32:37 2015
@@ -152,7 +152,7 @@ public class SimpleFeatureExpression ext
         }
       }
       if (!(this instanceof FeatureMatchExpression)) {
-        if (stream.isVisible(afs)) {
+        if (stream.isVisible(afs, true)) {
           result.add(afs);
         }
       } else {