add id to node
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Tue, 3 Jun 2008 06:31:55 +0000 (08:31 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Tue, 3 Jun 2008 06:31:55 +0000 (08:31 +0200)
src/net/pterodactylus/jsite/core/Node.java
src/net/pterodactylus/jsite/core/NodeManager.java

index 183a916..5a8ec89 100644 (file)
@@ -40,6 +40,9 @@ public class Node extends AbstractBean {
        /** Name of the “port” property. */
        public static final String PROPERTY_PORT = "port";
 
        /** 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;
 
        /** The name of the node. */
        private String name;
 
@@ -49,9 +52,24 @@ public class Node extends AbstractBean {
        /** The port number of the node. */
        private int port;
 
        /** The port number of the node. */
        private int port;
 
-       //
-       // EVENT MANAGEMENT
-       //
+       /**
+        * 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.
 
        /**
         * Returns the user-given name of the node.
index 56910ae..4224cf1 100644 (file)
@@ -42,8 +42,10 @@ import net.pterodactylus.fcp.highlevel.HighLevelClient;
 import net.pterodactylus.fcp.highlevel.HighLevelClientListener;
 import net.pterodactylus.fcp.highlevel.HighLevelException;
 import net.pterodactylus.fcp.highlevel.KeyGenerationResult;
 import net.pterodactylus.fcp.highlevel.HighLevelClientListener;
 import net.pterodactylus.fcp.highlevel.HighLevelException;
 import net.pterodactylus.fcp.highlevel.KeyGenerationResult;
+import net.pterodactylus.jsite.util.IdGenerator;
 import net.pterodactylus.util.io.Closer;
 import net.pterodactylus.util.logging.Logging;
 import net.pterodactylus.util.io.Closer;
 import net.pterodactylus.util.logging.Logging;
+import net.pterodactylus.util.number.Hex;
 
 /**
  * TODO
 
 /**
  * TODO
@@ -238,6 +240,10 @@ public class NodeManager implements Iterable<Node>, PropertyChangeListener, High
                List<Node> loadedNodes = new ArrayList<Node>();
                while (nodeProperties.containsKey("nodes." + ++nodeIndex + ".name")) {
                        String nodePrefix = "nodes." + nodeIndex;
                List<Node> loadedNodes = new ArrayList<Node>();
                while (nodeProperties.containsKey("nodes." + ++nodeIndex + ".name")) {
                        String nodePrefix = "nodes." + nodeIndex;
+                       String nodeId = nodeProperties.getProperty(nodePrefix + ".id");
+                       if (nodeId == null) {
+                               nodeId = Hex.toHex(IdGenerator.generateId());
+                       }
                        String nodeName = nodeProperties.getProperty(nodePrefix + ".name");
                        if (!Verifier.verifyNodeName(nodeName)) {
                                logger.log(Level.WARNING, "invalid node name “" + nodeName + "”, skipping…");
                        String nodeName = nodeProperties.getProperty(nodePrefix + ".name");
                        if (!Verifier.verifyNodeName(nodeName)) {
                                logger.log(Level.WARNING, "invalid node name “" + nodeName + "”, skipping…");
@@ -262,6 +268,7 @@ public class NodeManager implements Iterable<Node>, PropertyChangeListener, High
                                continue;
                        }
                        Node newNode = new Node();
                                continue;
                        }
                        Node newNode = new Node();
+                       newNode.setId(nodeId);
                        newNode.setName(nodeName);
                        newNode.setHostname(nodeHostname);
                        newNode.setPort(nodePort);
                        newNode.setName(nodeName);
                        newNode.setHostname(nodeHostname);
                        newNode.setPort(nodePort);
@@ -293,6 +300,7 @@ public class NodeManager implements Iterable<Node>, PropertyChangeListener, High
                int nodeIndex = -1;
                for (Node node : nodes) {
                        String nodePrefix = "nodes." + ++nodeIndex;
                int nodeIndex = -1;
                for (Node node : nodes) {
                        String nodePrefix = "nodes." + ++nodeIndex;
+                       nodeProperties.setProperty(nodePrefix + ".id", node.getId());
                        nodeProperties.setProperty(nodePrefix + ".name", node.getName());
                        nodeProperties.setProperty(nodePrefix + ".hostname", node.getHostname());
                        nodeProperties.setProperty(nodePrefix + ".port", String.valueOf(node.getPort()));
                        nodeProperties.setProperty(nodePrefix + ".name", node.getName());
                        nodeProperties.setProperty(nodePrefix + ".hostname", node.getHostname());
                        nodeProperties.setProperty(nodePrefix + ".port", String.valueOf(node.getPort()));