use Closer
[jSite.git] / src / de / todesbaum / jsite / main / Configuration.java
index 1a06f37..cf4bca5 100644 (file)
@@ -34,17 +34,16 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import de.todesbaum.jsite.application.EditionProject;
 import de.todesbaum.jsite.application.FileOption;
 import de.todesbaum.jsite.application.Node;
 import de.todesbaum.jsite.application.Project;
+import de.todesbaum.util.io.Closer;
 import de.todesbaum.util.io.StreamCopier;
 import de.todesbaum.util.xml.SimpleXML;
 import de.todesbaum.util.xml.XML;
 
 /**
- * @author David Roden <droden@gmail.com>
- * @version $Id: Configuration.java 418 2006-03-29 17:49:16Z bombe $
+ * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
  */
 public class Configuration {
 
@@ -53,13 +52,21 @@ public class Configuration {
        private SimpleXML rootNode;
 
        public Configuration() {
-               filename = System.getProperty("user.home") + "/.jSite/config7";
-               lockFilename = System.getProperty("user.home") + "/.jSite/lock7";
+               this(System.getProperty("user.home") + "/.jSite/config7");
+       }
+       
+       public Configuration(String filename) {
+               this(filename, filename + ".lock");
+       }
+       
+       public Configuration(String filename, String lockFilename) {
+               this.filename = filename;
+               this.lockFilename = lockFilename;
                readConfiguration();
        }
        
        private boolean createConfigDirectory() {
-               File configDirectory = new File(System.getProperty("user.home"), ".jSite");
+               File configDirectory = new File(filename).getAbsoluteFile().getParentFile();
                return (configDirectory.exists() && configDirectory.isDirectory()) || configDirectory.mkdirs();
        }
 
@@ -92,18 +99,8 @@ public class Configuration {
                        } catch (FileNotFoundException e) {
                        } catch (IOException e) {
                        } finally {
-                               if (fileInputStream != null) {
-                                       try {
-                                               fileInputStream.close();
-                                       } catch (IOException ioe1) {
-                                       }
-                               }
-                               if (fileByteOutputStream != null) {
-                                       try {
-                                               fileByteOutputStream.close();
-                                       } catch (IOException ioe1) {
-                                       }
-                               }
+                               Closer.close(fileInputStream);
+                               Closer.close(fileByteOutputStream);
                        }
                }
                rootNode = new SimpleXML("configuration");
@@ -112,7 +109,7 @@ public class Configuration {
        public boolean save() {
                File configurationFile = new File(filename);
                if (!configurationFile.exists()) {
-                       File configurationFilePath = configurationFile.getParentFile();
+                       File configurationFilePath = configurationFile.getAbsoluteFile().getParentFile();
                        if (!configurationFilePath.exists() && !configurationFilePath.mkdirs()) {
                                return false;
                        }
@@ -127,18 +124,8 @@ public class Configuration {
                        return true;
                } catch (IOException ioe1) {
                } finally {
-                       if (configurationInputStream != null) {
-                               try {
-                                       configurationInputStream.close();
-                               } catch (IOException ioe1) {
-                               }
-                       }
-                       if (fileOutputStream != null) {
-                               try {
-                                       fileOutputStream.close();
-                               } catch (IOException ioe1) {
-                               }
-                       }
+                       Closer.close(configurationInputStream);
+                       Closer.close(fileOutputStream);
                }
                return false;
        }
@@ -176,6 +163,7 @@ public class Configuration {
         * @return The hostname of the node
         * @deprecated Use {@link #getSelectedNode()} instead
         */
+       @Deprecated
        public String getNodeAddress() {
                return getNodeValue(new String[] { "node-address" }, "localhost");
        }
@@ -185,6 +173,7 @@ public class Configuration {
         * @param nodeAddress The hostname of the node
         * @deprecated Use {@link #setSelectedNode(Node)} instead
         */
+       @Deprecated
        public void setNodeAddress(String nodeAddress) {
                rootNode.replace("node-address", nodeAddress);
        }
@@ -194,6 +183,7 @@ public class Configuration {
         * @return The port number of the node
         * @deprecated Use {@link #getSelectedNode()} instead. 
         */
+       @Deprecated
        public int getNodePort() {
                return getNodeIntValue(new String[] { "node-port" }, 9481);
        }
@@ -203,6 +193,7 @@ public class Configuration {
         * @param nodePort The port number of the node
         * @deprecated Use {@link #setSelectedNode(Node)} instead
         */
+       @Deprecated
        public void setNodePort(int nodePort) {
                rootNode.replace("node-port", String.valueOf(nodePort));
        }
@@ -222,13 +213,7 @@ public class Configuration {
                        SimpleXML[] projectNodes = projectsNode.getNodes("project");
                        for (SimpleXML projectNode: projectNodes) {
                                try {
-                                       Project project = null;
-                                       SimpleXML typeNode = projectNode.getNode("type");
-                                       if ("edition".equals(typeNode.getValue())) {
-                                               EditionProject editionProject = new EditionProject();
-                                               project = editionProject;
-                                               editionProject.setEdition(Integer.parseInt(projectNode.getNode("edition").getValue()));
-                                       }
+                                       Project project = new Project();
                                        projects.add(project);
                                        project.setDescription(projectNode.getNode("description").getValue());
                                        project.setIndexFile(projectNode.getNode("index-file").getValue());
@@ -236,6 +221,10 @@ public class Configuration {
                                        project.setLocalPath(projectNode.getNode("local-path").getValue());
                                        project.setName(projectNode.getNode("name").getValue());
                                        project.setPath(projectNode.getNode("path").getValue());
+                                       if ((project.getPath() != null) && (project.getPath().indexOf("/") != -1)) {
+                                               project.setPath(project.getPath().replaceAll("/", ""));
+                                       }
+                                       project.setEdition(Integer.parseInt(projectNode.getNode("edition").getValue()));
                                        project.setInsertURI(projectNode.getNode("insert-uri").getValue());
                                        project.setRequestURI(projectNode.getNode("request-uri").getValue());
                                        SimpleXML fileOptionsNode = projectNode.getNode("file-options");
@@ -269,10 +258,7 @@ public class Configuration {
                SimpleXML projectsNode = new SimpleXML("project-list");
                for (Project project: projects) {
                        SimpleXML projectNode = projectsNode.append("project");
-                       if (project instanceof EditionProject) {
-                               projectNode.append("type", "edition");
-                               projectNode.append("edition", String.valueOf(((EditionProject) project).getEdition()));
-                       }
+                       projectNode.append("edition", String.valueOf(project.getEdition()));
                        projectNode.append("description", project.getDescription());
                        projectNode.append("index-file", project.getIndexFile());
                        projectNode.append("last-insertion-time", String.valueOf(project.getLastInsertionTime()));