comparison artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java @ 10:e8626caac353

* Made Artifact life cycle symmetric: setup/endOfLife. * Implement defaults for Artifact and ArtifactFactory. * Added connection pooling from apache commons dbcp * Made sql schema of artifact database more compatible. * Improve example config. * Made artifactdb start with 'mvn exec:exec' * minor fixes. artifacts/trunk@25 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 06 Sep 2009 12:00:56 +0000
parents
children 5a6b6a3debc7
comparison
equal deleted inserted replaced
9:a5a279a0ee35 10:e8626caac353
1 package de.intevation.artifactdatabase;
2
3 import org.w3c.dom.Document;
4 import org.w3c.dom.Node;
5
6 import de.intevation.artifacts.ArtifactFactory;
7 import de.intevation.artifacts.Artifact;
8
9 public class DefaultArtifactFactory
10 implements ArtifactFactory
11 {
12 public static final String XPATH_TTL = "@ttl";
13 public static final String XPATH_NAME = "@name";
14 public static final String XPATH_DESCRIPTION = "@description";
15 public static final String XPATH_ARTIFACT = "@artifact";
16
17 public static final String DEFAULT_DESCRIPTION =
18 "No description available";
19
20 public static final String DEFAULT_ARTIFACT =
21 "de.intevation.artifactdatabase.DefaultArtifact";
22
23 protected Long ttl;
24
25 protected String name;
26
27 protected String description;
28
29 protected Class artifactClass;
30
31 public DefaultArtifactFactory() {
32 }
33
34 public String getName() {
35 return name;
36 }
37
38 public String getDescription() {
39 return description;
40 }
41
42 public Artifact createArtifact(String identifier, Object context) {
43
44 try {
45 Artifact artifact =
46 (Artifact)artifactClass.newInstance();
47
48 artifact.setup(identifier, context);
49
50 return artifact;
51 }
52 catch (InstantiationException ie) {
53 ie.printStackTrace(System.err);
54 }
55 catch (IllegalAccessException iae) {
56 iae.printStackTrace(System.err);
57 }
58 catch (ClassCastException cce) {
59 cce.printStackTrace(System.err);
60 }
61
62 return null;
63 }
64
65 public void setup(Document document, Node factoryNode) {
66
67 String ttlString = Config.getStringXPath(factoryNode, XPATH_TTL);
68 if (ttlString != null) {
69 try {
70 ttl = Long.valueOf(ttlString);
71 }
72 catch (NumberFormatException nfe) {
73 nfe.printStackTrace(System.err);
74 }
75 }
76
77 description = Config.getStringXPath(
78 factoryNode, XPATH_DESCRIPTION, DEFAULT_DESCRIPTION);
79
80 name = Config.getStringXPath(
81 factoryNode, XPATH_NAME, toString());
82
83 String artifact = Config.getStringXPath(
84 factoryNode, XPATH_ARTIFACT, DEFAULT_ARTIFACT);
85
86 try {
87 artifactClass = Class.forName(artifact);
88 }
89 catch (ClassNotFoundException cnfe) {
90 cnfe.printStackTrace(System.err);
91 }
92
93 if (artifactClass == null) {
94 artifactClass = DefaultArtifact.class;
95 }
96 }
97
98 public Long timeToLiveUntouched(Artifact artifact, Object context) {
99 return ttl;
100 }
101 }
102 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8:

http://dive4elements.wald.intevation.org