r1319 - in xwiki/trunk/src/main/java/com/xpn/xwiki: . api objects/classes plugin/query

Ludovic Dubost ludovic at users.forge.objectweb.org
Fri Sep 15 12:56:48 CEST 2006


Author: ludovic
Date: 2006-09-15 12:56:48 +0200 (Fri, 15 Sep 2006)
New Revision: 1319

Modified:
   xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/api/XWiki.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/BaseClass.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/BooleanClass.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/DateClass.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/ListClass.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/NumberClass.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/PropertyClass.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/StringClass.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/QueryPlugin.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/XWikiCriteria.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/XWikiQuery.java
Log:
Query Generator first alpha..

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java	2006-09-15 06:10:43 UTC (rev 1318)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java	2006-09-15 10:56:48 UTC (rev 1319)
@@ -4027,6 +4027,17 @@
          return pclass.displaySearch(fieldname, prefix + "XWiki.XWikiUsers_", criteria, context);
     }
 
+    public String displaySearchColumns(String className, XWikiQuery query, XWikiContext context) throws XWikiException {
+        return displaySearchColumns(className,"",query, context);
+    }
+
+    public String displaySearchColumns(String className, String prefix, XWikiQuery query, XWikiContext context) throws XWikiException {
+        BaseClass bclass = getDocument(className, context).getxWikiClass();
+        if (query==null)
+         query = new XWikiQuery();
+        return bclass.displaySearchColumns(className + "_" + prefix, query, context);
+    }
+
     public List search(XWikiQuery query, XWikiContext context) throws XWikiException {
         QueryPlugin qp = (QueryPlugin) getPlugin("query", context);
         if (qp == null)

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/api/XWiki.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/api/XWiki.java	2006-09-15 06:10:43 UTC (rev 1318)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/api/XWiki.java	2006-09-15 10:56:48 UTC (rev 1319)
@@ -1031,6 +1031,14 @@
         return xwiki.convertUsername(username, context);
     }
 
+    public String displaySearchColumns(String className, XWikiQuery query) throws XWikiException {
+        return xwiki.displaySearchColumns(className,"",query, context);
+    }
+
+    public String displaySearchColumns(String className, String prefix, XWikiQuery query) throws XWikiException {
+        return xwiki.displaySearchColumns(className,prefix,query, context);
+    }
+
     public String displaySearch(String fieldname, String className) throws XWikiException {
         return xwiki.displaySearch(fieldname,className, context);
     }

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/BaseClass.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/BaseClass.java	2006-09-15 06:10:43 UTC (rev 1318)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/BaseClass.java	2006-09-15 10:56:48 UTC (rev 1319)
@@ -30,9 +30,12 @@
 import com.xpn.xwiki.objects.BaseProperty;
 import com.xpn.xwiki.objects.PropertyInterface;
 import com.xpn.xwiki.plugin.query.XWikiCriteria;
+import com.xpn.xwiki.plugin.query.XWikiQuery;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.ecs.xhtml.select;
+import org.apache.ecs.xhtml.option;
 import org.dom4j.Document;
 import org.dom4j.DocumentException;
 import org.dom4j.Element;
@@ -583,4 +586,35 @@
         }
         return StringUtils.join(criteriaList.toArray(), " and ");
     }
+
+    public String displaySearchColumns(String prefix, XWikiQuery query, XWikiContext context) {
+        select select = new select(prefix + "searchcolumns", 5);
+        select.setMultiple(true);
+        select.setName(prefix + "searchcolumns");
+        select.setID(prefix + "searchcolumns");
+
+        List list = Arrays.asList(getPropertyNames());
+        Map prettynamesmap = new HashMap();
+        for (int i=0;i<list.size();i++) {
+            String propname = (String) list.get(i);
+            list.set(i, prefix + propname);
+            prettynamesmap.put(prefix + propname, ((PropertyClass)get(propname)).getPrettyName());
+        }
+
+        List selectlist = query.getDisplayProperties();
+
+        // Add options from Set
+        for (Iterator it=list.iterator();it.hasNext();) {
+            String value = it.next().toString();
+            String displayValue = (String) prettynamesmap.get(value);
+            option option = new option(displayValue, displayValue);
+            option.addElement(displayValue);
+            option.setValue(value);
+            if (selectlist.contains(value))
+                option.setSelected(true);
+            select.addElement(option);
+        }
+
+        return select.toString();
+    }
 }

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/BooleanClass.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/BooleanClass.java	2006-09-15 06:10:43 UTC (rev 1318)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/BooleanClass.java	2006-09-15 10:56:48 UTC (rev 1319)
@@ -182,9 +182,20 @@
         }
     }
 
