package net.pterodactylus.jsite.core;
+import java.beans.PropertyChangeListener;
+
+import net.pterodactylus.util.beans.AbstractBean;
+
/**
- * 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";
/** The name of the node. */
private String name;
/** The port number of the node. */
private int port;
- /** Whether the node is running on the same machine as jSite. */
- private boolean sameMachine;
+ //
+ // EVENT MANAGEMENT
+ //
/**
* Returns the user-given name of the node.
* The name of the node
*/
public void setName(String name) {
+ String oldName = this.name;
this.name = name;
+ fireIfPropertyChanged(PROPERTY_NAME, oldName, name);
}
/**
* The hostname of the node
*/
public void setHostname(String hostname) {
+ String oldHostname = this.hostname;
this.hostname = hostname;
+ fireIfPropertyChanged(PROPERTY_HOSTNAME, oldHostname, hostname);
}
/**
* The port number of the node
*/
public void setPort(int port) {
+ int oldPort = this.port;
this.port = port;
+ fireIfPropertyChanged(PROPERTY_PORT, oldPort, port);
}
/**
- * Returns whether this node is running on the same machine as jSite.
- *
- * @return the sameMachine <code>true</code> if, and only if, the node is
- * running on the same machine as jSite
- */
- boolean isSameMachine() {
- return sameMachine;
- }
-
- /**
- * Sets whether this node is running on the same machine as jSite.
- *
- * @param sameMachine
- * <code>true</code> if the node is running on the same machine
- * as jSite, <code>false</code> otherwise
+ * {@inheritDoc}
*/
- void setSameMachine(boolean sameMachine) {
- this.sameMachine = sameMachine;
+ @Override
+ public String toString() {
+ return name + " (" + hostname + ((port == 9481) ? ("") : (":" + port)) + ")";
}
}