move project-related classes to own project
[jSite2.git] / src / net / pterodactylus / jsite / core / ProjectManager.java
diff --git a/src/net/pterodactylus/jsite/core/ProjectManager.java b/src/net/pterodactylus/jsite/core/ProjectManager.java
deleted file mode 100644 (file)
index ca07a4d..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * jSite2 - ProjectManager.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.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Properties;
-import java.util.logging.Logger;
-
-import net.pterodactylus.util.io.Closer;
-import net.pterodactylus.util.logging.Logging;
-
-/**
- * Manages projects, taking care of persistence, lifetime statistics, and other
- * things.
- * 
- * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
- */
-public class ProjectManager {
-
-       /** Logger. */
-       private static final Logger logger = Logging.getLogger(ProjectManager.class.getName());
-
-       /** The directory the projects are stored in. */
-       private final String directory;
-
-       /** The node manager. */
-       private NodeManager nodeManager;
-
-       /** All projects. */
-       private final List<Project> projects = Collections.synchronizedList(new ArrayList<Project>());
-
-       /**
-        * Creates a new project manager that saves and restores its state to/from
-        * the given directory.
-        * 
-        * @param directory
-        *            The directory to save and restore states to/from
-        */
-       public ProjectManager(String directory) {
-               this.directory = directory;
-       }
-
-       //
-       // ACCESSORS
-       //
-
-       /**
-        * Returns the directory the projects are loaded from and saved to.
-        * 
-        * @return The directory for storing the projects
-        */
-       public String getDirectory() {
-               return directory;
-       }
-
-       /**
-        * Returns a list of all projects.
-        * 
-        * @return A list of all projects
-        */
-       public List<Project> getProjects() {
-               return Collections.unmodifiableList(new ArrayList<Project>(projects));
-       }
-
-       /**
-        * Sets the node manager to use.
-        * 
-        * @param nodeManager
-        *            The node manager to use
-        */
-       public void setNodeManager(NodeManager nodeManager) {
-               this.nodeManager = nodeManager;
-       }
-
-       //
-       // ACTIONS
-       //
-
-       /**
-        * Loads projects and statistics.
-        * 
-        * @throws IOException
-        *             if an I/O error occurs
-        */
-       public void load() throws IOException {
-               File directoryFile = new File(directory);
-               File projectFile = new File(directoryFile, "projects.properties");
-               if (!projectFile.exists() || !projectFile.isFile() || !projectFile.canRead()) {
-                       return;
-               }
-               Properties projectProperties = new Properties();
-               InputStream projectInputStream = null;
-               try {
-                       projectInputStream = new FileInputStream(projectFile);
-                       projectProperties.load(projectInputStream);
-               } finally {
-                       Closer.close(projectInputStream);
-               }
-               int projectIndex = 0;
-               while (projectProperties.containsKey("projects." + projectIndex + ".name")) {
-                       String projectPrefix = "projects." + projectIndex;
-                       String projectName = projectProperties.getProperty(projectPrefix + ".name");
-                       String projectDescription = projectProperties.getProperty(projectPrefix + ".description");
-                       String projectPrivateKey = projectProperties.getProperty(projectPrefix + ".privateKey");
-                       String projectPublicKey = projectProperties.getProperty(projectPrefix + ".publicKey");
-                       Project project = new Project();
-                       project.setName(projectName);
-                       project.setDescription(projectDescription);
-                       project.setPrivateKey(projectPrivateKey);
-                       project.setPublicKey(projectPublicKey);
-                       projects.add(project);
-                       logger.fine("loaded project “" + project.getName() + "”.");
-                       projectIndex++;
-               }
-       }
-
-       /**
-        * Saves projects and statistics.
-        * 
-        * @throws IOException
-        *             if an I/O error occurs
-        */
-       public void save() throws IOException {
-               File directoryFile = new File(directory);
-               if (!directoryFile.exists()) {
-                       if (!directoryFile.mkdirs()) {
-                               throw new IOException("could not create directory: " + directory);
-                       }
-               }
-               Properties projectProperties = new Properties();
-               int projectIndex = 0;
-               for (Project project: projects) {
-                       String projectPrefix = "projects." + projectIndex;
-                       projectProperties.setProperty(projectPrefix + ".name", project.getName());
-                       projectProperties.setProperty(projectPrefix + ".description", project.getDescription());
-                       projectProperties.setProperty(projectPrefix + ".privateKey", project.getPrivateKey());
-                       projectProperties.setProperty(projectPrefix + ".publicKey", project.getPublicKey());
-                       projectIndex++;
-               }
-               File projectFile = new File(directoryFile, "projects.properties");
-               OutputStream projectOutputStream = null;
-               try {
-                       projectOutputStream = new FileOutputStream(projectFile);
-                       projectProperties.store(projectOutputStream, "jSite projects");
-               } finally {
-                       Closer.close(projectOutputStream);
-               }
-       }
-
-       /**
-        * Creates a new project. The returned {@link Project} will contain a newly
-        * generated key pair.
-        * 
-        * @return A newly created project
-        * @throws IOException
-        *             if an I/O error occured communicating with the node
-        * @throws JSiteException
-        *             if there is a problem with the node
-        */
-       public Project createProject() throws IOException, JSiteException {
-               Project project = new Project();
-               String[] keyPair = nodeManager.generateKeyPair();
-               project.setPrivateKey(keyPair[0]);
-               project.setPublicKey(keyPair[1]);
-               projects.add(project);
-               return project;
-       }
-}