-    public void displaySelectSearch(StringBuffer buffer, String name, String prefix, XWikiCriteria criteria, XWikiContext context) {
+    public String displaySearch(String name, String prefix, XWikiCriteria criteria, XWikiContext context){
+        if (getDisplayType().equals("input")) {
+            return super.displaySearch(name, prefix, criteria, context);
+        } else if (getDisplayType().equals("radio")) {
+            return displayCheckboxSearch(name, prefix, criteria, context);
+        } else {
+            return displaySelectSearch(name, prefix, criteria, context);
+        }
+    }
+
+    public String displaySelectSearch(String name, String prefix, XWikiCriteria criteria, XWikiContext context) {
         select select = new select(prefix + name, 1);
         select.setMultiple(true);
+        select.setSize(3);
         String String0 = getDisplayValue(context, 0);
         String String1 = getDisplayValue(context, 1);
 
@@ -192,7 +203,7 @@
         options[0].addElement("---");
         options[1].addElement(String1);
         options[2].addElement(String0);
-
+        
         /*
         try {
         IntegerProperty prop = (IntegerProperty) object.safeget(name);
@@ -218,10 +229,11 @@
         }
         */
         select.addElement(options);
-        buffer.append(select.toString());
+        return select.toString();
     }
 
-    public void displayCheckboxSearch(StringBuffer buffer, String name, String prefix, XWikiCriteria criteria, XWikiContext context) {
+    public String displayCheckboxSearch(String name, String prefix, XWikiCriteria criteria, XWikiContext context) {
+        StringBuffer buffer = new StringBuffer();
         org.apache.ecs.xhtml.input check = new input(input.checkbox, prefix + name, 1);
         org.apache.ecs.xhtml.input checkNo = new input(input.hidden, prefix + name, 0);
 
@@ -251,6 +263,7 @@
         */
         buffer.append(check.toString());
         buffer.append(checkNo.toString());
+        return buffer.toString();
     }
 
     public void fromSearchMap(XWikiQuery query, Map map) {

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/DateClass.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/DateClass.java	2006-09-15 06:10:43 UTC (rev 1318)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/DateClass.java	2006-09-15 10:56:48 UTC (rev 1319)
@@ -29,6 +29,7 @@
 import com.xpn.xwiki.objects.DateProperty;
 import com.xpn.xwiki.objects.meta.PropertyMetaClass;
 import com.xpn.xwiki.plugin.query.XWikiQuery;
+import com.xpn.xwiki.plugin.query.XWikiCriteria;
 import com.xpn.xwiki.web.XWikiMessageTool;
 import org.apache.ecs.xhtml.input;
 import org.dom4j.Element;
@@ -147,19 +148,33 @@
         buffer.append(input.toString());
     }
 
-    public void displaySearch(StringBuffer buffer, String name, String prefix, BaseCollection object, XWikiContext context) {
+    public void displaySearch(StringBuffer buffer, String name, String prefix, XWikiCriteria criteria, XWikiContext context) {
         input input1 = new input();
         input1.setType("text");
-        input1.setName(prefix + name + "_from");
+        input1.setName(prefix + name + "_morethan");
         input1.setID(prefix + name);
         input1.setSize(getSize());
+        String fieldFullName = getFieldFullName();
 
+        Date value = (Date) criteria.getParameter(fieldFullName + "_morethan");
+        if (value!=null) {
+            DateProperty dprop = new DateProperty();
+            dprop.setValue(value);
+            input1.setValue(toFormString(dprop));
+        }
+
         input input2 = new input();
 
         input2.setType("text");
-        input2.setName(prefix + name+ "_to");
+        input2.setName(prefix + name+ "_lessthan");
         input2.setID(prefix + name);
         input2.setSize(getSize());
+        value = (Date) criteria.getParameter(fieldFullName + "_lessthan");
+        if (value!=null) {
+            DateProperty dprop = new DateProperty();
+            dprop.setValue(value);
+            input2.setValue(toFormString(dprop));
+        }
 
         XWikiMessageTool msg = ((XWikiMessageTool)context.get("msg"));
         buffer.append((msg==null) ? "from" : msg.get("from"));

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/ListClass.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/ListClass.java	2006-09-15 06:10:43 UTC (rev 1318)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/ListClass.java	2006-09-15 10:56:48 UTC (rev 1319)
@@ -233,7 +233,9 @@
 		}
 	}
 
-	protected void displaySelectEdit(StringBuffer buffer, String name, String prefix, BaseCollection object, XWikiContext context) {
+
+
+    protected void displaySelectEdit(StringBuffer buffer, String name, String prefix, BaseCollection object, XWikiContext context) {
 		select select = new select(prefix + name, 1);
 		select.setMultiple(isMultiSelect());
 		select.setSize(getSize());
@@ -283,7 +285,18 @@
 		}
 	}
 
-    protected void displayRadioSearch(StringBuffer buffer, String name, String prefix, XWikiCriteria criteria, XWikiContext context){
+    public String displaySearch(String name, String prefix, XWikiCriteria criteria, XWikiContext context){
+        if (getDisplayType().equals("input")) {
+            return super.displaySearch(name, prefix, criteria, context);
+        } else if (getDisplayType().equals("radio")) {
+            return displayRadioSearch(name, prefix, criteria, context);
+        } else {
+            return displaySelectSearch(name, prefix, criteria, context);
+        }
+    }
+
+    protected String displayRadioSearch(String name, String prefix, XWikiCriteria criteria, XWikiContext context){
+        StringBuffer buffer = new StringBuffer();
         List list = getList(context);
         List selectlist = new ArrayList();
 
@@ -312,17 +325,20 @@
             	buffer.append("<br/>");
             }
         }
+        return buffer.toString();
     }
 
-    protected void displaySelectSearch(StringBuffer buffer, String name, String prefix, XWikiCriteria criteria, XWikiContext context){
+    protected String displaySelectSearch(String name, String prefix, XWikiCriteria criteria, XWikiContext context){
         select select = new select(prefix + name, 1);
         select.setMultiple(true);
-        select.setSize(getSize());
+        select.setSize(5);
         select.setName(prefix + name);
         select.setID(prefix + name);
 
         List list = getList(context);
-        List selectlist = new ArrayList();
+        String fieldFullName = getFieldFullName();
+        String[] selectArray = ((String[])criteria.getParameter(fieldFullName));
+        List selectlist = (selectArray!=null) ? Arrays.asList(selectArray) : new ArrayList();
 
         /*
         BaseProperty prop =  (BaseProperty)object.safeget(name);
@@ -346,7 +362,7 @@
             select.addElement(option);
         }
 
-        buffer.append(select.toString());
+        return select.toString();
     }
     
     public void makeQuery(Map map, String prefix, XWikiCriteria query, List criteriaList) {
@@ -373,6 +389,6 @@
     public void fromSearchMap(XWikiQuery query, Map map) {
         String[] data  = (String[])map.get("");
         if (data!=null)
-            query.setParam(getObject().getName() + "_" + getName(), fromStringArray(data).getValue());
+            query.setParam(getObject().getName() + "_" + getName(), data);
     }
 }

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/NumberClass.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/NumberClass.java	2006-09-15 06:10:43 UTC (rev 1318)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/NumberClass.java	2006-09-15 10:56:48 UTC (rev 1319)
@@ -33,6 +33,7 @@
 
 import java.util.List;
 import java.util.Map;
+import java.util.Date;
 
 public class NumberClass  extends PropertyClass {
 
@@ -116,23 +117,25 @@
     public void displaySearch(StringBuffer buffer, String name, String prefix, XWikiCriteria criteria, XWikiContext context) {
         input input1 = new input();
         input1.setType("text");
-        input1.setName(prefix + name + "_from");
+        input1.setName(prefix + name + "_morethan");
         input1.setID(prefix + name);
         input1.setSize(getSize());
         String fieldFullName = getFieldFullName();
-        String value = criteria.getParameter(fieldFullName + "_lessthan");
-        if (value!=null)
-         input1.setValue(value);
+        Number value = (Number) criteria.getParameter(fieldFullName + "_morethan");
+        if (value!=null) {
+            input1.setValue(value.toString());
+        }
 
         input input2 = new input();
 
         input2.setType("text");
-        input2.setName(prefix + name+ "_to");
+        input2.setName(prefix + name+ "_lessthan");
         input2.setID(prefix + name);
         input2.setSize(getSize());
-        value = criteria.getParameter(fieldFullName + "_morethan");
-        if (value!=null)
-         input2.setValue(value);
+        value = (Number) criteria.getParameter(fieldFullName + "_lessthan");
+        if (value!=null) {
+            input2.setValue(value.toString());
+        }
 
         XWikiMessageTool msg = ((XWikiMessageTool)context.get("msg"));
         buffer.append((msg==null) ? "from" : msg.get("from"));
@@ -140,7 +143,7 @@
         buffer.append((msg==null) ? "from" : msg.get("to"));
         buffer.append(input2.toString());
     }
-    
+
     public void makeQuery(Map map, String prefix, XWikiCriteria query, List criteriaList) {
         Number value = (Number)map.get(prefix);
         if ((value!=null)&&(!value.equals(""))) {
@@ -150,13 +153,13 @@
 
         value = (Number)map.get(prefix + "lessthan");
         if ((value!=null)&&(!value.equals(""))) {
-         criteriaList.add("@f:" + getName() + "<" + value.toString());
+         criteriaList.add("@f:" + getName() + "<=" + value.toString());
          return;
         }
 
         value = (Number)map.get(prefix + "morethan");
         if ((value!=null)&&(!value.equals(""))) {
-         criteriaList.add("@f:" + getName() + ">" + value.toString());
+         criteriaList.add("@f:" + getName() + ">=" + value.toString());
          return;
         }
     }

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/PropertyClass.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/PropertyClass.java	2006-09-15 06:10:43 UTC (rev 1318)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/PropertyClass.java	2006-09-15 10:56:48 UTC (rev 1319)
@@ -136,9 +136,9 @@
         input.setID(prefix + name);
         input.setSize(20);
         String fieldFullName = getFieldFullName();
-        String value = criteria.getParameter(fieldFullName);
+        Object value = criteria.getParameter(fieldFullName);
         if (value!=null)
-         input.setValue(value);
+         input.setValue(value.toString());
         buffer.append(input.toString());
     }
 

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/StringClass.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/StringClass.java	2006-09-15 06:10:43 UTC (rev 1318)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/objects/classes/StringClass.java	2006-09-15 10:56:48 UTC (rev 1319)
@@ -89,9 +89,9 @@
         input.setID(prefix + name);
         input.setSize(getSize());
         String fieldFullName = getFieldFullName();
-        String value = criteria.getParameter(fieldFullName);
+        Object value = criteria.getParameter(fieldFullName);
         if (value!=null)
-         input.setValue(value);
+         input.setValue(value.toString());
         buffer.append(input.toString());
     }
     

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-15 06:10:43 UTC (rev 1318)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/QueryPlugin.java	2006-09-15 10:56:48 UTC (rev 1319)
@@ -237,7 +237,7 @@
         xpath.append(className.replace('.','/'));
         String where= bclass.makeQuery(query);
         if (where.equals(""))
-            xpath.append("*");
+            xpath.append("/*");
         else
         {
             xpath.append("[");

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/XWikiCriteria.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/XWikiCriteria.java	2006-09-15 06:10:43 UTC (rev 1318)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/XWikiCriteria.java	2006-09-15 10:56:48 UTC (rev 1319)
@@ -14,8 +14,8 @@
 public class XWikiCriteria {
     protected HashMap params = new HashMap();
 
-    public String getParameter(String field) {
-        return (String ) params.get(field);
+    public Object getParameter(String field) {
+        return params.get(field);
     }
 
     public Map getParameters(String field) {

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-15 06:10:43 UTC (rev 1318)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/XWikiQuery.java	2006-09-15 10:56:48 UTC (rev 1319)
@@ -29,7 +29,7 @@
     
     public XWikiQuery(XWikiRequest request, String className, XWikiContext context) throws XWikiException {
         super();
-        String[] columns = request.getParameterValues("columns");
+        String[] columns = request.getParameterValues(className + "_" + "searchcolumns");
         setDisplayProperties(columns);
         BaseClass bclass = context.getWiki().getDocument(className, context).getxWikiClass();
         Set properties = bclass.getPropertyList();





More information about the Xwiki-notifications mailing list