/* * Copyright (c) 2010, skobbler GmbH * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. 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. * 3. Neither the name of the project nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * 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 OWNER 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. * * Created on Apr 5, 2011 by Bea * Modified on $DateTime$ by $Author$ */ package org.openstreetmap.josm.plugins.mapdust.service.value; import java.io.Serializable; import java.util.HashSet; import java.util.Iterator; /** * This a helper object, used for representing the MapDust bug relevance range. * A bug relevance range is defined by the lower and the upper values. * * @author Bea * @version $Revision$ */ public final class RelevanceRange implements Serializable, Comparable<RelevanceRange> { /** The serial version UID */ private static final long serialVersionUID = -5187434838022942754L; /** The low range */ public static final RelevanceRange LOW_RANGE = new RelevanceRange(0, 3); /** The mid-low range */ public static final RelevanceRange MID_LOW_RANGE = new RelevanceRange(4, 6); /** The medium range */ public static final RelevanceRange MEDIUM_RANGE = new RelevanceRange(7, 9); /** The mid-high range */ public static final RelevanceRange MID_HIGH_RANGE = new RelevanceRange(10, 13); /** The high range */ public static final RelevanceRange HIGH_RANGE = new RelevanceRange(14, 17); /** A set containing all the valid range values */ private static java.util.Set<RelevanceRange> set; /** The minimal value */ private int lowerValue; /** The maximal value */ private int upperValue; /** * Builds a new <code>RelevanceRange</code> object. * */ private RelevanceRange() {} /** * Builds a new <code>RelevanceRange</code> object based on the given * arguments. * * @param lowerValue The mimal value of the range * @param upperValue The maximal value of the range */ private RelevanceRange(int lowerValue, int upperValue) { this.lowerValue = lowerValue; this.upperValue = upperValue; if (set == null) { set = new HashSet<>(); } set.add(this); } /** * Returns the range for the given value. A value belongs to a range if * value>=loweValue and value <=upperValue. If there is no range defined for * the given value, then the method return null. * * @param value An integer value, where value >=0 and value <=17 * @return The <code>RelevanceRange</code> corresponding to the given value. */ public static RelevanceRange getRelevanceRange(int value) { Iterator<RelevanceRange> it = set.iterator(); RelevanceRange range = null; while (it.hasNext()) { range = it.next(); if (value >= range.getLowerValue() && value <= range.getUpperValue()) { return range; } } return null; } /** * Returns the lower value * * @return the lowerValue */ public int getLowerValue() { return lowerValue; } /** * Returns the upper value * * @return the upperValue */ public int getUpperValue() { return upperValue; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + lowerValue; result = prime * result + upperValue; return result; } @Override public boolean equals(Object obj) { RelevanceRange other = (RelevanceRange) obj; if (lowerValue != other.lowerValue) return false; if (upperValue != other.upperValue) return false; return true; } @Override public int compareTo(RelevanceRange obj) { if (this.getLowerValue() < obj.getLowerValue() && this.getUpperValue() < obj.getUpperValue()) { return -1; } if (this.getLowerValue() > obj.getLowerValue() && this.getUpperValue() > obj.getUpperValue()) { return 1; } return 0; } }