Mercurial > dive4elements > framework
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: |