rrenkert@33: package de.intevation.mxd; ingo@24: rrenkert@25: import java.io.File; rrenkert@55: import java.io.FileInputStream; rrenkert@55: import java.io.BufferedInputStream; rrenkert@55: import java.util.Properties; rrenkert@25: rrenkert@25: import org.apache.log4j.Logger; rrenkert@25: import org.apache.log4j.PropertyConfigurator; rrenkert@25: rrenkert@25: import java.net.MalformedURLException; ingo@24: rrenkert@33: import de.intevation.mxd.reader.IReader; rrenkert@33: import de.intevation.mxd.reader.MXDReader; rrenkert@41: import de.intevation.mxd.writer.IWriter; rrenkert@41: import de.intevation.mxd.writer.MapScriptWriter; ingo@24: /** ingo@24: * The entry point of the MXD converter tool. ingo@24: * ingo@24: * @author Ingo Weinzierl ingo@24: */ ingo@24: public class Converter { ingo@24: rrenkert@25: /** rrenkert@25: * The logging is done via Log4j. To configure the logging rrenkert@25: * a file 'log4j.properties' is search in the configuration rrenkert@25: * directory. rrenkert@25: */ rrenkert@25: public static final String LOG4J_PROPERTIES = "log4j.properties"; rrenkert@25: rrenkert@25: /** rrenkert@25: * rrenkert@25: * The path of the configuration directory. rrenkert@25: */ rrenkert@25: public static final String CONFIG_PATH = System.getProperty("config.dir", rrenkert@25: "conf"); rrenkert@25: rrenkert@25: rrenkert@25: /** rrenkert@25: * The logger used in this class. rrenkert@25: */ rrenkert@25: private static Logger logger; rrenkert@25: rrenkert@25: static { rrenkert@25: configureLogging(); rrenkert@25: logger = Logger.getLogger(Converter.class); rrenkert@25: } rrenkert@25: rrenkert@25: rrenkert@25: /** rrenkert@55: * Entrypoint for the application. rrenkert@55: */ rrenkert@55: public static void main(String[] args) { rrenkert@55: try{ rrenkert@55: String mxdfile = ""; rrenkert@55: String mapfile = ""; rrenkert@55: String maptemplate = ""; rrenkert@55: int ndx = 0; rrenkert@55: if (args.length > 0) { rrenkert@55: if (args[0].equals("-mxd") && args.length >= 2) { rrenkert@55: mxdfile = args[1]; rrenkert@55: ndx = 2; rrenkert@55: } rrenkert@55: } rrenkert@55: if (args.length >= ndx + 2) { rrenkert@55: if (args[ndx].equals("-map")) { rrenkert@55: mapfile = args[ndx+1]; rrenkert@55: ndx += 2; rrenkert@55: } rrenkert@55: } rrenkert@55: if (args.length >= ndx + 2) { rrenkert@55: if (args[ndx].equals("-template")) { rrenkert@55: maptemplate = args[ndx+1]; rrenkert@55: ndx += 2; rrenkert@55: } rrenkert@55: } rrenkert@55: rrenkert@55: if(mxdfile.equals("")) { rrenkert@55: try { rrenkert@55: mxdfile = readProperty("mxd"); rrenkert@55: } rrenkert@55: catch(Exception e) { rrenkert@55: e.printStackTrace (); rrenkert@55: } rrenkert@55: } rrenkert@55: if(mapfile.equals("")) { rrenkert@55: try { rrenkert@55: mapfile = readProperty("map"); rrenkert@55: } rrenkert@55: catch(Exception e) { rrenkert@55: e.printStackTrace (); rrenkert@55: } rrenkert@55: } rrenkert@55: if(maptemplate.equals("")) { rrenkert@55: try { rrenkert@55: maptemplate = readProperty("map-template"); rrenkert@55: } rrenkert@55: catch(Exception e) { rrenkert@55: e.printStackTrace (); rrenkert@55: } rrenkert@55: } rrenkert@55: rrenkert@55: IReader reader = new MXDReader(); rrenkert@86: IWriter writer = new MapScriptWriter(maptemplate, mapfile); rrenkert@86: rrenkert@55: reader.init(); rrenkert@55: reader.setFilename(mxdfile); rrenkert@55: reader.read(); rrenkert@55: rrenkert@55: writer.write(reader.getMapDocument()); rrenkert@55: reader.shutdown(); rrenkert@55: } rrenkert@86: catch(Exception e) { rrenkert@118: logger.error(e.getMessage()); rrenkert@55: } rrenkert@55: } rrenkert@55: rrenkert@55: private static String readProperty (String key) rrenkert@55: throws Exception { rrenkert@55: Properties properties = new Properties(); rrenkert@55: BufferedInputStream stream = rrenkert@55: new BufferedInputStream( rrenkert@55: new FileInputStream("converter.properties") rrenkert@55: ); rrenkert@55: properties.load(stream); rrenkert@55: stream.close(); rrenkert@55: return properties.getProperty(key); rrenkert@55: } rrenkert@55: /** rrenkert@25: * Trys to load the Log4j configuration rrenkert@25: * from ${config.dir}/log4j.properties. rrenkert@25: */ rrenkert@25: public static final void configureLogging() { rrenkert@25: File configDir = new File(CONFIG_PATH); rrenkert@25: File propFile = new File(configDir, LOG4J_PROPERTIES); rrenkert@25: if (propFile.isFile() && propFile.canRead()) { rrenkert@25: try { rrenkert@25: PropertyConfigurator.configure(propFile.toURI().toURL()); rrenkert@25: } rrenkert@25: catch (MalformedURLException mue) { rrenkert@25: mue.printStackTrace(System.err); rrenkert@25: } rrenkert@25: } rrenkert@25: } rrenkert@25: ingo@24: } ingo@24: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :