content: package ro.isdc.wro.util;
  
  import java.util.Comparator;
  
  /**
   * Classes implementing this interface signal to the classes that load them that order is significant.
   *
   * @author Moandji Ezana
   * @created 9 Jan 2013
   * @since 1.6.2
   */
  public interface Ordered {
    /**
     * The highest order, meaning that the value will be the last when ascending comparator is used.
     */
    public static final int HIGHEST = Integer.MAX_VALUE;
    public static final int MEDIUM = 0;
    /**
     * The highest order, meaning that the value will be the first when ascending comparator is used.
     */
    public static final int LOWEST = Integer.MIN_VALUE;
    public static final Comparator<Object> ASCENDING_COMPARATOR = new Comparator<Object>() {
      /**
       * {@inheritDoc}
       */
      public int compare(final Object left, final Object right) {
        int priorityLeft = MEDIUM;
        int priorityRight = MEDIUM;
  
        if (left instanceof Ordered) {
          final Ordered orderedLeft = (Ordered) left;
          priorityLeft = orderedLeft.getOrder();
        }
  
        if (right instanceof Ordered) {
          final Ordered orderedRight = (Ordered) right;
          priorityRight = orderedRight.getOrder();
        }
        if (priorityLeft == priorityRight) {
          return 0;
        }
        return priorityLeft > priorityRight ? 1: -1;
      }
    };
  
    /**
     * @return a number representing the order.
     */
    int getOrder();
  }
  