r1534 - in xwiki/trunk: core/src/main/java/com/xpn/xwiki/objects/classes src/test/java/com/xpn/xwiki/test
Ludovic Dubost
ludovic at users.forge.objectweb.org
Sun Nov 12 16:32:36 CET 2006
Author: ludovic
Date: 2006-11-12 16:32:36 +0100 (Sun, 12 Nov 2006)
New Revision: 1534
Modified:
xwiki/trunk/core/src/main/java/com/xpn/xwiki/objects/classes/ListClass.java
xwiki/trunk/src/test/java/com/xpn/xwiki/test/ClassesTest.java
Log:
JIRA #409 Fix for List sorting in ListClass, Added test for sorting
Modified: xwiki/trunk/core/src/main/java/com/xpn/xwiki/objects/classes/ListClass.java
===================================================================
--- xwiki/trunk/core/src/main/java/com/xpn/xwiki/objects/classes/ListClass.java 2006-11-11 17:52:48 UTC (rev 1533)
+++ xwiki/trunk/core/src/main/java/com/xpn/xwiki/objects/classes/ListClass.java 2006-11-12 15:32:36 UTC (rev 1534)
@@ -335,8 +335,8 @@
}
public int compare(Object o1, Object o2) {
- String s1 = (String)map.get(o1);
- String s2 = (String)map.get(o2);
+ ListItem s1 = (ListItem)map.get(o1);
+ ListItem s2 = (ListItem)map.get(o2);
if ((s1==null)&&(s2==null))
return 0;
@@ -347,7 +347,7 @@
if (s2==null)
return 1;
- return s1.compareTo(s2);
+ return s1.getValue().compareTo(s2.getValue());
}
}
Modified: xwiki/trunk/src/test/java/com/xpn/xwiki/test/ClassesTest.java
===================================================================
--- xwiki/trunk/src/test/java/com/xpn/xwiki/test/ClassesTest.java 2006-11-11 17:52:48 UTC (rev 1533)
+++ xwiki/trunk/src/test/java/com/xpn/xwiki/test/ClassesTest.java 2006-11-12 15:32:36 UTC (rev 1534)
@@ -245,4 +245,48 @@
editresult = new String[] {"<select", "multiple", ">France"};
testDisplayer("category3", obj, bclass, viewresult, editresult);
}
+
+ /**
+ *
+ * @throws XWikiException
+ */
+ public void testSortedListMapDisplayers() throws XWikiException {
+ XWikiDocument doc = new XWikiDocument();
+ Utils.prepareAdvancedObject(doc);
+ BaseClass bclass = doc.getxWikiClass();
+ ((StaticListClass)bclass.get("category")).setValues("1=France|2=Germany|3=UK|4=USA|5=Other");
+ ((StaticListClass)bclass.get("category")).setSort("id");
+ ((StaticListClass)bclass.get("category2")).setValues("1=France|2=Germany|3=UK|4=USA|5=Other");
+ ((StaticListClass)bclass.get("category2")).setSort("value");
+ BaseObject obj = doc.getObject(bclass.getName(), 0);
+
+ String[] viewresult = {"France"};
+ String[] editresult = {"<select", ">France"};
+ testDisplayer("category", obj, bclass, viewresult, editresult);
+ viewresult = new String[] {"France Germany"};
+ editresult = new String[] {"<select", "multiple", ">France", ">Germany", ">UK"};
+ testDisplayer("category2", obj, bclass, viewresult, editresult);
+
+ XWikiContext context = new XWikiContext();
+ StringBuffer result = new StringBuffer();
+ PropertyClass pclass = (PropertyClass)bclass.get("category");
+ pclass.displayEdit(result,"category", "", obj, context);
+ String res = result.toString();
+
+ int i1 = res.indexOf("UK");
+ int i2 = res.indexOf("Other");
+
+ assertTrue("UK should be before Other", (i1<i2));
+
+ result = new StringBuffer();
+ pclass = (PropertyClass)bclass.get("category2");
+ pclass.displayEdit(result,"category2", "", obj, context);
+ res = result.toString();
+
+ i1 = res.indexOf("UK");
+ i2 = res.indexOf("Other");
+
+ assertFalse("UK should be after Other", (i1<i2));
+ }
+
}
More information about the Xwiki-notifications
mailing list