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