Example usage for com.google.common.collect ComparisonChain compare

List of usage examples for com.google.common.collect ComparisonChain compare

Introduction

In this page you can find the example usage for com.google.common.collect ComparisonChain compare.

Prototype

public abstract <T> ComparisonChain compare(@Nullable T left, @Nullable T right, Comparator<T> comparator);

Source Link

Document

Compares two objects using a comparator, if the result of this comparison chain has not already been determined.

Usage

From source file:org.apache.isis.applib.util.ObjectContractsLegacy.java

private static <T> int compare(final T p, final T q, final Iterable<String> propertyNamesIter) {
    if (p == null) {
        return -1;
    }/*from  w ww .  ja  v a  2s .c o  m*/
    if (q == null) {
        return +1;
    }
    if (p.getClass() != q.getClass()) {
        // just sort on the class type
        return Ordering.natural().onResultOf((Function<Object, String>) o -> o.getClass().getSimpleName())
                .compare(p, q);
    }

    final Iterable<Clause> clauses = clausesFor(propertyNamesIter);
    ComparisonChain chain = ComparisonChain.start();
    for (final Clause clause : clauses) {
        final Comparable<T> propertyValueOfP = _Casts.uncheckedCast(clause.getValueOf(p));
        final Comparable<T> propertyValueOfQ = _Casts.uncheckedCast(clause.getValueOf(q));
        chain = chain.compare(propertyValueOfP, propertyValueOfQ, clause.getDirection().getOrdering());
    }
    return chain.result();
}

From source file:org.apache.isis.applib.util.ObjectContracts2.java

private static <T> int compare(final T p, final T q, final Iterable<String> propertyNamesIter) {
    if (p == null) {
        return -1;
    }//from  ww  w.ja  va  2s  .c  o  m
    if (q == null) {
        return +1;
    }
    if (p.getClass() != q.getClass()) {
        // just sort on the class type
        return Ordering.natural().onResultOf(new Function<Object, String>() {
            @Override
            public String apply(final Object o) {
                return o.getClass().getSimpleName();
            }
        }).compare(p, q);
    }

    final Iterable<Clause> clauses = clausesFor(propertyNamesIter);
    ComparisonChain chain = ComparisonChain.start();
    for (final Clause clause : clauses) {
        final Comparable<T> propertyValueOfP = (Comparable<T>) clause.getValueOf(p);
        final Comparable<T> propertyValueOfQ = (Comparable<T>) clause.getValueOf(q);
        chain = chain.compare(propertyValueOfP, propertyValueOfQ, clause.getDirection().getOrdering());
    }
    return chain.result();
}

From source file:org.apache.metron.indexing.dao.InMemoryDao.java

private static Comparator<SearchResult> sorted(final List<SortField> fields) {
    return (o1, o2) -> {
        ComparisonChain chain = ComparisonChain.start();
        for (SortField field : fields) {
            Comparable f1 = (Comparable) o1.getSource().get(field.getField());
            Comparable f2 = (Comparable) o2.getSource().get(field.getField());
            chain = chain.compare(f1, f2, new ComparableComparator(field.getSortOrder()));
        }/*from  w  w w . j  a va2 s. co  m*/
        return chain.result();
    };
}

From source file:org.apache.isis.applib.util.ObjectContracts.java

private static <T> int compare(final T p, final T q, final Iterable<String> propertyNamesIter) {
    final Iterable<Clause> clauses = clausesFor(propertyNamesIter);
    ComparisonChain chain = ComparisonChain.start();
    for (final Clause clause : clauses) {
        final Comparable<T> propertyValueOfP = (Comparable<T>) clause.getValueOf(p);
        final Comparable<T> propertyValueOfQ = (Comparable<T>) clause.getValueOf(q);
        chain = chain.compare(propertyValueOfP, propertyValueOfQ, clause.getDirection().getOrdering());
    }/*from   w  w w .j a v a2 s . c o  m*/
    return chain.result();
}

From source file:com.dmdirc.addons.ui_swing.components.NicklistComparator.java

@Override
public int compare(final GroupChatUser client1, final GroupChatUser client2) {
    ComparisonChain comparisonChain = ComparisonChain.start();
    if (sortByMode) {
        comparisonChain = comparisonChain.compare(client1.getAllModes(), client2.getAllModes(),
                client1.getModeComparator());
    }/*from  ww  w.j a  v  a2s.com*/
    if (sortByCase) {
        comparisonChain = comparisonChain.compare(client1.getNickname(), client2.getNickname());
    } else {
        comparisonChain = comparisonChain.compare(client1.getNickname().toLowerCase(),
                client2.getNickname().toLowerCase());
    }
    return comparisonChain.result();
}

From source file:org.haiku.haikudepotserver.support.VersionCoordinatesComparator.java

@Override
public int compare(VersionCoordinates o1, VersionCoordinates o2) {
    ComparisonChain chain = ComparisonChain.start()
            .compare(o1.getMajor(), o2.getMajor(), naturalStringComparator)
            .compare(o1.getMinor(), o2.getMinor(), naturalStringComparator)
            .compare(o1.getMicro(), o2.getMicro(), naturalStringComparator);

    if (!ignorePrereleaseAndRevision) {
        chain = chain
                .compare(o1.getPreRelease(), o2.getPreRelease(),
                        Ordering.from(naturalStringComparator).nullsLast())
                .compare(o1.getRevision(), o2.getRevision(), Ordering.natural().nullsLast());
    }/*  w w w.  j  a va  2 s . c om*/

    return chain.result();
}