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