teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5863: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5863: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.artifacts.datacage.templating; 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: teichmann@5831: import org.dive4elements.river.backend.SessionFactoryProvider; sascha@998: sascha@998: import org.hibernate.Session; sascha@998: sascha@998: import org.w3c.dom.Document; sascha@998: sascha@998: import org.apache.log4j.Logger; sascha@998: teichmann@5831: import org.dive4elements.artifacts.common.utils.XMLUtils; sascha@998: teichmann@5831: import org.dive4elements.river.artifacts.datacage.Recommendations; sascha@1015: sascha@998: public class App sascha@998: { sascha@998: private static Logger log = Logger.getLogger(App.class); sascha@998: sascha@1046: public static final String template = sascha@1046: System.getProperty("meta.data.template", "meta-data.xml"); sascha@1015: sascha@1015: public static final String userId = sascha@1015: System.getProperty("user.id"); 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@1015: Recommendations rec = Recommendations.createRecommendations( sascha@1046: new File(template)); sascha@1015: sascha@1015: if (rec == null) { sascha@1015: System.err.println("No recommendations created"); sascha@1015: return; sascha@1015: } sascha@998: sascha@998: final Document result = XMLUtils.newDocument(); 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@1015: rec.recommend(parameters, userId, result, session); 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 :