Update of /var/cvs/src/org/mmbase/bridge/util/xml/query
In directory
james.mmbase.org:/tmp/cvs-serv13705/src/org/mmbase/bridge/util/xml/query
Modified Files:
QueryReader.java
Log Message:
Expand 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.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- QueryReader.java 6 Aug 2007 10:03:09 -0000 1.15
+++ QueryReader.java 29 Jan 2008 10:06:22 -0000 1.16
@@ -23,7 +23,7 @@
* This class contains static methods related to creating a Query object using
a (fragment of an) XML.
*
* @author Pierre van Rooden
- * @version $Id: QueryReader.java,v 1.15 2007/08/06 10:03:09 michiel Exp $
+ * @version $Id: QueryReader.java,v 1.16 2008/01/29 10:06:22 pierre Exp $
* @since MMBase-1.8
**/
public abstract class QueryReader {
@@ -62,11 +62,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"));
String opt = fieldElement.getAttribute("optional");
@@ -99,7 +107,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")) {
@@ -107,7 +115,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")) {
@@ -181,7 +189,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) {
@@ -347,7 +355,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"));
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs