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