X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FInsertManager.java;h=00c05e3fba8a1e4297c14171a09b640d996bb885;hb=2ab79371be9e363e182cb2dec74986d18ef46c47;hp=be8cc5ec135b9eaaa8ad900523b85542929ca2fe;hpb=51a5b3dbcfa9ffd520195e112e818ca88b8538ce;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/core/InsertManager.java b/src/net/pterodactylus/jsite/core/InsertManager.java index be8cc5e..00c05e3 100644 --- a/src/net/pterodactylus/jsite/core/InsertManager.java +++ b/src/net/pterodactylus/jsite/core/InsertManager.java @@ -1,25 +1,25 @@ /* * jSite2 - InsertManager.java - Copyright © 2008 David Roden - * + * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. - * + * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. - * + * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 Temple * Place - Suite 330, Boston, MA 02111-1307, USA. */ + package net.pterodactylus.jsite.core; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.util.HashMap; +import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; @@ -27,7 +27,7 @@ import net.pterodactylus.util.logging.Logging; /** * Manages all currently running and past inserts. - * + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> */ public class InsertManager { @@ -35,8 +35,11 @@ public class InsertManager { /** Logger. */ private static final Logger logger = Logging.getLogger(InsertManager.class.getName()); - /** The insert listeners. */ - private final List insertListeners = new ArrayList(); + /** The insert listener support. */ + private final InsertListenerSupport insertListenerSupport = new InsertListenerSupport(); + + /** Mapping from insert IDs to inserts. */ + private final Map inserts = new HashMap(); // // EVENT MANAGEMENT @@ -44,118 +47,51 @@ public class InsertManager { /** * Adds an insert listener to the list of insert listeners. - * + * * @param insertListener * The insert listener to add */ public void addInsertListener(InsertListener insertListener) { logger.log(Level.FINEST, "addInsertListener(insertListener=" + insertListener + ")"); - synchronized (insertListeners) { - insertListeners.add(insertListener); - } + insertListenerSupport.addListener(insertListener); } /** * Removes an insert listener from the list of insert listeners. - * + * * @param insertListener * The insert listener to remove */ public void removeInsertListener(InsertListener insertListener) { logger.log(Level.FINEST, "removeInsertListener(insertListener=" + insertListener + ")"); - synchronized (insertListeners) { - insertListeners.remove(insertListener); - } - } - - /** - * Notifies all listeners that an insert was added. - * - * @param insert - * The insert that was added - */ - private void fireInsertAdded(Insert insert) { - synchronized (insertListeners) { - for (InsertListener insertListener : insertListeners) { - insertListener.insertAdded(insert); - } - } - } - - /** - * Notifies all listeners that an insert was removed. - * - * @param insert - * The insert that was removes - */ - private void fireInsertRemoved(Insert insert) { - synchronized (insertListeners) { - for (InsertListener insertListener : insertListeners) { - insertListener.insertRemoved(insert); - } - } - } - - /** - * Notifies all listeners that an insert was started. - * - * @param insert - * The insert that was started - */ - private void fireInsertStarted(Insert insert) { - synchronized (insertListeners) { - for (InsertListener insertListener : insertListeners) { - insertListener.insertStarted(insert); - } - } - } - - /** - * Notifies all listeners that an insert made some progress - * - * @param insert - * The insert that made some progress - */ - private void fireInsertProgressed(Insert insert) { - synchronized (insertListeners) { - for (InsertListener insertListener : insertListeners) { - insertListener.insertProgressed(insert); - } - } + insertListenerSupport.removeListener(insertListener); } - /** - * Notifies all listeners that an insert generated a URI. - * - * @param insert - * The insert that generated a URI - */ - private void fireInsertGeneratedURI(Insert insert, String uri) { - synchronized (insertListeners) { - for (InsertListener insertListener : insertListeners) { - insertListener.insertGeneratedURI(insert, uri); - } - } - } + // + // ACTIONS + // /** - * Notifies all listeners that an insert has finished. - * - * @param insert - * The insert that has finished + * Starts to insert the given project. The insert will be made to the node + * stored in the project, and if no node is specified in the project, the + * given node will be used. + * + * @param project + * The project to insert + * @param node + * The node to insert the project to if the project does not + * specify a node */ - private void fireInsertFinished(Insert insert) { - synchronized (insertListeners) { - for (InsertListener insertListener : insertListeners) { - insertListener.insertFinished(insert); - } - } + public void insertProject(Project project, Node node) { + logger.log(Level.FINEST, "insertProject(project=" + project + ",node=" + node + ")"); + String insertId = "insert-" + project.getId(); + Insert newInsert = new Insert(project, node, insertId); + inserts.put(insertId, newInsert); + saveConfiguration(); + insertListenerSupport.fireInsertAdded(newInsert); + /* TODO - start insert */ } - // - // ACTIONS - // - /** * Starts the insert manager. */ @@ -175,4 +111,11 @@ public class InsertManager { logger.log(Level.FINEST, "loadConfiguration()"); } + /** + * Saves the configuration. + */ + private void saveConfiguration() { + logger.log(Level.FINEST, "saveConfiguration()"); + } + }