X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FCoreImpl.java;h=6e6170983eea893dd709b71a5525e95538be82fe;hb=e7fd217d2304bc11716525992ec6c8f22ae54914;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..6e61709 100644 --- a/src/net/pterodactylus/jsite/core/CoreImpl.java +++ b/src/net/pterodactylus/jsite/core/CoreImpl.java @@ -20,19 +20,30 @@ package net.pterodactylus.jsite.core; import java.io.IOException; -import java.util.ArrayList; +import java.net.UnknownHostException; 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.util.logging.Logging; /** * 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, InsertListener { + + /** The logger. */ + private static final Logger logger = Logging.getLogger(CoreImpl.class.getName()); - /** The core listeners. */ - private final List coreListeners = new ArrayList(); + /** The core listener support. */ + private final CoreListenerSupport coreListenerSupport = new CoreListenerSupport(); + + /** Thread pool. */ + private Executor threadPool = Executors.newCachedThreadPool(); /** The project manager. */ private ProjectManager projectManager; @@ -40,6 +51,14 @@ public class CoreImpl implements Core, NodeListener { /** The node manager. */ private NodeManager nodeManager; + /** The request manager. */ + /* TODO - remove */ + @SuppressWarnings("unused") + private RequestManager requestManager; + + /** The insert manager. */ + private InsertManager insertManager; + // // LISTENER MANAGEMENT // @@ -48,184 +67,30 @@ public class CoreImpl implements Core, NodeListener { * {@inheritDoc} */ public void addCoreListener(CoreListener coreListener) { - coreListeners.add(coreListener); + logger.log(Level.FINEST, "adding core listener: " + coreListener); + coreListenerSupport.addListener(coreListener); } /** * {@inheritDoc} */ public void removeCoreListener(CoreListener coreListener) { - coreListeners.remove(coreListener); - } - - /** - * 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. - * - * @param directory - * The directory the projects were tried to load from - * @param throwable - * The exception that occured when loading projects - */ - private void fireLoadingProjectsFailed(String directory, Throwable throwable) { - for (CoreListener coreListener: coreListeners) { - coreListener.loadingProjectsFailed(directory, throwable); - } - } - - /** - * Notifies all listeners that the projects were successfully saved. - * - * @param directory - * The directory the projects were saved to - */ - private void fireSavingProjectsDone(String directory) { - for (CoreListener coreListener: coreListeners) { - coreListener.savingProjectsDone(directory); - } - } - - /** - * Notifies all listeners that the projects could not be saved. - * - * @param directory - * The directory the projects were to be saved to - * @param throwable - * The exception that occured when saving the projects - */ - private void fireSavingProjectsFailed(String directory, Throwable throwable) { - for (CoreListener coreListener: coreListeners) { - coreListener.savingProjectsFailed(directory, throwable); - } - } - - /** - * 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() { - for (CoreListener coreListener: coreListeners) { - coreListener.coreLoaded(); - } + logger.log(Level.FINEST, "removing core listener: " + coreListener); + coreListenerSupport.removeListener(coreListener); } - /** - * Notifies all listeners that the core was stopped. - */ - private void fireCoreStopped() { - for (CoreListener coreListener: coreListeners) { - coreListener.coreStopped(); - } - } - - /** - * Notifies all listeners that a connection to the given node is now being - * established. - * - * @param node - * The node that is being connected to - */ - private void fireNodeConnecting(Node node) { - for (CoreListener coreListener: coreListeners) { - coreListener.nodeConnecting(node); - } - } + // + // ACCESSORS + // /** - * Notifies all listeners that the given node is now connected. - * - * @param node - * The node that is now connected + * {@inheritDoc} */ - private void fireNodeConnected(Node node) { - for (CoreListener coreListener: coreListeners) { - coreListener.nodeConnected(node); - } + public Executor getThreadPool() { + return threadPool; } /** - * Notifies all listeners that the given node was disconnected. - * - * @param node - * The node that is now disconnected - * @param throwable - * The exception that caused the disconnect, or null - * if there was no exception - */ - private void fireNodeDisconnected(Node node, Throwable throwable) { - for (CoreListener coreListener: coreListeners) { - coreListener.nodeDisconnected(node, throwable); - } - } - - // - // ACCESSORS - // - - /** * Returns the project manager. * * @return The project manager @@ -264,6 +129,26 @@ 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; + } + + /** + * Sets the insert manager to use. + * + * @param insertManager + * The insert manager to use + */ + public void setInsertManager(InsertManager insertManager) { + this.insertManager = insertManager; + } + + /** * {@inheritDoc} */ public List getNodes() { @@ -277,6 +162,13 @@ public class CoreImpl implements Core, NodeListener { return nodeManager.hasNode(node); } + /** + * {@inheritDoc} + */ + public List getProjects() { + return projectManager.getProjects(); + } + // // ACTIONS // @@ -285,46 +177,64 @@ public class CoreImpl implements Core, NodeListener { * {@inheritDoc} */ public void start() { + logger.log(Level.INFO, "starting core…"); try { - projectManager.load(); - fireLoadingProjectsDone(projectManager.getDirectory()); + nodeManager.load(); + coreListenerSupport.fireLoadingNodesDone(nodeManager.getDirectory()); } catch (IOException ioe1) { - fireLoadingProjectsFailed(projectManager.getDirectory(), ioe1); + coreListenerSupport.fireLoadingNodesFailed(nodeManager.getDirectory(), ioe1); } try { - nodeManager.load(); - fireLoadingNodesDone(nodeManager.getDirectory()); + projectManager.load(); + coreListenerSupport.fireLoadingProjectsDone(projectManager.getDirectory()); } catch (IOException ioe1) { - fireLoadingNodesFailed(nodeManager.getDirectory(), ioe1); + coreListenerSupport.fireLoadingProjectsFailed(projectManager.getDirectory(), ioe1); } - fireCoreLoaded(); + coreListenerSupport.fireCoreLoaded(); } /** * {@inheritDoc} */ public void stop() { + logger.log(Level.INFO, "stopping core…"); try { projectManager.save(); - fireSavingProjectsDone(projectManager.getDirectory()); + coreListenerSupport.fireSavingProjectsDone(projectManager.getDirectory()); } catch (IOException ioe1) { - fireSavingProjectsFailed(projectManager.getDirectory(), ioe1); + coreListenerSupport.fireSavingProjectsFailed(projectManager.getDirectory(), ioe1); } try { nodeManager.save(); - fireSavingNodesDone(nodeManager.getDirectory()); + coreListenerSupport.fireSavingNodesDone(nodeManager.getDirectory()); } catch (IOException ioe1) { - fireSavingNodesFailed(nodeManager.getDirectory(), ioe1); + coreListenerSupport.fireSavingNodesFailed(nodeManager.getDirectory(), ioe1); } - fireCoreStopped(); + coreListenerSupport.fireCoreStopped(); + } + + /** + * {@inheritDoc} + */ + public boolean addNode(Node node) throws UnknownHostException { + logger.log(Level.FINEST, "addNode(node=" + node + ")"); + return nodeManager.addNode(node); + } + + /** + * {@inheritDoc} + */ + public void removeNode(Node node) { + logger.log(Level.FINEST, "removeNode(node=" + node + ")"); + nodeManager.removeNode(node); } /** * {@inheritDoc} */ public void connectToNode(Node node) { - fireNodeConnecting(node); - nodeManager.addNode(node); + logger.log(Level.FINEST, "connectToNode(node=" + node + ")"); + coreListenerSupport.fireNodeConnecting(node); nodeManager.connect(node); } @@ -332,9 +242,45 @@ public class CoreImpl implements Core, NodeListener { * {@inheritDoc} */ public void disconnectFromNode(Node node) { + logger.log(Level.FINEST, "disconnectFromNode(node=" + node + ")"); nodeManager.disconnect(node); } + /** + * {@inheritDoc} + */ + public void createProject() throws IOException, JSiteException { + logger.log(Level.FINEST, "createProject()"); + Project newProject = projectManager.createProject(); + coreListenerSupport.fireProjectAdded(newProject); + } + + /** + * {@inheritDoc} + */ + public void insertProject(Node node, Project project) { + logger.log(Level.FINEST, "insertProject(node=" + node + ", project=" + project + ")"); + insertManager.insertProject(project, node); + } + + /** + * {@inheritDoc} + */ + public void cloneProject(Project project) { + logger.log(Level.FINEST, "cloneProject(project=" + project + ")"); + Project projectClone = projectManager.cloneProject(project); + coreListenerSupport.fireProjectCloned(project, projectClone); + } + + /** + * {@inheritDoc} + */ + public void removeProject(Project project) { + logger.log(Level.FINEST, "removeProject(project=" + project + ")"); + projectManager.removeProject(project); + coreListenerSupport.fireProjectRemoved(project); + } + // // PRIVATE METHODS // @@ -344,6 +290,7 @@ public class CoreImpl implements Core, NodeListener { */ @SuppressWarnings("unused") private void loadConfig() { + logger.log(Level.FINEST, "loadConfig()"); /* TODO */ } @@ -352,6 +299,7 @@ public class CoreImpl implements Core, NodeListener { */ @SuppressWarnings("unused") private void saveConfig() { + logger.log(Level.FINEST, "saveConfig()"); /* TODO */ } @@ -362,15 +310,122 @@ public class CoreImpl implements Core, NodeListener { /** * {@inheritDoc} */ + public void nodeAdded(Node node) { + coreListenerSupport.fireNodeAdded(node); + } + + /** + * {@inheritDoc} + */ + public void nodeRemoved(Node node) { + coreListenerSupport.fireNodeRemoved(node); + } + + /** + * {@inheritDoc} + */ public void nodeConnected(Node node) { - fireNodeConnected(node); + coreListenerSupport.fireNodeConnected(node); + } + + /** + * {@inheritDoc} + */ + public void nodeConnectionFailed(Node node, Throwable cause) { + coreListenerSupport.fireNodeConnectionFailed(node, cause); } /** * {@inheritDoc} */ public void nodeDisconnected(Node node, Throwable throwable) { - fireNodeDisconnected(node, throwable); + coreListenerSupport.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 */ + } + + // + // INTERFACE InsertListener + // + + /** + * {@inheritDoc} + */ + public void insertAdded(Insert insert) { + /* TODO */ + } + + /** + * {@inheritDoc} + */ + public void insertRemoved(Insert insert) { + /* TODO */ + } + + /** + * {@inheritDoc} + */ + public void insertStarted(Insert insert) { + /* TODO */ + } + + /** + * {@inheritDoc} + */ + public void insertProgressed(Insert insert) { + /* TODO */ + } + + /** + * {@inheritDoc} + */ + public void insertGeneratedURI(Insert insert, String uri) { + /* TODO */ + } + + /** + * {@inheritDoc} + */ + public void insertFinished(Insert insert) { + /* TODO */ } }