Author: ernst
Date: 2009-05-29 10:09:45 +0200 (Fri, 29 May 2009)
New Revision: 35494

Added:
   speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/QueryLimit.java
Modified:
   
speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/DefaultQueryHelper.java
   speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/Populator.java
   speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/QueryHelper.java
   
speeltuin/ernst/mmbase-vob/src/test/java/nl/vpro/mmbase/vob/NoResultsQueryHelper.java
   
speeltuin/ernst/mmbase-vob/src/test/java/nl/vpro/mmbase/vob/PathFragmentToNodenrQueryHelper.java
Log:
I simplified the QueryHelper by removing the semi-duplcate query method.
This makes it a lot easyer to mock this interface, becouse it is no longer 
abiguous which of the two methods is called by the mmbase-vob code.


Modified: 
speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/DefaultQueryHelper.java
===================================================================
--- 
speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/DefaultQueryHelper.java
 2009-05-28 22:44:29 UTC (rev 35493)
+++ 
speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/DefaultQueryHelper.java
 2009-05-29 08:09:45 UTC (rev 35494)
@@ -24,24 +24,14 @@
     remapSortDirection.put(Direction.DESC, "down");
   }
 
-  /* (non-Javadoc)
-   * @see nl.vpro.mmbase.vob.QueryHelper#query(org.mmbase.bridge.Cloud, int, 
java.lang.String, java.lang.String, java.lang.String, 
nl.vpro.mmbase.vob.Direction, nl.vpro.mmbase.vob.QueryDirection)
-   */
-  public List<Node> query(Cloud cloud, int startNumber, String path, String 
fields, String sortField, Direction dir, QueryDirection queryDir) {
-    String queryDirectionAsString = queryDir.toString().toLowerCase();
-    Query query = Queries.createQuery(cloud, String.valueOf(startNumber), 
path, fields, null, sortField, remapSortDirection.get(dir), 
queryDirectionAsString, true);
 
-    return executeQuery(cloud, query);
-  }
-
-  /* (non-Javadoc)
-   * @see nl.vpro.mmbase.vob.QueryHelper#query(org.mmbase.bridge.Cloud, int, 
java.lang.String, java.lang.String, java.lang.String, 
nl.vpro.mmbase.vob.Direction, nl.vpro.mmbase.vob.QueryDirection, int)
-   */
-  public List<Node> query(Cloud cloud, int startNumber, String path, String 
fields, String sortField, Direction dir, QueryDirection queryDir, int max) {
+  public List<Node> query(Cloud cloud, int startNumber, String path, String 
fields, String sortField, Direction dir, QueryDirection queryDir, QueryLimit 
limit) {
     String queryDirectionAsString = queryDir.toString().toLowerCase();
-
     Query query = Queries.createQuery(cloud, String.valueOf(startNumber), 
path, fields, null, sortField, remapSortDirection.get(dir), 
queryDirectionAsString, true);
-    query.setMaxNumber(max);
+    
+    if(limit.isLimited()){
+        query.setMaxNumber(limit.getMax());
+    }
 
     return executeQuery(cloud, query);
   }

Modified: 
speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/Populator.java
===================================================================
--- speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/Populator.java  
2009-05-28 22:44:29 UTC (rev 35493)
+++ speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/Populator.java  
2009-05-29 08:09:45 UTC (rev 35494)
@@ -147,7 +147,7 @@
         final String orderField = String.format("%s.%s", targetBuilder, 
embeddedAnnotation.orderField());
 
         final List<Node> virtualNodes = queryHelper.query(cloud, 
node.getNumber(), path, targetField, orderField,
-                embeddedAnnotation.orderDirection(), 
embeddedAnnotation.queryDirection(), 1);
+                embeddedAnnotation.orderDirection(), 
embeddedAnnotation.queryDirection(), QueryLimit.single());
 
         if (virtualNodes.size() > 0) {
             try {
@@ -202,7 +202,7 @@
         final String orderField = "posrel.pos";
 
         final List<Node> virtualNodes = queryHelper.query(cloud, 
node.getNumber(), path, targetField, orderField,
-                posRel.orderDirection(), posRel.queryDirection());
+                posRel.orderDirection(), posRel.queryDirection(), 
QueryLimit.unlimited());
         final List<Node> nodes = loadNodes(cloud, virtualNodes, targetField);
         return unmarshallList(relatedType, nodes);
     }
@@ -216,7 +216,7 @@
         final String orderField = String.format("%s.%s", targetBuilder, 
rel.orderField());
 
         final List<Node> virtualNodes = queryHelper.query(cloud, 
node.getNumber(), path, targetField, orderField, rel
-                .orderDirection(), rel.queryDirection());
+                .orderDirection(), rel.queryDirection(), 
QueryLimit.unlimited());
         final List<Node> nodes = loadNodes(cloud, virtualNodes, targetField);
         return unmarshallList(relatedType, nodes);
     }

Modified: 
speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/QueryHelper.java
===================================================================
--- 
speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/QueryHelper.java    
    2009-05-28 22:44:29 UTC (rev 35493)
+++ 
speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/QueryHelper.java    
    2009-05-29 08:09:45 UTC (rev 35494)
