X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FNode.java;h=b632eea859ef3e6ceaee76f1d75ccde567dfbe28;hb=b232aebb9732be0bb6b6252c57bca77836a9298b;hp=b3a98e9980659081e15f4638706d9ac30b534560;hpb=04bf051e92fb7dce561278b315961e790b545803;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/core/Node.java b/src/net/pterodactylus/jsite/core/Node.java index b3a98e9..b632eea 100644 --- a/src/net/pterodactylus/jsite/core/Node.java +++ b/src/net/pterodactylus/jsite/core/Node.java @@ -19,13 +19,31 @@ package net.pterodactylus.jsite.core; +import java.beans.PropertyChangeListener; + +import net.pterodactylus.jsite.util.IdGenerator; +import net.pterodactylus.util.beans.AbstractBean; +import net.pterodactylus.util.number.Hex; + /** - * Container for a Freenet node. - * + * Container for a Freenet node. A Node is capable of notifying + * {@link PropertyChangeListener}s if any of the contained properties change. + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - * @version $Id$ */ -public class Node { +public class Node extends AbstractBean { + + /** Name of the “name” property. */ + public static final String PROPERTY_NAME = "name"; + + /** Name of the “hostname” property. */ + public static final String PROPERTY_HOSTNAME = "hostname"; + + /** Name of the “port” property. */ + public static final String PROPERTY_PORT = "port"; + + /** Internal ID. */ + private String id; /** The name of the node. */ private String name; @@ -37,8 +55,34 @@ public class Node { private int port; /** + * Creates a new node. + */ + public Node() { + id = Hex.toHex(IdGenerator.generateId()); + } + + /** + * Returns the internal ID of the node. + * + * @return The internal ID of the node + */ + String getId() { + return id; + } + + /** + * Sets the internal ID of the node. + * + * @param id + * The internal ID of the node + */ + void setId(String id) { + this.id = id; + } + + /** * Returns the user-given name of the node. - * + * * @return The name of the node */ public String getName() { @@ -47,17 +91,19 @@ public class Node { /** * Sets the user-given name of the node. - * + * * @param name * The name of the node */ public void setName(String name) { + String oldName = this.name; this.name = name; + fireIfPropertyChanged(PROPERTY_NAME, oldName, name); } /** * Returns the hostname of the node. - * + * * @return The hostname of the node */ public String getHostname() { @@ -66,17 +112,19 @@ public class Node { /** * Sets the hostname of the node. - * + * * @param hostname * The hostname of the node */ public void setHostname(String hostname) { + String oldHostname = this.hostname; this.hostname = hostname; + fireIfPropertyChanged(PROPERTY_HOSTNAME, oldHostname, hostname); } /** * Returns the port number of the node. - * + * * @return The port number of the node */ public int getPort() { @@ -85,25 +133,14 @@ public class Node { /** * Sets the port number of the node. - * + * * @param port * The port number of the node */ public void setPort(int port) { + int oldPort = this.port; this.port = port; - } - - /** - * {@inheritDoc} Two Node objects are considered equal if their hostnames - * and their port numbers are equal. - */ - @Override - public boolean equals(Object object) { - if ((object == null) || !(object instanceof Node)) { - return false; - } - Node node = (Node) object; - return hostname.equals(node.hostname) && port == node.port; + fireIfPropertyChanged(PROPERTY_PORT, oldPort, port); } /** @@ -111,7 +148,7 @@ public class Node { */ @Override public String toString() { - return name + " (" + hostname + ((port == 9481) ? ("") : (":" + port)) + ")"; + return getClass().getName() + "[name=" + name + ",hostname=" + hostname + ",port=" + port + "]"; } }