add logging
[jSite2.git] / src / net / pterodactylus / jsite / core / CoreImpl.java
index 9073655..2296e22 100644 (file)
@@ -23,9 +23,12 @@ import java.io.IOException;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
-import net.pterodactylus.jsite.project.Project;
-import net.pterodactylus.jsite.project.ProjectManager;
+import net.pterodactylus.util.logging.Logging;
 
 /**
  * The core of jSite.
@@ -34,9 +37,15 @@ import net.pterodactylus.jsite.project.ProjectManager;
  */
 public class CoreImpl implements Core, NodeListener, RequestListener {
 
+       /** The logger. */
+       private static final Logger logger = Logging.getLogger(CoreImpl.class.getName());
+
        /** The core listeners. */
        private final List<CoreListener> coreListeners = new ArrayList<CoreListener>();
 
+       /** Thread pool. */
+       private Executor threadPool = Executors.newCachedThreadPool();
+
        /** The project manager. */
        private ProjectManager projectManager;
 
@@ -56,6 +65,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         * {@inheritDoc}
         */
        public void addCoreListener(CoreListener coreListener) {
+               logger.log(Level.FINEST, "adding core listener: " + coreListener);
                coreListeners.add(coreListener);
        }
 
@@ -63,6 +73,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         * {@inheritDoc}
         */
        public void removeCoreListener(CoreListener coreListener) {
+               logger.log(Level.FINEST, "removing core listener: " + coreListener);
                coreListeners.remove(coreListener);
        }
 
@@ -73,7 +84,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The directory the projects were loaded from
         */
        private void fireLoadingProjectsDone(String directory) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing loadingProjectsDone event with [directory=" + directory + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.loadingProjectsDone(directory);
                }
        }
@@ -88,7 +100,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The exception that occured when loading projects
         */
        private void fireLoadingProjectsFailed(String directory, Throwable throwable) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing loadingProjectsFailed event with [directory=" + directory + ",throwable=" + throwable + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.loadingProjectsFailed(directory, throwable);
                }
        }
@@ -100,7 +113,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The directory the projects were saved to
         */
        private void fireSavingProjectsDone(String directory) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing savingProjectsDone event with [directory=" + directory + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.savingProjectsDone(directory);
                }
        }
@@ -114,7 +128,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The exception that occured when saving the projects
         */
        private void fireSavingProjectsFailed(String directory, Throwable throwable) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing savingProjectsFailed event with [directory=" + directory + ",throwable=" + throwable + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.savingProjectsFailed(directory, throwable);
                }
        }
@@ -126,18 +141,23 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The project that was added
         */
        private void fireProjectAdded(Project project) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing projectAdded event with [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
+        * 
+        * @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) {
+               logger.log(Level.FINEST, "firing projectCloned event with [clonedProject=" + clonedProject + ",projectClone=" + projectClone + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.projectCloned(clonedProject, projectClone);
                }
        }
@@ -149,7 +169,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The project that was removed
         */
        private void fireProjectRemoved(Project project) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing projectRemoved event with [project=" + project + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.projectRemoved(project);
                }
        }
@@ -161,7 +182,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The directory the nodes were loaded from
         */
        private void fireLoadingNodesDone(String directory) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing loadingNodesDone event with [directory=" + directory + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.loadingNodesDone(directory);
                }
        }
@@ -175,7 +197,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The exception that occured while loading the nodes
         */
        private void fireLoadingNodesFailed(String directory, Throwable throwable) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing loadingNodesFailed event with [directory=" + directory + ",throwable=" + throwable + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.loadingNodesFailed(directory, throwable);
                }
        }
@@ -187,7 +210,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The directory the nodes were saved to
         */
        private void fireSavingNodesDone(String directory) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing savingNodesDone event with [directory=" + directory + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.savingNodesDone(directory);
                }
        }
@@ -201,7 +225,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The exception that occured while saving the nodes
         */
        private void fireSavingNodesFailed(String directory, Throwable throwable) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing savingNodesFailed event with [directory=" + directory + ",throwable=" + throwable + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.savingProjectsFailed(directory, throwable);
                }
        }
@@ -210,7 +235,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         * Notifies all core listeners that the core has loaded and is ready to run.
         */
        private void fireCoreLoaded() {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing coreLoaded event");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.coreLoaded();
                }
        }
@@ -219,7 +245,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         * Notifies all listeners that the core was stopped.
         */
        private void fireCoreStopped() {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing coreStopped event");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.coreStopped();
                }
        }
@@ -231,7 +258,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The node that was added
         */
        private void fireNodeAdded(Node node) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing nodeAdded event with [node=" + node + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.nodeAdded(node);
                }
        }
@@ -243,7 +271,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The node that was removed
         */
        private void fireNodeRemoved(Node node) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing nodeRemoved event with [node=" + node + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.nodeRemoved(node);
                }
        }
