X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=inline;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FNode.java;h=3d35b4727189f31fd7ed94e06423880ea5725fba;hb=8f90e7924ee56322b2236d9b8ac0a81541b8ccf4;hp=854a668df32c47db9c01a05f636240304ef50bfb;hpb=bcb9cebfa11ffbfee8ee8e5579edeed302e2d784;p=jSite2.git
diff --git a/src/net/pterodactylus/jsite/core/Node.java b/src/net/pterodactylus/jsite/core/Node.java
index 854a668..3d35b47 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;
@@ -36,12 +54,39 @@ public class Node {
/** The port number of the node. */
private int port;
- /** Whether the node is running on the same machine as jSite. */
- private boolean sameMachine;
+ /**
+ * 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) {
+ if (id == null) {
+ this.id = Hex.toHex(IdGenerator.generateId());
+ } else {
+ this.id = id;
+ }
+ }
/**
* Returns the user-given name of the node.
- *
+ *
* @return The name of the node
*/
public String getName() {
@@ -50,17 +95,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() {
@@ -69,17 +116,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() {
@@ -88,33 +137,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;
- }
-
- /**
- * Returns whether this node is running on the same machine as jSite.
- *
- * @return the sameMachine true
if, and only if, the node is
- * running on the same machine as jSite
- */
- public boolean isSameMachine() {
- return sameMachine;
- }
-
- /**
- * Sets whether this node is running on the same machine as jSite.
- *
- * @param sameMachine
- * true
if the node is running on the same machine
- * as jSite, false
otherwise
- */
- public void setSameMachine(boolean sameMachine) {
- this.sameMachine = sameMachine;
+ fireIfPropertyChanged(PROPERTY_PORT, oldPort, port);
}
/**
@@ -122,7 +152,7 @@ public class Node {
*/
@Override
public String toString() {
- return name + " (" + hostname + ((port == 9481) ? ("") : (":" + port)) + ")";
+ return getClass().getName() + "[name=" + name + ",hostname=" + hostname + ",port=" + port + "]";
}
}