changeset 55:f0c02ff120d6

Read filenames from properties file or commandline arguments.
author Raimund Renkert <rrenkert@intevation.de>
date Mon, 16 May 2011 18:21:27 +0200
parents 691864097eb1
children 08913299e34f
files ChangeLog build.xml converter.properties.sample src/java/de/intevation/mxd/Converter.java src/java/de/intevation/mxd/writer/MapScriptWriter.java
diffstat 5 files changed, 120 insertions(+), 49 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed May 11 10:10:18 2011 +0200
+++ b/ChangeLog	Mon May 16 18:21:27 2011 +0200
@@ -1,3 +1,18 @@
+2011-05-16  Raimund Renkert <raimund.renkert@intevation.de>
+
+	* build.xml: Set the classpath for the executabel jar file. The path to
+	  the external libraries (lib/) is relative to the executable.
+
+	* src/java/de/intevation/mxd/Converter.java:
+	  Use commandline arguments to set the filenames for the MXD-, MAP- and
+	  the template file. If no arguments are used, read the filenames from
+	  the converter.properties file.
+
+	* src/java/de/intevation/mxd/writer/MapScriptWriter.java:
+	  Use the template file for mapfile creation.
+
+	* converter.properties.sample: New. Example for the properties file.
+
 2011-05-11  Stephan Holl  <stephan.holl@intevation.de>
 
 	* src/java/de/intevation/mxd/writer/MapScriptWriter.java: Added
--- a/build.xml	Wed May 11 10:10:18 2011 +0200
+++ b/build.xml	Mon May 16 18:21:27 2011 +0200
@@ -56,8 +56,9 @@
     <mkdir dir="${dist.dir}" />
     <jar jarfile="${dist.dir}/${sample.dir}.jar" compress="true" basedir="${class.dir}">
       <manifest>
-        <attribute name="Main-Class" value="${main.class}"/>
-      </manifest>	
+        <attribute name="Main-Class" value="de.intevation.mxd.Converter"/>
+        <attribute name="Class-Path" value="lib/log4j-1.2.16.jar lib/mapscript.jar lib/arcobjects.jar"/>
+      </manifest>
     </jar>
   </target>
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/converter.properties.sample	Mon May 16 18:21:27 2011 +0200
@@ -0,0 +1,4 @@
+# Java properties file for the MXD Converter Tool.
+mxd = \\full\\path\\to\\mxd-file
+map = \\full\\path\\to\\map-file
+map-template = \\full\\path\\to\\mapfile-template
--- a/src/java/de/intevation/mxd/Converter.java	Wed May 11 10:10:18 2011 +0200
+++ b/src/java/de/intevation/mxd/Converter.java	Mon May 16 18:21:27 2011 +0200
@@ -2,6 +2,9 @@
 
 import java.io.IOException;
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.BufferedInputStream;
+import java.util.Properties;
 
 import org.apache.log4j.Logger;
 import org.apache.log4j.PropertyConfigurator;
@@ -46,6 +49,84 @@
 
 
     /**
+     * Entrypoint for the application.
+     */
+    public static void main(String[] args) {
+        try{
+            String mxdfile = "";
+            String mapfile = "";
+            String maptemplate = "";
+            int ndx = 0;
+            if (args.length > 0) {
+                if (args[0].equals("-mxd") && args.length >= 2) {
+                    mxdfile = args[1];
+                    ndx = 2;
+                }
+            }
+            if (args.length >= ndx + 2) {
+                if (args[ndx].equals("-map")) {
+                    mapfile = args[ndx+1];
+                    ndx += 2;
+                }
+            }
+            if (args.length >= ndx + 2) {
+                if (args[ndx].equals("-template")) {
+                    maptemplate = args[ndx+1];
+                    ndx += 2;
+                }
+            }
+
+            if(mxdfile.equals("")) {
+                try {
+                    mxdfile = readProperty("mxd");
+                }
+                catch(Exception e) {
+                    e.printStackTrace ();
+                }
+            }
+            if(mapfile.equals("")) {
+                try {
+                    mapfile = readProperty("map");
+                }
+                catch(Exception e) {
+                    e.printStackTrace ();
+                }
+            }
+            if(maptemplate.equals("")) {
+                try {
+                    maptemplate = readProperty("map-template");
+                }
+                catch(Exception e) {
+                    e.printStackTrace ();
+                }
+            }
+
+            IReader reader = new MXDReader();
+            reader.init();
+            reader.setFilename(mxdfile);
+            reader.read();
+
+            IWriter writer = new MapScriptWriter(maptemplate, mapfile);
+            writer.write(reader.getMapDocument());
+            reader.shutdown();
+        }
+        catch(IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private static String readProperty (String key)
+    throws Exception {
+        Properties properties = new Properties();
+        BufferedInputStream stream =
+            new BufferedInputStream(
+                new FileInputStream("converter.properties")
+            );
+        properties.load(stream);
+        stream.close();
+        return properties.getProperty(key);
+    }
+    /**
      * Trys to load the Log4j configuration
      * from ${config.dir}/log4j.properties.
      */
@@ -62,31 +143,5 @@
         }
     }
 
