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