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;