sascha@998: package de.intevation.flys.artifacts.datacage.templating; sascha@998: sascha@998: import java.sql.Connection; sascha@998: import java.sql.SQLException; sascha@998: sascha@998: import java.util.Map; sascha@998: import java.util.HashMap; sascha@998: sascha@998: import java.io.IOException; sascha@998: import java.io.OutputStream; sascha@998: import java.io.File; sascha@998: import java.io.FileOutputStream; sascha@998: sascha@998: import de.intevation.flys.backend.SessionFactoryProvider; sascha@998: sascha@998: import org.hibernate.Session; sascha@998: sascha@998: import org.hibernate.jdbc.Work; sascha@998: sascha@998: import org.w3c.dom.Document; sascha@998: sascha@998: import org.apache.log4j.Logger; sascha@998: sascha@998: import de.intevation.artifacts.common.utils.XMLUtils; sascha@998: sascha@998: public class App sascha@998: { sascha@998: private static Logger log = Logger.getLogger(App.class); sascha@998: sascha@998: public static final String template = sascha@998: System.getProperty("meta.data.template", "meta-data-template.xml"); sascha@998: sascha@998: public static final String PARAMETERS = sascha@998: System.getProperty("meta.data.parameters", ""); sascha@998: sascha@998: public static final String OUTPUT = sascha@998: System.getProperty("meta.data.output"); sascha@998: sascha@998: public static Map getParameters() { sascha@998: HashMap map = new HashMap(); sascha@998: String [] parts = PARAMETERS.split("\\s*;\\s*"); sascha@998: for (String part: parts) { sascha@998: String [] kv = part.split("\\s*:\\s*"); sascha@998: if (kv.length < 2 || (kv[0] = kv[0].trim()).length() == 0) { sascha@998: continue; sascha@998: } sascha@998: String [] values = kv[1].split("\\s*,\\s*"); sascha@998: map.put(kv[0], values.length == 1 ? values[0] : values); sascha@998: } sascha@998: return map; sascha@998: } sascha@998: sascha@998: public static void main(String [] args) { sascha@998: sascha@998: NoneUserSpecific dc = new NoneUserSpecific( sascha@998: NoneUserSpecific.createBuilder(new File(template))); sascha@998: sascha@998: final Document result = XMLUtils.newDocument(); sascha@998: final Builder builder = dc.getBuilder(); sascha@998: sascha@998: if (builder == null) { sascha@998: System.err.println("No builder created"); sascha@998: return; sascha@998: } sascha@998: sascha@998: final Map parameters = getParameters(); sascha@998: sascha@998: Session session = SessionFactoryProvider sascha@998: .createSessionFactory() sascha@998: .openSession(); sascha@998: sascha@998: try { sascha@998: session.doWork(new Work() { sascha@998: @Override sascha@998: public void execute(Connection connection) sascha@998: throws SQLException sascha@998: { sascha@998: builder.build(connection, result, parameters); sascha@998: } sascha@998: sascha@998: }); sascha@998: } sascha@998: finally { sascha@998: session.close(); sascha@998: } sascha@998: sascha@998: OutputStream out; sascha@998: sascha@998: if (OUTPUT == null) { sascha@998: out = System.out; sascha@998: } sascha@998: else { sascha@998: try { sascha@998: out = new FileOutputStream(OUTPUT); sascha@998: } sascha@998: catch (IOException ioe) { sascha@998: log.error(ioe); sascha@998: return; sascha@998: } sascha@998: } sascha@998: sascha@998: try { sascha@998: XMLUtils.toStream(result, out); sascha@998: } sascha@998: finally { sascha@998: if (OUTPUT != null) { sascha@998: try { sascha@998: out.close(); sascha@998: } sascha@998: catch (IOException ioe) { sascha@998: log.error(ioe); sascha@998: } sascha@998: } sascha@998: } sascha@998: System.exit(0); sascha@998: } sascha@998: } sascha@998: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :