Author: michiel
Date: 2010-04-12 18:21:03 +0200 (Mon, 12 Apr 2010)
New Revision: 41855

Modified:
   
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/implementation/BasicNodeQuery.java
   
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/implementation/BasicQuery.java
   mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/util/Queries.java
   
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/BridgeClusterQueries.java
   
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/ClusterQueries.java
   mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/QueryContext.java
   
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicSearchQuery.java
   
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
Log:
rationalized a bit

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/implementation/BasicNodeQuery.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/implementation/BasicNodeQuery.java
      2010-04-12 15:46:53 UTC (rev 41854)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/implementation/BasicNodeQuery.java
      2010-04-12 16:21:03 UTC (rev 41855)
@@ -164,7 +164,7 @@
         query.setDistinct(distinct);
         if (distinct) { // in that case, make sure only the 'explicitely' 
added fields remain.
             query.removeFields();
-            query.addFields(step, new BridgeClusterQueries(getCloud()));
+            query.addFields(step, new QueryContext.Bridge(getCloud()));
             implicitFields.clear();
             addFields(explicitFields);
         }

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/implementation/BasicQuery.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/implementation/BasicQuery.java
  2010-04-12 15:46:53 UTC (rev 41854)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/implementation/BasicQuery.java
  2010-04-12 16:21:03 UTC (rev 41855)
@@ -30,8 +30,10 @@
  * @since MMBase-1.7
  * @see org.mmbase.storage.search.implementation.BasicSearchQuery
  */
