Author: pete
Date: Wed Dec 1 16:03:31 2010
New Revision: 1041066
URL: http://svn.apache.org/viewvc?rev=1041066&view=rev
Log:
replace usage of string literals for sorting data columns with java 5 enum
[SortOrder]. this will also solve WICKET-2986.
Added:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/SortOrder.java
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-examples/src/main/java/org/apache/wicket/spring/common/QueryParam.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/web/ContactDataProvider.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/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=1041066&r1=1041065&r2=1041066&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 16:03:31 2010
@@ -18,6 +18,8 @@ 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;
@@ -43,7 +45,7 @@ public class ContactDataProvider impleme
*/
public Iterator<Contact> iterator(int first, int count)
{
- return getContactsDB().find(first, count, "firstName",
true).iterator();
+ return getContactsDB().find(first, count, new
SortParam("firstName", SortOrder.ASCENDING)).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=1041066&r1=1041065&r2=1041066&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 16:03:31 2010
@@ -23,6 +23,9 @@ 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;
+
/**
* simple database for contacts
*
@@ -82,32 +85,32 @@ public class ContactsDatabase
*
* @param first
* @param count
- * @param sortProperty
- * @param sortAsc
+ * @param sort
* @return list of contacts
*/
- public List<Contact> find(int first, int count, String sortProperty,
boolean sortAsc)
+ public List<Contact> find(int first, int count, SortParam sort)
{
- List<Contact> sublist = getIndex(sortProperty,
sortAsc).subList(first, first + count);
- return sublist;
+ return getIndex(sort).subList(first, first + count);
}
- protected List<Contact> getIndex(String prop, boolean asc)
+ protected List<Contact> getIndex(SortParam sort)
{
- if (prop == null)
+ if (sort == null)
{
return fnameIdx;
}
- if (prop.equals("firstName"))
+ final String field = sort.getProperty();
+ final SortOrder order = sort.getOrder();
+
+ if (field.equals("firstName"))
{
- return (asc) ? fnameIdx : fnameDescIdx;
+ return (order != SortOrder.DESCENDING) ? fnameIdx :
fnameDescIdx;
}
- else if (prop.equals("lastName"))
+ else if (field.equals("lastName"))
{
- return (asc) ? lnameIdx : lnameDescIdx;
+ return (order != SortOrder.DESCENDING) ? lnameIdx :
lnameDescIdx;
}
- throw new RuntimeException("uknown sort option [" + prop +
- "]. valid options: [firstName] , [lastName]");
+ throw new RuntimeException("unknown sort option [" + sort +
"]. valid fields: [firstName], [lastName]");
}
/**
@@ -145,7 +148,7 @@ public class ContactsDatabase
*/
public void delete(final Contact contact)
{
- Contact c = map.remove(contact.getId());
+ map.remove(contact.getId());
fnameIdx.remove(contact);
lnameIdx.remove(contact);
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=1041066&r1=1041065&r2=1041066&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 16:03:31 2010
@@ -18,6 +18,8 @@ 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;
import org.apache.wicket.markup.html.form.TextField;
@@ -56,8 +58,8 @@ public class FormPage extends BasePage
protected Iterator<IModel<Contact>> getItemModels()
{
// for simplicity we only show the first 10
contacts
- Iterator<Contact> contacts =
DatabaseLocator.getDatabase().find(0, 10, "firstName",
- true).iterator();
+ SortParam sort = new SortParam("firstName",
SortOrder.ASCENDING);
+ Iterator<Contact> contacts =
DatabaseLocator.getDatabase().find(0, 10, sort).iterator();
// the iterator returns contact objects, but we
need it to
// return models, we use this handy adapter
class to perform
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=1041066&r1=1041065&r2=1041066&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 16:03:31 2010
@@ -18,6 +18,7 @@ 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;
@@ -37,7 +38,7 @@ public class SortableContactDataProvider
public SortableContactDataProvider()
{
// set default sort
- setSort("firstName", true);
+ setSort("firstName", SortOrder.ASCENDING);
}
protected ContactsDatabase getContactsDB()
@@ -50,8 +51,7 @@ public class SortableContactDataProvider
*/
public Iterator<Contact> iterator(int first, int count)
{
- SortParam sp = getSort();
- return getContactsDB().find(first, count, sp.getProperty(),
sp.isAscending()).iterator();
+ return getContactsDB().find(first, count, getSort()).iterator();
}
/**
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=1041066&r1=1041065&r2=1041066&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 16:03:31 2010
@@ -24,6 +24,9 @@ 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;
+
/**
* a dao implementation with an auto-generated embedded database. in a true
application this dao
* would interface with a real database, but because we want to keep
dependencies to a minimum we
@@ -89,25 +92,28 @@ public class ContactDaoImpl implements C
*/
public Iterator<Contact> find(QueryParam qp)
{
- List<Contact> sublist = getIndex(qp.getSort(),
qp.isSortAsc()).subList(qp.getFirst(),
+ List<Contact> sublist =
getIndex(qp.getSort()).subList(qp.getFirst(),
qp.getFirst() + qp.getCount());
return sublist.iterator();
}
- protected List<Contact> getIndex(String prop, boolean asc)
+ protected List<Contact> getIndex(SortParam sort)
{
- if (prop == null)
+ if (sort == null)
return fnameIdx;
- if (prop.equals("firstName"))
+
+ final String field = sort.getProperty();
+ final SortOrder order = sort.getOrder();
+
+ if (field.equals("firstName"))
{
- return (asc) ? fnameIdx : fnameDescIdx;
+ return (order != SortOrder.DESCENDING) ? fnameIdx :
fnameDescIdx;
}
- else if (prop.equals("lastName"))
+ else if (field.equals("lastName"))
{
- return (asc) ? lnameIdx : lnameDescIdx;
+ return (order != SortOrder.DESCENDING) ? lnameIdx :
lnameDescIdx;
}
- throw new RuntimeException("uknown sort option [" + prop +
- "]. valid options: [firstName] , [lastName]");
+ throw new RuntimeException("unknown sort option [" + sort + "].
valid fields: [firstName], [lastName]");
}
/**
Modified:
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/QueryParam.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/QueryParam.java?rev=1041066&r1=1041065&r2=1041066&view=diff
==============================================================================
---
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/QueryParam.java
(original)
+++
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/QueryParam.java
Wed Dec 1 16:03:31 2010
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.spring.common;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
/**
* Encapsulates the Query Paramaters to be passed to daos
@@ -28,9 +29,7 @@ public class QueryParam
private int count;
- private String sort;
-
- private boolean sortAsc;
+ private SortParam sort;
/**
* Set to return <tt>count</tt> elements, starting at the
<tt>first</tt> element.
@@ -42,7 +41,7 @@ public class QueryParam
*/
public QueryParam(int first, int count)
{
- this(first, count, null, true);
+ this(first, count, null);
}
/**
@@ -51,18 +50,14 @@ public class QueryParam
* @param first
* First element to return.
* @param count
- * Number of elements to return.
+ * Number of elements to return.
* @param sort
- * Column to sort on.
- * @param sortAsc
- * Sort ascending or descending.
*/
- public QueryParam(int first, int count, String sort, boolean sortAsc)
+ public QueryParam(int first, int count, SortParam sort)
{
this.first = first;
this.count = count;
this.sort = sort;
- this.sortAsc = sortAsc;
}
public int getCount()
@@ -75,16 +70,11 @@ public class QueryParam
return first;
}
- public String getSort()
+ public SortParam getSort()
{
return sort;
}
- public boolean isSortAsc()
- {
- return sortAsc;
- }
-
public boolean hasSort()
{
return sort != null;
Modified:
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/web/ContactDataProvider.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/web/ContactDataProvider.java?rev=1041066&r1=1041065&r2=1041066&view=diff
==============================================================================
---
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/web/ContactDataProvider.java
(original)
+++
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/spring/common/web/ContactDataProvider.java
Wed Dec 1 16:03:31 2010
@@ -18,6 +18,7 @@ package org.apache.wicket.spring.common.
import java.util.Iterator;
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import
org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
import org.apache.wicket.spring.common.ContactDao;
import org.apache.wicket.spring.common.QueryParam;
@@ -34,15 +35,14 @@ public abstract class ContactDataProvide
public ContactDataProvider()
{
- setSort("firstName", true);
+ setSort("firstName", SortOrder.ASCENDING);
}
protected abstract ContactDao getContactDao();
public final Iterator iterator(int first, int count)
{
- QueryParam qp = new QueryParam(first, count,
getSort().getProperty(), getSort()
- .isAscending());
+ QueryParam qp = new QueryParam(first, count, getSort());
return getContactDao().find(qp);
}
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=1041066&r1=1041065&r2=1041066&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 16:03:31 2010
@@ -27,19 +27,6 @@ import org.apache.wicket.IClusterable;
public interface ISortState extends IClusterable
{
/**
- * property state representing ascending sort order
- */
- public static final int ASCENDING = 1;
- /**
- * property state representing descending sort order
- */
- public static final int DESCENDING = -1;
- /**
- * property state presenting not-sorted sort order
- */
- public static final int NONE = 0;
-
- /**
* Sets sort order of the property
*
* @param property
@@ -47,7 +34,7 @@ public interface ISortState extends IClu
* @param state
* new sort state of the property. must be one of ASCENDING,
DESCENDING, or NONE
*/
- public void setPropertySortOrder(String property, int state);
+ public void setPropertySortOrder(String property, SortOrder state);
/**
* Gets the sort order of a property
@@ -56,6 +43,6 @@ public interface ISortState extends IClu
* sort property to be checked
* @return one of ASCENDING, DESCENDING, or NONE
*/
- public int getPropertySortOrder(String property);
+ 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=1041066&r1=1041065&r2=1041066&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 16:03:31 2010
@@ -127,17 +127,8 @@ public class OrderByLink extends Link
}
ISortState state = stateLocator.getSortState();
-
- int oldDir = state.getPropertySortOrder(property);
-
- int newDir = ISortState.ASCENDING;
-
- if (oldDir == ISortState.ASCENDING)
- {
- newDir = ISortState.DESCENDING;
- }
-
- state.setPropertySortOrder(property, newDir);
+ SortOrder order = state.getPropertySortOrder(property);
+ state.setPropertySortOrder(property, order.nextOrderInCycle());
return this;
}
@@ -191,7 +182,7 @@ public class OrderByLink extends Link
{
return getReplaceModel().getObject() != null;
}
- };
+ }
/**
@@ -251,12 +242,12 @@ public class OrderByLink extends Link
*/
public String getClassAttributeValue(ISortState state, String
property)
{
- int dir = state.getPropertySortOrder(property);
- if (dir == ISortState.ASCENDING)
+ SortOrder dir = state.getPropertySortOrder(property);
+ if (dir == SortOrder.ASCENDING)
{
return ascending;
}
- else if (dir == ISortState.DESCENDING)
+ else if (dir == SortOrder.DESCENDING)
{
return descending;
}
Added:
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=1041066&view=auto
==============================================================================
---
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/SortOrder.java
(added)
+++
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/SortOrder.java
Wed Dec 1 16:03:31 2010
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.extensions.markup.html.repeater.data.sort;
+
+/**
+ * Sort order for columns
+ *
+ * @author pete
+ *
+ */
+public enum SortOrder
+{
+ NONE,
+ ASCENDING,
+ DESCENDING;
+
+ /**
+ * return next sort order in cycle (will iterate through all
+ * possible states, then start from the beginning)
+ *
+ * @return next sort order
+ */
+ public SortOrder nextOrderInCycle()
+ {
+ final int index = (ordinal() + 1) % values().length;
+
+ return values()[index];
+ }
+}
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=1041066&r1=1041065&r2=1041066&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 16:03:31 2010
@@ -18,7 +18,8 @@ package org.apache.wicket.extensions.mar
import org.apache.wicket.IClusterable;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState;
-
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
+import org.apache.wicket.util.lang.Args;
/**
* Implementation of ISortState that can keep track of sort information for a
single property.
@@ -33,42 +34,28 @@ public class SingleSortState implements
SortParam param;
/**
- * @see
org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState#setPropertySortOrder(java.lang.String,
- * int)
+ * @see
org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState#setPropertySortOrder(String,
org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder)
*/
- public void setPropertySortOrder(String property, int dir)
+ public void setPropertySortOrder(String property, SortOrder order)
{
- if (property == null)
- {
- throw new IllegalArgumentException("argument [property]
cannot be null");
- }
+ Args.notNull(property, "property");
+ Args.notNull(order, "order");
- param = new SortParam(property, dir == ISortState.ASCENDING);
+ param = new SortParam(property, order);
}
/**
* @see
org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState#getPropertySortOrder(java.lang.String)
*/
- public int getPropertySortOrder(String property)
+ public SortOrder getPropertySortOrder(String property)
{
- if (property == null)
- {
- throw new IllegalArgumentException("argument [property]
cannot be null");
- }
+ Args.notNull(property, "property");
- if (param == null || !param.getProperty().equals(property))
+ if (param == null || param.getProperty().equals(property) ==
false)
{
- return NONE;
+ return SortOrder.NONE;
}
- else if (param.isAscending())
- {
- return ASCENDING;
- }
- else
- {
- return DESCENDING;
- }
-
+ return param.getOrder();
}
/**
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=1041066&r1=1041065&r2=1041066&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 16:03:31 2010
@@ -17,10 +17,11 @@
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;
/**
* Represents sorting information of a property
- *
+ *
* @author Igor Vaynberg ( ivaynberg )
*/
public class SortParam implements IClusterable
@@ -28,26 +29,28 @@ public class SortParam implements IClust
private static final long serialVersionUID = 1L;
private String property;
- private boolean asc;
+ private SortOrder order;
/**
* @param property
* sort property
- * @param asc
- * sort direction
+ * @param order
+ * sort order
*/
- public SortParam(String property, boolean asc)
+ public SortParam(String property, SortOrder order)
{
this.property = property;
- this.asc = asc;
+ this.order = order;
}
/**
- * @return true if sort dir is ascending, false otherwise
+ * get sort order
+ *
+ * @return sort order
*/
- public boolean isAscending()
+ public SortOrder getOrder()
{
- return asc;
+ return order;
}
/**
@@ -58,18 +61,26 @@ public class SortParam implements IClust
return property;
}
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object rhs)
+ @Override
+ public boolean equals(Object o)
+ {
+ if (this == o)
+ return true;
+
+ if ((o instanceof SortParam) == false)
+ return false;
+
+ SortParam sortParam = (SortParam)o;
+
+ return order == sortParam.order &&
property.equals(sortParam.property);
+ }
+
+ @Override
+ public int hashCode()
{
- if (rhs instanceof SortParam)
- {
- SortParam param = (SortParam)rhs;
- return getProperty().equals(param.getProperty()) &&
- isAscending() == param.isAscending();
- }
- return false;
+ int result = property.hashCode();
+ result = 31 * result + order.hashCode();
+ return result;
}
/**
@@ -78,6 +89,6 @@ public class SortParam implements IClust
public String toString()
{
return new StringBuilder().append("[SortParam
property=").append(getProperty()).append(
- "
ascending=").append(asc).append("]").toString();
+ "
order=").append(order.name()).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=1041066&r1=1041065&r2=1041066&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 16:03:31 2010
@@ -17,6 +17,7 @@
package org.apache.wicket.extensions.markup.html.repeater.util;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState;
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import
org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider;
@@ -89,9 +90,9 @@ public abstract class SortableDataProvid
* @param ascending
* sort direction
*/
- public void setSort(String property, boolean ascending)
+ public void setSort(String property, SortOrder order)
{
- setSort(new SortParam(property, ascending));
+ setSort(new SortParam(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=1041066&r1=1041065&r2=1041066&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 16:03:31 2010
@@ -23,6 +23,9 @@ 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;
+
/**
* simple database for contacts
*
@@ -82,31 +85,32 @@ public class ContactsDatabase
*
* @param first
* @param count
- * @param sortProperty
- * @param sortAsc
+ * @param sort
* @return list of contacts
*/
- public List<Contact> find(int first, int count, String sortProperty,
boolean sortAsc)
+ public List<Contact> find(int first, int count, SortParam sort)
{
- return getIndex(sortProperty, sortAsc).subList(first, first +
count);
+ return getIndex(sort).subList(first, first + count);
}
- protected List<Contact> getIndex(String prop, boolean asc)
+ protected List<Contact> getIndex(SortParam sort)
{
- if (prop == null)
+ if (sort == null)
{
return fnameIdx;
}
- if (prop.equals("firstName"))
+ final String field = sort.getProperty();
+ final SortOrder order = sort.getOrder();
+
+ if (field.equals("firstName"))
{
- return (asc) ? fnameIdx : fnameDescIdx;
+ return order != SortOrder.DESCENDING ? fnameIdx :
fnameDescIdx;
}
- else if (prop.equals("lastName"))
+ else if (field.equals("lastName"))
{
- return (asc) ? lnameIdx : lnameDescIdx;
+ return order != SortOrder.DESCENDING ? lnameIdx :
lnameDescIdx;
}
- throw new RuntimeException("uknown sort option [" + prop +
- "]. valid options: [firstName] , [lastName]");
+ throw new RuntimeException("unknown sort option [" + sort +
"]. valid fields: [firstName], [lastName]");
}
/**
@@ -144,7 +148,7 @@ public class ContactsDatabase
*/
public void delete(final Contact contact)
{
- Contact c = map.remove(contact.getId());
+ map.remove(contact.getId());
fnameIdx.remove(contact);
lnameIdx.remove(contact);
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=1041066&r1=1041065&r2=1041066&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 16:03:31 2010
@@ -18,6 +18,7 @@ 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;
@@ -39,7 +40,7 @@ public class SortableContactDataProvider
public SortableContactDataProvider()
{
// set default sort
- setSort("firstName", true);
+ setSort("firstName", SortOrder.ASCENDING);
}
protected ContactsDatabase getContactsDB()
@@ -52,8 +53,7 @@ public class SortableContactDataProvider
*/
public Iterator<Contact> iterator(int first, int count)
{
- SortParam sp = getSort();
- return getContactsDB().find(first, count, sp.getProperty(),
sp.isAscending()).iterator();
+ return getContactsDB().find(first, count, getSort()).iterator();
}
/**