/* @VaadinApache2LicenseForJavaFiles@ */ package com.vaadin.data.util; import java.io.Serializable; import java.util.Comparator; import com.vaadin.data.Container; import com.vaadin.data.Container.Sortable; /** * An item comparator which is compatible with the {@link Sortable} interface. * The ItemSorter interface can be used in Sortable * implementations to provide a custom sorting method. */ public interface ItemSorter extends Comparator, Cloneable, Serializable { /** * Sets the parameters for an upcoming sort operation. The parameters * determine what container to sort and how the ItemSorter * sorts the container. * * @param container * The container that will be sorted. The container must contain * the propertyIds given in the propertyId * parameter. * @param propertyId * The property ids used for sorting. The property ids must exist * in the container and should only be used if they are also * sortable, i.e include in the collection returned by * container.getSortableContainerPropertyIds(). See * {@link Sortable#sort(Object[], boolean[])} for more * information. * @param ascending * Sorting order flags for each property id. See * {@link Sortable#sort(Object[], boolean[])} for more * information. */ void setSortProperties(Container.Sortable container, Object[] propertyId, boolean[] ascending); /** * Compares its two arguments for order. Returns a negative integer, zero, * or a positive integer as the first argument is less than, equal to, or * greater than the second. *

* The parameters for the ItemSorter compare() * method must always be item ids which exist in the container set using * {@link #setSortProperties(Sortable, Object[], boolean[])}. * * @see Comparator#compare(Object, Object) */ int compare(Object itemId1, Object itemId2); }