Java tutorial
/** * Copyright (c) 2009--2010 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package com.redhat.rhn.manager.kickstart; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; /** * IpAddressRange * @version $Rev$ */ public class IpAddressRange { private IpAddress min; private IpAddress max; private Long ksid; /** * Default Construtor * */ public IpAddressRange() { this.min = new IpAddress(); this.max = new IpAddress(); this.ksid = new Long(0); } /** * * @param minIn min IP to set * @param maxIn max IP to set * @param ksidIn Kickstart ID to set */ public IpAddressRange(IpAddress minIn, IpAddress maxIn, Long ksidIn) { this.min = minIn; this.max = maxIn; this.ksid = ksidIn; } /** * * @param minIn IpNumber to set min IpAddress * @param maxIn IpNumber to set max IpAddress * @param ksidIn Kickstart ID to set */ public IpAddressRange(long minIn, long maxIn, Long ksidIn) { this.min = new IpAddress(minIn); this.max = new IpAddress(maxIn); this.ksid = ksidIn; } /** * * @param minIn min ip long coming in * @param maxIn max ip long coming in * @param ksidIn long id of ks data */ public IpAddressRange(long minIn, long maxIn, long ksidIn) { this(minIn, maxIn, new Long(ksidIn)); } /** * * @param minIn IpNumber to set min IpAddress * @param maxIn IpNumber to set max IpAddress */ public IpAddressRange(Long minIn, Long maxIn) { this.min = new IpAddress(minIn.longValue()); this.max = new IpAddress(maxIn.longValue()); this.ksid = new Long(0); } /** * * @return Max IpAddress for this range */ public IpAddress getMax() { return this.max; } /** * * @param maxIn IpAddress to set for this range */ public void setMax(IpAddress maxIn) { this.max = maxIn; } /** * * @return min IpAddress for this range */ public IpAddress getMin() { return this.min; } /** * * @param minIn IpAddress to set for this range */ public void setMin(IpAddress minIn) { this.min = minIn; } /** * {@inheritDoc} */ public boolean equals(Object o) { if (o == null || !(o instanceof IpAddressRange)) { return false; } IpAddressRange other = (IpAddressRange) o; return new EqualsBuilder().append(this.getMax(), other.getMax()).append(this.getMin(), other.getMin()) .isEquals(); } /** * {@inheritDoc} */ public int hashCode() { return new HashCodeBuilder().append(this.getMax()).append(this.getMin()).toHashCode(); } /** * * @return Kickstart ID */ public Long getKsid() { return ksid; } /** * * @param ksidIn KickstartId to set */ public void setKsid(Long ksidIn) { this.ksid = ksidIn; } /** * {@inheritDoc} */ public String toString() { return getRange(); } /** * TODO: does anybody use this? Is there any reason for it to exist? * @return range in String form */ public String getRange() { return getMin().toString() + " - " + getMax().toString(); } /** * * @param addrIn Address coming * @return is this IPaddress contained in this range */ public boolean isIpAddressContained(IpAddress addrIn) { return (addrIn.getNumber() >= this.min.getNumber() && addrIn.getNumber() <= this.max.getNumber()); } /** * * @param rangeIn Range coming in * @return if this range is before the other */ public boolean isRangeBefore(IpAddressRange rangeIn) { return (this.max.getNumber() < rangeIn.min.getNumber()); } /** * * @param rangeIn Range coming in * @return if this range is after the other */ public boolean isRangeAfter(IpAddressRange rangeIn) { return (this.min.getNumber() > rangeIn.max.getNumber()); } /** * * @param rangeIn Range coming in * @return is this range is disjoint from the other */ public boolean isDisjoint(IpAddressRange rangeIn) { return (this.isRangeBefore(rangeIn) || this.isRangeAfter(rangeIn)); } /** * * @param rangeIn Range coming in * @return is this range a subset of the other */ public boolean isSubset(IpAddressRange rangeIn) { return (this.min.getNumber() >= rangeIn.min.getNumber() && this.max.getNumber() <= rangeIn.max.getNumber()); } /** * * @param rangeIn Range coming in * @return does this range contain the other range */ public boolean isSuperset(IpAddressRange rangeIn) { return (this.min.getNumber() <= rangeIn.min.getNumber() && this.max.getNumber() >= rangeIn.max.getNumber()); } /** * * @param rangeIn Range coming in * @return can this range coexist with other ranges in org */ public boolean canCoexist(IpAddressRange rangeIn) { return ((this.isDisjoint(rangeIn) || this.isSubset(rangeIn) || this.isSuperset(rangeIn)) && !this.equals(rangeIn)); } }