You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2015/08/24 14:57:45 UTC

olingo-odata4 git commit: [OLINGO-713] $filter Tutorial - some minor refactorings

Repository: olingo-odata4
Updated Branches:
  refs/heads/master 08ffd2019 -> b376959f9


[OLINGO-713] $filter Tutorial - some minor refactorings


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/b376959f
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/b376959f
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/b376959f

Branch: refs/heads/master
Commit: b376959f9f12c476a04a9d34e238312087f9d349
Parents: 08ffd20
Author: Christian Holzer <c....@sap.com>
Authored: Mon Aug 24 14:57:14 2015 +0200
Committer: Christian Holzer <c....@sap.com>
Committed: Mon Aug 24 14:57:14 2015 +0200

----------------------------------------------------------------------
 .../service/FilterExpressionVisitor.java        | 63 +++++++-------------
 samples/tutorials/pom.xml                       |  1 +
 2 files changed, 22 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b376959f/samples/tutorials/p7_queryoptions-f/src/main/java/myservice/mynamespace/service/FilterExpressionVisitor.java
----------------------------------------------------------------------
diff --git a/samples/tutorials/p7_queryoptions-f/src/main/java/myservice/mynamespace/service/FilterExpressionVisitor.java b/samples/tutorials/p7_queryoptions-f/src/main/java/myservice/mynamespace/service/FilterExpressionVisitor.java
index 7550497..5a9af92 100644
--- a/samples/tutorials/p7_queryoptions-f/src/main/java/myservice/mynamespace/service/FilterExpressionVisitor.java
+++ b/samples/tutorials/p7_queryoptions-f/src/main/java/myservice/mynamespace/service/FilterExpressionVisitor.java
@@ -121,47 +121,26 @@ public class FilterExpressionVisitor implements ExpressionVisitor<Object> {
 	  //   - Boolean operations like and, or are allowed on Edm.Boolean
 	  // A detailed explanation can be found in OData Version 4.0 Part 2: URL Conventions 
 	  
-    switch (operator) {
-    
-    // Arithmetic operations
-    case ADD:
-      /** Fall through **/
-    case MOD:
-      /** Fall through **/
-    case MUL:
-      /** Fall through **/
-    case DIV:
-      /** Fall through **/
-    case SUB:
+    if (operator == BinaryOperatorKind.ADD
+        || operator == BinaryOperatorKind.MOD
+        || operator == BinaryOperatorKind.MUL
+        || operator == BinaryOperatorKind.DIV
+        || operator == BinaryOperatorKind.SUB) {
       return evaluateArithmeticOperation(operator, left, right);
-
-    // Logical operations
-    case EQ:
-      /** Fall through **/
-    case NE:
-      /** Fall through **/
-    case GE:
-      /** Fall through **/
-    case GT:
-      /** Fall through **/
-    case LE:
-      /** Fall through **/
-    case LT:
-      return evaluateLogicalOperation(operator, left, right);
-      
-    // Boolean operations
-    case AND:
-      /** Fall through **/
-    case OR:
+    } else if (operator == BinaryOperatorKind.EQ
+        || operator == BinaryOperatorKind.NE
+        || operator == BinaryOperatorKind.GE
+        || operator == BinaryOperatorKind.GT
+        || operator == BinaryOperatorKind.LE
+        || operator == BinaryOperatorKind.LT) {
+      return evaluateComparisonOperation(operator, left, right);
+    } else if (operator == BinaryOperatorKind.AND
+        || operator == BinaryOperatorKind.OR) {
       return evaluateBooleanOperation(operator, left, right);
-    
-    case HAS:
-      // Has operation is not supported. We do not use enums in our service.
-      /** fall through **/
-    default:
-      throw new ODataApplicationException("Binary operation " + operator.name() + " is not implemented", 
+	  } else {
+	    throw new ODataApplicationException("Binary operation " + operator.name() + " is not implemented", 
           HttpStatusCode.NOT_IMPLEMENTED.getStatusCode(), Locale.ENGLISH);
-    }
+	  }
   }
 
 	private Object evaluateBooleanOperation(BinaryOperatorKind operator, Object left, Object right)
@@ -186,12 +165,12 @@ public class FilterExpressionVisitor implements ExpressionVisitor<Object> {
 	}
 
   @SuppressWarnings("unchecked")
-  private Object evaluateLogicalOperation(BinaryOperatorKind operator, Object left, Object right) 
+  private Object evaluateComparisonOperation(BinaryOperatorKind operator, Object left, Object right) 
       throws ODataApplicationException {
     
     // All types in our tutorial supports all logical operations, but we have to make sure that the types are equals
     if(left.getClass().equals(right.getClass())) {
-      // Luckily all used types String, Boolean and also Integer supports the interface Comparable
+      // Luckily all used types String, Boolean and also Integer support the interface Comparable
       // TODO: Is this OK? Otherwise we can infer generic arguments after using an if statement
       @SuppressWarnings("rawtypes")
       int result = ((Comparable) left).compareTo(right);
@@ -212,7 +191,7 @@ public class FilterExpressionVisitor implements ExpressionVisitor<Object> {
       }
       
     } else {
-      throw new ODataApplicationException("Comparision needs to equal types", 
+      throw new ODataApplicationException("Comparision needs two equal types", 
           HttpStatusCode.BAD_REQUEST.getStatusCode(), Locale.ENGLISH);
     }
   }
@@ -220,7 +199,7 @@ public class FilterExpressionVisitor implements ExpressionVisitor<Object> {
   private Object evaluateArithmeticOperation(BinaryOperatorKind operator, Object left, 
       Object right) throws ODataApplicationException {
 
-	  // First check if the type of of both operands is numerical
+	  // First check if the type of both operands is numerical
 	  if(left instanceof Integer && right instanceof Integer) {
 	    Integer valueLeft = (Integer) left;
 	    Integer valueRight = (Integer) right;

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b376959f/samples/tutorials/pom.xml
----------------------------------------------------------------------
diff --git a/samples/tutorials/pom.xml b/samples/tutorials/pom.xml
index c00028e..c4244dd 100644
--- a/samples/tutorials/pom.xml
+++ b/samples/tutorials/pom.xml
@@ -41,6 +41,7 @@
     <module>p4_navigation</module>
     <module>p5_queryoptions-tcs</module>
     <module>p6_queryoptions-es</module>
+    <module>p7_queryoptions-f</module>
   </modules>
 
   <build>