(Current state.)
[jSite2.git] / src / net / pterodactylus / jsite / core / RequestManager.java
index 831c9b3..54ae5ac 100644 (file)
@@ -98,6 +98,34 @@ public class RequestManager implements NodeListener {
        public void save() throws IOException {
        }
 
+       /**
+        * Starts inserting the given project.
+        *
+        * @param project
+        *            The project to insert
+        * @throws JSiteException
+        *             if the project’s node is not connected, or no node is
+        *             connected at all
+        */
+       public void insertProject(Project project) throws JSiteException {
+               Request request = new Request();
+               request.setClientToken(generateClientToken(project));
+               Node wantedNode = project.getNode();
+               if (wantedNode == null) {
+                       for (Node node : nodeManager.getNodes()) {
+                               if (nodeManager.getFcpClient(node) != null) {
+                                       wantedNode = node;
+                                       break;
+                               }
+                       }
+               }
+               if (wantedNode == null) {
+                       /* TODO use custom exception */
+                       throw new JSiteException("No node connected.");
+               }
+               FcpClient fcpClient = nodeManager.getFcpClient(wantedNode);
+       }
+
        //
        // PRIVATE METHODS
        //
@@ -120,11 +148,17 @@ public class RequestManager implements NodeListener {
                if (projectIdString.length() != (IdGenerator.DEFAULT_LENGTH * 2)) {
                        return false;
                }
+               int clientTokenHashCode = -1;
                try {
                        Hex.toByte(projectIdString);
+                       Long.valueOf(clientTokenParts[1]);
+                       clientTokenHashCode = Integer.valueOf(clientTokenParts[2]);
                } catch (NumberFormatException nfe1) {
                        return false;
                }
+               if ((clientTokenParts[0] + "." + clientTokenParts[1]).hashCode() != clientTokenHashCode) {
+                       return false;
+               }
                return true;
        }