Example usage for org.apache.commons.collections4.comparators ComparableComparator INSTANCE

List of usage examples for org.apache.commons.collections4.comparators ComparableComparator INSTANCE

Introduction

In this page you can find the example usage for org.apache.commons.collections4.comparators ComparableComparator INSTANCE.

Prototype

ComparableComparator INSTANCE

To view the source code for org.apache.commons.collections4.comparators ComparableComparator INSTANCE.

Click Source Link

Document

The singleton instance.

Usage

From source file:net.sf.jasperreports.crosstabs.fill.calculation.BucketDefinition.java

/**
 * Creates a bucket.// www .  j  av  a  2s  . c  o  m
 * 
 * @param valueClass the class of the bucket values
 * @param orderer bucket entries orderer
 * @param comparator the comparator to use for bucket sorting
 * @param order the order type, {@link BucketOrder#ASCENDING}, {@link BucketOrder#DESCENDING} or {@link BucketOrder#NONE}
 * @param totalPosition the position of the total bucket
 * @throws JRException
 */
public BucketDefinition(Class<?> valueClass, BucketOrderer orderer, Comparator<Object> comparator,
        BucketOrder order, CrosstabTotalPositionEnum totalPosition) throws JRException {
    this.orderer = orderer;
    this.order = order;

    if (orderer == null) {
        // we don't have a bucket orderer
        if (order == BucketOrder.NONE) {
            // no ordering, values are inserted in the order in which they come
            this.bucketValueComparator = null;
        } else {
            // the buckets are ordered using the bucket values
            // if there's no comparator, we're assuming that the values are Comparable
            this.bucketValueComparator = createOrderComparator(comparator, order);
        }
    } else {
        // we have an order by expression
        // we only need an internal ordering for bucket values
        if (Comparable.class.isAssignableFrom(valueClass)) {
            // using natural order
            this.bucketValueComparator = ComparableComparator.INSTANCE;
        } else {
            // using an arbitrary rank comparator
            // TODO lucianc couldn't we just set here bucketValueComparator to null?
            if (log.isDebugEnabled()) {
                log.debug("Using arbitrary rank comparator for bucket");
            }

            this.bucketValueComparator = new ArbitraryRankComparator();
        }
    }

    this.totalPosition = totalPosition;
    computeTotal = totalPosition != CrosstabTotalPositionEnum.NONE || orderer != null;
}

From source file:net.sf.jasperreports.crosstabs.fill.calculation.BucketDefinition.java

public static Comparator<Object> createOrderComparator(Comparator<Object> comparator, BucketOrder order) {
    Comparator<Object> orderComparator;
    switch (order) {
    case DESCENDING: {
        if (comparator == null) {
            orderComparator = new ReverseComparator<Object>();
        } else {/*from  ww w  . j  a  v  a 2  s .  co m*/
            orderComparator = new ReverseComparator<Object>(comparator);
        }
        break;
    }
    case ASCENDING: {
        if (comparator == null) {
            orderComparator = ComparableComparator.INSTANCE;
        } else {
            orderComparator = comparator;
        }
        break;
    }
    case NONE:
    default:
        throw new JRRuntimeException(EXCEPTION_MESSAGE_KEY_UNSUPPORTED_ORDER_TYPE, new Object[] { order });
    }
    return orderComparator;
}