import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+
/**
* The core of jSite.
*
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
*/
public class CoreImpl implements Core, NodeListener, RequestListener {
/** The core listeners. */
private final List<CoreListener> coreListeners = new ArrayList<CoreListener>();
+ /** Thread pool. */
+ private Executor threadPool = Executors.newCachedThreadPool();
+
/** The project manager. */
private ProjectManager projectManager;
* The directory the projects were loaded from
*/
private void fireLoadingProjectsDone(String directory) {
- for (CoreListener coreListener: coreListeners) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.loadingProjectsDone(directory);
}
}
* The exception that occured when loading projects
*/
private void fireLoadingProjectsFailed(String directory, Throwable throwable) {
- for (CoreListener coreListener: coreListeners) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.loadingProjectsFailed(directory, throwable);
}
}
* The directory the projects were saved to
*/
private void fireSavingProjectsDone(String directory) {
- for (CoreListener coreListener: coreListeners) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.savingProjectsDone(directory);
}
}
* The exception that occured when saving the projects
*/
private void fireSavingProjectsFailed(String directory, Throwable throwable) {
- for (CoreListener coreListener: coreListeners) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.savingProjectsFailed(directory, throwable);
}
}
/**
+ * Notifies all listeners that a project was added.
+ *
+ * @param project
+ * The project that was added
+ */
+ private void fireProjectAdded(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
+ */
+ private void fireProjectCloned(Project clonedProject, Project projectClone) {
+ for (CoreListener coreListener : coreListeners) {
+ coreListener.projectCloned(clonedProject, projectClone);
+ }
+ }
+
+ /**
+ * Notifies all listeners that a project was removed.
+ *
+ * @param project
+ * The project that was removed
+ */
+ private void fireProjectRemoved(Project project) {
+ for (CoreListener coreListener : coreListeners) {
+ coreListener.projectRemoved(project);
+ }
+ }
+
+ /**
* 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) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.loadingNodesDone(directory);
}
}
* The exception that occured while loading the nodes
*/
private void fireLoadingNodesFailed(String directory, Throwable throwable) {
- for (CoreListener coreListener: coreListeners) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.loadingNodesFailed(directory, throwable);
}
}
* The directory the nodes were saved to
*/
private void fireSavingNodesDone(String directory) {
- for (CoreListener coreListener: coreListeners) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.savingNodesDone(directory);
}
}
* The exception that occured while saving the nodes
*/
private void fireSavingNodesFailed(String directory, Throwable throwable) {
- for (CoreListener coreListener: coreListeners) {
+ 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) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.coreLoaded();
}
}
* Notifies all listeners that the core was stopped.
*/
private void fireCoreStopped() {
- for (CoreListener coreListener: coreListeners) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.coreStopped();
}
}
* The node that was added
*/
private void fireNodeAdded(Node node) {
- for (CoreListener coreListener: coreListeners) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.nodeAdded(node);
}
}
* The node that was removed
*/
private void fireNodeRemoved(Node node) {
- for (CoreListener coreListener: coreListeners) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.nodeRemoved(node);
}
}
* The node that is being connected to
*/
private void fireNodeConnecting(Node node) {
- for (CoreListener coreListener: coreListeners) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.nodeConnecting(node);
}
}
* The node that is now connected
*/
private void fireNodeConnected(Node node) {
- for (CoreListener coreListener: coreListeners) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.nodeConnected(node);
}
}
* The cause of the failure
*/
private void fireNodeConnectionFailed(Node node, Throwable cause) {
- for (CoreListener coreListener: coreListeners) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.nodeConnectionFailed(node, cause);
}
}
* if there was no exception
*/
private void fireNodeDisconnected(Node node, Throwable throwable) {
- for (CoreListener coreListener: coreListeners) {
+ for (CoreListener coreListener : coreListeners) {
coreListener.nodeDisconnected(node, throwable);
}
}
- /**
- * Notifies all listeners that a request was added to a node.
- *
- * @param request
- * The request that was added
- */
- private void fireRequestAdded(Request request) {
- for (CoreListener coreListener: coreListeners) {
- coreListener.requestAdded(request);
- }
- }
+ //
+ // ACCESSORS
+ //
/**
- * Notifies all listeners that a request progressed.
- *
- * @param request
- * The request
+ * {@inheritDoc}
*/
- private void fireRequestProgressed(Request request) {
- for (CoreListener coreListener: coreListeners) {
- coreListener.requestProgressed(request);
- }
+ public Executor getThreadPool() {
+ return threadPool;
}
/**
- * Notifies all listeners that a request was removed.
- *
- * @param request
- * The request that was removed
- */
- private void fireRequestRemoved(Request request) {
- for (CoreListener coreListener: coreListeners) {
- coreListener.requestRemoved(request);
- }
- }
-
- //
- // ACCESSORS
- //
-
- /**
* Returns the project manager.
*
* @return The project manager
return nodeManager.hasNode(node);
}
+ /**
+ * {@inheritDoc}
+ */
+ public List<Project> getProjects() {
+ return projectManager.getProjects();
+ }
+
//
// ACTIONS
//
*/
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);
}
+ try {
+ projectManager.load();
+ fireLoadingProjectsDone(projectManager.getDirectory());
+ } catch (IOException ioe1) {
+ fireLoadingProjectsFailed(projectManager.getDirectory(), ioe1);
+ }
fireCoreLoaded();
}
/**
* {@inheritDoc}
*/
- public Project createProject(String projectName) throws IOException, NoNodeException {
- Project project = new Project();
- project.setName(projectName);
- String[] keyPair = nodeManager.generateKeyPair();
- project.setPrivateKey(keyPair[0]);
- project.setPublicKey(keyPair[1]);
- return project;
+ public void createProject() throws IOException, JSiteException {
+ Project newProject = projectManager.createProject();
+ fireProjectAdded(newProject);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void cloneProject(Project project) {
+ Project projectClone = projectManager.cloneProject(project);
+ fireProjectCloned(project, projectClone);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void removeProject(Project project) {
+ projectManager.removeProject(project);
+ fireProjectRemoved(project);
}
//
* {@inheritDoc}
*/
public void requestAdded(Request request) {
- fireRequestAdded(request);
+ /* TODO - find project and process request */
}
/**
* @see net.pterodactylus.jsite.core.RequestListener#requestProgressed(Request)
*/
public void requestProgressed(Request request) {
- fireRequestProgressed(request);
+ /* TODO - find project and process request */
}
/**
* @see net.pterodactylus.jsite.core.RequestListener#requestRemoved(net.pterodactylus.jsite.core.Request)
*/
public void requestRemoved(Request request) {
- fireRequestRemoved(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 */
}
}