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 {