001: /*
002: * GNetWatch
003: * Copyright 2006, 2007 Alexandre Fenyo
004: * gnetwatch@fenyo.net
005: *
006: * This file is part of GNetWatch.
007: *
008: * GNetWatch is free software; you can redistribute it and/or modify
009: * it under the terms of the GNU General Public License as published by
010: * the Free Software Foundation; either version 2 of the License, or
011: * (at your option) any later version.
012: *
013: * GNetWatch is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016: * GNU General Public License for more details.
017: *
018: * You should have received a copy of the GNU General Public License
019: * along with GNetWatch; if not, write to the Free Software
020: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
021: */
022:
023: package net.fenyo.gnetwatch.targets;
024:
025: import net.fenyo.gnetwatch.*;
026: import net.fenyo.gnetwatch.GUI.GUI;
027: import net.fenyo.gnetwatch.GUI.VisualElement;
028:
029: import org.apache.commons.logging.Log;
030: import org.apache.commons.logging.LogFactory;
031: import java.net.*;
032:
033: /**
034: * TargetIPv4Subnet implements an IPv4 subnet defined by a subnet address and a subnet mask.
035: * @author Alexandre Fenyo
036: * @version $Id: TargetIPv4Subnet.java,v 1.10 2007/03/03 00:38:19 fenyo Exp $
037: */
038:
039: public class TargetIPv4Subnet extends Target {
040: private static Log log = LogFactory.getLog(TargetIPv4Subnet.class);
041:
042: private Inet4Address network; // not null
043: private Inet4Address netmask; // not null
044:
045: /**
046: * Constructor.
047: * @param name target name.
048: * @param network network address.
049: * @param netmask netmask value.
050: * @throws AlgorithmException exception.
051: */
052: // GUI thread
053: public TargetIPv4Subnet(final String name,
054: final Inet4Address network, final Inet4Address netmask)
055: throws AlgorithmException {
056: super (name);
057: if (network == null || netmask == null)
058: throw new AlgorithmException("network or netmask is null");
059: this .network = network;
060: this .netmask = netmask;
061: setItem(network.getHostAddress() + "/"
062: + netmask.getHostAddress());
063: }
064:
065: /**
066: * Initializes this target.
067: * @param gui current GUI instance.
068: * @return void.
069: */
070: public void initialize(final GUI gui) {
071: super .initialize(gui);
072: if (gui != null)
073: setImageNetwork();
074: }
075:
076: /**
077: * Returns the network address of this subnet.
078: * @param none.
079: * @return Inet4Address network address.
080: */
081: // any thread
082: protected Inet4Address getNetwork() {
083: return network;
084: }
085:
086: /**
087: * Returns the netmask of this subnet.
088: * @param none.
089: * @return Inet4Address netmask.
090: */
091: // any thread
092: protected Inet4Address getNetmask() {
093: return netmask;
094: }
095:
096: /**
097: * Checks that the parameter can be attached to this target.
098: * @param visual_element parameter to check.
099: * @return true if the parameter can be attached to this target.
100: */
101: public boolean canManageThisChild(final VisualElement visual_element) {
102: if (TargetIPv4.class.isInstance(visual_element))
103: return true;
104: return false;
105: }
106:
107: /**
108: * Compares two targets.
109: * @param o target to compare to.
110: * @return true if the targets are equal.
111: */
112: // any thread
113: public boolean equals(final Object o) {
114: if (this == o)
115: return true;
116: if ((o == null) || (o.getClass() != getClass()))
117: return false;
118: final TargetIPv4Subnet target = (TargetIPv4Subnet) o;
119: return getNetwork().equals(target.getNetwork())
120: && getNetmask().equals(target.getNetmask());
121: }
122:
123: /**
124: * Returns the hashcode for this target.
125: * @param none.
126: * @return int hashcode.
127: */
128: // any thread
129: public int hashCode() {
130: return getNetwork().hashCode() ^ getNetmask().hashCode();
131: }
132: }
|