set type of request
[jSite2.git] / src / net / pterodactylus / jsite / core / CoreListener.java
index 5fe47f9..d5d8cdc 100644 (file)
@@ -27,13 +27,90 @@ package net.pterodactylus.jsite.core;
  */
 public interface CoreListener {
 
+       //
+       // project configuration
+       //
+
+       /**
+        * Notifies a listener that loading the projects finished successfully.
+        * 
+        * @param directory
+        *            The directory the nodes were loaded from
+        */
+       public void loadingProjectsDone(String directory);
+
        /**
         * Notifies all listeners that loading the projects has failed.
         * 
         * @param directory
         *            The directory the projects were tried to load from
+        * @param throwable
+        *            The exception that occured while saving, if any
+        */
+       public void loadingProjectsFailed(String directory, Throwable throwable);
+
+       /**
+        * Notifies a listener that the projects were successfully saved to the
+        * given directory.
+        * 
+        * @param directory
+        *            The directory the projects were saved to
+        */
+       public void savingProjectsDone(String directory);
+
+       /**
+        * Notifies a listener that saving the projects has failed.
+        * 
+        * @param directory
+        *            The directory the projects were to be saved to
+        * @param throwable
+        *            The exception that occured when saving the projects, if any
+        */
+       public void savingProjectsFailed(String directory, Throwable throwable);
+
+       //
+       // node configuration
+       //
+
+       /**
+        * Notifies a listener that the nodes were successfully loaded.
+        * 
+        * @param directory
+        *            The directory the nodes were loaded from
+        */
+       public void loadingNodesDone(String directory);
+
+       /**
+        * Notifies a listener that loading the nodes has failed.
+        * 
+        * @param directory
+        *            The directory the nodes were loaded from
+        * @param throwable
+        *            The exception that occured while loading the nodes
+        */
+       public void loadingNodesFailed(String directory, Throwable throwable);
+
+       /**
+        * Notifies a listener that the nodes were successfully saved.
+        * 
+        * @param directory
+        *            The directory the nodes were saved to
+        */
+       public void savingNodesDone(String directory);
+
+       /**
+        * Notifies a listener that saving the nodes has failed.
+        * 
+        * @param directory
+        *            The directory the nodes were saved to
+        * @param throwable
+        *            The exception that occured while saving the nodes
         */
-       public void loadingProjectsFailed(String directory);
+       public void savingNodesFailed(String directory, Throwable throwable);
+
+       //
+       // basic core functionality
+       //
 
        /**
         * Notifies all listeners that the core has loaded.
@@ -41,8 +118,36 @@ public interface CoreListener {
        public void coreLoaded();
 
        /**
+        * Notifies a listener that the core was stopped.
+        */
+       public void coreStopped();
+
+       //
+       // node stuff
+       //
+
+       /**
+        * Notifies a listener that a node was added to the core.
+        * 
+        * @param node
+        *            The node that was added.
+        */
+       public void nodeAdded(Node node);
+
+       /**
+        * Notifies a listener that a node was removed from the core. Before a node
+        * is removed, it will be disconnected (and
+        * {@link #nodeDisconnected(Node, Throwable)} will be called).
+        * 
+        * @param node
+        *            The node that was removed
+        */
+       public void nodeRemoved(Node node);
+
+       /**
         * Notifies all listeners that the core started connecting to the given
-        * node.
+        * node. Before a node is connected, it will be added (and
+        * {@link #nodeAdded(Node)} will be called).
         * 
         * @param node
         *            The node that is being connected
@@ -58,11 +163,52 @@ public interface CoreListener {
        public void nodeConnected(Node node);
 
        /**
+        * Notifies a listener that a connection to a node has failed.
+        * 
+        * @param node
+        *            The node that could not be connected
+        * @param cause
+        *            The cause of the failure
+        */
+       public void nodeConnectionFailed(Node node, Throwable cause);
+
+       /**
         * Notifies all listeners that the core disconnected from the given node.
         * 
         * @param node
         *            The node that was diconnected
+        * @param throwable
+        *            The exception that caused the disconnect, or <code>null</code>
+        *            if there was no exception
+        */
+       public void nodeDisconnected(Node node, Throwable throwable);
+
+       //
+       // request stuff
+       //
+
+       /**
+        * Notifies a listener that a request was added to a node.
+        * 
+        * @param request
+        *            The request that was added
+        */
+       public void requestAdded(Request request);
+
+       /**
+        * Notifies a listener that a request made some progress.
+        * 
+        * @param request
+        *            The request that made the progress
+        */
+       public void requestProgressed(Request request);
+
+       /**
+        * Notifies a listener that a request was removed.
+        * 
+        * @param request
+        *            The request that was removed
         */
-       public void nodeDisconnected(Node node);
+       public void requestRemoved(Request request);
 
 }