-    /**
-     * Entrypoint for the application.
-     */
-    public static void main(String[] args) {
-        try{
-
-            IReader reader = new MXDReader();
-            IWriter writer = new MapScriptWriter();
-            reader.init();
-
-            String path = System.getProperty("mxd.file");
-            if (path.equals("${MXDFILE}")) {
-                System.out.println("No valid MXD file. Use ant parameter" +
-                                   " \"-DMXDFILE=path/to/file.mxd\".");
-                System.exit(-1);
-            }
-            reader.setFilename(path);
-
-            reader.read();
-            writer.write(reader.getMapDocument());
-            reader.shutdown();
-        }
-        catch(IOException e) {
-            e.printStackTrace();
-        }
-    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/src/java/de/intevation/mxd/writer/MapScriptWriter.java	Wed May 11 10:10:18 2011 +0200
+++ b/src/java/de/intevation/mxd/writer/MapScriptWriter.java	Mon May 16 18:21:27 2011 +0200
@@ -44,18 +44,16 @@
      */
     private Document root;
     private mapObj map;
-
+    private String mapFilename;
 
-    /**
-     * TODO: Workarround to import the Mapfile-Template, it should be done
-     * via a property file, currently hardcoded.
-     */
     public MapScriptWriter() {
-        map = new mapObj("z:/mxd-testbed_sh/mapserver/mapfile/mxd.map");
+        map = new mapObj("");
+        mapFilename = "";
     }
 
-    public MapScriptWriter(String path) {
-        map = new mapObj(path);
+    public MapScriptWriter(String templ, String filename) {
+        map = new mapObj(templ);
+        mapFilename = filename;
     }
 
     /**
@@ -73,17 +71,13 @@
             root,
             "/mxd/file",
             XPathConstants.NODE);
-        String filename = fileNode.getAttribute("name");
-        if(filename.endsWith(".mxd")) {
-            filename = filename.replace(".mxd", ".map");
-        }
         //Write the map attributes.
         writeMap();
         //Write the layers.
         writeLayer();
         //Save the map.
         mapObj cloneMap = map.cloneMap();
-        cloneMap.save(filename);
+        cloneMap.save(mapFilename);
         return true;
     }
 
@@ -242,14 +236,16 @@
             styleObj style = new styleObj(co);
             style.setAngle(
                 Double.parseDouble(symbolElement.getAttribute("angle")));
-            String c = symbolElement.getAttribute("color");
-            Color col = Color.decode(c);
-            colorObj color = new colorObj(
-                col.getRed(),
-                col.getGreen(),
-                col.getBlue(),
-                -4);
-            style.setColor(color);
+            if(symbolElement.hasAttribute("color")) {
+                String c = symbolElement.getAttribute("color");
+                Color col = Color.decode(c);
+                colorObj color = new colorObj(
+                    col.getRed(),
+                    col.getGreen(),
+                    col.getBlue(),
+                    -4);
+                style.setColor(color);
+            }
             style.setSize(Double.parseDouble(
                 symbolElement.getAttribute("size")));
             if(symbolElement.hasAttribute("outline_color")) {
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)