com.jalios.jcms.comparator
Class ComparatorManager

java.lang.Object
  extended by com.jalios.jcms.comparator.ComparatorManager
All Implemented Interfaces:
JPropertiesListener

public class ComparatorManager
extends Object
implements JPropertiesListener

Manager of all Comparators used in JCMS to sort Storable instances and their subclass.

You can declare a comparator in properties by following this syntax :

 comparator.{Type short name}.{comparator name}: {comparator class Fully Qualified Name}
 
Example :
  comparator.Article.intro: com.example.jcmsplugin.ArticleIntroComparator
 

When working with classes outside the generated package (such as Abstract class), the fully qualified name associated with {Type short name} is required and must be declared using this syntax :

 
  comparator.{Type short name}: {type class Fully Qualified Name}
 
Example :
 
  comparator.AbstractCalendarEvent: com.jalios.jcms.calendar.AbstractCalendarEvent
  comparator.AbstractCalendarEvent.duration: com.example.jcmsplugin.CalendarEventDurationComparator
 
 public class CalendarEventDurationComparator implements Comparator {

  public int compare(T cal1, T cal2) {
    long cal1Duration = cal1 == null ? 0 : (cal1.getEndDate().getTime() - cal1.getStartDate().getTime());
    long cal2Duration = cal2 == null ? 0 : (cal2.getEndDate().getTime() - cal2.getStartDate().getTime());
    long diff = cal2Duration - cal1Duration;
    return diff != 0 ? (int) diff : IdComparator.compareStorableId(cal1, cal2);
  }

 }
 

Portlet Query Foreach comparators :

Custom Comparators can be added to Portlet Query Foreach edit form.
To add your comparator, declare I18N labels in your plugin language properties by following this syntax :

 comparator.pqf.{comparator name}: My Comparator
 
Warning : You MUST ensure that your comparator name does not conflicts with any existing comparator declared for Publication type.

The order of comparators displayed in the sort menu of the Portlet Query Foreach edit form can be controlled by modifying the following property

 # Comparator order for Portlet Query Foreach 
 comparator-pqf.prefered-order: \
   cdate mdate pdate edate sdate adate udate \
   title author opauthor rating workspace reader \
   reviewCount type pstatus contentType dimensions size duration  
 

Since:
jcms-7.1.0

Field Summary
 
Fields inherited from interface com.jalios.util.JPropertiesListener
REVISION
 
Method Summary
static
<T extends Storable>
Comparator<? super T>
getComparator(Class<T> clazz, String comparatorName)
          Retrieve a new Comparator from its short identifier to sort instances of the specified class.
static
<T extends Storable>
Comparator<? super T>
getComparator(Class<T> typeClazz, String comparatorName, boolean reverse)
          Retrieve a new Comparator from its short identifier to sort instances of the specified class.
static
<T extends Storable>
Comparator<? super T>
getComparator(Class<T> typeClazz, String comparatorName, boolean reverse, Map<String,Object> contextMap)
          Retrieve a new Comparator from its short identifier to sort instances of the specified class.
static ComparatorManager getInstance()
           
 void loadComparators()
          Reload comparator from properties.
 void overridePortletQueryForeachOrders()
           
 void propertiesChange(JProperties properties)
          Invoked after properties have been modified in JCMS and save on disk.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static ComparatorManager getInstance()

propertiesChange

public void propertiesChange(JProperties properties)
Description copied from interface: JPropertiesListener
Invoked after properties have been modified in JCMS and save on disk.

You cannot alter the value received in parameters.

Specified by:
propertiesChange in interface JPropertiesListener
Parameters:
properties - the properties which have been modified (may not contain all JCMS properties)

loadComparators

public void loadComparators()
Reload comparator from properties.

Since:
jcms-7.1.0

overridePortletQueryForeachOrders

public void overridePortletQueryForeachOrders()

getComparator

public static <T extends Storable> Comparator<? super T> getComparator(Class<T> clazz,
                                                                       String comparatorName)
Retrieve a new Comparator from its short identifier to sort instances of the specified class.

Type Parameters:
T - specialization of Storable
Parameters:
clazz - the Class of Storable to sort
comparatorName - the comparator name as declared in properties
Returns:
a new instance of the requested Comparator, never return null (defaults to CdateComparator)
Since:
jcms-7.1.0

getComparator

public static <T extends Storable> Comparator<? super T> getComparator(Class<T> typeClazz,
                                                                       String comparatorName,
                                                                       boolean reverse)
Retrieve a new Comparator from its short identifier to sort instances of the specified class.

Type Parameters:
T - specialization of Storable
Parameters:
typeClazz - the Class of Storable to sort
comparatorName - the comparator name as declared in properties
reverse - a boolean indicating whether the comparator should have its behavior reversed (true) or unchanged (false)
Returns:
a new instance of the requested Comparator, never return null (defaults to CdateComparator)
Since:
jcms-7.1.0

getComparator

public static <T extends Storable> Comparator<? super T> getComparator(Class<T> typeClazz,
                                                                       String comparatorName,
                                                                       boolean reverse,
                                                                       Map<String,Object> contextMap)
Retrieve a new Comparator from its short identifier to sort instances of the specified class.

Type Parameters:
T - specialization of Storable
Parameters:
typeClazz - the Class of Storable to sort
comparatorName - the comparator name as declared in properties
reverse - a boolean indicating whether the comparator should have its behavior reversed (true) or unchanged (false)
contextMap - a Map containing any contextual information which might be needed by the Comparator implementation (see BasicComparator for usage)
Returns:
a new instance of the requested Comparator, never return null (defaults to CdateComparator)
Since:
jcms-7.1.0


Copyright © 2001-2010 Jalios SA. All Rights Reserved.