/*
* 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.HashMap;
-import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Manages all currently running and past inserts.
- *
+ *
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
*/
public class InsertManager {
/** Logger. */
private static final Logger logger = Logging.getLogger(InsertManager.class.getName());
- /** The insert listeners. */
- private final List<InsertListener> insertListeners = new ArrayList<InsertListener>();
+ /** The insert listener support. */
+ private final InsertListenerSupport insertListenerSupport = new InsertListenerSupport();
/** Mapping from insert IDs to inserts. */
private final Map<String, Insert> inserts = new HashMap<String, Insert>();
/**
* 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
- */
- @SuppressWarnings("unused")
- 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
- */
- @SuppressWarnings("unused")
- 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
- */
- @SuppressWarnings("unused")
- private void fireInsertProgressed(Insert insert) {
- synchronized (insertListeners) {
- for (InsertListener insertListener : insertListeners) {
- insertListener.insertProgressed(insert);
- }
- }
- }
-
- /**
- * Notifies all listeners that an insert generated a URI.
- *
- * @param insert
- * The insert that generated a URI
- * @param uri
- * The generated URI
- */
- @SuppressWarnings("unused")
- private void fireInsertGeneratedURI(Insert insert, String uri) {
- synchronized (insertListeners) {
- for (InsertListener insertListener : insertListeners) {
- insertListener.insertGeneratedURI(insert, uri);
- }
- }
- }
-
- /**
- * Notifies all listeners that an insert has finished.
- *
- * @param insert
- * The insert that has finished
- */
- @SuppressWarnings("unused")
- private void fireInsertFinished(Insert insert) {
- synchronized (insertListeners) {
- for (InsertListener insertListener : insertListeners) {
- insertListener.insertFinished(insert);
- }
- }
+ insertListenerSupport.removeListener(insertListener);
}
//
* 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
*/
public void insertProject(Project project, Node node) {
logger.log(Level.FINEST, "insertProject(project=" + project + ",node=" + node + ")");
- Node insertNode = project.getNode();
- if (insertNode == null) {
- insertNode = node;
- if (insertNode == null) {
- throw new NullPointerException("node must not be null");
- }
- }
String insertId = "insert-" + project.getId();
- Insert newInsert = new Insert(project, insertNode, insertId);
+ Insert newInsert = new Insert(project, node, insertId);
inserts.put(insertId, newInsert);
saveConfiguration();
- fireInsertAdded(newInsert);
+ insertListenerSupport.fireInsertAdded(newInsert);
/* TODO - start insert */
}