implement project cloning
[jSite2.git] / src / net / pterodactylus / jsite / core / CoreImpl.java
index eae7b3a..9073655 100644 (file)
@@ -24,11 +24,13 @@ import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.List;
 
+import net.pterodactylus.jsite.project.Project;
+import net.pterodactylus.jsite.project.ProjectManager;
+
 /**
  * The core of jSite.
  * 
  * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
  */
 public class CoreImpl implements Core, NodeListener, RequestListener {
 
@@ -118,6 +120,41 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
        }
 
        /**
+        * Notifies all listeners that a project was added.
+        * 
+        * @param project
+        *            The project that was added
+        */
+       private void fireProjectAdded(Project project) {
+               for (CoreListener coreListener: coreListeners) {
+                       coreListener.projectAdded(project);
+               }
+       }
+       
+       /**
+        * Notifies all listeners that a project was cloned.
+        * @param clonedProject The project that was cloned
+        * @param projectClone The clone of the project
+        */
+       private void fireProjectCloned(Project clonedProject, Project projectClone) {
+               for (CoreListener coreListener: coreListeners) {
+                       coreListener.projectCloned(clonedProject, projectClone);
+               }
+       }
+
+       /**
+        * Notifies all listeners that a project was removed.
+        * 
+        * @param project
+        *            The project that was removed
+        */
+       private void fireProjectRemoved(Project project) {
+               for (CoreListener coreListener: coreListeners) {
+                       coreListener.projectRemoved(project);
+               }
+       }
+
+       /**
         * Notifies all listeners that the nodes were successfully loaded.
         * 
         * @param directory
@@ -265,42 +302,6 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
                }
        }
 
-       /**
-        * Notifies all listeners that a request was added to a node.
-        * 
-        * @param request
-        *            The request that was added
-        */
-       private void fireRequestAdded(Request request) {
-               for (CoreListener coreListener: coreListeners) {
-                       coreListener.requestAdded(request);
-               }
-       }
-
-       /**
-        * Notifies all listeners that a request progressed.
-        * 
-        * @param request
-        *            The request
-        */
-       private void fireRequestProgressed(Request request) {
-               for (CoreListener coreListener: coreListeners) {
-                       coreListener.requestProgressed(request);
-               }
-       }
-
-       /**
-        * Notifies all listeners that a request was removed.
-        * 
-        * @param request
-        *            The request that was removed
-        */
-       private void fireRequestRemoved(Request request) {
-               for (CoreListener coreListener: coreListeners) {
-                       coreListener.requestRemoved(request);
-               }
-       }
-
        //
        // ACCESSORS
        //
@@ -367,6 +368,13 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
                return nodeManager.hasNode(node);
        }
 
+       /**
+        * {@inheritDoc}
+        */
+       public List<Project> getProjects() {
+               return projectManager.getProjects();
+       }
+
        //
        // ACTIONS
        //
@@ -441,18 +449,27 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
        /**
         * {@inheritDoc}
         */
-       public Project addProject(String projectName) throws IOException {
-               Project project = new Project();
-               project.setName(projectName);
-               String[] keyPair = nodeManager.generateKeyPair();
-               if (keyPair == null) {
-                       return null;
-               }
-               project.setPrivateKey(keyPair[0]);
-               project.setPublicKey(keyPair[1]);
-               return project;
+       public void createProject() throws IOException, JSiteException {
+               Project newProject = projectManager.createProject();
+               fireProjectAdded(newProject);
        }
 
+       /**
+        * {@inheritDoc}
+        */
+       public void cloneProject(Project project) {
+               Project projectClone = projectManager.cloneProject(project);
+               fireProjectCloned(project, projectClone);
+       }
+       
+       /**
+        * {@inheritDoc}
+        */
+       public void removeProject(Project project) {
+               projectManager.removeProject(project);
+               fireProjectRemoved(project);
+       }
+       
        //
        // PRIVATE METHODS
        //
@@ -520,21 +537,36 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         * {@inheritDoc}
         */
        public void requestAdded(Request request) {
-               fireRequestAdded(request);
+               /* TODO - find project and process request */
        }
 
        /**
         * @see net.pterodactylus.jsite.core.RequestListener#requestProgressed(Request)
         */
        public void requestProgressed(Request request) {
-               fireRequestProgressed(request);
+               /* TODO - find project and process request */
        }
 
        /**
         * @see net.pterodactylus.jsite.core.RequestListener#requestRemoved(net.pterodactylus.jsite.core.Request)
         */
        public void requestRemoved(Request request) {
-               fireRequestRemoved(request);
+               /* TODO - find project and process request */
+       }
+
+       /**
+        * @see net.pterodactylus.jsite.core.RequestListener#requestGeneratedURI(net.pterodactylus.jsite.core.Request,
+        *      java.lang.String)
+        */
+       public void requestGeneratedURI(Request request, String uri) {
+               /* TODO - find project and process request */
+       }
+
+       /**
+        * @see net.pterodactylus.jsite.core.RequestListener#requestFinished(net.pterodactylus.jsite.core.Request)
+        */
+       public void requestFinished(Request request) {
+               /* TODO - find project and process request */
        }
 
 }