X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FProjectManager.java;h=2e28ab9b92fc8e2b3d324ed5a3e05d27b74fc95f;hb=c63257e8cc0ba1a5aca9364b22171abe7279d479;hp=782a5d6a56f39c936aa7ff80df252babeeac2e9c;hpb=dc37f1e959fe36099d157e6d09b5790d4e06897c;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/core/ProjectManager.java b/src/net/pterodactylus/jsite/core/ProjectManager.java index 782a5d6..2e28ab9 100644 --- a/src/net/pterodactylus/jsite/core/ProjectManager.java +++ b/src/net/pterodactylus/jsite/core/ProjectManager.java @@ -35,15 +35,13 @@ import java.util.Map.Entry; import java.util.logging.Level; import java.util.logging.Logger; -import net.pterodactylus.jsite.util.IdGenerator; import net.pterodactylus.util.io.Closer; import net.pterodactylus.util.logging.Logging; -import net.pterodactylus.util.number.Hex; /** * Manages projects, taking care of persistence, lifetime statistics, and other * things. - * + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> */ public class ProjectManager implements PropertyChangeListener { @@ -63,7 +61,7 @@ public class ProjectManager implements PropertyChangeListener { /** * 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 */ @@ -77,7 +75,7 @@ public class ProjectManager implements PropertyChangeListener { /** * Returns the directory the projects are loaded from and saved to. - * + * * @return The directory for storing the projects */ public String getDirectory() { @@ -86,7 +84,7 @@ public class ProjectManager implements PropertyChangeListener { /** * Returns a list of all projects. - * + * * @return A list of all projects */ public List getProjects() { @@ -95,7 +93,7 @@ public class ProjectManager implements PropertyChangeListener { /** * Sets the node manager to use. - * + * * @param nodeManager * The node manager to use */ @@ -109,7 +107,7 @@ public class ProjectManager implements PropertyChangeListener { /** * Loads projects and statistics. - * + * * @throws IOException * if an I/O error occurs */ @@ -137,6 +135,7 @@ public class ProjectManager implements PropertyChangeListener { String projectPublicKey = projectProperties.getProperty(projectPrefix + ".publicKey"); String projectBasePath = projectProperties.getProperty(projectPrefix + ".basePath"); String projectDefaultFile = projectProperties.getProperty(projectPrefix + ".defaultFile"); + String projectNode = projectProperties.getProperty(projectPrefix + ".node"); Project project = new Project(); project.setId(projectId); project.setName(projectName); @@ -145,6 +144,10 @@ public class ProjectManager implements PropertyChangeListener { project.setPublicKey(projectPublicKey); project.setBasePath(projectBasePath); project.setDefaultFile(projectDefaultFile); + if (projectNode != null) { + Node node = nodeManager.getNode(projectNode); + project.setNode(node); + } int overrideIndex = 0; while (projectProperties.containsKey(projectPrefix + ".overrides." + overrideIndex + ".override")) { String filePath = projectProperties.getProperty(projectPrefix + ".overrides." + overrideIndex + ".filePath"); @@ -161,7 +164,7 @@ public class ProjectManager implements PropertyChangeListener { /** * Saves projects and statistics. - * + * * @throws IOException * if an I/O error occurs */ @@ -183,6 +186,9 @@ public class ProjectManager implements PropertyChangeListener { projectProperties.setProperty(projectPrefix + ".publicKey", project.getPublicKey()); projectProperties.setProperty(projectPrefix + ".basePath", project.getBasePath()); projectProperties.setProperty(projectPrefix + ".defaultFile", project.getDefaultFile()); + if (project.getNode() != null) { + projectProperties.setProperty(projectPrefix + ".node", project.getNode().getId()); + } int overrideIndex = 0; for (Entry overrideEntry : project.getFileOverrides().entrySet()) { projectProperties.setProperty(projectPrefix + ".overrides." + overrideIndex + ".filePath", overrideEntry.getKey()); @@ -204,7 +210,7 @@ public class ProjectManager implements PropertyChangeListener { /** * 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 @@ -214,7 +220,6 @@ public class ProjectManager implements PropertyChangeListener { public Project createProject() throws IOException, JSiteException { Project project = new Project(); String[] keyPair = nodeManager.generateKeyPair(); - project.setId(Hex.toHex(IdGenerator.generateId())); project.setName(""); project.setDescription(""); project.setPrivateKey(keyPair[0]); @@ -235,7 +240,7 @@ public class ProjectManager implements PropertyChangeListener { * Clones the given project and returns the clone. The clone will be * identical in all user-exposed fields, except for the project’s * {@link Project#getId ID}. - * + * * @param project * The project to clone * @return The cloned project @@ -243,7 +248,6 @@ public class ProjectManager implements PropertyChangeListener { public Project cloneProject(Project project) { Project projectClone = new Project(project); projects.add(projectClone); - projectClone.setId(Hex.toHex(IdGenerator.generateId())); projectClone.addPropertyChangeListener(this); try { save(); @@ -255,7 +259,7 @@ public class ProjectManager implements PropertyChangeListener { /** * Removes the given project. - * + * * @param project * The project to remove */