X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FInsertManager.java;h=00c05e3fba8a1e4297c14171a09b640d996bb885;hb=2ab79371be9e363e182cb2dec74986d18ef46c47;hp=8e1083ae92d1df82a6dbd6edb20c3fdab2491127;hpb=5be10a2eec0ff8381c087a40509cb5305394ff85;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/core/InsertManager.java b/src/net/pterodactylus/jsite/core/InsertManager.java index 8e1083a..00c05e3 100644 --- a/src/net/pterodactylus/jsite/core/InsertManager.java +++ b/src/net/pterodactylus/jsite/core/InsertManager.java @@ -1,28 +1,121 @@ /* - * jSite2 - InsertManager.java - - * Copyright © 2008 David Roden + * 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 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. + * 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. + * 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.HashMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +import net.pterodactylus.util.logging.Logging; /** - * TODO + * 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 listener support. */ + private final InsertListenerSupport insertListenerSupport = new InsertListenerSupport(); + + /** Mapping from insert IDs to inserts. */ + private final Map inserts = new HashMap(); + + // + // EVENT MANAGEMENT + // + + /** + * 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 + ")"); + 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 + ")"); + insertListenerSupport.removeListener(insertListener); + } + + // + // ACTIONS + // + + /** + * 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 + */ + 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 */ + } + + /** + * Starts the insert manager. + */ + public void start() { + logger.log(Level.FINEST, "start()"); + loadConfiguration(); + } + + // + // PRIVATE METHODS + // + + /** + * Loads the configuration. + */ + private void loadConfiguration() { + logger.log(Level.FINEST, "loadConfiguration()"); + } + + /** + * Saves the configuration. + */ + private void saveConfiguration() { + logger.log(Level.FINEST, "saveConfiguration()"); + } + }