You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2010/12/01 19:05:33 UTC
svn commit: r1041112 - in /wicket/trunk:
wicket-examples/src/main/java/org/apache/wicket/examples/repeater/
wicket-examples/src/main/java/org/apache/wicket/spring/common/
wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater...
Author: pete
Date: Wed Dec 1 18:05:32 2010
New Revision: 1041112
URL: http://svn.apache.org/viewvc?rev=1041112&view=rev
Log:
reverted WICKET-2986 as returning to state = unsorted does not make much sense. Also improved the internal handling of sort state.
Modified:
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactDataProvider.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactsDatabase.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/FormPage.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/SortableContactDataProvider.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/ContactDaoImpl.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortState.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/SortOrder.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SingleSortState.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortParam.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableDataProvider.java
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ContactsDatabase.java
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/SortableContactDataProvider.java
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactDataProvider.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactDataProvider.java?rev=1041112&r1=1041111&r2=1041112&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactDataProvider.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactDataProvider.java Wed Dec 1 18:05:32 2010
@@ -18,7 +18,6 @@ package org.apache.wicket.examples.repea
import java.util.Iterator;
-import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
import org.apache.wicket.markup.repeater.data.IDataProvider;
import org.apache.wicket.model.IModel;
@@ -45,7 +44,7 @@ public class ContactDataProvider impleme
*/
public Iterator<Contact> iterator(int first, int count)
{
- return getContactsDB().find(first, count, new SortParam("firstName", SortOrder.ASCENDING)).iterator();
+ return getContactsDB().find(first, count, new SortParam("firstName", true)).iterator();
}
/**
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactsDatabase.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactsDatabase.java?rev=1041112&r1=1041111&r2=1041112&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactsDatabase.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactsDatabase.java Wed Dec 1 18:05:32 2010
@@ -23,7 +23,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
/**
@@ -99,16 +98,14 @@ public class ContactsDatabase
{
return fnameIdx;
}
- final String field = sort.getProperty();
- final SortOrder order = sort.getOrder();
- if (field.equals("firstName"))
+ if (sort.getProperty().equals("firstName"))
{
- return (order != SortOrder.DESCENDING) ? fnameIdx : fnameDescIdx;
+ return sort.isAscending() ? fnameIdx : fnameDescIdx;
}
- else if (field.equals("lastName"))
+ else if (sort.getProperty().equals("lastName"))
{
- return (order != SortOrder.DESCENDING) ? lnameIdx : lnameDescIdx;
+ return sort.isAscending() ? lnameIdx : lnameDescIdx;
}
throw new RuntimeException("unknown sort option [" + sort + "]. valid fields: [firstName], [lastName]");
}
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/FormPage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/FormPage.java?rev=1041112&r1=1041111&r2=1041112&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/FormPage.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/FormPage.java Wed Dec 1 18:05:32 2010
@@ -18,7 +18,6 @@ package org.apache.wicket.examples.repea
import java.util.Iterator;
-import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.SubmitLink;
@@ -58,7 +57,7 @@ public class FormPage extends BasePage
protected Iterator<IModel<Contact>> getItemModels()
{
// for simplicity we only show the first 10 contacts
- SortParam sort = new SortParam("firstName", SortOrder.ASCENDING);
+ SortParam sort = new SortParam("firstName", true);
Iterator<Contact> contacts = DatabaseLocator.getDatabase().find(0, 10, sort).iterator();
// the iterator returns contact objects, but we need it to
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/SortableContactDataProvider.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/SortableContactDataProvider.java?rev=1041112&r1=1041111&r2=1041112&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/SortableContactDataProvider.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/SortableContactDataProvider.java Wed Dec 1 18:05:32 2010
@@ -19,7 +19,6 @@ package org.apache.wicket.examples.repea
import java.util.Iterator;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
import org.apache.wicket.model.IModel;
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/ContactDaoImpl.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/ContactDaoImpl.java?rev=1041112&r1=1041111&r2=1041112&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/ContactDaoImpl.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/ContactDaoImpl.java Wed Dec 1 18:05:32 2010
@@ -24,7 +24,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
/**
@@ -102,16 +101,13 @@ public class ContactDaoImpl implements C
if (sort == null)
return fnameIdx;
- final String field = sort.getProperty();
- final SortOrder order = sort.getOrder();
-
- if (field.equals("firstName"))
+ if (sort.getProperty().equals("firstName"))
{
- return (order != SortOrder.DESCENDING) ? fnameIdx : fnameDescIdx;
+ return sort.isAscending() ? fnameIdx : fnameDescIdx;
}
- else if (field.equals("lastName"))
+ else if (sort.getProperty().equals("lastName"))
{
- return (order != SortOrder.DESCENDING) ? lnameIdx : lnameDescIdx;
+ return sort.isAscending() ? lnameIdx : lnameDescIdx;
}
throw new RuntimeException("unknown sort option [" + sort + "]. valid fields: [firstName], [lastName]");
}
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortState.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortState.java?rev=1041112&r1=1041111&r2=1041112&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortState.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortState.java Wed Dec 1 18:05:32 2010
@@ -31,17 +31,17 @@ public interface ISortState extends IClu
*
* @param property
* the name of the property to sort on
- * @param state
- * new sort state of the property. must be one of ASCENDING, DESCENDING, or NONE
+ * @param order
+ * sort order
*/
- public void setPropertySortOrder(String property, SortOrder state);
+ public void setPropertySortOrder(String property, SortOrder order);
/**
* Gets the sort order of a property
*
* @param property
* sort property to be checked
- * @return one of ASCENDING, DESCENDING, or NONE
+ * @return sort order
*/
public SortOrder getPropertySortOrder(String property);
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java?rev=1041112&r1=1041111&r2=1041112&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java Wed Dec 1 18:05:32 2010
@@ -128,7 +128,17 @@ public class OrderByLink extends Link
ISortState state = stateLocator.getSortState();
SortOrder order = state.getPropertySortOrder(property);
- state.setPropertySortOrder(property, order.nextOrderInCycle());
+
+ // init / flip order
+ if(order == SortOrder.NONE)
+ {
+ order = SortOrder.ASCENDING;
+ }
+ else
+ {
+ order = order == SortOrder.ASCENDING ? SortOrder.DESCENDING : SortOrder.ASCENDING;
+ }
+ state.setPropertySortOrder(property, order);
return this;
}
@@ -243,6 +253,7 @@ public class OrderByLink extends Link
public String getClassAttributeValue(ISortState state, String property)
{
SortOrder dir = state.getPropertySortOrder(property);
+
if (dir == SortOrder.ASCENDING)
{
return ascending;
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/SortOrder.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/SortOrder.java?rev=1041112&r1=1041111&r2=1041112&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/SortOrder.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/SortOrder.java Wed Dec 1 18:05:32 2010
@@ -18,26 +18,22 @@ package org.apache.wicket.extensions.mar
/**
* Sort order for columns
- *
+ *
* @author pete
- *
+ *
*/
public enum SortOrder
{
+ /**
+ * unsorted
+ */
NONE,
+ /**
+ * ascending sort order
+ */
ASCENDING,
- DESCENDING;
-
/**
- * return next sort order in cycle (will iterate through all
- * possible states, then start from the beginning)
- *
- * @return next sort order
+ * descending sort order
*/
- public SortOrder nextOrderInCycle()
- {
- final int index = (ordinal() + 1) % values().length;
-
- return values()[index];
- }
+ DESCENDING
}
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SingleSortState.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SingleSortState.java?rev=1041112&r1=1041111&r2=1041112&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SingleSortState.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SingleSortState.java Wed Dec 1 18:05:32 2010
@@ -41,7 +41,17 @@ public class SingleSortState implements
Args.notNull(property, "property");
Args.notNull(order, "order");
- param = new SortParam(property, order);
+ if(order == SortOrder.NONE)
+ {
+ if (param != null && property.equals(param.getProperty()))
+ {
+ param = null;
+ }
+ }
+ else
+ {
+ param = new SortParam(property, order == SortOrder.ASCENDING);
+ }
}
/**
@@ -55,7 +65,7 @@ public class SingleSortState implements
{
return SortOrder.NONE;
}
- return param.getOrder();
+ return param.isAscending() ? SortOrder.ASCENDING : SortOrder.DESCENDING;
}
/**
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortParam.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortParam.java?rev=1041112&r1=1041111&r2=1041112&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortParam.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortParam.java Wed Dec 1 18:05:32 2010
@@ -17,7 +17,7 @@
package org.apache.wicket.extensions.markup.html.repeater.util;
import org.apache.wicket.IClusterable;
-import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
+import org.apache.wicket.util.lang.Args;
/**
* Represents sorting information of a property
@@ -28,37 +28,38 @@ public class SortParam implements IClust
{
private static final long serialVersionUID = 1L;
- private String property;
- private SortOrder order;
+ private final String property;
+ private final boolean ascending;
/**
* @param property
* sort property
- * @param order
- * sort order
+ * @param ascending
+ * <code>true<code> if sort order is ascending, <code>false</code> if sort order is descending
*/
- public SortParam(String property, SortOrder order)
+ public SortParam(String property, boolean ascending)
{
+ Args.notNull(property, "property");
this.property = property;
- this.order = order;
+ this.ascending = ascending;
}
/**
- * get sort order
- *
- * @return sort order
+ * @return sort property
*/
- public SortOrder getOrder()
+ public String getProperty()
{
- return order;
+ return property;
}
/**
- * @return sort property
+ * check if sort order is ascending
+ *
+ * @return <code>true<code> if sort order is ascending, <code>false</code> if sort order is descending
*/
- public String getProperty()
+ public boolean isAscending()
{
- return property;
+ return ascending;
}
@Override
@@ -66,20 +67,19 @@ public class SortParam implements IClust
{
if (this == o)
return true;
-
- if ((o instanceof SortParam) == false)
+ if (!(o instanceof SortParam))
return false;
SortParam sortParam = (SortParam)o;
- return order == sortParam.order && property.equals(sortParam.property);
+ return ascending == sortParam.ascending && property.equals(sortParam.property);
}
@Override
public int hashCode()
{
int result = property.hashCode();
- result = 31 * result + order.hashCode();
+ result = 31 * result + (ascending ? 1 : 0);
return result;
}
@@ -89,6 +89,6 @@ public class SortParam implements IClust
public String toString()
{
return new StringBuilder().append("[SortParam property=").append(getProperty()).append(
- " order=").append(order.name()).append("]").toString();
+ " ascending=").append(ascending).append("]").toString();
}
}
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableDataProvider.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableDataProvider.java?rev=1041112&r1=1041111&r2=1041112&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableDataProvider.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableDataProvider.java Wed Dec 1 18:05:32 2010
@@ -87,12 +87,12 @@ public abstract class SortableDataProvid
*
* @param property
* sort property
- * @param ascending
- * sort direction
+ * @param order
+ * sort order
*/
public void setSort(String property, SortOrder order)
{
- setSort(new SortParam(property, order));
+ state.setPropertySortOrder(property, order);
}
/**
Modified: wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ContactsDatabase.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ContactsDatabase.java?rev=1041112&r1=1041111&r2=1041112&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ContactsDatabase.java (original)
+++ wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ContactsDatabase.java Wed Dec 1 18:05:32 2010
@@ -23,7 +23,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
/**
@@ -100,15 +99,14 @@ public class ContactsDatabase
return fnameIdx;
}
final String field = sort.getProperty();
- final SortOrder order = sort.getOrder();
if (field.equals("firstName"))
{
- return order != SortOrder.DESCENDING ? fnameIdx : fnameDescIdx;
+ return sort.isAscending() ? fnameIdx : fnameDescIdx;
}
else if (field.equals("lastName"))
{
- return order != SortOrder.DESCENDING ? lnameIdx : lnameDescIdx;
+ return sort.isAscending() ? lnameIdx : lnameDescIdx;
}
throw new RuntimeException("unknown sort option [" + sort + "]. valid fields: [firstName], [lastName]");
}
Modified: wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/SortableContactDataProvider.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/SortableContactDataProvider.java?rev=1041112&r1=1041111&r2=1041112&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/SortableContactDataProvider.java (original)
+++ wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/SortableContactDataProvider.java Wed Dec 1 18:05:32 2010
@@ -19,7 +19,6 @@ package org.apache.wicket.extensions.mar
import java.util.Iterator;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
import org.apache.wicket.model.IModel;