Mercurial > dive4elements > river
annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/meta/DataCage.java @ 960:92027887775a
DataCage: Added a recommend() method to generate recommendations for
a given artifact, outs and extra parameters.
flys-artifacts/trunk@2379 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 20 Jul 2011 17:03:00 +0000 |
parents | 22bc87a42a0d |
children | f48cef242e7f |
rev | line source |
---|---|
950
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.artifacts.services.meta; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
2 |
960
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
3 import java.util.Map; |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
4 import java.util.HashMap; |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
5 |
950
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
6 import java.io.InputStream; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
7 import java.io.IOException; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
8 import java.io.File; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
9 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
10 import java.io.FileInputStream; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
11 |
960
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
12 import java.sql.Connection; |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
13 import java.sql.SQLException; |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
14 |
950
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
15 import org.apache.log4j.Logger; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
16 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
17 import org.w3c.dom.Document; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
18 |
960
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
19 import org.hibernate.Session; |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
20 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
21 import org.hibernate.jdbc.Work; |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
22 |
950
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
23 import de.intevation.artifacts.common.utils.Config; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 import de.intevation.artifacts.common.utils.XMLUtils; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 |
960
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
26 import de.intevation.flys.artifacts.FLYSArtifact; |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
27 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
28 import de.intevation.flys.backend.SessionHolder; |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
29 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
30 import de.intevation.artifactdatabase.data.StateData; |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
31 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
32 |
950
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
33 public class DataCage |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
34 { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
35 private static Logger log = Logger.getLogger(DataCage.class); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
36 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
37 public static final String XPATH_META_DATA_TEMPLATE = |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
38 "/artifact-database/metadata/@template"; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
39 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
40 private static DataCage INSTANCE; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
41 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
42 protected Builder builder; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
43 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
44 public DataCage() { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
45 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
46 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
47 public DataCage(Builder builder) { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
48 this.builder = builder; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
49 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
50 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
51 public Builder getBuilder() { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
52 return builder; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
53 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
54 |
960
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
55 public Document recommend(FLYSArtifact artifact, String [] outs) { |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
56 return recommend(artifact, outs, null); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
57 } |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
58 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
59 public Document recommend( |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
60 FLYSArtifact artifact, |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
61 String [] outs, |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
62 Map<String, Object> extraParameters |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
63 ) { |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
64 Map<String, Object> parameters = new HashMap<String, Object>(); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
65 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
66 if (extraParameters != null) { |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
67 parameters.putAll(extraParameters); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
68 } |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
69 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
70 parameters.put("current-state-id", artifact.getCurrentStateId()); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
71 parameters.put("artifact-outs", outs); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
72 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
73 for (StateData sd: artifact.getAllData()) { |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
74 Object value = sd.getValue(); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
75 if (value == null) { |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
76 continue; |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
77 } |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
78 String key = sd.getName().replace('.', '-'); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
79 parameters.put(key, value); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
80 } |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
81 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
82 return process(parameters); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
83 } |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
84 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
85 public Document process(final Map<String, Object> parameters) { |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
86 final Document result = XMLUtils.newDocument(); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
87 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
88 if (builder != null) { |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
89 log.error("builder not configured properly."); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
90 return result; |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
91 } |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
92 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
93 Session session = SessionHolder.HOLDER.get(); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
94 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
95 session.doWork(new Work() { |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
96 @Override |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
97 public void execute(Connection connection) |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
98 throws SQLException |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
99 { |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
100 builder.build(connection, result, parameters); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
101 } |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
102 }); |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
103 |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
104 return result; |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
105 } |
92027887775a
DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
950
diff
changeset
|
106 |
950
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
107 public static synchronized DataCage getInstance() { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
108 if (INSTANCE == null) { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
109 INSTANCE = createDataCage(); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
110 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
111 return INSTANCE; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
112 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
113 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
114 protected static Builder createBuilder(File file) { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
115 log.debug("DataCage.createBuilder"); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
116 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
117 if (!file.isFile() || !file.canRead()) { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
118 log.error("Cannot open template file '" + file + "'"); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
119 return null; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
120 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
121 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
122 InputStream in = null; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
123 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
124 try { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
125 in = new FileInputStream(file); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
126 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
127 Document template = XMLUtils.parseDocument(in); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
128 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
129 if (template == null) { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
130 log.error("cannot parse meta data template"); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
131 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
132 else { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
133 return new Builder(template); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
134 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
135 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
136 catch (IOException ioe) { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
137 log.error(ioe); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
138 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
139 finally { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
140 if (in != null) { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
141 try { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
142 in.close(); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
143 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
144 catch (IOException ioe) { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
145 log.error(ioe); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
146 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
147 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
148 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
149 return null; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
150 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
151 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
152 protected static DataCage createDataCage() { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
153 log.debug("DataCage.createDataCage"); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
154 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
155 String path = Config.getStringXPath(XPATH_META_DATA_TEMPLATE); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
156 if (path == null) { |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
157 log.error("no path to template file given"); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
158 return null; |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
159 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
160 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
161 path = Config.replaceConfigDir(path); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
162 |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
163 return new DataCage(createBuilder(new File(path))); |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
164 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
165 } |
22bc87a42a0d
First step to factor out the "Datenkorb" logic into a service independent singleton.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
166 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |