r1341 - xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query

Ludovic Dubost ludovic at users.forge.objectweb.org
Tue Sep 26 01:55:42 CEST 2006


Author: ludovic
Date: 2006-09-26 01:54:50 +0200 (Tue, 26 Sep 2006)
New Revision: 1341

Modified:
   xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/QueryPlugin.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/XWikiQuery.java
Log:
Support ordering in query generator

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/QueryPlugin.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/QueryPlugin.java	2006-09-22 08:19:02 UTC (rev 1340)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/QueryPlugin.java	2006-09-25 23:54:50 UTC (rev 1341)
@@ -26,6 +26,7 @@
 import com.xpn.xwiki.XWikiException;
 import com.xpn.xwiki.api.Api;
 import com.xpn.xwiki.objects.classes.BaseClass;
+import com.xpn.xwiki.objects.classes.PropertyClass;
 import com.xpn.xwiki.plugin.XWikiDefaultPlugin;
 import com.xpn.xwiki.plugin.XWikiPluginInterface;
 import com.xpn.xwiki.store.XWikiStoreInterface;
@@ -243,7 +244,34 @@
             xpath.append(where);
             xpath.append("]");
         }
-        xpath.append("/@name");
+        xpath.append("/@doc:fullName");
+
+        List oProps = query.getOrderProperties();
+        String orderClause = "";
+        if ((oProps!=null)&&(oProps.size()>0)) {
+            for (int i=0;i<oProps.size();i++) {
+                OrderClause clause = (OrderClause) oProps.get(i);
+                String propPath = clause.getProperty();
+                int i1 = propPath.indexOf("_");
+                if (i1!=-1) {
+                    String propClassName = propPath.substring(0, i1);
+                    if (propClassName.equals(className)) {
+                        String propName = propPath.substring(i1+1);
+                        if (!orderClause.equals("")) {
+                            orderClause += " and ";
+                        }
+                        orderClause += "@f:" + propName;
+                        if (clause.getOrder()==OrderClause.DESC)
+                            orderClause += " descending";
+                    }
+                }
+            }
+        }
+        if (!orderClause.equals("")) {
+            xpath.append(" order by ");
+            xpath.append(orderClause);
+        }
+
         return xpath.toString();
     }
 

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/XWikiQuery.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/XWikiQuery.java	2006-09-22 08:19:02 UTC (rev 1340)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/XWikiQuery.java	2006-09-25 23:54:50 UTC (rev 1341)
@@ -93,4 +93,8 @@
     public void addOrderProperty(String property, int order) {
         orderProperties.add(new OrderClause(property, order));
     }
+
+    public List getOrderProperties() {
+        return orderProperties;
+    }
 }





More information about the Xwiki-notifications mailing list