X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FCore.java;h=9aa60cf9da4f93b4cac4cd7c9c4fac920ad3cf2d;hb=029548705a1fa60731ad7f492103333acdd48001;hp=7c37808a3705400c93c617127cef30b773d68331;hpb=48aee31524307c74cabd33fdc17a1eecd807d97d;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/core/Core.java b/src/net/pterodactylus/jsite/core/Core.java index 7c37808..9aa60cf 100644 --- a/src/net/pterodactylus/jsite/core/Core.java +++ b/src/net/pterodactylus/jsite/core/Core.java @@ -37,11 +37,8 @@ public class Core { /** The project manager. */ private ProjectManager projectManager; - /** The node list. */ - private List configuredNodes = new ArrayList(); - - /** List of currently connected nodes. */ - private List connectedNodes = new ArrayList(); + /** The node manager. */ + private NodeManager nodeManager; // // LISTENER MANAGEMENT @@ -68,6 +65,18 @@ public class Core { } /** + * Notifies all listeners that the projects were loaded successfully. + * + * @param directory + * The directory the projects were loaded from + */ + private void fireLoadingProjectsDone(String directory) { + for (CoreListener coreListener: coreListeners) { + coreListener.loadingProjectsDone(directory); + } + } + + /** * Notifies all core listeners that loading the projects from the given * directory has failed. * @@ -109,6 +118,58 @@ public class Core { } /** + * Notifies all listeners that the nodes were successfully loaded. + * + * @param directory + * The directory the nodes were loaded from + */ + private void fireLoadingNodesDone(String directory) { + for (CoreListener coreListener: coreListeners) { + coreListener.loadingNodesDone(directory); + } + } + + /** + * Notifies all listeners 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 + */ + private void fireLoadingNodesFailed(String directory, Throwable throwable) { + for (CoreListener coreListener: coreListeners) { + coreListener.loadingNodesFailed(directory, throwable); + } + } + + /** + * Notifies all listeners that the nodes were saved successfully. + * + * @param directory + * The directory the nodes were saved to + */ + private void fireSavingNodesDone(String directory) { + for (CoreListener coreListener: coreListeners) { + coreListener.savingNodesDone(directory); + } + } + + /** + * Notifies all listeners 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 + */ + private void fireSavingNodesFailed(String directory, Throwable throwable) { + for (CoreListener coreListener: coreListeners) { + coreListener.savingProjectsFailed(directory, throwable); + } + } + + /** * Notifies all core listeners that the core has loaded and is ready to run. */ private void fireCoreLoaded() { @@ -150,12 +211,31 @@ public class Core { } /** + * Returns the node manager. + * + * @return The node manager + */ + public NodeManager getNodeManager() { + return nodeManager; + } + + /** + * Sets the node manager to use. + * + * @param nodeManager + * The node manager to use + */ + public void setNodeManager(NodeManager nodeManager) { + this.nodeManager = nodeManager; + } + + /** * Returns the list of all configured nodes. * * @return All configured nodes */ public List getNodes() { - return configuredNodes; + return nodeManager.getNodes(); } /** @@ -167,7 +247,7 @@ public class Core { * node, false otherwise */ public boolean isNodeConnected(Node node) { - return connectedNodes.contains(node); + return nodeManager.hasNode(node); } // @@ -180,9 +260,16 @@ public class Core { public void start() { try { projectManager.load(); + fireLoadingProjectsDone(projectManager.getDirectory()); } catch (IOException ioe1) { fireLoadingProjectsFailed(projectManager.getDirectory(), ioe1); } + try { + nodeManager.load(); + fireLoadingNodesDone(nodeManager.getDirectory()); + } catch (IOException ioe1) { + fireLoadingNodesFailed(nodeManager.getDirectory(), ioe1); + } fireCoreLoaded(); } @@ -196,6 +283,12 @@ public class Core { } catch (IOException ioe1) { fireSavingProjectsFailed(projectManager.getDirectory(), ioe1); } + try { + nodeManager.save(); + fireSavingNodesDone(nodeManager.getDirectory()); + } catch (IOException ioe1) { + fireSavingNodesFailed(nodeManager.getDirectory(), ioe1); + } fireCoreStopped(); }