All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jaitools.numeric.RangeComparator Maven / Gradle / Ivy

Go to download

Provides a single jar containing all JAITools modules which you can use instead of including individual modules in your project. Note: It does not include the Jiffle scripting language or Jiffle image operator.

There is a newer version: 1.4.0
Show newest version
/* 
 *  Copyright (c) 2010-2013, Michael Bedward. All rights reserved. 
 *   
 *  Redistribution and use in source and binary forms, with or without modification, 
 *  are permitted provided that the following conditions are met: 
 *   
 *  - Redistributions of source code must retain the above copyright notice, this  
 *    list of conditions and the following disclaimer. 
 *   
 *  - Redistributions in binary form must reproduce the above copyright notice, this 
 *    list of conditions and the following disclaimer in the documentation and/or 
 *    other materials provided with the distribution.   
 *   
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
 *  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
 *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 
 *  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
 *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
 *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
 *  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
 *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
 */   

package org.jaitools.numeric;

import java.util.Comparator;

/**
 * Compares ranges by min end-point, then max end-point. This reduces the
 * detailed comparison available from {@linkplain RangeExtendedComparator} to
 * an integer result that is compatible with generic sorting methods such
 * as 
 * {@link java.util.Collections#sort(java.util.List, Comparator)}.
 * 

*

* * * * * * * * * * * * * * * *
ResultMeaning
negativeeither r1 min is less than r2 min or r1 max is less than r2 max
zeror1 and r2 are equal
positiveeither r1 min is greater than r2 min or r1 max is greater than r2 max
* * @param range value type * * @author michael */ public class RangeComparator implements Comparator> { private RangeExtendedComparator delegate; /** * Creates a new comparator. */ public RangeComparator() { this(null); } /** * Creates a new comparator that will use the supplied extended comparator. * * @param ec extended comparator (may be null) */ public RangeComparator(RangeExtendedComparator ec) { this.delegate = ec == null ? new RangeExtendedComparator() : ec; } /** * Compares two ranges. * Returns a negative value if r1 min is less than r2 min OR r1 max is less * than r2 max; a positive value if r1 min is greater than r2 min OR r2 * max is greater than r2 max; or zero if the ranges are identical. * * @param r1 first range * @param r2 second range * * @returns an integer value indicating r1 compared to r2 */ public int compare(Range r1, Range r2) { RangeExtendedComparator.Result result = delegate.compare(r1, r2); switch (result.getAt(RangeExtendedComparator.MIN_MIN)) { case RangeExtendedComparator.LT: return -1; case RangeExtendedComparator.GT: return 1; default: switch (result.getAt(RangeExtendedComparator.MAX_MAX)) { case RangeExtendedComparator.LT: return -1; case RangeExtendedComparator.GT: return 1; default: return 0; } } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy