Update of /var/cvs/src/org/mmbase/bridge/util/xml/query
In directory
james.mmbase.org:/tmp/cvs-serv10943/src/org/mmbase/bridge/util/xml/query
Modified Files:
Tag: MMBase-1_8
QueryReader.java
Log Message:
Expands a fieldname in a multilevel query with the element nodemanager step if
no step is given.
See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/bridge/util/xml/query
Index: QueryReader.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/bridge/util/xml/query/QueryReader.java,v
retrieving revision 1.8.2.2
retrieving revision 1.8.2.3
diff -u -b -r1.8.2.2 -r1.8.2.3
--- QueryReader.java 6 Aug 2007 10:02:15 -0000 1.8.2.2
+++ QueryReader.java 23 Jan 2008 15:36:42 -0000 1.8.2.3
@@ -22,7 +22,7 @@
/**
*
* @author Pierre van Rooden
- * @version $Id: QueryReader.java,v 1.8.2.2 2007/08/06 10:02:15 michiel Exp $
+ * @version $Id: QueryReader.java,v 1.8.2.3 2008/01/23 15:36:42 pierre Exp $
* @since MMBase-1.8
**/
public class QueryReader {
@@ -61,11 +61,19 @@
}
}
+ /* Expands a fieldname in a multilevel query with the element nodemanager
step if no step is given.
+ */
+ protected static String getFullFieldName(QueryDefinition queryDefinition,
String fieldName) {
+ if (queryDefinition.isMultiLevel && fieldName.indexOf('.') == -1) {
+ fieldName = queryDefinition.elementManager.getName() + "." +
fieldName;
+ }
+ return fieldName;
+ }
protected static void addField(Element fieldElement, QueryDefinition
queryDefinition, QueryConfigurer configurer) {
if (hasAttribute(fieldElement,"name")) {
FieldDefinition fieldDefinition = configurer.getFieldDefinition();
- fieldDefinition.fieldName = fieldElement.getAttribute("name");
+ fieldDefinition.fieldName =
getFullFieldName(queryDefinition,fieldElement.getAttribute("name"));
try {
fieldDefinition.stepField =
queryDefinition.query.createStepField(fieldDefinition.fieldName);
} catch (IllegalArgumentException iae) {
@@ -91,7 +99,7 @@
if (!hasAttribute(constraintElement,"field")) {
throw new IllegalArgumentException("A constraint tag must have a
'field' attribute");
}
- String fieldName = getAttribute(constraintElement,"field");
+ String fieldName =
getFullFieldName(queryDefinition,getAttribute(constraintElement,"field"));
Object value = null;
if (hasAttribute(constraintElement,"value")) {
if (hasAttribute(constraintElement,"field2")) {
@@ -99,7 +107,7 @@
}
value = getAttribute(constraintElement,"value");
} else if (hasAttribute(constraintElement,"field2")) {
- value =
queryDefinition.query.createStepField(getAttribute(constraintElement,"field2"));
+ value =
queryDefinition.query.createStepField(getFullFieldName(queryDefinition,getAttribute(constraintElement,"field2")));
}
int operator = FieldCompareConstraint.EQUAL;
if (hasAttribute(constraintElement,"operator")) {
@@ -173,7 +181,7 @@
fieldName = getAttribute(constraintElement,"element") + ".number";
stepField = queryDefinition.query.createStepField(fieldName);
} else if (hasAttribute(constraintElement,"field")) {
- fieldName = getAttribute(constraintElement,"field");
+ fieldName =
getFullFieldName(queryDefinition,getAttribute(constraintElement,"field"));
stepField = queryDefinition.query.createStepField(fieldName);
} else {
if (queryDefinition.elementStep != null) {
@@ -340,7 +348,7 @@
if (!hasAttribute(sortOrderElement,"field")) {
throw new IllegalArgumentException("A sortorder tag must have a
'field' attribute");
}
- StepField stepField =
queryDefinition.query.createStepField(getAttribute(sortOrderElement,"field"));
+ StepField stepField =
queryDefinition.query.createStepField(getFullFieldName(queryDefinition,getAttribute(sortOrderElement,"field")));
int order = SortOrder.ORDER_ASCENDING;
if (hasAttribute(sortOrderElement,"direction")) {
order =
Queries.getSortOrder(getAttribute(sortOrderElement,"direction"));
@@ -382,6 +390,7 @@
if (hasAttribute(queryElement,"type")) {
path = getAttribute(queryElement,"type");
element = path;
+ searchDirs = getAttribute(queryElement,"searchdirs");
} else if (hasAttribute(queryElement,"name")) {
path = getAttribute(queryElement,"name");
element = path;
@@ -395,18 +404,18 @@
element = (String)builders.get(builders.size()-1);
}
}
+
if (relateFrom != null) {
path = relateFrom + "," + path;
}
-
-
QueryDefinition queryDefinition = configurer.getQueryDefinition();
queryDefinition.isMultiLevel = !path.equals(element);
+
if (element != null) {
queryDefinition.elementManager = cloud.getNodeManager(element);
}
- if (queryDefinition.isMultiLevel) {
+ if (!path.equals(element)) /* (queryDefinition.isMultiLevel) */ {
queryDefinition.query = cloud.createQuery();
Queries.addPath(queryDefinition.query, path, searchDirs);
} else {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs