Example usage for org.apache.commons.lang3.builder CompareToBuilder append

List of usage examples for org.apache.commons.lang3.builder CompareToBuilder append

Introduction

In this page you can find the example usage for org.apache.commons.lang3.builder CompareToBuilder append.

Prototype

public CompareToBuilder append(final Object[] lhs, final Object[] rhs, final Comparator<?> comparator) 

Source Link

Document

Appends to the builder the deep comparison of two Object arrays.

  1. Check if arrays are the same using ==
  2. Check if for null, null is less than non-null
  3. Check array length, a short length array is less than a long length array
  4. Check array contents element by element using #append(Object,Object,Comparator)

This method will also will be called for the top level of multi-dimensional, ragged, and multi-typed arrays.

Usage

From source file:org.flowable.dmn.engine.impl.hitpolicy.HitPolicyOutputOrder.java

@Override
public void composeDecisionResults(final ELExecutionContext executionContext) {
    List<Map<String, Object>> ruleResults = new ArrayList<>(executionContext.getRuleResults().values());

    boolean outputValuesPresent = false;
    for (Map.Entry<String, List<Object>> entry : executionContext.getOutputValues().entrySet()) {
        List<Object> outputValues = entry.getValue();
        if (outputValues != null && !outputValues.isEmpty()) {
            outputValuesPresent = true;/*from   w  w  w .  j  ava  2  s . c  om*/
            break;
        }
    }

    if (!outputValuesPresent) {
        if (CommandContextUtil.getDmnEngineConfiguration().isStrictMode()) {
            throw new FlowableException(
                    String.format("HitPolicy: %s; no output values present", getHitPolicyName()));
        }
    }

    // sort on predefined list(s) of output values
    Collections.sort(ruleResults, new Comparator<Map<String, Object>>() {

        @Override
        public int compare(Map<String, Object> o1, Map<String, Object> o2) {

            CompareToBuilder compareToBuilder = new CompareToBuilder();
            for (Map.Entry<String, List<Object>> entry : executionContext.getOutputValues().entrySet()) {
                List<Object> outputValues = entry.getValue();
                if (outputValues != null && !outputValues.isEmpty()) {
                    compareToBuilder.append(o1.get(entry.getKey()), o2.get(entry.getKey()),
                            new OutputOrderComparator<>(
                                    outputValues.toArray(new Comparable[outputValues.size()])));
                    compareToBuilder.toComparison();
                }
            }

            return compareToBuilder.toComparison();
        }
    });

    executionContext.getAuditContainer().setDecisionResult(ruleResults);
}

From source file:org.flowable.dmn.engine.impl.hitpolicy.HitPolicyPriority.java

@Override
public void composeDecisionResults(final ELExecutionContext executionContext) {

    List<Map<String, Object>> ruleResults = new ArrayList<>(executionContext.getRuleResults().values());

    // sort on predefined list(s) of output values
    Collections.sort(ruleResults, new Comparator<Object>() {
        boolean noOutputValuesPresent = true;

        @SuppressWarnings("unchecked")
        @Override//from w w  w .  ja v a  2  s .co m
        public int compare(Object o1, Object o2) {
            CompareToBuilder compareToBuilder = new CompareToBuilder();
            for (Map.Entry<String, List<Object>> entry : executionContext.getOutputValues().entrySet()) {
                List<Object> outputValues = entry.getValue();
                if (outputValues != null || !outputValues.isEmpty()) {
                    noOutputValuesPresent = false;
                    compareToBuilder.append(((Map<String, Object>) o1).get(entry.getKey()),
                            ((Map<String, Object>) o2).get(entry.getKey()), new OutputOrderComparator<>(
                                    outputValues.toArray(new Comparable[outputValues.size()])));
                }
            }

            if (!noOutputValuesPresent) {
                return compareToBuilder.toComparison();

            } else {
                if (CommandContextUtil.getDmnEngineConfiguration().isStrictMode()) {
                    throw new FlowableException(
                            String.format("HitPolicy: %s; no output values present", getHitPolicyName()));
                }

                return 0;
            }
        }
    });

    executionContext.getAuditContainer().addDecisionResultObject(ruleResults.get(0));
}

From source file:org.kuali.coeus.common.notification.impl.lookup.keyvalue.KeyLabelSortByValue.java

@Override
public int compareTo(KeyValue o) {
    if (o == null) {
        throw new NullPointerException("the object to compare to is null");
    }//from w w  w  .  jav  a 2  s .  c o  m
    CompareToBuilder builder = new CompareToBuilder();
    builder.append(this.getValue(), o.getValue(), String.CASE_INSENSITIVE_ORDER);

    if ((this.getKey() instanceof String) && (o.getKey() instanceof String))
        builder.append(this.getKey(), o.getKey(), String.CASE_INSENSITIVE_ORDER);
    else {
        builder.append(this.getKey(), o.getKey());
    }

    return builder.toComparison();

}