implement project cloning
[jSite2.git] / src / net / pterodactylus / jsite / core / CoreImpl.java
index 15f217d..9073655 100644 (file)
@@ -31,7 +31,6 @@ 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 {
 
@@ -121,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
@@ -415,10 +449,27 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
        /**
         * {@inheritDoc}
         */
-       public Project createProject() throws IOException, JSiteException {
-               return projectManager.createProject();
+       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
        //
@@ -504,17 +555,18 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
        }
 
        /**
-        * @see net.pterodactylus.jsite.core.RequestListener#requestGeneratedURI(net.pterodactylus.jsite.core.Request, java.lang.String)
+        * @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) {
+        * @see net.pterodactylus.jsite.core.RequestListener#requestFinished(net.pterodactylus.jsite.core.Request)
+        */
+       public void requestFinished(Request request) {
                /* TODO - find project and process request */
-    }
+       }
 
 }