comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/meta/DataCage.java @ 950:22bc87a42a0d

First step to factor out the "Datenkorb" logic into a service independent singleton. flys-artifacts/trunk@2367 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 20 Jul 2011 09:56:39 +0000
parents
children 92027887775a
comparison
equal deleted inserted replaced
949:ea56940bfc4c 950:22bc87a42a0d
1 package de.intevation.flys.artifacts.services.meta;
2
3 import java.io.InputStream;
4 import java.io.IOException;
5 import java.io.File;
6
7 import java.io.FileInputStream;
8
9 import org.apache.log4j.Logger;
10
11 import org.w3c.dom.Document;
12
13 import de.intevation.artifacts.common.utils.Config;
14 import de.intevation.artifacts.common.utils.XMLUtils;
15
16 public class DataCage
17 {
18 private static Logger log = Logger.getLogger(DataCage.class);
19
20 public static final String XPATH_META_DATA_TEMPLATE =
21 "/artifact-database/metadata/@template";
22
23 private static DataCage INSTANCE;
24
25 protected Builder builder;
26
27 public DataCage() {
28 }
29
30 public DataCage(Builder builder) {
31 this.builder = builder;
32 }
33
34 public Builder getBuilder() {
35 return builder;
36 }
37
38 public static synchronized DataCage getInstance() {
39 if (INSTANCE == null) {
40 INSTANCE = createDataCage();
41 }
42 return INSTANCE;
43 }
44
45 protected static Builder createBuilder(File file) {
46 log.debug("DataCage.createBuilder");
47
48 if (!file.isFile() || !file.canRead()) {
49 log.error("Cannot open template file '" + file + "'");
50 return null;
51 }
52
53 InputStream in = null;
54
55 try {
56 in = new FileInputStream(file);
57
58 Document template = XMLUtils.parseDocument(in);
59
60 if (template == null) {
61 log.error("cannot parse meta data template");
62 }
63 else {
64 return new Builder(template);
65 }
66 }
67 catch (IOException ioe) {
68 log.error(ioe);
69 }
70 finally {
71 if (in != null) {
72 try {
73 in.close();
74 }
75 catch (IOException ioe) {
76 log.error(ioe);
77 }
78 }
79 }
80 return null;
81 }
82
83 protected static DataCage createDataCage() {
84 log.debug("DataCage.createDataCage");
85
86 String path = Config.getStringXPath(XPATH_META_DATA_TEMPLATE);
87 if (path == null) {
88 log.error("no path to template file given");
89 return null;
90 }
91
92 path = Config.replaceConfigDir(path);
93
94 return new DataCage(createBuilder(new File(path)));
95 }
96 }
97 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org