Author: michiel
Date: 2010-04-02 18:50:29 +0200 (Fri, 02 Apr 2010)
New Revision: 41750
Modified:
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/Fields.java
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/implementation/BasicQuery.java
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/util/MapNodeManager.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/implementation/BasicSearchQuery.java
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicStep.java
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
Log:
at least compiles now
Modified: mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/Fields.java
===================================================================
--- mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/Fields.java
2010-04-02 16:17:48 UTC (rev 41749)
+++ mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/Fields.java
2010-04-02 16:50:29 UTC (rev 41750)
@@ -230,7 +230,6 @@
}
}
public static Map<String, Field> getFieldTypes(SearchQuery query,
NodeManager nm) {
- return Fields.getFieldTypes(query, nm);
Cloud cloud = nm.getCloud();
Map<String, Field> fieldTypes = new HashMap<String, Field>();
// code to solve the fields.
@@ -239,7 +238,7 @@
if (name == null) {
name = step.getTableName();
}
- Field ft = new VirtualNodeManagerField(nm, UNKNOWN_NODE_TYPE,
name);
+ Field ft = new VirtualNodeManagerField(nm,
createSystemField(cloud, name, Field.TYPE_NODE), name);
fieldTypes.put(name, ft);
if (allowNonQueriedFields && ! query.isAggregating()) {
@@ -272,7 +271,24 @@
}
+ public static Field createSystemField(Cloud cloud, String name, int type) {
+ return createField(cloud, name, type, Field.TYPE_UNKNOWN,
Field.STATE_SYSTEM, null);
+ }
+ /**
+ * Defaulting version of {...@link #createField(String, int int, int,
DataType)} (no list item type,
+ * because it is nearly always irrelevant).
+ */
+ public static Field createField(Cloud cloud, String name, int type, int
state, DataType dataType) {
+ return createField(cloud, name, type, Field.TYPE_UNKNOWN, state,
dataType);
+ }
+ public static Field createField(Cloud cloud, String name, int type, int
listItemType, int state, DataType dataType) {
+ throw new UnsupportedOperationException("TODO");
+ }
+
+
+
+
}
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-02 16:17:48 UTC (rev 41749)
+++
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/implementation/BasicQuery.java
2010-04-02 16:50:29 UTC (rev 41750)
@@ -719,9 +719,11 @@
public String toSql() {
try {
//return
MMBase.getMMBase().getSearchQueryHandler().createSqlString(query);
- return
cloud.getCloudContext().getSearchQueryHandler().createSqlString(query);
- } catch (org.mmbase.storage.search.SearchQueryException sqe) {
- return sqe.getMessage() + ": " + toString();
+ //return
cloud.getCloudContext().getSearchQueryHandler().createSqlString(query);
+ // TODO
+ return "" + toString();
+ // } catch (org.mmbase.storage.search.SearchQueryException
sqe) {
+ //return sqe.getMessage() + ": " + toString();
} catch (Exception ise) {
return ise.getMessage() + ": " + toString();
}
Modified:
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/util/MapNodeManager.java
===================================================================
---
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/util/MapNodeManager.java
2010-04-02 16:17:48 UTC (rev 41749)
+++
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/util/MapNodeManager.java
2010-04-02 16:50:29 UTC (rev 41750)
@@ -54,8 +54,9 @@
private Field mapField(String fieldName, Object value) {
Field field = fieldTypes.get(fieldName);
if (field == null) {
- Field fd = Fields.createField(fieldName, Fields.classToType(value
== null ? Object.class : value.getClass()),
- Field.TYPE_UNKNOWN,
Field.STATE_VIRTUAL, null);
+ Field fd = Fields.createField(getCloud(),
+ fieldName, Fields.classToType(value
== null ? Object.class : value.getClass()),
+ Field.TYPE_UNKNOWN,
Field.STATE_VIRTUAL, null);
field = new BasicField(fd, this);
fieldTypes.put(fieldName, field);
}
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-02 16:17:48 UTC (rev 41749)
+++
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/BridgeClusterQueries.java
2010-04-02 16:50:29 UTC (rev 41750)
@@ -11,9 +11,13 @@
import java.util.*;
import org.mmbase.bridge.*;
+import org.mmbase.storage.search.implementation.*;
import org.mmbase.util.logging.*;
+/**
+ * @since MMBase-2.0
+ */
public class BridgeClusterQueries extends ClusterQueries {
private final Cloud cloud;
public BridgeClusterQueries(Cloud cloud) {
@@ -38,7 +42,13 @@
return cloud.getNode(nodeNumber).getNodeManager().getName();
}
+
@Override
+ protected int getBuilderNumber(String nodeManager) {
+ return cloud.getNodeManager(nodeManager).getNumber();
+ }
+
+ @Override
protected String getParentBuilder(String builder) {
NodeManager parent = cloud.getNodeManager(builder).getParent();
return parent == null ? null : parent.getName();
@@ -52,6 +62,17 @@
throw new IllegalArgumentException(nfe);
}
}
+ @Override
+ protected StepField getField(String fieldName, SearchQuery query){
+ // TODO TEST.
+ String[] split = fieldName.split(".");
+ for (StepField sf : query.getFields()) {
+ if (sf.getStep().getAlias().equals(split[0]) &&
sf.getFieldName().equals(split[1])) {
+ return sf;
+ }
+ }
+ return null;
+ }
@Override
public String getTrueTableName(String table) {
@@ -93,6 +114,9 @@
throw new UnsupportedOperationException("Not supported yet.");
}
+ protected void setConstraint(BasicSearchQuery query, String where) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
}
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-02 16:17:48 UTC (rev 41749)
+++
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/ClusterQueries.java
2010-04-02 16:50:29 UTC (rev 41750)
@@ -112,6 +112,7 @@
return table.substring(0, end );
}
+
/**
* Returns the name part of a tablename, and convert it to a buidler name.
* This will catch specifying a rolename in stead of a builder name when
using relations.
@@ -530,9 +531,10 @@
}
}
- protected abstract StepField getField(String fieldName, BasicSearchQuery
query);
+ protected abstract StepField getField(String fieldName, SearchQuery query);
protected abstract String getBuilder(int nodeNumber);
+ protected abstract int getBuilderNumber(String builderName);
protected abstract String getParentBuilder(String builder);
/**
@@ -609,9 +611,9 @@
// FIXME this cast to BasicStep is ugly and should not be here in
a clean implementation
// Determine typedef number of the source-type.
- int sourceType =
((BasicStep)sourceStep).getBuilder().getObjectType();
+ int sourceType = getBuilderNumber(sourceStep.getTableName());
// Determine the typedef number of the destination-type.
- int destinationType =
((BasicStep)destinationStep).getBuilder().getObjectType();
+ int destinationType =
getBuilderNumber(destinationStep.getTableName());
// Determine reldef number of the role.
Integer role = roles.get(relationStep.getAlias());
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-02 16:17:48 UTC (rev 41749)
+++
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicSearchQuery.java
2010-04-02 16:50:29 UTC (rev 41750)
@@ -178,6 +178,7 @@
//log.info("copied steps " + q.getSteps() + " became " + steps);
unmodifiableSteps = Collections.unmodifiableList(steps);
}
+
protected void copyFields(SearchQuery q) {
if (! modifiable) throw new IllegalStateException("Unmodifiable");
fields = new ArrayList<StepField>(q.getFields().size());
@@ -453,14 +454,15 @@
}
- // MM
- /*
public void addFields(Step step) {
+ throw new UnsupportedOperationException("TODO");
+ /*
MMBase mmb = MMBase.getMMBase();
MMObjectBuilder builder = mmb.getBuilder(step.getTableName());
addFields(step, builder);
+ */
}
- */
+
/**
* Add all fields of given step
*/
Modified:
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicStep.java
===================================================================
---
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicStep.java
2010-04-02 16:17:48 UTC (rev 41749)
+++
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/BasicStep.java
2010-04-02 16:50:29 UTC (rev 41750)
@@ -10,7 +10,6 @@
package org.mmbase.storage.search.implementation;
import java.util.*;
-import org.mmbase.module.core.MMObjectBuilder;
import org.mmbase.storage.search.*;
/**
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-02 16:17:48 UTC (rev 41749)
+++
mmbase/trunk/bridge/src/main/java/org/mmbase/storage/search/implementation/NodeSearchQuery.java
2010-04-02 16:50:29 UTC (rev 41750)
@@ -65,7 +65,7 @@
}
*/
public NodeSearchQuery(NodeManager nodeManager) {
- Step step = super.addStep(builder.getName());
+ Step step = super.addStep(nodeManager.getName());
for (Field f : nodeManager.getFields(NodeManager.ORDER_CREATE)) {
if (! f.isVirtual() && f.getType() != Field.TYPE_BINARY) {
addField(step, f);
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs