annotate artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/templating/App.java @ 9127:dbb26bc81843

Testing
author gernotbelger
date Wed, 06 Jun 2018 13:05:57 +0200
parents 04ad2cfce559
children 5030c46d8cb4
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 1046
diff changeset
9 package org.dive4elements.river.artifacts.datacage.templating;
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
11 import java.io.File;
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
12 import java.io.FileOutputStream;
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13 import java.io.IOException;
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 import java.io.OutputStream;
8903
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
15 import java.net.MalformedURLException;
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
16 import java.util.HashMap;
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
17 import java.util.Map;
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 import org.apache.log4j.Logger;
8903
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
20 import org.apache.log4j.PropertyConfigurator;
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
21 import org.dive4elements.artifacts.common.utils.Config;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 1046
diff changeset
22 import org.dive4elements.artifacts.common.utils.XMLUtils;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 1046
diff changeset
23 import org.dive4elements.river.artifacts.datacage.Recommendations;
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
24 import org.dive4elements.river.backend.SessionFactoryProvider;
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
25 import org.hibernate.Session;
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
26 import org.slf4j.bridge.SLF4JBridgeHandler;
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
27 import org.w3c.dom.Document;
1015
9a1a3080ad98 Bring user specific meta data service to life.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 998
diff changeset
28
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
29 public class App {
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30 private static Logger log = Logger.getLogger(App.class);
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31
8903
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
32 /**
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
33 * The logging is done via Log4j. To configure the logging
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
34 * a file 'log4j.properties' is search in the configuration directory.
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
35 */
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
36 private static final String LOG4J_PROPERTIES = "log4j.properties";
1015
9a1a3080ad98 Bring user specific meta data service to life.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 998
diff changeset
37
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
38 public static final String template = System.getProperty("meta.data.template", "meta-data.xml");
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
40 public static final String userId = System.getProperty("user.id");
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
42 public static final String PARAMETERS = System.getProperty("meta.data.parameters", "");
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
43
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
44 public static final String OUTPUT = System.getProperty("meta.data.output");
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46 public static Map<String, Object> getParameters() {
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
47 final HashMap<String, Object> map = new HashMap<>();
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
48 final String[] parts = PARAMETERS.split("\\s*;\\s*");
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
49 for (final String part : parts) {
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
50 final String[] kv = part.split("\\s*:\\s*");
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
51 if (kv.length < 2 || (kv[0] = kv[0].trim()).length() == 0) {
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
52 continue;
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
53 }
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
54 final String[] values = kv[1].split("\\s*,\\s*");
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
55 map.put(kv[0], values.length == 1 ? values[0] : values);
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56 }
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 return map;
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
58 }
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
59
8903
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
60 /**
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
61 * Trys to load the Log4j configuration from ${config.dir}/log4j.properties.
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
62 */
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
63 private static final void configureLogging() {
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
64 final File configDir = Config.getConfigDirectory();
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
65 final File propFile = new File(configDir, LOG4J_PROPERTIES);
8903
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
66
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
67 if (propFile.isFile() && propFile.canRead()) {
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
68 try {
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
69 PropertyConfigurator.configure(propFile.toURI().toURL());
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
70 SLF4JBridgeHandler.install();
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
71 }
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
72 catch (final MalformedURLException mue) {
8903
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
73 mue.printStackTrace(System.err);
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
74 }
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
75 }
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
76 }
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
77
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
78 public static void main(final String[] args) {
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
79
8903
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
80 configureLogging();
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
81
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
82 final Recommendations rec = Recommendations.createRecommendations(new File(template));
1015
9a1a3080ad98 Bring user specific meta data service to life.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 998
diff changeset
83
9a1a3080ad98 Bring user specific meta data service to life.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 998
diff changeset
84 if (rec == null) {
9a1a3080ad98 Bring user specific meta data service to life.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 998
diff changeset
85 System.err.println("No recommendations created");
9a1a3080ad98 Bring user specific meta data service to life.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 998
diff changeset
86 return;
9a1a3080ad98 Bring user specific meta data service to life.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 998
diff changeset
87 }
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
88
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
89 final Document result = XMLUtils.newDocument();
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
90
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
91 final Map<String, Object> parameters = getParameters();
8927
04ad2cfce559 ANother comment
gernotbelger
parents: 8903
diff changeset
92 // REMARK/TODO: 'ARTIFACT-OUTS' needs a String-Array, should be handled by parser
8903
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
93 parameters.put("ARTIFACT-OUTS", new String[] { "LONGITUDINAL_SECTION" });
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
94 parameters.put("PARAMETERS", parameters);
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
95 parameters.put("USER-ID", userId);
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
96
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
97 final Session session = SessionFactoryProvider.createSessionFactory().openSession();
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
98
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
99 try {
1015
9a1a3080ad98 Bring user specific meta data service to life.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 998
diff changeset
100 rec.recommend(parameters, userId, result, session);
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
101 } finally {
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
102 session.close();
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
103 }
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
104
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
105 OutputStream out;
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
106
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
107 if (OUTPUT == null) {
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
108 out = System.out;
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
109 } else {
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
110 try {
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
111 out = new FileOutputStream(OUTPUT);
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
112 }
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
113 catch (final IOException ioe) {
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
114 log.error(ioe);
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
115 return;
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
116 }
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
117 }
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
118
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
119 try {
8903
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
120 out.write('\n');
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
121 XMLUtils.toStream(result, out);
8903
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
122 out.write('\n');
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
123 }
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
124 catch (final IOException e) {
8903
7de3837b204c Minor changes to helper App so it works
gernotbelger
parents: 5994
diff changeset
125 log.error(e);
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
126 } finally {
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
127 if (OUTPUT != null) {
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
128 try {
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
129 out.close();
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
130 }
9127
dbb26bc81843 Testing
gernotbelger
parents: 8927
diff changeset
131 catch (final IOException ioe) {
998
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
132 log.error(ioe);
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
133 }
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
134 }
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
135 }
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
136 System.exit(0);
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
137 }
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
138 }
b81626b10cb7 Datacage: Moved templating in a better suited package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
139 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org