Mercurial > dive4elements > framework
annotate artifact-database/src/main/java/org/dive4elements/artifactdatabase/DefaultArtifactFactory.java @ 515:22d66b405b24
merged-
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Wed, 30 Apr 2014 15:30:33 +0200 |
parents | 69f99bdf3d65 |
children | 863f1fa66981 |
rev | line source |
---|---|
100
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
1 /* |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
2 * Copyright (c) 2010 by Intevation GmbH |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
3 * |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
4 * This program is free software under the LGPL (>=v2.1) |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
5 * Read the file LGPL.txt coming with the software for details |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
6 * or visit http://www.gnu.org/licenses/ if it does not exist. |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
7 */ |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
8 |
475
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
9 package org.dive4elements.artifactdatabase; |
207
b2115f484edb
Move Config and XMLUtils totally to commons package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
10 |
513
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
11 import java.util.ArrayList; |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
12 import java.util.HashMap; |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
13 import java.util.List; |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
14 import java.util.Map; |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
15 |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
16 import javax.xml.xpath.XPathConstants; |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
17 |
475
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
18 import org.dive4elements.artifacts.common.utils.Config; |
513
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
19 import org.dive4elements.artifacts.common.utils.XMLUtils; |
475
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
20 |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
21 import org.dive4elements.artifacts.Artifact; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
22 import org.dive4elements.artifacts.ArtifactFactory; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
23 import org.dive4elements.artifacts.ArtifactSerializer; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
24 import org.dive4elements.artifacts.CallMeta; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
25 import org.dive4elements.artifacts.GlobalContext; |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 |
93
e27cf9c84eb8
Unified imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
91
diff
changeset
|
27 import org.apache.log4j.Logger; |
e27cf9c84eb8
Unified imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
91
diff
changeset
|
28 |
e27cf9c84eb8
Unified imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
91
diff
changeset
|
29 import org.w3c.dom.Document; |
e27cf9c84eb8
Unified imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
91
diff
changeset
|
30 import org.w3c.dom.Node; |
513
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
31 import org.w3c.dom.NodeList; |
93
e27cf9c84eb8
Unified imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
91
diff
changeset
|
32 |
17
5a6b6a3debc7
Integrated logging into artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
10
diff
changeset
|
33 /** |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
34 * Trivial implementation of the ArtifactFactory interface. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
35 * Time to live (ttl), name and description are configured |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
36 * via the Node given to #setup(Document, Node) with attributes |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
37 * of same name. The class name of the artifacts to be build by this |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
38 * factory is configures with the attribute 'artifact'. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
39 * |
77
48d1a9a082c2
Bring @author javadoc tags in form '@author <a href="john.doe@example.com">John Doe</a>'
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
75
diff
changeset
|
40 * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a> |
17
5a6b6a3debc7
Integrated logging into artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
10
diff
changeset
|
41 */ |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
42 public class DefaultArtifactFactory |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
43 implements ArtifactFactory |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
44 { |
17
5a6b6a3debc7
Integrated logging into artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
10
diff
changeset
|
45 private static Logger logger = |
5a6b6a3debc7
Integrated logging into artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
10
diff
changeset
|
46 Logger.getLogger(DefaultArtifactFactory.class); |
5a6b6a3debc7
Integrated logging into artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
10
diff
changeset
|
47 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
48 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
49 * XPath to access the TTL of this artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
50 */ |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
51 public static final String XPATH_TTL = "@ttl"; |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
52 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
53 * XPath to access the name of this factory. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
54 */ |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
55 public static final String XPATH_NAME = "@name"; |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
56 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
57 * XPath to access the description of this artifact factory. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
58 */ |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
59 public static final String XPATH_DESCRIPTION = "@description"; |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
60 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
61 * XPath to access the class name of the artifacts to be build |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
62 * by this factory. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
63 */ |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
64 public static final String XPATH_ARTIFACT = "@artifact"; |
513
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
65 /** |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
66 * XPath to access the static facets configured for artifacts |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
67 */ |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
68 public static final String XPATH_ARTIFACT_CONFIG = |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
69 "/artifact-database/artifacts/artifact[@name=$name]/load-facets/facet"; |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
70 |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
71 /** |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
72 * XPath to access the static facets configured for artifacts |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
73 */ |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
74 public static final String XPATH_ARTIFACT_NAME = |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
75 "/artifact-database/artifacts/artifact/@name"; |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
76 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
77 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
78 * Default description of this factory if none is given by the |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
79 * configuration. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
80 */ |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
81 public static final String DEFAULT_DESCRIPTION = |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
82 "No description available"; |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
83 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
84 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
85 * Class to load if no artifact class is given in the configuration. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
86 */ |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
87 public static final String DEFAULT_ARTIFACT = |
475
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
88 "org.dive4elements.artifactdatabase.DefaultArtifact"; |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
89 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
90 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
91 * The Time to live of the artifacts build by this factory. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
92 */ |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
93 protected Long ttl; |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
94 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
95 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
96 * The name of this factory. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
97 */ |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
98 protected String name; |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
99 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
100 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
101 * The description of this factory. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
102 */ |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
103 protected String description; |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
104 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
105 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
106 * The class of the artifacts to be build by this factory. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
107 */ |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
108 protected Class artifactClass; |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
109 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
110 /** |
513
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
111 * The name of the artifacts to be build by this factory. |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
112 */ |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
113 protected String artifactName; |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
114 |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
115 /** |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
116 * The list of facets the generated artifact creates on instantiation. |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
117 */ |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
118 protected List<Class> facetClasses; |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
119 |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
120 /** |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
121 * Default constructor. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
122 */ |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
123 public DefaultArtifactFactory() { |
513
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
124 facetClasses = new ArrayList<Class>(); |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
125 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
126 |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
127 public String getName() { |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
128 return name; |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
129 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
130 |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
131 public String getDescription() { |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
132 return description; |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
133 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
134 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
135 public Artifact createArtifact( |
293
a367a0d011af
Set an interface for the global context; added a method to the artifact database to return an instance of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
136 String identifier, |
a367a0d011af
Set an interface for the global context; added a method to the artifact database to return an instance of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
137 GlobalContext context, |
297
694d818e99b2
Adapted the signature of Artifact.setup() - a parameter of type CallMeta has been added.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
293
diff
changeset
|
138 CallMeta callMeta, |
293
a367a0d011af
Set an interface for the global context; added a method to the artifact database to return an instance of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
139 Document data |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
140 ) { |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
141 try { |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
142 Artifact artifact = |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
143 (Artifact)artifactClass.newInstance(); |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
144 |
513
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
145 if (artifact.getName() == null || |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
146 artifact.getName().length() == 0) { |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
147 artifact.setName(artifactName); |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
148 } |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
149 artifact.setup( |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
150 identifier, |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
151 this, |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
152 context, |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
153 callMeta, |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
154 data, |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
155 facetClasses); |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
156 |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
157 return artifact; |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
158 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
159 catch (InstantiationException ie) { |
17
5a6b6a3debc7
Integrated logging into artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
10
diff
changeset
|
160 logger.error(ie.getLocalizedMessage(), ie); |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
161 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
162 catch (IllegalAccessException iae) { |
17
5a6b6a3debc7
Integrated logging into artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
10
diff
changeset
|
163 logger.error(iae.getLocalizedMessage(), iae); |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
164 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
165 catch (ClassCastException cce) { |
17
5a6b6a3debc7
Integrated logging into artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
10
diff
changeset
|
166 logger.error(cce.getLocalizedMessage(), cce); |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
167 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
168 |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
169 return null; |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
170 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
171 |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
172 public void setup(Document document, Node factoryNode) { |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
173 String ttlString = Config.getStringXPath(factoryNode, XPATH_TTL); |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
174 if (ttlString != null) { |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
175 try { |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
176 ttl = Long.valueOf(ttlString); |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
177 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
178 catch (NumberFormatException nfe) { |
17
5a6b6a3debc7
Integrated logging into artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
10
diff
changeset
|
179 logger.warn("'" + ttlString + "' is not an integer."); |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
180 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
181 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
182 |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
183 description = Config.getStringXPath( |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
184 factoryNode, XPATH_DESCRIPTION, DEFAULT_DESCRIPTION); |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
185 |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
186 name = Config.getStringXPath( |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
187 factoryNode, XPATH_NAME, toString()); |
513
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
188 logger.debug("setting up " + name); |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
189 |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
190 String artifact = Config.getStringXPath( |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
191 factoryNode, XPATH_ARTIFACT, DEFAULT_ARTIFACT); |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
192 |
513
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
193 artifactName = Config.getStringXPath( |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
194 document, XPATH_ARTIFACT_NAME, "default"); |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
195 logger.debug(artifactName); |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
196 Map<String, String> variables = new HashMap<String, String>(); |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
197 variables.put("name", name); |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
198 NodeList facets = (NodeList) XMLUtils.xpath( |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
199 document, |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
200 XPATH_ARTIFACT_CONFIG, |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
201 XPathConstants.NODESET, |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
202 null, |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
203 variables); |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
204 |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
205 for (int i = 0; i < facets.getLength(); i++) { |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
206 logger.debug(facets.item(i).getAttributes().getNamedItem("class").getNodeValue()); |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
207 String className = |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
208 facets.item(i).getAttributes().getNamedItem("class").getNodeValue(); |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
209 try { |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
210 facetClasses.add(Class.forName(className)); |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
211 } |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
212 catch (ClassNotFoundException cnfe) { |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
213 logger.error(cnfe.getLocalizedMessage(), cnfe); |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
214 } |
69f99bdf3d65
Use a list of "static" facets loaded from configuration to generate facets on artifact setup.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
215 } |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
216 try { |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
217 artifactClass = Class.forName(artifact); |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
218 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
219 catch (ClassNotFoundException cnfe) { |
17
5a6b6a3debc7
Integrated logging into artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
10
diff
changeset
|
220 logger.error(cnfe.getLocalizedMessage(), cnfe); |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
221 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
222 |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
223 if (artifactClass == null) { |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
224 artifactClass = DefaultArtifact.class; |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
225 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
226 } |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
227 |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
228 public Long timeToLiveUntouched(Artifact artifact, Object context) { |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
229 return ttl; |
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
230 } |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
24
diff
changeset
|
231 |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
24
diff
changeset
|
232 public ArtifactSerializer getSerializer() { |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
24
diff
changeset
|
233 return DefaultArtifactSerializer.INSTANCE; |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
24
diff
changeset
|
234 } |
10
e8626caac353
* Made Artifact life cycle symmetric: setup/endOfLife.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
235 } |
91
730ff077a58c
More javadoc, some code formatting.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
90
diff
changeset
|
236 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |