X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FCoreImpl.java;h=15f217da078161a0b6bd30468e3c8ecec26a992a;hb=a2bc5cc3fa7c6d2324b1d9297d77eb79a237fb6e;hp=8fe64dab288130736adeeaef3e1a405531f5581c;hpb=2bd90a148fe17a4f091d148586d67eb69f4122f6;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/core/CoreImpl.java b/src/net/pterodactylus/jsite/core/CoreImpl.java index 8fe64da..15f217d 100644 --- a/src/net/pterodactylus/jsite/core/CoreImpl.java +++ b/src/net/pterodactylus/jsite/core/CoreImpl.java @@ -20,16 +20,20 @@ package net.pterodactylus.jsite.core; import java.io.IOException; +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 { +public class CoreImpl implements Core, NodeListener, RequestListener { /** The core listeners. */ private final List coreListeners = new ArrayList(); @@ -40,6 +44,11 @@ public class CoreImpl implements Core, NodeListener { /** The node manager. */ private NodeManager nodeManager; + /** The request manager. */ + /* TODO - remove */ + @SuppressWarnings("unused") + private RequestManager requestManager; + // // LISTENER MANAGEMENT // @@ -60,7 +69,7 @@ public class CoreImpl implements Core, NodeListener { /** * Notifies all listeners that the projects were loaded successfully. - * + * * @param directory * The directory the projects were loaded from */ @@ -73,7 +82,7 @@ public class CoreImpl implements Core, NodeListener { /** * Notifies all core listeners that loading the projects from the given * directory has failed. - * + * * @param directory * The directory the projects were tried to load from * @param throwable @@ -87,7 +96,7 @@ public class CoreImpl implements Core, NodeListener { /** * Notifies all listeners that the projects were successfully saved. - * + * * @param directory * The directory the projects were saved to */ @@ -99,7 +108,7 @@ public class CoreImpl implements Core, NodeListener { /** * Notifies all listeners that the projects could not be saved. - * + * * @param directory * The directory the projects were to be saved to * @param throwable @@ -113,7 +122,7 @@ public class CoreImpl implements Core, NodeListener { /** * Notifies all listeners that the nodes were successfully loaded. - * + * * @param directory * The directory the nodes were loaded from */ @@ -125,7 +134,7 @@ public class CoreImpl implements Core, NodeListener { /** * Notifies all listeners that loading the nodes has failed. - * + * * @param directory * The directory the nodes were loaded from * @param throwable @@ -139,7 +148,7 @@ public class CoreImpl implements Core, NodeListener { /** * Notifies all listeners that the nodes were saved successfully. - * + * * @param directory * The directory the nodes were saved to */ @@ -151,7 +160,7 @@ public class CoreImpl implements Core, NodeListener { /** * Notifies all listeners that saving the nodes has failed. - * + * * @param directory * The directory the nodes were saved to * @param throwable @@ -182,9 +191,33 @@ public class CoreImpl implements Core, NodeListener { } /** + * Notifies all listeners that a node was added to the core. + * + * @param node + * The node that was added + */ + private void fireNodeAdded(Node node) { + for (CoreListener coreListener: coreListeners) { + coreListener.nodeAdded(node); + } + } + + /** + * Notifies all listeners that a node was removed from the core. + * + * @param node + * The node that was removed + */ + private void fireNodeRemoved(Node node) { + for (CoreListener coreListener: coreListeners) { + coreListener.nodeRemoved(node); + } + } + + /** * Notifies all listeners that a connection to the given node is now being * established. - * + * * @param node * The node that is being connected to */ @@ -196,7 +229,7 @@ public class CoreImpl implements Core, NodeListener { /** * Notifies all listeners that the given node is now connected. - * + * * @param node * The node that is now connected */ @@ -207,8 +240,22 @@ public class CoreImpl implements Core, NodeListener { } /** + * Notifies all listeners that a connection to a node has failed. + * + * @param node + * The node that could not be connected + * @param cause + * The cause of the failure + */ + private void fireNodeConnectionFailed(Node node, Throwable cause) { + for (CoreListener coreListener: coreListeners) { + coreListener.nodeConnectionFailed(node, cause); + } + } + + /** * Notifies all listeners that the given node was disconnected. - * + * * @param node * The node that is now disconnected * @param throwable @@ -227,7 +274,7 @@ public class CoreImpl implements Core, NodeListener { /** * Returns the project manager. - * + * * @return The project manager */ public ProjectManager getProjectManager() { @@ -236,7 +283,7 @@ public class CoreImpl implements Core, NodeListener { /** * Sets the project manager to use. - * + * * @param projectManager * The project manager to use */ @@ -246,7 +293,7 @@ public class CoreImpl implements Core, NodeListener { /** * Returns the node manager. - * + * * @return The node manager */ public NodeManager getNodeManager() { @@ -255,7 +302,7 @@ public class CoreImpl implements Core, NodeListener { /** * Sets the node manager to use. - * + * * @param nodeManager * The node manager to use */ @@ -264,6 +311,16 @@ public class CoreImpl implements Core, NodeListener { } /** + * Sets the request manager to use. + * + * @param requestManager + * The request manager to use + */ + public void setRequestManager(RequestManager requestManager) { + this.requestManager = requestManager; + } + + /** * {@inheritDoc} */ public List getNodes() { @@ -277,6 +334,13 @@ public class CoreImpl implements Core, NodeListener { return nodeManager.hasNode(node); } + /** + * {@inheritDoc} + */ + public List getProjects() { + return projectManager.getProjects(); + } + // // ACTIONS // @@ -322,9 +386,22 @@ public class CoreImpl implements Core, NodeListener { /** * {@inheritDoc} */ + public boolean addNode(Node node) throws UnknownHostException { + return nodeManager.addNode(node); + } + + /** + * {@inheritDoc} + */ + public void removeNode(Node node) { + nodeManager.removeNode(node); + } + + /** + * {@inheritDoc} + */ public void connectToNode(Node node) { fireNodeConnecting(node); - nodeManager.addNode(node); nodeManager.connect(node); } @@ -335,6 +412,13 @@ public class CoreImpl implements Core, NodeListener { nodeManager.disconnect(node); } + /** + * {@inheritDoc} + */ + public Project createProject() throws IOException, JSiteException { + return projectManager.createProject(); + } + // // PRIVATE METHODS // @@ -362,6 +446,20 @@ public class CoreImpl implements Core, NodeListener { /** * {@inheritDoc} */ + public void nodeAdded(Node node) { + fireNodeAdded(node); + } + + /** + * {@inheritDoc} + */ + public void nodeRemoved(Node node) { + fireNodeRemoved(node); + } + + /** + * {@inheritDoc} + */ public void nodeConnected(Node node) { fireNodeConnected(node); } @@ -369,8 +467,54 @@ public class CoreImpl implements Core, NodeListener { /** * {@inheritDoc} */ + public void nodeConnectionFailed(Node node, Throwable cause) { + fireNodeConnectionFailed(node, cause); + } + + /** + * {@inheritDoc} + */ public void nodeDisconnected(Node node, Throwable throwable) { fireNodeDisconnected(node, throwable); } + // + // INTERFACE RequestListener + // + + /** + * {@inheritDoc} + */ + public void requestAdded(Request request) { + /* TODO - find project and process request */ + } + + /** + * @see net.pterodactylus.jsite.core.RequestListener#requestProgressed(Request) + */ + public void requestProgressed(Request request) { + /* TODO - find project and process request */ + } + + /** + * @see net.pterodactylus.jsite.core.RequestListener#requestRemoved(net.pterodactylus.jsite.core.Request) + */ + public void requestRemoved(Request 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 */ + } + }