Author: mgrigorov
Date: Fri Nov 18 10:50:59 2011
New Revision: 1203581

URL: http://svn.apache.org/viewvc?rev=1203581&view=rev
Log:
WICKET-4035 Allow to set the property type in ISortState


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/FormPage.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/ISortStateLocator.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/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ContactsDatabase.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=1203581&r1=1203580&r2=1203581&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
 Fri Nov 18 10:50:59 2011
@@ -44,7 +44,8 @@ public class ContactDataProvider impleme
         */
        public Iterator<Contact> iterator(long first, long count)
        {
-               return getContactsDB().find(first, count, new 
SortParam("firstName", true)).iterator();
+               return getContactsDB().find(first, count, new 
SortParam<String>("firstName", true))
+                       .iterator();
        }
 
        /**

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=1203581&r1=1203580&r2=1203581&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
 Fri Nov 18 10:50:59 2011
@@ -57,8 +57,10 @@ public class FormPage extends BasePage
                        protected Iterator<IModel<Contact>> getItemModels()
                        {
                                // for simplicity we only show the first 10 
contacts
-                               SortParam sort = new SortParam("firstName", 
true);
-                               Iterator<Contact> contacts = 
DatabaseLocator.getDatabase().find(0, 10, sort).iterator();
+                               SortParam<String> sort = new 
SortParam<String>("firstName", true);
+                               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-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=1203581&r1=1203580&r2=1203581&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
 Fri Nov 18 10:50:59 2011
@@ -22,9 +22,11 @@ import org.apache.wicket.IClusterable;
  * Interface used by OrderByLink to interact with any object that keeps track 
of sorting state
  * 
  * @author Igor Vaynberg (ivaynberg)
+ * @param <T>
+ *            the type of the sort property
  * 
  */
-public interface ISortState extends IClusterable
+public interface ISortState<T> extends IClusterable
 {
        /**
         * Sets sort order of the property
@@ -34,7 +36,7 @@ public interface ISortState extends IClu
         * @param order
         *            sort order
         */
-       public void setPropertySortOrder(String property, SortOrder order);
+       public void setPropertySortOrder(T property, SortOrder order);
 
        /**
         * Gets the sort order of a property
@@ -43,6 +45,6 @@ public interface ISortState extends IClu
         *            sort property to be checked
         * @return sort order
         */
-       public SortOrder getPropertySortOrder(String property);
+       public SortOrder getPropertySortOrder(T property);
 
 }

Modified: 
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java?rev=1203581&r1=1203580&r2=1203581&view=diff
==============================================================================
--- 
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java
 (original)
+++ 
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java
 Fri Nov 18 10:50:59 2011
@@ -31,5 +31,5 @@ public interface ISortStateLocator exten
        /**
         * @return ISortState object
         */
-       ISortState getSortState();
+       <T> ISortState<T> getSortState();
 }

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=1203581&r1=1203580&r2=1203581&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
 Fri Nov 18 10:50:59 2011