-public class BasicQuery implements Query  {
+public class BasicQuery implements Query, java.io.Serializable  {
+    private static final long serialVersionUID = 1L;
 
+
     private static final Logger log = 
Logging.getLoggerInstance(BasicQuery.class);
 
     /**

Modified: mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/util/Queries.java
===================================================================
--- mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/util/Queries.java       
2010-04-12 15:46:53 UTC (rev 41854)
+++ mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/util/Queries.java       
2010-04-12 16:21:03 UTC (rev 41855)
@@ -145,7 +145,7 @@
         List<String> d        = StringSplitter.split(directions);
         try {
             Query query = new BasicQuery(cloud,
-                                         new 
BridgeClusterQueries(cloud).getMultiLevelSearchQuery(snodes, f, distinct ? 
"YES" : "NO", tables, constraints, orderVec, d, 
Collections.singletonList(search)));
+                                         new 
QueryContext.Bridge(cloud).getClusterQueries().getMultiLevelSearchQuery(snodes, 
f, distinct ? "YES" : "NO", tables, constraints, orderVec, d, 
Collections.singletonList(search)));
             return query;
         } catch (IllegalArgumentException iae) {
             throw new BridgeException(iae.getMessage() + ". (arguments: 
startNodes='" + startNodes + "', path='" + nodePath + "', fields='" + fields + 
"', constraints='" + constraints + "' orderby='" + orderby + "', directions='" 
+ directions + "', searchdir='" + searchDir + "')" , iae);

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/BridgeClusterQueries.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/BridgeClusterQueries.java
       2010-04-12 15:46:53 UTC (rev 41854)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/BridgeClusterQueries.java
       2010-04-12 16:21:03 UTC (rev 41855)
@@ -19,51 +19,48 @@
  * @since MMBase-2.0
  */
 public class BridgeClusterQueries extends ClusterQueries {
-    private final Cloud cloud;
-    public BridgeClusterQueries(Cloud cloud) {
-        this.cloud = cloud;
+    private final QueryContext.Bridge queryContext;
+    public BridgeClusterQueries(QueryContext.Bridge qc) {
+        this.queryContext = qc;
     }
 
     @Override
+    public QueryContext getQueryContext() {
+        return queryContext;
+    }
+
+    @Override
     protected int getNumberForAlias(String alias) {
-        return cloud.getNode(alias).getNumber();
+        return queryContext.cloud.getNode(alias).getNumber();
 
     }
 
     @Override
     protected boolean isRelation(String builder) {
-        NodeManager insrel = cloud.getNodeManager("insrel");
-        NodeManager nm     = cloud.getNodeManager(builder);
+        NodeManager insrel = queryContext.cloud.getNodeManager("insrel");
+        NodeManager nm     = queryContext.cloud.getNodeManager(builder);
         return nm.equals(insrel) || insrel.getDescendants().contains(nm);
     }
 
     @Override
     protected String getBuilder(int nodeNumber) {
-        return cloud.getNode(nodeNumber).getNodeManager().getName();
+        return 
queryContext.cloud.getNode(nodeNumber).getNodeManager().getName();
     }
 
 
     @Override
     protected int getBuilderNumber(String nodeManager) {
-        return cloud.getNodeManager(nodeManager).getNumber();
+        return queryContext.cloud.getNodeManager(nodeManager).getNumber();
     }
 
     @Override
     protected String getParentBuilder(String builder) {
-        NodeManager parent = cloud.getNodeManager(builder).getParent();
+        NodeManager parent = 
queryContext.cloud.getNodeManager(builder).getParent();
         return parent == null ? null : parent.getName();
     }
 
     @Override
-    public Field getField(String builder, String fieldName) {
-        try {
-            return cloud.getNodeManager(builder).getField(fieldName);
-        } catch (NotFoundException nfe) {
-            throw new IllegalArgumentException(nfe);
-        }
-    }
-    @Override
-    protected StepField getField(String fieldName, SearchQuery query){
+    protected StepField getField(String fieldName, SearchQuery query) {
         // TODO TEST.
         String[] split = fieldName.split(".");
         for (StepField sf : query.getFields()) {
@@ -73,16 +70,12 @@
         }
         return null;
     }
-    @Override
-    public  Collection<Field> getFields(String builder) {
-        return 
cloud.getNodeManager(builder).getFields(NodeManager.ORDER_CREATE);
-    }
 
     @Override
     public String getTrueTableName(String table) {
         String tab = getTableName(table);
-        if (cloud.hasRelationManager(tab)) {
-            return cloud.getRelationManager(tab).getName();
+        if (queryContext.cloud.hasRelationManager(tab)) {
+            return queryContext.cloud.getRelationManager(tab).getName();
         } else {
             return table;
         }
@@ -98,13 +91,12 @@
     protected String getBuilder(final String tableAlias, Map<String, Integer> 
roles) {
         String tableName = getTableName(tableAlias);
         try {
-            RelationManager rm = cloud.getRelationManager(tableName);
-            System.out.println(cloud);
+            RelationManager rm = 
queryContext.cloud.getRelationManager(tableName);
             String r = rm.getForwardRole();
             roles.put(tableAlias, rm.getNumber());
             return rm.getName();
         } catch (NotFoundException nfe) {
-            if (cloud.hasNodeManager(tableName)) {
+            if (queryContext.cloud.hasNodeManager(tableName)) {
                 return tableName;
             } else {
                 throw new IllegalArgumentException("'" + tableAlias + "' is 
neither a role, nor a builder");

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/ClusterQueries.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/ClusterQueries.java 
    2010-04-12 15:46:53 UTC (rev 41854)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/ClusterQueries.java 
    2010-04-12 16:21:03 UTC (rev 41855)
@@ -25,6 +25,8 @@
 
     private static final Logger log= 
Logging.getLoggerInstance(ClusterQueries.class);
 
+
+    protected abstract QueryContext getQueryContext();
     /**
      * Translates a search direction constant to a string.
      *
@@ -82,7 +84,7 @@
     public Field getField(String fieldName) {
         String builderName = getBuilderNameFromField(fieldName);
         if (builderName.length() > 0) {
-            return getField(builderName, getFieldNameFromField(fieldName));
+            return getQueryContext().getField(builderName, 
getFieldNameFromField(fieldName));
         } else {
             //
             String bul = getTrueTableName(fieldName);
@@ -93,11 +95,8 @@
         return null;
     }
 
-    public abstract Field getField(String builder, String fieldName);
 
 
-    public abstract Collection<? extends Field> getFields(String builder);
-
     /**
      * Returns the name part of a tablename.
      * The name part is the table name minus the numeric digit appended
@@ -467,7 +466,7 @@
             return;
         }
 
-        Field fieldDefs= getField(step.getTableName(), fieldName);
+        Field fieldDefs= getQueryContext().getField(step.getTableName(), 
fieldName);
         if (fieldDefs == null) {
             throw new IllegalArgumentException("Not a known field of builder " 
+ step.getTableName() + ": \"" + fieldName + "\"");
         }

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/QueryContext.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/QueryContext.java   
    2010-04-12 15:46:53 UTC (rev 41854)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/QueryContext.java   
    2010-04-12 16:21:03 UTC (rev 41855)
@@ -25,13 +25,19 @@
 
     String getStorageIdentifier(String s);
     Field  getField(String builder, String fieldName);
+    Collection<? extends Field> getFields(String builder);
 
+    ClusterQueries getClusterQueries();
 
+
     public static class Bridge implements QueryContext {
 
         protected final Cloud cloud;
+        protected final BridgeClusterQueries clusterQueries;
+
         public Bridge(Cloud c) {
             cloud = c;
+            clusterQueries = new BridgeClusterQueries(this);
         }
         public  String getStorageIdentifier(String s) {
             return s;
@@ -39,6 +45,17 @@
         public  Field getField(String builder, String fieldName) {
             return cloud.getNodeManager(builder).getField(fieldName);
         }
+        public  Collection<Field> getFields(String builder) {
+            return 
cloud.getNodeManager(builder).getFields(NodeManager.ORDER_CREATE);
+        }
+
+
+
+        public BridgeClusterQueries getClusterQueries() {
+            return clusterQueries;
+        }
+
+
     }
 
 

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicSearchQuery.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicSearchQuery.java
    2010-04-12 15:46:53 UTC (rev 41854)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicSearchQuery.java
    2010-04-12 16:21:03 UTC (rev 41855)
@@ -454,20 +454,20 @@
 
     }
 
-    public void  addFields(Step step, ClusterQueries cq) {
-        addFields(step, step.getTableName(), cq);
+    public void  addFields(Step step, QueryContext qc) {
+        addFields(step, step.getTableName(), qc);
     }
 
     /**
      * Add all fields of given step
      */
-    protected void  addFields(Step step, String builder, ClusterQueries cq) {
+    protected void  addFields(Step step, String builder, QueryContext qc) {
         if (! modifiable) throw new IllegalStateException("Unmodifiable");
         // http://www.mmbase.org/jira/browse/MMB-1435,
         // Using fields with "ORDER_CREATE" only returns fields actually in 
storage, and also in the
         // right order, which is important for microsoft JDBC.
 
-        for (Field field : cq.getFields(builder)) {
+        for (Field field : qc.getFields(builder)) {
             if (! field.isVirtual()) {
                 BasicStepField stepField = addField(step, field);
                 mapField(field, stepField);

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
     2010-04-12 15:46:53 UTC (rev 41854)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
     2010-04-12 16:21:03 UTC (rev 41855)
@@ -51,12 +51,12 @@
      *        {...@link org.mmbase.module.core.VirtualBuilder virtual} builder.
      * @throws IllegalArgumentException When an invalid argument is supplied.
      */
-    public NodeSearchQuery(String builder, ClusterQueries cq) {
+    public NodeSearchQuery(String builder, QueryContext qc) {
         if (builder == null) {
             throw new IllegalArgumentException("Invalid builder value: " + 
builder);
         }
         Step step = super.addStep(builder);
-        addFields(step, builder, cq);
+        addFields(step, builder, qc);
         this.builder = builder;
     }
 

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

Reply via email to