@@ -12,25 +12,8 @@
  * @author [email protected]
  */
 interface QueryHelper {
-  /**
-   * @param cloud
-   *          The cloud to query
-   * @param startNumber
-   *          The startnode of the path
-   * @param path
-   *          The actual path
-   * @param fields
-   *          The fields to retrieve
-   * @param sortField
-   *          The field to sort by
-   * @param dir
-   *          The direction to sort in
-   * @param queryDir
-   *          The direction to query in
-   * @return A list of resulting nodes
-   */
-  List<Node> query(Cloud cloud, int startNumber, String path, String fields, 
String sortField, Direction dir, QueryDirection queryDir);
 
+
   /**
    * @param cloud
    *          The cloud to query
@@ -46,9 +29,9 @@
    *          The direction to sort in
    * @param queryDir
    *          The direction to query in
-   * @param max
+   * @param limit
    *          The maximum number of nodes to retrieve
    * @return A list of resulting nodes
    */
-  List<Node> query(Cloud cloud, int startNumber, String path, String fields, 
String sortField, Direction dir, QueryDirection queryDir, int max);
+  List<Node> query(Cloud cloud, int startNumber, String path, String fields, 
String sortField, Direction dir, QueryDirection queryDir, QueryLimit limit);
 }

Added: 
speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/QueryLimit.java
===================================================================
--- speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/QueryLimit.java 
                        (rev 0)
+++ speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/QueryLimit.java 
2009-05-29 08:09:45 UTC (rev 35494)
@@ -0,0 +1,33 @@
+package nl.vpro.mmbase.vob;
+
+/**
+ * @author Ernst Bunders
+ *
+ */
+public final class QueryLimit {
+    private int limit;
+    private QueryLimit(int limit){
+        this.limit = limit;
+    };
+    
+    public static QueryLimit unlimited(){
+        return new QueryLimit(-1);
+    }
+    
+    public static QueryLimit limited(int limit){
+        return new QueryLimit(limit);
+    }
+    
+    public static QueryLimit single(){
+        return new QueryLimit(1);
+    }
+    
+    public boolean isLimited(){
+        return limit > -1;
+    }
+    
+    public int getMax(){
+        return limit;
+    }
+    
+}


Property changes on: 
speeltuin/ernst/mmbase-vob/src/main/java/nl/vpro/mmbase/vob/QueryLimit.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: 
speeltuin/ernst/mmbase-vob/src/test/java/nl/vpro/mmbase/vob/NoResultsQueryHelper.java
===================================================================
--- 
speeltuin/ernst/mmbase-vob/src/test/java/nl/vpro/mmbase/vob/NoResultsQueryHelper.java
       2009-05-28 22:44:29 UTC (rev 35493)
+++ 
speeltuin/ernst/mmbase-vob/src/test/java/nl/vpro/mmbase/vob/NoResultsQueryHelper.java
       2009-05-29 08:09:45 UTC (rev 35494)
@@ -9,13 +9,8 @@
 public class NoResultsQueryHelper implements QueryHelper {
 
     public List<Node> query(Cloud cloud, int startNumber, String path, String 
fields, String sortField,
-            Direction dir, QueryDirection queryDir) {
+            Direction dir, QueryDirection queryDir, QueryLimit limit) {
         return Collections.emptyList();
     }
 
-    public List<Node> query(Cloud cloud, int startNumber, String path, String 
fields, String sortField,
-            Direction dir, QueryDirection queryDir, int max) {
-        return Collections.emptyList();
-    }
-
 }

Modified: 
speeltuin/ernst/mmbase-vob/src/test/java/nl/vpro/mmbase/vob/PathFragmentToNodenrQueryHelper.java
===================================================================
--- 
speeltuin/ernst/mmbase-vob/src/test/java/nl/vpro/mmbase/vob/PathFragmentToNodenrQueryHelper.java
    2009-05-28 22:44:29 UTC (rev 35493)
+++ 
speeltuin/ernst/mmbase-vob/src/test/java/nl/vpro/mmbase/vob/PathFragmentToNodenrQueryHelper.java
    2009-05-29 08:09:45 UTC (rev 35494)
@@ -6,7 +6,7 @@
 import org.mmbase.bridge.Node;
 import org.mmbase.bridge.util.MapNode;
 
-public class PathFragmentToNodenrQueryHelper extends  NoResultsQueryHelper{
+public class PathFragmentToNodenrQueryHelper implements QueryHelper{
     private String path;
     Map<String, ? extends Object> map;
 
@@ -26,7 +26,7 @@
     }
 
     public List<Node> query(Cloud cloud, int startNumber, String path, String 
fields, String sortField, Direction dir,
-            QueryDirection queryDir) {
+            QueryDirection queryDir, QueryLimit limit) {
 
         if (path.contains(this.path)) {
             MapNode dummyNode = new MapNode(map, cloud);
@@ -36,8 +36,4 @@
         }
     }
 
-    public List<Node> query(Cloud cloud, int startNumber, String path, String 
fields, String sortField, Direction dir,
-            QueryDirection queryDir, int max) {
-        return query(cloud, startNumber, path, fields, sortField, dir, 
queryDir).subList(0, max);
-    }
 }

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to