@@ -21,6 +21,7 @@ import org.apache.wicket.IClusterable;
 import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.string.Strings;
 
 /**
@@ -77,19 +78,12 @@ public class OrderByLink extends Link<Vo
         * 
         */
        public OrderByLink(final String id, final String property,
-               final ISortStateLocator stateLocator, final ICssProvider 
cssProvider)
+               final ISortStateLocator stateLocator, final 
ICssProvider<String> cssProvider)
        {
                super(id);
 
-               if (cssProvider == null)
-               {
-                       throw new IllegalArgumentException("argument 
[cssProvider] cannot be null");
-               }
-
-               if (property == null)
-               {
-                       throw new IllegalArgumentException("argument 
[sortProperty] cannot be null");
-               }
+               Args.notNull(cssProvider, "cssProvider");
+               Args.notNull(property, "property");
 
                this.property = property;
                this.stateLocator = stateLocator;
@@ -127,7 +121,7 @@ public class OrderByLink extends Link<Vo
                        addStateChange();
                }
 
-               ISortState state = stateLocator.getSortState();
+               ISortState<String> state = stateLocator.getSortState();
 
                // get current sort order
                SortOrder order = state.getPropertySortOrder(property);
@@ -168,7 +162,7 @@ public class OrderByLink extends Link<Vo
        {
                private static final long serialVersionUID = 1L;
                private final OrderByLink link;
-               private final ICssProvider provider;
+               private final ICssProvider<String> provider;
 
                /**
                 * @param link
@@ -176,7 +170,7 @@ public class OrderByLink extends Link<Vo
                 * @param provider
                 *            implementation of ICssProvider
                 */
-               public CssModifier(final OrderByLink link, final ICssProvider 
provider)
+               public CssModifier(final OrderByLink link, final 
ICssProvider<String> provider)
                {
                        this.link = link;
                        this.provider = provider;
@@ -187,7 +181,7 @@ public class OrderByLink extends Link<Vo
                {
                        super.onComponentTag(component, tag);
 
-                       final ISortState sortState = 
link.stateLocator.getSortState();
+                       final ISortState<String> sortState = 
link.stateLocator.getSortState();
                        String cssClass = 
provider.getClassAttributeValue(sortState, link.property);
                        if (!Strings.isEmpty(cssClass))
                        {
@@ -203,8 +197,10 @@ public class OrderByLink extends Link<Vo
         * value is null class attribute will not be added
         * 
         * @author igor
+        * @param <T>
+        *            the type of the sort property
         */
-       public static interface ICssProvider extends IClusterable
+       public static interface ICssProvider<T> extends IClusterable
        {
                /**
                 * @param state
@@ -214,7 +210,7 @@ public class OrderByLink extends Link<Vo
                 * @return the value of the "class" attribute for the given 
sort state/sort property
                 *         combination
                 */
-               public String getClassAttributeValue(ISortState state, String 
property);
+               public String getClassAttributeValue(ISortState<T> state, 
String property);
        }
 
 
@@ -224,7 +220,7 @@ public class OrderByLink extends Link<Vo
         * @author Igor Vaynberg (ivaynberg)
         * 
         */
-       public static class CssProvider implements ICssProvider
+       public static class CssProvider implements ICssProvider<String>
        {
                private static final long serialVersionUID = 1L;
 
@@ -253,7 +249,7 @@ public class OrderByLink extends Link<Vo
                 * @see 
org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink.ICssProvider#getClassAttributeValue(org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState,
                 *      java.lang.String)
                 */
-               public String getClassAttributeValue(final ISortState state, 
final String property)
+               public String getClassAttributeValue(final ISortState<String> 
state, final String property)
                {
                        SortOrder dir = state.getPropertySortOrder(property);
 
@@ -282,12 +278,12 @@ public class OrderByLink extends Link<Vo
        {
                private static final long serialVersionUID = 1L;
 
-               private static ICssProvider instance = new VoidCssProvider();
+               private static ICssProvider<String> instance = new 
VoidCssProvider();
 
                /**
                 * @return singleton instance
                 */
-               public static ICssProvider getInstance()
+               public static ICssProvider<String> getInstance()
                {
                        return instance;
                }

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=1203581&r1=1203580&r2=1203581&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
 Fri Nov 18 10:50:59 2011
@@ -25,19 +25,21 @@ import org.apache.wicket.util.lang.Args;
  * Implementation of ISortState that can keep track of sort information for a 
single property.
  * 
  * @author Igor Vaynberg (ivaynberg)
+ * @param <T>
+ *            the type of the sort property
  * 
  */
-public class SingleSortState implements ISortState, IClusterable
+public class SingleSortState<T> implements ISortState<T>, IClusterable
 {
        private static final long serialVersionUID = 1L;
 
-       SortParam param;
+       SortParam<T> param;
 
        /**
         * @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(final String property, final SortOrder 
order)
+       public void setPropertySortOrder(final T property, final SortOrder 
order)
        {
                Args.notNull(property, "property");
                Args.notNull(order, "order");
@@ -51,14 +53,14 @@ public class SingleSortState implements 
                }
                else
                {
-                       param = new SortParam(property, order == 
SortOrder.ASCENDING);
+                       param = new SortParam<T>(property, order == 
SortOrder.ASCENDING);
                }
        }
 
        /**
         * @see 
org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState#getPropertySortOrder(java.lang.String)
         */
-       public SortOrder getPropertySortOrder(final String property)
+       public SortOrder getPropertySortOrder(final T property)
        {
                Args.notNull(property, "property");
 
@@ -72,7 +74,7 @@ public class SingleSortState implements 
        /**
         * @return current sort state
         */
-       public SortParam getSort()
+       public SortParam<T> getSort()
        {
                return param;
        }
@@ -83,7 +85,7 @@ public class SingleSortState implements 
         * @param param
         *            parameter containing new sorting information
         */
-       public void setSort(final SortParam param)
+       public void setSort(final SortParam<T> param)
        {
                this.param = param;
        }

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=1203581&r1=1203580&r2=1203581&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
 Fri Nov 18 10:50:59 2011
@@ -23,12 +23,14 @@ import org.apache.wicket.util.lang.Args;
  * Represents sorting information of a property
  * 
  * @author Igor Vaynberg ( ivaynberg )
+ * @param <T>
+ *            the type of the sort property
  */
-public class SortParam implements IClusterable
+public class SortParam<T> implements IClusterable
 {
        private static final long serialVersionUID = 1L;
 
-       private final String property;
+       private final T property;
        private final boolean ascending;
 
        /**
@@ -38,7 +40,7 @@ public class SortParam implements IClust
         *            <code>true<code> if sort order is ascending, 
<code>false</code> if sort order is
         *            descending
         */
-       public SortParam(final String property, final boolean ascending)
+       public SortParam(final T property, final boolean ascending)
        {
                Args.notNull(property, "property");
                this.property = property;
@@ -48,7 +50,7 @@ public class SortParam implements IClust
        /**
         * @return sort property
         */
-       public String getProperty()
+       public T getProperty()
        {
                return property;
        }
@@ -76,7 +78,8 @@ public class SortParam implements IClust
                        return false;
                }
 
-               SortParam sortParam = (SortParam)o;
+               @SuppressWarnings("unchecked")
+               SortParam<T> sortParam = (SortParam<T>)o;
 
                return (ascending == sortParam.ascending) && 
property.equals(sortParam.property);
        }

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=1203581&r1=1203580&r2=1203581&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
 Fri Nov 18 10:50:59 2011
@@ -87,12 +87,12 @@ public class ContactsDatabase
         * @param sort
         * @return list of contacts
         */
-       public List<Contact> find(final long first, final long count, final 
SortParam sort)
+       public List<Contact> find(final long first, final long count, final 
SortParam<String> sort)
        {
                return getIndex(sort).subList((int)first, (int)(first + count));
        }
 
-       protected List<Contact> getIndex(final SortParam sort)
+       protected List<Contact> getIndex(final SortParam<String> sort)
        {
                if (sort == null)
                {


Reply via email to