@@ -256,7 +285,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The node that is being connected to
         */
        private void fireNodeConnecting(Node node) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing nodeConnecting event with [node=" + node + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.nodeConnecting(node);
                }
        }
@@ -268,7 +298,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The node that is now connected
         */
        private void fireNodeConnected(Node node) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing nodeConnected event with [node=" + node + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.nodeConnected(node);
                }
        }
@@ -282,7 +313,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            The cause of the failure
         */
        private void fireNodeConnectionFailed(Node node, Throwable cause) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing nodeConnectionFailed event with [node=" + node + ",cause=" + cause + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.nodeConnectionFailed(node, cause);
                }
        }
@@ -297,7 +329,8 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         *            if there was no exception
         */
        private void fireNodeDisconnected(Node node, Throwable throwable) {
-               for (CoreListener coreListener: coreListeners) {
+               logger.log(Level.FINEST, "firing nodeDisconnected event with [node=" + node + ",throwable=" + throwable + "]");
+               for (CoreListener coreListener : coreListeners) {
                        coreListener.nodeDisconnected(node, throwable);
                }
        }
@@ -307,6 +340,13 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
        //
 
        /**
+        * {@inheritDoc}
+        */
+       public Executor getThreadPool() {
+               return threadPool;
+       }
+
+       /**
         * Returns the project manager.
         * 
         * @return The project manager
@@ -383,18 +423,19 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         * {@inheritDoc}
         */
        public void start() {
-               try {
-                       projectManager.load();
-                       fireLoadingProjectsDone(projectManager.getDirectory());
-               } catch (IOException ioe1) {
-                       fireLoadingProjectsFailed(projectManager.getDirectory(), ioe1);
-               }
+               logger.log(Level.INFO, "starting core…");
                try {
                        nodeManager.load();
                        fireLoadingNodesDone(nodeManager.getDirectory());
                } catch (IOException ioe1) {
                        fireLoadingNodesFailed(nodeManager.getDirectory(), ioe1);
                }
+               try {
+                       projectManager.load();
+                       fireLoadingProjectsDone(projectManager.getDirectory());
+               } catch (IOException ioe1) {
+                       fireLoadingProjectsFailed(projectManager.getDirectory(), ioe1);
+               }
                fireCoreLoaded();
        }
 
@@ -402,6 +443,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         * {@inheritDoc}
         */
        public void stop() {
+               logger.log(Level.INFO, "stopping core…");
                try {
                        projectManager.save();
                        fireSavingProjectsDone(projectManager.getDirectory());
@@ -421,6 +463,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         * {@inheritDoc}
         */
        public boolean addNode(Node node) throws UnknownHostException {
+               logger.log(Level.INFO, "addNode(node=" + node + ")");
                return nodeManager.addNode(node);
        }
 
@@ -428,6 +471,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         * {@inheritDoc}
         */
        public void removeNode(Node node) {
+               logger.log(Level.INFO, "removeNode(node=" + node + ")");
                nodeManager.removeNode(node);
        }
 
@@ -435,6 +479,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         * {@inheritDoc}
         */
        public void connectToNode(Node node) {
+               logger.log(Level.INFO, "connectToNode(node=" + node + ")");
                fireNodeConnecting(node);
                nodeManager.connect(node);
        }
@@ -443,6 +488,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         * {@inheritDoc}
         */
        public void disconnectFromNode(Node node) {
+               logger.log(Level.INFO, "disconnectFromNode(node=" + node + ")");
                nodeManager.disconnect(node);
        }
 
@@ -450,6 +496,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         * {@inheritDoc}
         */
        public void createProject() throws IOException, JSiteException {
+               logger.log(Level.INFO, "createProject()");
                Project newProject = projectManager.createProject();
                fireProjectAdded(newProject);
        }
@@ -458,18 +505,20 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         * {@inheritDoc}
         */
        public void cloneProject(Project project) {
+               logger.log(Level.INFO, "cloneProject(project=" + project + ")");
                Project projectClone = projectManager.cloneProject(project);
                fireProjectCloned(project, projectClone);
        }
-       
+
        /**
         * {@inheritDoc}
         */
        public void removeProject(Project project) {
+               logger.log(Level.INFO, "removeProject(project=" + project + ")");
                projectManager.removeProject(project);
                fireProjectRemoved(project);
        }
-       
+
        //
        // PRIVATE METHODS
        //
@@ -479,6 +528,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         */
        @SuppressWarnings("unused")
        private void loadConfig() {
+               logger.log(Level.INFO, "loadConfig()");
                /* TODO */
        }
 
@@ -487,6 +537,7 @@ public class CoreImpl implements Core, NodeListener, RequestListener {
         */
        @SuppressWarnings("unused")
        private void saveConfig() {
+               logger.log(Level.INFO, "saveConfig()");
                /* TODO */
        }