You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jo...@apache.org on 2015/04/21 08:18:55 UTC
[09/12] incubator-nifi git commit: NIFI-271 checkpoint push because
there are so many changes. Long way to go but got through dto library
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/HapiMessage.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/HapiMessage.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/HapiMessage.java
index ddd28b2..74a8f6c 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/HapiMessage.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/HapiMessage.java
@@ -32,63 +32,64 @@ import ca.uhn.hl7v2.model.Segment;
import ca.uhn.hl7v2.model.Structure;
public class HapiMessage implements HL7Message {
- private final Message message;
- private final List<HL7Segment> allSegments;
- private final Map<String, List<HL7Segment>> segmentMap;
-
- public HapiMessage(final Message message) throws HL7Exception {
- this.message = message;
-
- allSegments = new ArrayList<>();
- populateSegments(message, allSegments);
-
- segmentMap = new HashMap<>();
- for ( final HL7Segment segment : allSegments ) {
- final String segmentName = segment.getName();
- List<HL7Segment> segmentList = segmentMap.get(segmentName);
- if ( segmentList == null ) {
- segmentList = new ArrayList<>();
- segmentMap.put(segmentName, segmentList);
- }
-
- segmentList.add(segment);
- }
- }
-
- private void populateSegments(final Group group, final List<HL7Segment> segments) throws HL7Exception {
- for ( final String structureName : group.getNames() ) {
- final Structure[] structures = group.getAll(structureName);
- if ( group.isGroup(structureName) ) {
- for ( final Structure structure : structures ) {
- populateSegments((Group) structure, segments);
- }
- } else {
- for ( final Structure structure : structures ) {
- final Segment segment = (Segment) structure;
- final HapiSegment hapiSegment = new HapiSegment(segment);
- segments.add(hapiSegment);
- }
- }
- }
- }
-
- @Override
- public List<HL7Segment> getSegments() {
- return Collections.unmodifiableList(allSegments);
- }
- @Override
- public List<HL7Segment> getSegments(final String segmentType) {
- final List<HL7Segment> segments = segmentMap.get(segmentType);
- if ( segments == null ) {
- return Collections.emptyList();
- }
-
- return Collections.unmodifiableList(segments);
- }
+ private final Message message;
+ private final List<HL7Segment> allSegments;
+ private final Map<String, List<HL7Segment>> segmentMap;
- @Override
- public String toString() {
- return message.toString();
- }
+ public HapiMessage(final Message message) throws HL7Exception {
+ this.message = message;
+
+ allSegments = new ArrayList<>();
+ populateSegments(message, allSegments);
+
+ segmentMap = new HashMap<>();
+ for (final HL7Segment segment : allSegments) {
+ final String segmentName = segment.getName();
+ List<HL7Segment> segmentList = segmentMap.get(segmentName);
+ if (segmentList == null) {
+ segmentList = new ArrayList<>();
+ segmentMap.put(segmentName, segmentList);
+ }
+
+ segmentList.add(segment);
+ }
+ }
+
+ private void populateSegments(final Group group, final List<HL7Segment> segments) throws HL7Exception {
+ for (final String structureName : group.getNames()) {
+ final Structure[] structures = group.getAll(structureName);
+ if (group.isGroup(structureName)) {
+ for (final Structure structure : structures) {
+ populateSegments((Group) structure, segments);
+ }
+ } else {
+ for (final Structure structure : structures) {
+ final Segment segment = (Segment) structure;
+ final HapiSegment hapiSegment = new HapiSegment(segment);
+ segments.add(hapiSegment);
+ }
+ }
+ }
+ }
+
+ @Override
+ public List<HL7Segment> getSegments() {
+ return Collections.unmodifiableList(allSegments);
+ }
+
+ @Override
+ public List<HL7Segment> getSegments(final String segmentType) {
+ final List<HL7Segment> segments = segmentMap.get(segmentType);
+ if (segments == null) {
+ return Collections.emptyList();
+ }
+
+ return Collections.unmodifiableList(segments);
+ }
+
+ @Override
+ public String toString() {
+ return message.toString();
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/HapiSegment.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/HapiSegment.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/HapiSegment.java
index d50afdb..20e646c 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/HapiSegment.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/HapiSegment.java
@@ -28,42 +28,42 @@ import ca.uhn.hl7v2.model.Segment;
import ca.uhn.hl7v2.model.Type;
public class HapiSegment implements HL7Segment {
- private final Segment segment;
- private final List<HL7Field> fields;
-
- public HapiSegment(final Segment segment) throws HL7Exception {
- this.segment = segment;
-
- final List<HL7Field> fieldList = new ArrayList<>();
- for (int i=1; i <= segment.numFields(); i++) {
- final Type[] types = segment.getField(i);
- if ( types == null || types.length == 0 ) {
- fieldList.add(new EmptyField());
- continue;
- }
-
- for ( final Type type : types ) {
- fieldList.add(new HapiField(type));
- }
- }
-
- this.fields = Collections.unmodifiableList(fieldList);
- }
-
-
- @Override
- public String getName() {
- return segment.getName();
- }
+ private final Segment segment;
+ private final List<HL7Field> fields;
- @Override
- public List<HL7Field> getFields() {
- return fields;
- }
+ public HapiSegment(final Segment segment) throws HL7Exception {
+ this.segment = segment;
- @Override
- public String toString() {
- return segment.toString();
- }
+ final List<HL7Field> fieldList = new ArrayList<>();
+ for (int i = 1; i <= segment.numFields(); i++) {
+ final Type[] types = segment.getField(i);
+
+ if (types == null || types.length == 0) {
+ fieldList.add(new EmptyField());
+ continue;
+ }
+
+ for (final Type type : types) {
+ fieldList.add(new HapiField(type));
+ }
+ }
+
+ this.fields = Collections.unmodifiableList(fieldList);
+ }
+
+ @Override
+ public String getName() {
+ return segment.getName();
+ }
+
+ @Override
+ public List<HL7Field> getFields() {
+ return fields;
+ }
+
+ @Override
+ public String toString() {
+ return segment.toString();
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/SingleValueField.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/SingleValueField.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/SingleValueField.java
index ed99077..b8a6351 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/SingleValueField.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/hapi/SingleValueField.java
@@ -23,20 +23,21 @@ import org.apache.nifi.hl7.model.HL7Component;
import org.apache.nifi.hl7.model.HL7Field;
public class SingleValueField implements HL7Field {
- private final String value;
-
- public SingleValueField(final String value) {
- this.value = value;
- }
-
- @Override
- public String getValue() {
- return value;
- }
-
- @Override
- public List<HL7Component> getComponents() {
- return Collections.emptyList();
- }
+
+ private final String value;
+
+ public SingleValueField(final String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public List<HL7Component> getComponents() {
+ return Collections.emptyList();
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/io/HL7Reader.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/io/HL7Reader.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/io/HL7Reader.java
index e7b31a4..4d2f276 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/io/HL7Reader.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/io/HL7Reader.java
@@ -22,6 +22,6 @@ import org.apache.nifi.hl7.model.HL7Message;
public interface HL7Reader {
- HL7Message nextMessage() throws IOException;
-
+ HL7Message nextMessage() throws IOException;
+
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/io/exception/InvalidHL7Exception.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/io/exception/InvalidHL7Exception.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/io/exception/InvalidHL7Exception.java
index 669f40c..c0c74f9 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/io/exception/InvalidHL7Exception.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/io/exception/InvalidHL7Exception.java
@@ -19,22 +19,23 @@ package org.apache.nifi.hl7.io.exception;
import java.io.IOException;
public class InvalidHL7Exception extends IOException {
- private static final long serialVersionUID = -5675416667224562441L;
- public InvalidHL7Exception() {
- super();
- }
+ private static final long serialVersionUID = -5675416667224562441L;
- public InvalidHL7Exception(String message, Throwable cause) {
- super(message, cause);
- }
+ public InvalidHL7Exception() {
+ super();
+ }
- public InvalidHL7Exception(String message) {
- super(message);
- }
+ public InvalidHL7Exception(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public InvalidHL7Exception(String message) {
+ super(message);
+ }
+
+ public InvalidHL7Exception(Throwable cause) {
+ super(cause);
+ }
- public InvalidHL7Exception(Throwable cause) {
- super(cause);
- }
-
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Component.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Component.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Component.java
index cf35504..d8c1495 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Component.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Component.java
@@ -19,6 +19,8 @@ package org.apache.nifi.hl7.model;
import java.util.List;
public interface HL7Component {
- String getValue();
- List<HL7Component> getComponents();
+
+ String getValue();
+
+ List<HL7Component> getComponents();
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Field.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Field.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Field.java
index 4086e58..ff58d96 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Field.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Field.java
@@ -16,6 +16,5 @@
*/
package org.apache.nifi.hl7.model;
-
public interface HL7Field extends HL7Component {
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Message.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Message.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Message.java
index dd9c2a9..dc68c2b 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Message.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Message.java
@@ -20,8 +20,8 @@ import java.util.List;
public interface HL7Message {
- List<HL7Segment> getSegments();
-
- List<HL7Segment> getSegments(String segmentType);
-
+ List<HL7Segment> getSegments();
+
+ List<HL7Segment> getSegments(String segmentType);
+
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Segment.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Segment.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Segment.java
index de5aaa1..d5d67ae 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Segment.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/model/HL7Segment.java
@@ -20,8 +20,8 @@ import java.util.List;
public interface HL7Segment {
- String getName();
-
- List<HL7Field> getFields();
-
+ String getName();
+
+ List<HL7Field> getFields();
+
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/Declaration.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/Declaration.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/Declaration.java
index 0903cc8..94998e7 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/Declaration.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/Declaration.java
@@ -20,10 +20,10 @@ import org.apache.nifi.hl7.model.HL7Message;
public interface Declaration {
- String getAlias();
-
- boolean isRequired();
-
- Object getDeclaredValue(HL7Message message);
-
+ String getAlias();
+
+ boolean isRequired();
+
+ Object getDeclaredValue(HL7Message message);
+
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/HL7Query.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/HL7Query.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/HL7Query.java
index a036106..3734b4f 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/HL7Query.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/HL7Query.java
@@ -16,8 +16,6 @@
*/
package org.apache.nifi.hl7.query;
-import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.*;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -58,196 +56,211 @@ import org.apache.nifi.hl7.query.result.StandardQueryResult;
import org.apache.nifi.hl7.query.antlr.HL7QueryLexer;
import org.apache.nifi.hl7.query.antlr.HL7QueryParser;
-
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.AND;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.DECLARE;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.DOT;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.EQUALS;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.GE;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.GT;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.IDENTIFIER;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.IS_NULL;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.LE;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.LT;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.MESSAGE;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.NOT;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.NOT_EQUALS;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.NOT_NULL;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.NUMBER;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.OR;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.REQUIRED;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.SEGMENT_NAME;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.SELECT;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.STRING_LITERAL;
+import static org.apache.nifi.hl7.query.antlr.HL7QueryParser.WHERE;
public class HL7Query {
- private final Tree tree;
- private final String query;
- private final Set<Declaration> declarations = new HashSet<>();
-
- private final List<Selection> selections;
- private final BooleanEvaluator whereEvaluator;
-
- private HL7Query(final Tree tree, final String query) {
- this.tree = tree;
- this.query = query;
-
- List<Selection> select = null;
- BooleanEvaluator where = null;
- for (int i=0; i < tree.getChildCount(); i++) {
- final Tree child = tree.getChild(i);
-
- switch (child.getType()) {
- case DECLARE:
- processDeclare(child);
- break;
- case SELECT:
- select = processSelect(child);
- break;
- case WHERE:
- where = processWhere(child);
- break;
- default:
- throw new HL7QueryParsingException("Found unexpected clause at root level: " + tree.getText());
- }
- }
-
- this.whereEvaluator = where;
- this.selections = select;
- }
-
- private void processDeclare(final Tree declare) {
- for (int i=0; i < declare.getChildCount(); i++) {
- final Tree declarationTree = declare.getChild(i);
-
- final String identifier = declarationTree.getChild(0).getText();
- final Tree requiredOrOptionalTree = declarationTree.getChild(1);
- final boolean required = requiredOrOptionalTree.getType() == REQUIRED;
-
- final String segmentName = declarationTree.getChild(2).getText();
-
- final Declaration declaration = new Declaration() {
- @Override
- public String getAlias() {
- return identifier;
- }
-
- @Override
- public boolean isRequired() {
- return required;
- }
-
- @Override
- public Object getDeclaredValue(final HL7Message message) {
- if ( message == null ) {
- return null;
- }
-
- return message.getSegments(segmentName);
- }
- };
-
- declarations.add(declaration);
- }
- }
-
- private List<Selection> processSelect(final Tree select) {
- final List<Selection> selections = new ArrayList<>();
-
- for (int i=0; i < select.getChildCount(); i++) {
- final Tree selectable = select.getChild(i);
-
- final String alias = getSelectedName(selectable);
- final Evaluator<?> selectionEvaluator = buildReferenceEvaluator(selectable);
- final Selection selection = new Selection(selectionEvaluator, alias);
- selections.add(selection);
- }
-
- return selections;
- }
-
-
- private String getSelectedName(final Tree selectable) {
- if ( selectable.getChildCount() == 0 ) {
- return selectable.getText();
- } else if (selectable.getType() == DOT ) {
- return getSelectedName(selectable.getChild(0)) + "." + getSelectedName(selectable.getChild(1));
- } else {
- return selectable.getChild(selectable.getChildCount() - 1).getText();
- }
- }
-
-
- private BooleanEvaluator processWhere(final Tree where) {
- return buildBooleanEvaluator(where.getChild(0));
- }
-
-
- private Evaluator<?> buildReferenceEvaluator(final Tree tree) {
- switch (tree.getType()) {
- case MESSAGE:
- return new MessageEvaluator();
- case SEGMENT_NAME:
- return new SegmentEvaluator(new StringLiteralEvaluator(tree.getText()));
- case IDENTIFIER:
- return new DeclaredReferenceEvaluator(new StringLiteralEvaluator(tree.getText()));
- case DOT:
- final Tree firstChild = tree.getChild(0);
- final Tree secondChild = tree.getChild(1);
- return new DotEvaluator(buildReferenceEvaluator(firstChild), buildIntegerEvaluator(secondChild));
- case STRING_LITERAL:
- return new StringLiteralEvaluator(tree.getText());
- case NUMBER:
- return new IntegerLiteralEvaluator(Integer.parseInt(tree.getText()));
- default:
- throw new HL7QueryParsingException("Failed to build evaluator for " + tree.getText());
- }
- }
-
-
- private IntegerEvaluator buildIntegerEvaluator(final Tree tree) {
- switch (tree.getType()) {
- case NUMBER:
- return new IntegerLiteralEvaluator(Integer.parseInt(tree.getText()));
- default:
- throw new HL7QueryParsingException("Failed to build Integer Evaluator for " + tree.getText());
- }
- }
-
-
- private BooleanEvaluator buildBooleanEvaluator(final Tree tree) {
- // TODO: add Date comparisons
- // LT/GT/GE/GE should allow for dates based on Field's Type
- // BETWEEN
- // DATE('2015/01/01')
- // DATE('2015/01/01 12:00:00')
- // DATE('24 HOURS AGO')
- // DATE('YESTERDAY')
-
- switch (tree.getType()) {
- case EQUALS:
- return new EqualsEvaluator(buildReferenceEvaluator(tree.getChild(0)), buildReferenceEvaluator(tree.getChild(1)));
- case NOT_EQUALS:
- return new NotEqualsEvaluator(buildReferenceEvaluator(tree.getChild(0)), buildReferenceEvaluator(tree.getChild(1)));
- case GT:
- return new GreaterThanEvaluator(buildReferenceEvaluator(tree.getChild(0)), buildReferenceEvaluator(tree.getChild(1)));
- case LT:
- return new LessThanEvaluator(buildReferenceEvaluator(tree.getChild(0)), buildReferenceEvaluator(tree.getChild(1)));
- case GE:
- return new GreaterThanOrEqualEvaluator(buildReferenceEvaluator(tree.getChild(0)), buildReferenceEvaluator(tree.getChild(1)));
- case LE:
- return new LessThanOrEqualEvaluator(buildReferenceEvaluator(tree.getChild(0)), buildReferenceEvaluator(tree.getChild(1)));
- case NOT:
- return new NotEvaluator(buildBooleanEvaluator(tree.getChild(0)));
- case AND:
- return new AndEvaluator(buildBooleanEvaluator(tree.getChild(0)), buildBooleanEvaluator(tree.getChild(1)));
- case OR:
- return new OrEvaluator(buildBooleanEvaluator(tree.getChild(0)), buildBooleanEvaluator(tree.getChild(1)));
- case IS_NULL:
- return new IsNullEvaluator(buildReferenceEvaluator(tree.getChild(0)));
- case NOT_NULL:
- return new NotNullEvaluator(buildReferenceEvaluator(tree.getChild(0)));
- default:
- throw new HL7QueryParsingException("Cannot build boolean evaluator for '" + tree.getText() + "'");
- }
- }
-
-
- Tree getTree() {
- return tree;
- }
-
- public String getQuery() {
- return query;
- }
-
- @Override
- public String toString() {
- return "HL7Query[" + query + "]";
- }
-
- public static HL7Query compile(final String query) {
- try {
+
+ private final Tree tree;
+ private final String query;
+ private final Set<Declaration> declarations = new HashSet<>();
+
+ private final List<Selection> selections;
+ private final BooleanEvaluator whereEvaluator;
+
+ private HL7Query(final Tree tree, final String query) {
+ this.tree = tree;
+ this.query = query;
+
+ List<Selection> select = null;
+ BooleanEvaluator where = null;
+ for (int i = 0; i < tree.getChildCount(); i++) {
+ final Tree child = tree.getChild(i);
+
+ switch (child.getType()) {
+ case DECLARE:
+ processDeclare(child);
+ break;
+ case SELECT:
+ select = processSelect(child);
+ break;
+ case WHERE:
+ where = processWhere(child);
+ break;
+ default:
+ throw new HL7QueryParsingException("Found unexpected clause at root level: " + tree.getText());
+ }
+ }
+
+ this.whereEvaluator = where;
+ this.selections = select;
+ }
+
+ private void processDeclare(final Tree declare) {
+ for (int i = 0; i < declare.getChildCount(); i++) {
+ final Tree declarationTree = declare.getChild(i);
+
+ final String identifier = declarationTree.getChild(0).getText();
+ final Tree requiredOrOptionalTree = declarationTree.getChild(1);
+ final boolean required = requiredOrOptionalTree.getType() == REQUIRED;
+
+ final String segmentName = declarationTree.getChild(2).getText();
+
+ final Declaration declaration = new Declaration() {
+ @Override
+ public String getAlias() {
+ return identifier;
+ }
+
+ @Override
+ public boolean isRequired() {
+ return required;
+ }
+
+ @Override
+ public Object getDeclaredValue(final HL7Message message) {
+ if (message == null) {
+ return null;
+ }
+
+ return message.getSegments(segmentName);
+ }
+ };
+
+ declarations.add(declaration);
+ }
+ }
+
+ private List<Selection> processSelect(final Tree select) {
+ final List<Selection> selections = new ArrayList<>();
+
+ for (int i = 0; i < select.getChildCount(); i++) {
+ final Tree selectable = select.getChild(i);
+
+ final String alias = getSelectedName(selectable);
+ final Evaluator<?> selectionEvaluator = buildReferenceEvaluator(selectable);
+ final Selection selection = new Selection(selectionEvaluator, alias);
+ selections.add(selection);
+ }
+
+ return selections;
+ }
+
+ private String getSelectedName(final Tree selectable) {
+ if (selectable.getChildCount() == 0) {
+ return selectable.getText();
+ } else if (selectable.getType() == DOT) {
+ return getSelectedName(selectable.getChild(0)) + "." + getSelectedName(selectable.getChild(1));
+ } else {
+ return selectable.getChild(selectable.getChildCount() - 1).getText();
+ }
+ }
+
+ private BooleanEvaluator processWhere(final Tree where) {
+ return buildBooleanEvaluator(where.getChild(0));
+ }
+
+ private Evaluator<?> buildReferenceEvaluator(final Tree tree) {
+ switch (tree.getType()) {
+ case MESSAGE:
+ return new MessageEvaluator();
+ case SEGMENT_NAME:
+ return new SegmentEvaluator(new StringLiteralEvaluator(tree.getText()));
+ case IDENTIFIER:
+ return new DeclaredReferenceEvaluator(new StringLiteralEvaluator(tree.getText()));
+ case DOT:
+ final Tree firstChild = tree.getChild(0);
+ final Tree secondChild = tree.getChild(1);
+ return new DotEvaluator(buildReferenceEvaluator(firstChild), buildIntegerEvaluator(secondChild));
+ case STRING_LITERAL:
+ return new StringLiteralEvaluator(tree.getText());
+ case NUMBER:
+ return new IntegerLiteralEvaluator(Integer.parseInt(tree.getText()));
+ default:
+ throw new HL7QueryParsingException("Failed to build evaluator for " + tree.getText());
+ }
+ }
+
+ private IntegerEvaluator buildIntegerEvaluator(final Tree tree) {
+ switch (tree.getType()) {
+ case NUMBER:
+ return new IntegerLiteralEvaluator(Integer.parseInt(tree.getText()));
+ default:
+ throw new HL7QueryParsingException("Failed to build Integer Evaluator for " + tree.getText());
+ }
+ }
+
+ private BooleanEvaluator buildBooleanEvaluator(final Tree tree) {
+ // TODO: add Date comparisons
+ // LT/GT/GE/GE should allow for dates based on Field's Type
+ // BETWEEN
+ // DATE('2015/01/01')
+ // DATE('2015/01/01 12:00:00')
+ // DATE('24 HOURS AGO')
+ // DATE('YESTERDAY')
+
+ switch (tree.getType()) {
+ case EQUALS:
+ return new EqualsEvaluator(buildReferenceEvaluator(tree.getChild(0)), buildReferenceEvaluator(tree.getChild(1)));
+ case NOT_EQUALS:
+ return new NotEqualsEvaluator(buildReferenceEvaluator(tree.getChild(0)), buildReferenceEvaluator(tree.getChild(1)));
+ case GT:
+ return new GreaterThanEvaluator(buildReferenceEvaluator(tree.getChild(0)), buildReferenceEvaluator(tree.getChild(1)));
+ case LT:
+ return new LessThanEvaluator(buildReferenceEvaluator(tree.getChild(0)), buildReferenceEvaluator(tree.getChild(1)));
+ case GE:
+ return new GreaterThanOrEqualEvaluator(buildReferenceEvaluator(tree.getChild(0)), buildReferenceEvaluator(tree.getChild(1)));
+ case LE:
+ return new LessThanOrEqualEvaluator(buildReferenceEvaluator(tree.getChild(0)), buildReferenceEvaluator(tree.getChild(1)));
+ case NOT:
+ return new NotEvaluator(buildBooleanEvaluator(tree.getChild(0)));
+ case AND:
+ return new AndEvaluator(buildBooleanEvaluator(tree.getChild(0)), buildBooleanEvaluator(tree.getChild(1)));
+ case OR:
+ return new OrEvaluator(buildBooleanEvaluator(tree.getChild(0)), buildBooleanEvaluator(tree.getChild(1)));
+ case IS_NULL:
+ return new IsNullEvaluator(buildReferenceEvaluator(tree.getChild(0)));
+ case NOT_NULL:
+ return new NotNullEvaluator(buildReferenceEvaluator(tree.getChild(0)));
+ default:
+ throw new HL7QueryParsingException("Cannot build boolean evaluator for '" + tree.getText() + "'");
+ }
+ }
+
+ Tree getTree() {
+ return tree;
+ }
+
+ public String getQuery() {
+ return query;
+ }
+
+ @Override
+ public String toString() {
+ return "HL7Query[" + query + "]";
+ }
+
+ public static HL7Query compile(final String query) {
+ try {
final CommonTokenStream lexerTokenStream = createTokenStream(query);
final HL7QueryParser parser = new HL7QueryParser(lexerTokenStream);
final Tree tree = (Tree) parser.query().getTree();
@@ -258,155 +271,114 @@ public class HL7Query {
} catch (final Exception e) {
throw new HL7QueryParsingException(e);
}
- }
-
- private static CommonTokenStream createTokenStream(final String expression) throws HL7QueryParsingException {
+ }
+
+ private static CommonTokenStream createTokenStream(final String expression) throws HL7QueryParsingException {
final CharStream input = new ANTLRStringStream(expression);
final HL7QueryLexer lexer = new HL7QueryLexer(input);
return new CommonTokenStream(lexer);
}
-
- public List<Class<?>> getReturnTypes() {
- final List<Class<?>> returnTypes = new ArrayList<>();
-
- for ( final Selection selection : selections ) {
- returnTypes.add( selection.getEvaluator().getType() );
- }
-
- return returnTypes;
- }
-
- @SuppressWarnings("unchecked")
- public QueryResult evaluate(final HL7Message message) {
-
- int totalIterations = 1;
- final LinkedHashMap<String, List<Object>> possibleValueMap = new LinkedHashMap<>();
- for ( final Declaration declaration : declarations ) {
- final Object value = declaration.getDeclaredValue(message);
- if ( value == null && declaration.isRequired() ) {
- return new MissedResult(selections);
- }
-
- final List<Object> possibleValues;
- if ( value instanceof List ) {
- possibleValues = (List<Object>) value;
- } else if ( value instanceof Collection ) {
- possibleValues = new ArrayList<Object>((Collection<Object>) value);
- } else {
- possibleValues = new ArrayList<>(1);
- possibleValues.add(value);
- }
-
- if ( possibleValues.isEmpty() ) {
- return new MissedResult(selections);
- }
-
- possibleValueMap.put(declaration.getAlias(), possibleValues);
- totalIterations *= possibleValues.size();
- }
-
- final Set<Map<String, Object>> resultSet = new HashSet<>();
- for (int i=0; i < totalIterations; i++) {
- final Map<String, Object> aliasValues = assignAliases(possibleValueMap, i);
-
- aliasValues.put(Evaluator.MESSAGE_KEY, message);
- if (whereEvaluator == null || Boolean.TRUE.equals(whereEvaluator.evaluate(aliasValues))) {
- final Map<String, Object> resultMap = new HashMap<>();
-
- for ( final Selection selection : selections ) {
- final Object value = selection.getEvaluator().evaluate(aliasValues);
- resultMap.put(selection.getName(), value);
- }
-
- resultSet.add(resultMap);
- }
- }
-
-// for ( final Declaration declaration : declarations ) {
-// final Object value = declaration.getDeclaredValue(message);
-// if ( value == null && declaration.isRequired() ) {
-// return new MissedResult(selections);
-// }
-// objectMap.put(declaration.getAlias(), value);
-// }
-//
-// if (whereEvaluator == null || Boolean.TRUE.equals(whereEvaluator.evaluate(objectMap))) {
-// for ( final Selection selection : selections ) {
-// final Object value = selection.getEvaluator().evaluate(objectMap);
-// resultMap.put(selection.getName(), value);
-// }
-// } else {
-// return new MissedResult(selections);
-// }
-
- return new StandardQueryResult(selections, resultSet);
- }
-
-
- // assigns one of the possible values to each alias, based on which iteration this is.
- // require LinkedHashMap just to be very clear and explicit that the order of the Map MUST be guaranteed
- // between multiple invocations of this method.
- // package protected for testing visibility
-// static Map<String, Object> assignAliases(final LinkedHashMap<String, List<Object>> possibleValues, final int iteration) {
-// final Map<String, Object> aliasMap = new HashMap<>();
-//
-// int aliasIndex = possibleValues.size() - 1;
-// for ( final Map.Entry<String, List<Object>> entry : possibleValues.entrySet() ) {
-// final String alias = entry.getKey();
-// final List<Object> validValues = entry.getValue();
-//
-// final int validValueIndex;
-// if (aliasIndex > 0) {
-// validValueIndex = iteration / aliasIndex;
-// } else {
-// validValueIndex = iteration;
-// }
-//
-// final Object obj = validValues.get(validValueIndex % validValues.size());
-// aliasMap.put(alias, obj);
-//
-// aliasIndex--;
-// }
-//
-// return aliasMap;
-// }
-//
-
- static Map<String, Object> assignAliases(final LinkedHashMap<String, List<Object>> possibleValues, final int iteration) {
- final Map<String, Object> aliasMap = new HashMap<>();
-
- int divisor = 1;
- for ( final Map.Entry<String, List<Object>> entry : possibleValues.entrySet() ) {
- final String alias = entry.getKey();
- final List<Object> validValues = entry.getValue();
-
- final int idx = (iteration / divisor) % validValues.size();
- final Object obj = validValues.get(idx);
- aliasMap.put(alias, obj);
-
- divisor *= validValues.size();
- }
-
- return aliasMap;
- }
-
- public String toTreeString() {
- final StringBuilder sb = new StringBuilder();
- toTreeString(tree, sb, 0);
- return sb.toString();
- }
-
- private void toTreeString(final Tree tree, final StringBuilder sb, final int indentLevel) {
- final String nodeName = tree.getText();
- for (int i=0; i < indentLevel; i++) {
- sb.append(" ");
- }
- sb.append(nodeName);
- sb.append("\n");
-
- for (int i=0; i < tree.getChildCount(); i++) {
- final Tree child = tree.getChild(i);
- toTreeString(child, sb, indentLevel + 2);
- }
- }
+
+ public List<Class<?>> getReturnTypes() {
+ final List<Class<?>> returnTypes = new ArrayList<>();
+
+ for (final Selection selection : selections) {
+ returnTypes.add(selection.getEvaluator().getType());
+ }
+
+ return returnTypes;
+ }
+
+ @SuppressWarnings("unchecked")
+ public QueryResult evaluate(final HL7Message message) {
+
+ int totalIterations = 1;
+ final LinkedHashMap<String, List<Object>> possibleValueMap = new LinkedHashMap<>();
+ for (final Declaration declaration : declarations) {
+ final Object value = declaration.getDeclaredValue(message);
+ if (value == null && declaration.isRequired()) {
+ return new MissedResult(selections);
+ }
+
+ final List<Object> possibleValues;
+ if (value instanceof List) {
+ possibleValues = (List<Object>) value;
+ } else if (value instanceof Collection) {
+ possibleValues = new ArrayList<Object>((Collection<Object>) value);
+ } else {
+ possibleValues = new ArrayList<>(1);
+ possibleValues.add(value);
+ }
+
+ if (possibleValues.isEmpty()) {
+ return new MissedResult(selections);
+ }
+
+ possibleValueMap.put(declaration.getAlias(), possibleValues);
+ totalIterations *= possibleValues.size();
+ }
+
+ final Set<Map<String, Object>> resultSet = new HashSet<>();
+ for (int i = 0; i < totalIterations; i++) {
+ final Map<String, Object> aliasValues = assignAliases(possibleValueMap, i);
+
+ aliasValues.put(Evaluator.MESSAGE_KEY, message);
+ if (whereEvaluator == null || Boolean.TRUE.equals(whereEvaluator.evaluate(aliasValues))) {
+ final Map<String, Object> resultMap = new HashMap<>();
+
+ for (final Selection selection : selections) {
+ final Object value = selection.getEvaluator().evaluate(aliasValues);
+ resultMap.put(selection.getName(), value);
+ }
+
+ resultSet.add(resultMap);
+ }
+ }
+
+ return new StandardQueryResult(selections, resultSet);
+ }
+
+ /**
+ * assigns one of the possible values to each alias, based on which iteration this is.
+ * require LinkedHashMap just to be very clear and explicit that the order of the Map MUST be guaranteed
+ * between multiple invocations of this method.
+ * package protected for testing visibility
+ */
+ static Map<String, Object> assignAliases(final LinkedHashMap<String, List<Object>> possibleValues, final int iteration) {
+ final Map<String, Object> aliasMap = new HashMap<>();
+
+ int divisor = 1;
+ for (final Map.Entry<String, List<Object>> entry : possibleValues.entrySet()) {
+ final String alias = entry.getKey();
+ final List<Object> validValues = entry.getValue();
+
+ final int idx = (iteration / divisor) % validValues.size();
+ final Object obj = validValues.get(idx);
+ aliasMap.put(alias, obj);
+
+ divisor *= validValues.size();
+ }
+
+ return aliasMap;
+ }
+
+ public String toTreeString() {
+ final StringBuilder sb = new StringBuilder();
+ toTreeString(tree, sb, 0);
+ return sb.toString();
+ }
+
+ private void toTreeString(final Tree tree, final StringBuilder sb, final int indentLevel) {
+ final String nodeName = tree.getText();
+ for (int i = 0; i < indentLevel; i++) {
+ sb.append(" ");
+ }
+ sb.append(nodeName);
+ sb.append("\n");
+
+ for (int i = 0; i < tree.getChildCount(); i++) {
+ final Tree child = tree.getChild(i);
+ toTreeString(child, sb, indentLevel + 2);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/QueryResult.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/QueryResult.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/QueryResult.java
index b198bc7..033ac0a 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/QueryResult.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/QueryResult.java
@@ -19,11 +19,12 @@ package org.apache.nifi.hl7.query;
import java.util.List;
public interface QueryResult {
- boolean isMatch();
-
- List<String> getLabels();
-
- int getHitCount();
-
- ResultHit nextHit();
+
+ boolean isMatch();
+
+ List<String> getLabels();
+
+ int getHitCount();
+
+ ResultHit nextHit();
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/ResultHit.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/ResultHit.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/ResultHit.java
index ee97e5d..9eb1d8f 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/ResultHit.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/ResultHit.java
@@ -19,7 +19,8 @@ package org.apache.nifi.hl7.query;
import java.util.Map;
public interface ResultHit {
- Object getValue(String label);
-
- Map<String, Object> getSelectedValues();
+
+ Object getValue(String label);
+
+ Map<String, Object> getSelectedValues();
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/Selection.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/Selection.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/Selection.java
index 36a181f..7b5b7b3 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/Selection.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/Selection.java
@@ -19,19 +19,20 @@ package org.apache.nifi.hl7.query;
import org.apache.nifi.hl7.query.evaluator.Evaluator;
public class Selection {
- private final Evaluator<?> evaluator;
- private final String name;
-
- public Selection(final Evaluator<?> evaluator, final String name) {
- this.evaluator = evaluator;
- this.name = name;
- }
-
- public String getName() {
- return name;
- }
-
- public Evaluator<?> getEvaluator() {
- return evaluator;
- }
+
+ private final Evaluator<?> evaluator;
+ private final String name;
+
+ public Selection(final Evaluator<?> evaluator, final String name) {
+ this.evaluator = evaluator;
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public Evaluator<?> getEvaluator() {
+ return evaluator;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/BooleanEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/BooleanEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/BooleanEvaluator.java
index fdd807e..98b077e 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/BooleanEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/BooleanEvaluator.java
@@ -18,7 +18,7 @@ package org.apache.nifi.hl7.query.evaluator;
public abstract class BooleanEvaluator implements Evaluator<Boolean> {
- public Class<? extends Boolean> getType() {
- return Boolean.class;
- }
+ public Class<? extends Boolean> getType() {
+ return Boolean.class;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/Evaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/Evaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/Evaluator.java
index d86c30e..2d1ddc7 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/Evaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/Evaluator.java
@@ -19,9 +19,10 @@ package org.apache.nifi.hl7.query.evaluator;
import java.util.Map;
public interface Evaluator<T> {
- public static final String MESSAGE_KEY = "message";
-
- T evaluate(Map<String, Object> objectMap);
-
- Class<? extends T> getType();
+
+ public static final String MESSAGE_KEY = "message";
+
+ T evaluate(Map<String, Object> objectMap);
+
+ Class<? extends T> getType();
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/IntegerEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/IntegerEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/IntegerEvaluator.java
index 6afa9ed..ed56d80 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/IntegerEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/IntegerEvaluator.java
@@ -16,11 +16,10 @@
*/
package org.apache.nifi.hl7.query.evaluator;
-
public abstract class IntegerEvaluator implements Evaluator<Integer> {
- public Class<? extends Integer> getType() {
- return Integer.class;
- }
+ public Class<? extends Integer> getType() {
+ return Integer.class;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/StringEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/StringEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/StringEvaluator.java
index 5f73649..53ab004 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/StringEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/StringEvaluator.java
@@ -18,8 +18,8 @@ package org.apache.nifi.hl7.query.evaluator;
public abstract class StringEvaluator implements Evaluator<String> {
- public Class<? extends String> getType() {
- return String.class;
- }
-
+ public Class<? extends String> getType() {
+ return String.class;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/AbstractComparisonEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/AbstractComparisonEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/AbstractComparisonEvaluator.java
index a7fa1b7..45edf64 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/AbstractComparisonEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/AbstractComparisonEvaluator.java
@@ -24,83 +24,88 @@ import org.apache.nifi.hl7.query.evaluator.BooleanEvaluator;
import org.apache.nifi.hl7.query.evaluator.Evaluator;
public abstract class AbstractComparisonEvaluator extends BooleanEvaluator {
- private final Evaluator<?> lhs;
- private final Evaluator<?> rhs;
-
- public AbstractComparisonEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
- this.lhs = lhs;
- this.rhs = rhs;
- }
-
- public final Boolean evaluate(final Map<String, Object> objectMap) {
- final Object lhsValue = lhs.evaluate(objectMap);
- if ( lhsValue == null ) {
- return false;
- }
-
- final Object rhsValue = rhs.evaluate(objectMap);
- if ( rhsValue == null ) {
- return false;
- }
-
- return compareRaw(lhsValue, rhsValue);
- }
-
-
- private Boolean compareRaw(Object lhsValue, Object rhsValue) {
- if ( lhsValue == null || rhsValue == null ) {
- return false;
- }
-
- if ( lhsValue instanceof HL7Field ) {
- lhsValue = ((HL7Field) lhsValue).getValue();
- }
-
- if ( rhsValue instanceof HL7Field ) {
- rhsValue = ((HL7Field) rhsValue).getValue();
- }
-
- if ( lhsValue == null || rhsValue == null ) {
- return false;
- }
-
- // both are collections, and compare(lhsValue, rhsValue) is false.
- // this would be the case, for instance, if we compared field 1 of one segment to
- // a field in another segment, and both fields had components.
- if ( lhsValue instanceof Collection && rhsValue instanceof Collection ) {
- return false;
- }
-
- // if one side is a collection but the other is not, check if any element in that
- // collection compares to the other element in a way that satisfies the condition.
- // this would happen, for instance, if we check Segment1.Field5 = 'X' and field 5 repeats
- // with a value "A~B~C~X~Y~Z"; in this case we do want to consider Field 5 = X as true.
- if ( lhsValue instanceof Collection ) {
- for ( final Object lhsObject : (Collection<?>) lhsValue ) {
- if ( compareRaw(lhsObject, rhsValue) ) {
- return true;
- }
- }
-
- return false;
- }
-
- if ( rhsValue instanceof Collection ) {
- for ( final Object rhsObject : (Collection<?>) rhsValue ) {
- if ( compareRaw(rhsObject, lhsValue) ) {
- return true;
- }
- }
-
- return false;
- }
-
- if ( lhsValue != null && rhsValue != null && compare(lhsValue, rhsValue) ) {
- return true;
- }
-
- return false;
- }
-
- protected abstract boolean compare(Object lhs, Object rhs);
+
+ private final Evaluator<?> lhs;
+ private final Evaluator<?> rhs;
+
+ public AbstractComparisonEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
+ this.lhs = lhs;
+ this.rhs = rhs;
+ }
+
+ @Override
+ public final Boolean evaluate(final Map<String, Object> objectMap) {
+ final Object lhsValue = lhs.evaluate(objectMap);
+ if (lhsValue == null) {
+ return false;
+ }
+
+ final Object rhsValue = rhs.evaluate(objectMap);
+ if (rhsValue == null) {
+ return false;
+ }
+
+ return compareRaw(lhsValue, rhsValue);
+ }
+
+ private Boolean compareRaw(Object lhsValue, Object rhsValue) {
+ if (lhsValue == null || rhsValue == null) {
+ return false;
+ }
+
+ if (lhsValue instanceof HL7Field) {
+ lhsValue = ((HL7Field) lhsValue).getValue();
+ }
+
+ if (rhsValue instanceof HL7Field) {
+ rhsValue = ((HL7Field) rhsValue).getValue();
+ }
+
+ if (lhsValue == null || rhsValue == null) {
+ return false;
+ }
+
+ /**
+ * both are collections, and compare(lhsValue, rhsValue) is false.
+ * this would be the case, for instance, if we compared field 1 of one segment to
+ * a field in another segment, and both fields had components.
+ */
+ if (lhsValue instanceof Collection && rhsValue instanceof Collection) {
+ return false;
+ }
+
+ /**
+ * if one side is a collection but the other is not, check if any element in that
+ * collection compares to the other element in a way that satisfies the condition.
+ * this would happen, for instance, if we check Segment1.Field5 = 'X' and field 5 repeats
+ * with a value "A~B~C~X~Y~Z"; in this case we do want to consider Field 5 = X as true.
+ */
+ if (lhsValue instanceof Collection) {
+ for (final Object lhsObject : (Collection<?>) lhsValue) {
+ if (compareRaw(lhsObject, rhsValue)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ if (rhsValue instanceof Collection) {
+ for (final Object rhsObject : (Collection<?>) rhsValue) {
+ if (compareRaw(rhsObject, lhsValue)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ if (lhsValue != null && rhsValue != null && compare(lhsValue, rhsValue)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ protected abstract boolean compare(Object lhs, Object rhs);
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/AbstractNumericComparison.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/AbstractNumericComparison.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/AbstractNumericComparison.java
index 2529c49..d74e9cf 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/AbstractNumericComparison.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/AbstractNumericComparison.java
@@ -21,47 +21,48 @@ import java.util.regex.Pattern;
import org.apache.nifi.hl7.query.evaluator.Evaluator;
public abstract class AbstractNumericComparison extends AbstractComparisonEvaluator {
- private static final Pattern NUMERIC_PATTERN = Pattern.compile("\\d+(\\.\\d+)?");
-
- public AbstractNumericComparison(final Evaluator<?> lhs, final Evaluator<?> rhs) {
- super(lhs, rhs);
- }
-
- @Override
- protected final boolean compare(final Object lhs, final Object rhs) {
- final Double lhsDouble = toDouble(lhs);
- if ( lhsDouble == null ) {
- return false;
- }
-
- final Double rhsDouble = toDouble(rhs);
- if ( rhsDouble == null ) {
- return false;
- }
-
- return compareNumbers(lhsDouble, rhsDouble);
- }
- private Double toDouble(final Object value) {
- if ( value == null ) {
- return null;
- }
-
- if ( value instanceof Double ) {
- return (Double) value;
- }
- if ( value instanceof Number ) {
- return ((Number) value).doubleValue();
- }
-
- if ( value instanceof String ) {
- if ( NUMERIC_PATTERN.matcher((String) value).matches() ) {
- return Double.parseDouble((String) value);
- }
- }
-
- return null;
- }
-
- protected abstract boolean compareNumbers(final Double lhs, final Double rhs);
+ private static final Pattern NUMERIC_PATTERN = Pattern.compile("\\d+(\\.\\d+)?");
+
+ public AbstractNumericComparison(final Evaluator<?> lhs, final Evaluator<?> rhs) {
+ super(lhs, rhs);
+ }
+
+ @Override
+ protected final boolean compare(final Object lhs, final Object rhs) {
+ final Double lhsDouble = toDouble(lhs);
+ if (lhsDouble == null) {
+ return false;
+ }
+
+ final Double rhsDouble = toDouble(rhs);
+ if (rhsDouble == null) {
+ return false;
+ }
+
+ return compareNumbers(lhsDouble, rhsDouble);
+ }
+
+ private Double toDouble(final Object value) {
+ if (value == null) {
+ return null;
+ }
+
+ if (value instanceof Double) {
+ return (Double) value;
+ }
+ if (value instanceof Number) {
+ return ((Number) value).doubleValue();
+ }
+
+ if (value instanceof String) {
+ if (NUMERIC_PATTERN.matcher((String) value).matches()) {
+ return Double.parseDouble((String) value);
+ }
+ }
+
+ return null;
+ }
+
+ protected abstract boolean compareNumbers(final Double lhs, final Double rhs);
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/EqualsEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/EqualsEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/EqualsEvaluator.java
index 7ee2f87..fa6c57b 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/EqualsEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/EqualsEvaluator.java
@@ -20,13 +20,13 @@ import org.apache.nifi.hl7.query.evaluator.Evaluator;
public class EqualsEvaluator extends AbstractComparisonEvaluator {
- public EqualsEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
- super(lhs, rhs);
- }
-
- @Override
- protected boolean compare(final Object lhs, final Object rhs) {
- return lhs != null && rhs != null && ((lhs == rhs) || (lhs.equals(rhs)) || lhs.toString().equals(rhs.toString()));
- }
+ public EqualsEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
+ super(lhs, rhs);
+ }
+
+ @Override
+ protected boolean compare(final Object lhs, final Object rhs) {
+ return lhs != null && rhs != null && ((lhs == rhs) || (lhs.equals(rhs)) || lhs.toString().equals(rhs.toString()));
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/GreaterThanEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/GreaterThanEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/GreaterThanEvaluator.java
index bf8596e..cfef7b5 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/GreaterThanEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/GreaterThanEvaluator.java
@@ -18,17 +18,15 @@ package org.apache.nifi.hl7.query.evaluator.comparison;
import org.apache.nifi.hl7.query.evaluator.Evaluator;
-
public class GreaterThanEvaluator extends AbstractNumericComparison {
- public GreaterThanEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
- super(lhs, rhs);
- }
+ public GreaterThanEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
+ super(lhs, rhs);
+ }
- @Override
- protected boolean compareNumbers(final Double lhs, final Double rhs) {
- return lhs > rhs;
- }
+ @Override
+ protected boolean compareNumbers(final Double lhs, final Double rhs) {
+ return lhs > rhs;
+ }
-
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/GreaterThanOrEqualEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/GreaterThanOrEqualEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/GreaterThanOrEqualEvaluator.java
index 69115a3..d9da6f7 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/GreaterThanOrEqualEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/GreaterThanOrEqualEvaluator.java
@@ -18,17 +18,15 @@ package org.apache.nifi.hl7.query.evaluator.comparison;
import org.apache.nifi.hl7.query.evaluator.Evaluator;
-
public class GreaterThanOrEqualEvaluator extends AbstractNumericComparison {
- public GreaterThanOrEqualEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
- super(lhs, rhs);
- }
+ public GreaterThanOrEqualEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
+ super(lhs, rhs);
+ }
- @Override
- protected boolean compareNumbers(final Double lhs, final Double rhs) {
- return lhs >= rhs;
- }
+ @Override
+ protected boolean compareNumbers(final Double lhs, final Double rhs) {
+ return lhs >= rhs;
+ }
-
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/IsNullEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/IsNullEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/IsNullEvaluator.java
index 69d481e..0f16dd9 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/IsNullEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/IsNullEvaluator.java
@@ -24,46 +24,47 @@ import org.apache.nifi.hl7.query.evaluator.BooleanEvaluator;
import org.apache.nifi.hl7.query.evaluator.Evaluator;
public class IsNullEvaluator extends BooleanEvaluator {
- private final Evaluator<?> subjectEvaluator;
-
- public IsNullEvaluator(final Evaluator<?> subjectEvaluator) {
- this.subjectEvaluator = subjectEvaluator;
- }
-
- @Override
- public Boolean evaluate(final Map<String, Object> objectMap) {
- Object subjectValue = subjectEvaluator.evaluate(objectMap);
- if ( subjectValue == null ) {
- return true;
- }
-
- return isNull(subjectValue);
- }
- private boolean isNull(Object subjectValue) {
- if ( subjectValue == null ) {
- return true;
- }
-
- if ( subjectValue instanceof HL7Component ) {
- subjectValue = ((HL7Component) subjectValue).getValue();
- }
-
- if ( subjectValue instanceof Collection ) {
- final Collection<?> collection = (Collection<?>) subjectValue;
- if ( collection.isEmpty() ) {
- return true;
- }
-
- for ( final Object obj : collection ) {
- if ( !isNull(obj) ) {
- return false;
- }
- }
-
- return true;
- }
-
- return subjectValue == null;
- }
+ private final Evaluator<?> subjectEvaluator;
+
+ public IsNullEvaluator(final Evaluator<?> subjectEvaluator) {
+ this.subjectEvaluator = subjectEvaluator;
+ }
+
+ @Override
+ public Boolean evaluate(final Map<String, Object> objectMap) {
+ Object subjectValue = subjectEvaluator.evaluate(objectMap);
+ if (subjectValue == null) {
+ return true;
+ }
+
+ return isNull(subjectValue);
+ }
+
+ private boolean isNull(Object subjectValue) {
+ if (subjectValue == null) {
+ return true;
+ }
+
+ if (subjectValue instanceof HL7Component) {
+ subjectValue = ((HL7Component) subjectValue).getValue();
+ }
+
+ if (subjectValue instanceof Collection) {
+ final Collection<?> collection = (Collection<?>) subjectValue;
+ if (collection.isEmpty()) {
+ return true;
+ }
+
+ for (final Object obj : collection) {
+ if (!isNull(obj)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ return subjectValue == null;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/LessThanEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/LessThanEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/LessThanEvaluator.java
index 891d5e4..2805860 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/LessThanEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/LessThanEvaluator.java
@@ -19,13 +19,14 @@ package org.apache.nifi.hl7.query.evaluator.comparison;
import org.apache.nifi.hl7.query.evaluator.Evaluator;
public class LessThanEvaluator extends AbstractNumericComparison {
- public LessThanEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
- super(lhs, rhs);
- }
- @Override
- protected boolean compareNumbers(final Double lhs, final Double rhs) {
- return lhs < rhs;
- }
+ public LessThanEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
+ super(lhs, rhs);
+ }
+
+ @Override
+ protected boolean compareNumbers(final Double lhs, final Double rhs) {
+ return lhs < rhs;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/LessThanOrEqualEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/LessThanOrEqualEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/LessThanOrEqualEvaluator.java
index c6fb097..e7eb156 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/LessThanOrEqualEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/LessThanOrEqualEvaluator.java
@@ -19,13 +19,14 @@ package org.apache.nifi.hl7.query.evaluator.comparison;
import org.apache.nifi.hl7.query.evaluator.Evaluator;
public class LessThanOrEqualEvaluator extends AbstractNumericComparison {
- public LessThanOrEqualEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
- super(lhs, rhs);
- }
- @Override
- protected boolean compareNumbers(final Double lhs, final Double rhs) {
- return lhs <= rhs;
- }
+ public LessThanOrEqualEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
+ super(lhs, rhs);
+ }
+
+ @Override
+ protected boolean compareNumbers(final Double lhs, final Double rhs) {
+ return lhs <= rhs;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEqualsEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEqualsEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEqualsEvaluator.java
index b7c1ce2..98715ff 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEqualsEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEqualsEvaluator.java
@@ -19,14 +19,14 @@ package org.apache.nifi.hl7.query.evaluator.comparison;
import org.apache.nifi.hl7.query.evaluator.Evaluator;
public class NotEqualsEvaluator extends AbstractComparisonEvaluator {
-
- public NotEqualsEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
- super(lhs, rhs);
- }
- @Override
- protected boolean compare(final Object lhs, final Object rhs) {
- return lhs != null && rhs != null && lhs != rhs && !lhs.equals(rhs) && !lhs.toString().equals(rhs.toString());
- }
+ public NotEqualsEvaluator(final Evaluator<?> lhs, final Evaluator<?> rhs) {
+ super(lhs, rhs);
+ }
+
+ @Override
+ protected boolean compare(final Object lhs, final Object rhs) {
+ return lhs != null && rhs != null && lhs != rhs && !lhs.equals(rhs) && !lhs.toString().equals(rhs.toString());
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEvaluator.java
index 58888d9..3343c1c 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotEvaluator.java
@@ -21,16 +21,17 @@ import java.util.Map;
import org.apache.nifi.hl7.query.evaluator.BooleanEvaluator;
public class NotEvaluator extends BooleanEvaluator {
- private final BooleanEvaluator subjectEvaluator;
-
- public NotEvaluator(final BooleanEvaluator subjectEvaluator) {
- this.subjectEvaluator = subjectEvaluator;
- }
-
- @Override
- public Boolean evaluate(final Map<String, Object> objectMap) {
- final Boolean subjectValue = subjectEvaluator.evaluate(objectMap);
- return (subjectValue == null || Boolean.TRUE.equals(subjectValue));
- }
+
+ private final BooleanEvaluator subjectEvaluator;
+
+ public NotEvaluator(final BooleanEvaluator subjectEvaluator) {
+ this.subjectEvaluator = subjectEvaluator;
+ }
+
+ @Override
+ public Boolean evaluate(final Map<String, Object> objectMap) {
+ final Boolean subjectValue = subjectEvaluator.evaluate(objectMap);
+ return (subjectValue == null || Boolean.TRUE.equals(subjectValue));
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotNullEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotNullEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotNullEvaluator.java
index a764fef..80d6c45 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotNullEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/comparison/NotNullEvaluator.java
@@ -24,42 +24,43 @@ import org.apache.nifi.hl7.query.evaluator.BooleanEvaluator;
import org.apache.nifi.hl7.query.evaluator.Evaluator;
public class NotNullEvaluator extends BooleanEvaluator {
- private final Evaluator<?> subjectEvaluator;
-
- public NotNullEvaluator(final Evaluator<?> subjectEvaluator) {
- this.subjectEvaluator = subjectEvaluator;
- }
-
- @Override
- public Boolean evaluate(final Map<String, Object> objectMap) {
- Object subjectValue = subjectEvaluator.evaluate(objectMap);
- if ( subjectValue == null ) {
- return false;
- }
-
- return isNotNull(subjectValue);
- }
- private boolean isNotNull(Object subjectValue) {
- if ( subjectValue instanceof HL7Component ) {
- subjectValue = ((HL7Component) subjectValue).getValue();
- }
-
- if ( subjectValue instanceof Collection ) {
- final Collection<?> collection = (Collection<?>) subjectValue;
- if ( collection.isEmpty() ) {
- return false;
- }
-
- for ( final Object obj : collection ) {
- if ( isNotNull(obj) ) {
- return true;
- }
- }
-
- return false;
- }
-
- return subjectValue != null;
- }
+ private final Evaluator<?> subjectEvaluator;
+
+ public NotNullEvaluator(final Evaluator<?> subjectEvaluator) {
+ this.subjectEvaluator = subjectEvaluator;
+ }
+
+ @Override
+ public Boolean evaluate(final Map<String, Object> objectMap) {
+ Object subjectValue = subjectEvaluator.evaluate(objectMap);
+ if (subjectValue == null) {
+ return false;
+ }
+
+ return isNotNull(subjectValue);
+ }
+
+ private boolean isNotNull(Object subjectValue) {
+ if (subjectValue instanceof HL7Component) {
+ subjectValue = ((HL7Component) subjectValue).getValue();
+ }
+
+ if (subjectValue instanceof Collection) {
+ final Collection<?> collection = (Collection<?>) subjectValue;
+ if (collection.isEmpty()) {
+ return false;
+ }
+
+ for (final Object obj : collection) {
+ if (isNotNull(obj)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ return subjectValue != null;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/IntegerLiteralEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/IntegerLiteralEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/IntegerLiteralEvaluator.java
index c6ff6e4..dfceee4 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/IntegerLiteralEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/IntegerLiteralEvaluator.java
@@ -21,16 +21,16 @@ import java.util.Map;
import org.apache.nifi.hl7.query.evaluator.IntegerEvaluator;
public class IntegerLiteralEvaluator extends IntegerEvaluator {
- private final Integer value;
-
- public IntegerLiteralEvaluator(final Integer value) {
- this.value = value;
- }
-
-
- @Override
- public Integer evaluate(final Map<String, Object> objectMap) {
- return value;
- }
+
+ private final Integer value;
+
+ public IntegerLiteralEvaluator(final Integer value) {
+ this.value = value;
+ }
+
+ @Override
+ public Integer evaluate(final Map<String, Object> objectMap) {
+ return value;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/StringLiteralEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/StringLiteralEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/StringLiteralEvaluator.java
index 3b29611..278ac1d 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/StringLiteralEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/literal/StringLiteralEvaluator.java
@@ -21,15 +21,16 @@ import java.util.Map;
import org.apache.nifi.hl7.query.evaluator.StringEvaluator;
public class StringLiteralEvaluator extends StringEvaluator {
- private final String value;
-
- public StringLiteralEvaluator(final String value) {
- this.value = value;
- }
-
- @Override
- public String evaluate(final Map<String, Object> objectMap) {
- return value;
- }
+
+ private final String value;
+
+ public StringLiteralEvaluator(final String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String evaluate(final Map<String, Object> objectMap) {
+ return value;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/AndEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/AndEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/AndEvaluator.java
index 21f596e..989cee4 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/AndEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/AndEvaluator.java
@@ -21,23 +21,24 @@ import java.util.Map;
import org.apache.nifi.hl7.query.evaluator.BooleanEvaluator;
public class AndEvaluator extends BooleanEvaluator {
- private final BooleanEvaluator lhs;
- private final BooleanEvaluator rhs;
-
- public AndEvaluator(final BooleanEvaluator lhs, final BooleanEvaluator rhs) {
- this.lhs = lhs;
- this.rhs = rhs;
- }
-
- @Override
- public Boolean evaluate(final Map<String, Object> objectMap) {
- final Boolean lhsValue = lhs.evaluate(objectMap);
- if ( lhsValue == null || Boolean.FALSE.equals(lhsValue) ) {
- return false;
- }
-
- final Boolean rhsValue = rhs.evaluate(objectMap);
- return (rhsValue != null && Boolean.TRUE.equals(rhsValue));
- }
+
+ private final BooleanEvaluator lhs;
+ private final BooleanEvaluator rhs;
+
+ public AndEvaluator(final BooleanEvaluator lhs, final BooleanEvaluator rhs) {
+ this.lhs = lhs;
+ this.rhs = rhs;
+ }
+
+ @Override
+ public Boolean evaluate(final Map<String, Object> objectMap) {
+ final Boolean lhsValue = lhs.evaluate(objectMap);
+ if (lhsValue == null || Boolean.FALSE.equals(lhsValue)) {
+ return false;
+ }
+
+ final Boolean rhsValue = rhs.evaluate(objectMap);
+ return (rhsValue != null && Boolean.TRUE.equals(rhsValue));
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/OrEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/OrEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/OrEvaluator.java
index d090946..e86daad 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/OrEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/logic/OrEvaluator.java
@@ -21,23 +21,24 @@ import java.util.Map;
import org.apache.nifi.hl7.query.evaluator.BooleanEvaluator;
public class OrEvaluator extends BooleanEvaluator {
- private final BooleanEvaluator lhs;
- private final BooleanEvaluator rhs;
-
- public OrEvaluator(final BooleanEvaluator lhs, final BooleanEvaluator rhs) {
- this.lhs = lhs;
- this.rhs = rhs;
- }
-
- @Override
- public Boolean evaluate(final Map<String, Object> objectMap) {
- final Boolean lhsValue = lhs.evaluate(objectMap);
- if ( lhsValue != null && Boolean.TRUE.equals(lhsValue) ) {
- return true;
- }
-
- final Boolean rhsValue = rhs.evaluate(objectMap);
- return (rhsValue != null && Boolean.TRUE.equals(rhsValue));
- }
+
+ private final BooleanEvaluator lhs;
+ private final BooleanEvaluator rhs;
+
+ public OrEvaluator(final BooleanEvaluator lhs, final BooleanEvaluator rhs) {
+ this.lhs = lhs;
+ this.rhs = rhs;
+ }
+
+ @Override
+ public Boolean evaluate(final Map<String, Object> objectMap) {
+ final Boolean lhsValue = lhs.evaluate(objectMap);
+ if (lhsValue != null && Boolean.TRUE.equals(lhsValue)) {
+ return true;
+ }
+
+ final Boolean rhsValue = rhs.evaluate(objectMap);
+ return (rhsValue != null && Boolean.TRUE.equals(rhsValue));
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DeclaredReferenceEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DeclaredReferenceEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DeclaredReferenceEvaluator.java
index 6afb8d7..bb3f203 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DeclaredReferenceEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DeclaredReferenceEvaluator.java
@@ -22,21 +22,22 @@ import org.apache.nifi.hl7.query.evaluator.Evaluator;
import org.apache.nifi.hl7.query.evaluator.StringEvaluator;
public class DeclaredReferenceEvaluator implements Evaluator<Object> {
- private final StringEvaluator referenceNameEvaluator;
-
- public DeclaredReferenceEvaluator(final StringEvaluator referenceNameEvaluator) {
- this.referenceNameEvaluator = referenceNameEvaluator;
- }
-
- @Override
- public Object evaluate(final Map<String, Object> objectMap) {
- final String referenceName = referenceNameEvaluator.evaluate(objectMap);
- return objectMap.get(referenceName);
- }
-
- @Override
- public Class<? extends Object> getType() {
- return Object.class;
- }
+
+ private final StringEvaluator referenceNameEvaluator;
+
+ public DeclaredReferenceEvaluator(final StringEvaluator referenceNameEvaluator) {
+ this.referenceNameEvaluator = referenceNameEvaluator;
+ }
+
+ @Override
+ public Object evaluate(final Map<String, Object> objectMap) {
+ final String referenceName = referenceNameEvaluator.evaluate(objectMap);
+ return objectMap.get(referenceName);
+ }
+
+ @Override
+ public Class<? extends Object> getType() {
+ return Object.class;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/9faaef8c/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DotEvaluator.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DotEvaluator.java b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DotEvaluator.java
index c5fbf41..238b540 100644
--- a/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DotEvaluator.java
+++ b/nifi/nifi-commons/nifi-hl7-query-language/src/main/java/org/apache/nifi/hl7/query/evaluator/message/DotEvaluator.java
@@ -28,61 +28,62 @@ import org.apache.nifi.hl7.query.evaluator.Evaluator;
import org.apache.nifi.hl7.query.evaluator.IntegerEvaluator;
public class DotEvaluator implements Evaluator<Object> {
- private final Evaluator<?> lhs;
- private final IntegerEvaluator rhs;
-
- public DotEvaluator(final Evaluator<?> lhs, final IntegerEvaluator rhs) {
- this.lhs = lhs;
- this.rhs = rhs;
- }
-
- @Override
- public Object evaluate(final Map<String, Object> objectMap) {
- final Object lhsValue = this.lhs.evaluate(objectMap);
- final Integer rhsValue = this.rhs.evaluate(objectMap);
-
- if ( lhsValue == null || rhsValue == null ) {
- return null;
- }
-
- final List<Object> results = new ArrayList<>();
- if ( lhsValue instanceof Collection ) {
- final Collection<?> lhsCollection = (Collection<?>) lhsValue;
- for ( final Object obj : lhsCollection ) {
- final Object val = getValue(obj, rhsValue);
- results.add(val);
- }
- } else {
- final Object val = getValue(lhsValue, rhsValue);
- return val;
- }
-
- return results;
- }
-
- private Object getValue(final Object lhsValue, final int rhsValue) {
- final List<?> list;
- if ( lhsValue instanceof HL7Message ) {
- list = ((HL7Message) lhsValue).getSegments();
- } else if ( lhsValue instanceof HL7Segment ) {
- list = ((HL7Segment) lhsValue).getFields();
- } else if ( lhsValue instanceof HL7Component ) {
- list = ((HL7Component) lhsValue).getComponents();
- } else {
- return null;
- }
-
- if ( rhsValue > list.size() ) {
- return null;
- }
-
- // convert from 0-based to 1-based
- return list.get(rhsValue - 1);
- }
- @Override
- public Class<? extends Object> getType() {
- return Object.class;
- }
+ private final Evaluator<?> lhs;
+ private final IntegerEvaluator rhs;
+
+ public DotEvaluator(final Evaluator<?> lhs, final IntegerEvaluator rhs) {
+ this.lhs = lhs;
+ this.rhs = rhs;
+ }
+
+ @Override
+ public Object evaluate(final Map<String, Object> objectMap) {
+ final Object lhsValue = this.lhs.evaluate(objectMap);
+ final Integer rhsValue = this.rhs.evaluate(objectMap);
+
+ if (lhsValue == null || rhsValue == null) {
+ return null;
+ }
+
+ final List<Object> results = new ArrayList<>();
+ if (lhsValue instanceof Collection) {
+ final Collection<?> lhsCollection = (Collection<?>) lhsValue;
+ for (final Object obj : lhsCollection) {
+ final Object val = getValue(obj, rhsValue);
+ results.add(val);
+ }
+ } else {
+ final Object val = getValue(lhsValue, rhsValue);
+ return val;
+ }
+
+ return results;
+ }
+
+ private Object getValue(final Object lhsValue, final int rhsValue) {
+ final List<?> list;
+ if (lhsValue instanceof HL7Message) {
+ list = ((HL7Message) lhsValue).getSegments();
+ } else if (lhsValue instanceof HL7Segment) {
+ list = ((HL7Segment) lhsValue).getFields();
+ } else if (lhsValue instanceof HL7Component) {
+ list = ((HL7Component) lhsValue).getComponents();
+ } else {
+ return null;
+ }
+
+ if (rhsValue > list.size()) {
+ return null;
+ }
+
+ // convert from 0-based to 1-based
+ return list.get(rhsValue - 1);
+ }
+
+ @Override
+ public Class<? extends Object> getType() {
+ return Object.class;
+ }
}