Mercurial > dive4elements > framework
annotate artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java @ 390:d5db5483b376
Tagged module 'artifacts' as '2.7'.
artifacts/trunk@4528 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Sun, 27 May 2012 10:40:55 +0000 |
parents | 9798e4d83681 |
children | c40729bfe06d |
rev | line source |
---|---|
100
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
94
diff
changeset
|
1 /* |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
94
diff
changeset
|
2 * Copyright (c) 2010 by Intevation GmbH |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
94
diff
changeset
|
3 * |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
94
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:
94
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:
94
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:
94
diff
changeset
|
7 */ |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
94
diff
changeset
|
8 |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
9 package de.intevation.artifactdatabase; |
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
10 |
207
b2115f484edb
Move Config and XMLUtils totally to commons package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
198
diff
changeset
|
11 import de.intevation.artifacts.common.utils.XMLUtils; |
301
b0a949d3fe09
Moved StringUtils to common package. Added some Override annotations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
297
diff
changeset
|
12 import de.intevation.artifacts.common.utils.StringUtils; |
207
b2115f484edb
Move Config and XMLUtils totally to commons package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
198
diff
changeset
|
13 |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
14 import de.intevation.artifactdatabase.Backend.PersistentArtifact; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
15 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
16 import de.intevation.artifacts.Artifact; |
158
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
17 import de.intevation.artifacts.ArtifactCollection; |
155
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
18 import de.intevation.artifacts.ArtifactCollectionFactory; |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
19 import de.intevation.artifacts.ArtifactDatabase; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
20 import de.intevation.artifacts.ArtifactDatabaseException; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
21 import de.intevation.artifacts.ArtifactFactory; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
22 import de.intevation.artifacts.ArtifactNamespaceContext; |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
23 import de.intevation.artifacts.ArtifactSerializer; |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
24 import de.intevation.artifacts.CallContext; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
25 import de.intevation.artifacts.CallMeta; |
189
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
26 import de.intevation.artifacts.CollectionItem; |
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:
292
diff
changeset
|
27 import de.intevation.artifacts.GlobalContext; |
292
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
28 import de.intevation.artifacts.Hook; |
331
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
29 import de.intevation.artifacts.Message; |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
30 import de.intevation.artifacts.Service; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
31 import de.intevation.artifacts.ServiceFactory; |
149
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
32 import de.intevation.artifacts.User; |
130
147610c43863
The UserFactory got a setup() method that is called while bootstrap.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
127
diff
changeset
|
33 import de.intevation.artifacts.UserFactory; |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
34 |
75
d4c4c23847f5
Extended the Artifact-Interface-Method setup to be able to put the XML-Document which can contain further Data
Tim Englich <tim.englich@intevation.de>
parents:
70
diff
changeset
|
35 import java.io.IOException; |
d4c4c23847f5
Extended the Artifact-Interface-Method setup to be able to put the XML-Document which can contain further Data
Tim Englich <tim.englich@intevation.de>
parents:
70
diff
changeset
|
36 import java.io.OutputStream; |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
37 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
38 import java.security.MessageDigest; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
39 import java.security.NoSuchAlgorithmException; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
40 |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
41 import java.util.Arrays; |
168
f70977cf2faf
Avoid Nullpointer exception in listCollections() when no creation time of the collection is returned.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
167
diff
changeset
|
42 import java.util.Date; |
75
d4c4c23847f5
Extended the Artifact-Interface-Method setup to be able to put the XML-Document which can contain further Data
Tim Englich <tim.englich@intevation.de>
parents:
70
diff
changeset
|
43 import java.util.HashMap; |
d4c4c23847f5
Extended the Artifact-Interface-Method setup to be able to put the XML-Document which can contain further Data
Tim Englich <tim.englich@intevation.de>
parents:
70
diff
changeset
|
44 import java.util.HashSet; |
331
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
45 import java.util.LinkedList; |
292
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
46 import java.util.List; |
331
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
47 import java.util.Map; |
230
fbd57d2eeaef
Changed semantics of locked artifact ids.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
228
diff
changeset
|
48 import java.util.Set; |
75
d4c4c23847f5
Extended the Artifact-Interface-Method setup to be able to put the XML-Document which can contain further Data
Tim Englich <tim.englich@intevation.de>
parents:
70
diff
changeset
|
49 |
160
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
50 import javax.xml.xpath.XPathConstants; |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
51 |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
52 import org.apache.commons.codec.binary.Base64; |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
53 import org.apache.commons.codec.binary.Hex; |
75
d4c4c23847f5
Extended the Artifact-Interface-Method setup to be able to put the XML-Document which can contain further Data
Tim Englich <tim.englich@intevation.de>
parents:
70
diff
changeset
|
54 |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
55 import org.apache.log4j.Logger; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
56 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
57 import org.w3c.dom.Document; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
58 import org.w3c.dom.Element; |
160
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
59 import org.w3c.dom.Node; |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
60 |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
61 /** |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
62 * The core implementation of artifact database. This layer exposes |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
63 * the needed methods to the artifact runtime system which e.g. may |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
64 * expose them via REST. The concrete persistent representation of the |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
65 * artifacts is handled by the {@link Backend backend}. |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
66 * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a> |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
67 */ |
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
68 public class ArtifactDatabaseImpl |
233
16cd059945e5
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
230
diff
changeset
|
69 implements ArtifactDatabase, |
230
fbd57d2eeaef
Changed semantics of locked artifact ids.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
228
diff
changeset
|
70 DatabaseCleaner.LockedIdsProvider, |
fbd57d2eeaef
Changed semantics of locked artifact ids.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
228
diff
changeset
|
71 Backend.FactoryLookup |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
72 { |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
73 private static Logger logger = |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
74 Logger.getLogger(ArtifactDatabaseImpl.class); |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
75 |
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:
292
diff
changeset
|
76 /** The key under which the artifact database is stored in the global |
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:
292
diff
changeset
|
77 * context.*/ |
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:
292
diff
changeset
|
78 public static final String GLOBAL_CONTEXT_KEY = "global.artifact.database"; |
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:
292
diff
changeset
|
79 |
153
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
80 /** Message that is returned if an operation was successful.*/ |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
81 public static final String OPERATION_SUCCESSFUL = |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
82 "SUCCESS"; |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
83 |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
84 /** Message that is returned if an operation failed.*/ |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
85 public static final String OPERATION_FAILURE = |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
86 "FAILURE"; |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
87 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
88 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
89 * Error message issued if a requested artifact factory |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
90 * is not registered to this database. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
91 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
92 public static final String NO_SUCH_FACTORY = |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
93 "No such factory"; |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
94 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
95 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
96 * Error message issued if a requested artifact is not found |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
97 * in this database. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
98 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
99 public static final String NO_SUCH_ARTIFACT = |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
100 "No such artifact"; |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
101 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
102 /** |
222
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
103 * Error message issued if a requested artifact is not found |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
104 * in this database. |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
105 */ |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
106 public static final String NO_SUCH_COLLECTION = |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
107 "No such collection"; |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
108 |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
109 /** |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
110 * Error message issued if the creation of an artifact failed. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
111 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
112 public static final String CREATION_FAILED = |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
113 "Creation of artifact failed"; |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
114 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
115 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
116 * Error message if an severe internal error occurred. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
117 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
118 public static final String INTERNAL_ERROR = |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
119 "Creation of artifact failed"; |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
120 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
121 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
122 * Error message issued if a requested service is not |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
123 * offered by this database. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
124 */ |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
125 public static final String NO_SUCH_SERVICE = |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
126 "No such service"; |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
127 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
128 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
129 * Default digest hash to be used while im-/exporting artifacts. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
130 */ |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
131 public static final String DIGEST_ALGORITHM = |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
132 "SHA-1"; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
133 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
134 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
135 * XPath to get the checksum from an XML representation of |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
136 * an exported artifact. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
137 */ |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
138 public static final String XPATH_IMPORT_CHECKSUM = |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
139 "/art:action/art:data/@checksum"; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
140 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
141 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
142 * XPath to get the name of the factory which should be |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
143 * used to revive an antrifact that is going to be imported. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
144 */ |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
145 public static final String XPATH_IMPORT_FACTORY = |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
146 "/art:action/art:data/@factory"; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
147 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
148 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
149 * XPath to get the base64 encoded data of an artifact |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
150 * that is going to be imported. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
151 */ |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
152 public static final String XPATH_IMPORT_DATA = |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
153 "/art:action/art:data/text()"; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
154 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
155 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
156 * Error message issued if the checksum of an |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
157 * artifact to be imported has an invalid syntax. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
158 */ |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
159 public static final String INVALID_CHECKSUM = |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
160 "Invalid checksum"; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
161 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
162 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
163 * Error message issued the checksum validation |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
164 * of an artifact to be imported fails. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
165 */ |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
166 public static final String CHECKSUM_MISMATCH = |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
167 "Mismatching checksum"; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
168 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
169 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
170 * Error message issued if an artifact to be imported |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
171 * does not have any data. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
172 */ |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
173 public static final String NO_DATA = |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
174 "No data"; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
175 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
176 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
177 * Error message issued if the deserialization of |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
178 * an artifact to be imported fails. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
179 */ |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
180 public static final String INVALID_ARTIFACT = |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
181 "Invalid artifact"; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
182 |
149
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
183 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
184 // User constants |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
185 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
186 /** |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
187 * Error message issued if the creation of a user failed. |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
188 */ |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
189 public static final String USER_CREATION_FAILED = |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
190 "Creation of user failed."; |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
191 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
192 /** XPath to figure out the name of a new user.*/ |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
193 public static final String XPATH_USERNAME = |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
194 "/art:action/art:user/@name"; |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
195 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
196 /** XPath to figure out the role of a new user.*/ |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
197 public static final String XPATH_USERROLE = |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
198 "/art:action/art:user/art:role"; |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
199 |
152
7e5619115d5b
Implemented the deleteUser() method in the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
150
diff
changeset
|
200 /** Error message if a specified user does not exist.*/ |
7e5619115d5b
Implemented the deleteUser() method in the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
150
diff
changeset
|
201 public static final String NO_SUCH_USER = |
7e5619115d5b
Implemented the deleteUser() method in the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
150
diff
changeset
|
202 "No such user"; |
7e5619115d5b
Implemented the deleteUser() method in the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
150
diff
changeset
|
203 |
149
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
204 /** Error message if no username is given for user creation.*/ |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
205 public static final String NO_USERNAME = |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
206 "Invalid username"; |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
207 |
158
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
208 // Collection constants |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
209 |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
210 /** |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
211 * Error message issued if the creation of a collection failed. |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
212 */ |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
213 public static final String COLLECTION_CREATION_FAILED = |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
214 "Creation of collection failed"; |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
215 |
162
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
216 /** |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
217 * XPath to figure out the name of a collection described in the incoming |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
218 * document. |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
219 */ |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
220 public static final String XPATH_COLLECTION_NAME = |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
221 "/art:action/art:type/art:collection/@name"; |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
222 |
189
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
223 /** |
198
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
224 * XPath to figure out the attributes for a collection. |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
225 */ |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
226 public static final String XPATH_COLLECTION_ATTRIBUTE = |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
227 "/art:action/art:type/art:collection/art:attribute"; |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
228 |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
229 /** |
189
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
230 * XPath to figure out the attributes for an artifact that is put into a |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
231 * collection. |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
232 */ |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
233 public static final String XPATH_COLLECTION_ITEM_ATTRIBUTE = |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
234 "/art:action/art:type/art:artifact/art:attribute"; |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
235 |
273
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
236 /** |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
237 * XPath to figure out the time to live value for setting a new TTL. |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
238 */ |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
239 public static final String XPATH_COLLECTION_TTL = |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
240 "/art:action/art:type/art:ttl/@value"; |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
241 |
149
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
242 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
243 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
244 * This inner class allows the deferral of writing the output |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
245 * of the artifact's out() call. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
246 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
247 public class DeferredOutputImpl |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
248 implements DeferredOutput |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
249 { |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
250 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
251 * The persistence wrapper around a living artifact. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
252 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
253 protected PersistentArtifact artifact; |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
254 /** |
269
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
255 * The output type. |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
256 */ |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
257 protected String type; |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
258 /** |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
259 * The input document for the artifact's out() call. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
260 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
261 protected Document format; |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
262 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
263 * The meta information of the artifact's out() call. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
264 */ |
48
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
265 protected CallMeta callMeta; |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
266 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
267 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
268 * Default constructor. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
269 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
270 public DeferredOutputImpl() { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
271 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
272 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
273 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
274 * Constructor to create a deferred execution unit for |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
275 * the artifact's out() call given an artifact, an input document |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
276 * an the meta information. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
277 * @param artifact The persistence wrapper around a living artifact. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
278 * @param format The input document for the artifact's out() call. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
279 * @param callMeta The meta information of the artifact's out() call. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
280 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
281 public DeferredOutputImpl( |
47
4ae4dc99127d
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
41
diff
changeset
|
282 PersistentArtifact artifact, |
269
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
283 String type, |
48
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
284 Document format, |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
285 CallMeta callMeta |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
286 ) { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
287 this.artifact = artifact; |
269
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
288 this.type = type; |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
289 this.format = format; |
48
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
290 this.callMeta = callMeta; |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
291 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
292 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
293 public void write(OutputStream output) throws IOException { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
294 |
219
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
295 ArtifactCallContext cc = new ArtifactCallContext( |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
296 ArtifactDatabaseImpl.this, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
297 CallContext.TOUCH, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
298 callMeta, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
299 artifact); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
300 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
301 try { |
269
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
302 artifact.getArtifact().out(type, format, output, cc); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
303 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
304 finally { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
305 cc.postCall(); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
306 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
307 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
308 } // class DeferredOutputImpl |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
309 |
228
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
310 |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
311 /** |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
312 * This inner class allows the deferral of writing the output |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
313 * of the artifact's out() call. |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
314 */ |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
315 public class DeferredCollectionOutputImpl |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
316 implements DeferredOutput |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
317 { |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
318 /** |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
319 * The persistence wrapper around a living collection. |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
320 */ |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
321 protected ArtifactCollection collection; |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
322 /** |
269
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
323 * The output type. |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
324 */ |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
325 protected String type; |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
326 /** |
228
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
327 * The input document for the collection's out() call. |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
328 */ |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
329 protected Document format; |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
330 /** |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
331 * The meta information of the collection's out() call. |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
332 */ |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
333 protected CallMeta callMeta; |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
334 |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
335 /** |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
336 * Default constructor. |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
337 */ |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
338 public DeferredCollectionOutputImpl() { |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
339 } |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
340 |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
341 /** |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
342 * Constructor to create a deferred execution unit for |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
343 * the collection's out() call given a collection, an input document |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
344 * an the meta information. |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
345 * @param collection The collection. |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
346 * @param format The input document for the collection's out() call. |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
347 * @param callMeta The meta information of the collection's out() call. |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
348 */ |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
349 public DeferredCollectionOutputImpl( |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
350 ArtifactCollection collection, |
269
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
351 String type, |
228
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
352 Document format, |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
353 CallMeta callMeta |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
354 ) { |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
355 this.collection = collection; |
269
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
356 this.type = type; |
228
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
357 this.format = format; |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
358 this.callMeta = callMeta; |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
359 } |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
360 |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
361 public void write(OutputStream output) throws IOException { |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
362 |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
363 CollectionCallContext cc = new CollectionCallContext( |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
364 ArtifactDatabaseImpl.this, |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
365 CallContext.TOUCH, |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
366 callMeta, |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
367 collection); |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
368 |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
369 try { |
269
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
370 collection.out(type, format, output, cc); |
228
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
371 } |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
372 finally { |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
373 cc.postCall(); |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
374 } |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
375 } |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
376 } // class DeferredCollectionOutputImpl |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
377 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
378 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
379 * List of name/description pairs needed for |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
380 * {@link #artifactFactoryNamesAndDescriptions() }. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
381 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
382 protected String [][] factoryNamesAndDescription; |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
383 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
384 * Map to access artifact factories by there name. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
385 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
386 protected HashMap name2factory; |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
387 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
388 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
389 * List of name/description pairs needed for |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
390 * {@link #serviceNamesAndDescriptions() }. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
391 */ |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
392 protected String [][] serviceNamesAndDescription; |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
393 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
394 * Map to access services by there name. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
395 */ |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
396 protected HashMap name2service; |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
397 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
398 /** |
155
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
399 * The factory that is used to create new artifact collections. |
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
400 */ |
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
401 protected ArtifactCollectionFactory collectionFactory; |
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
402 |
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
403 /** |
127
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
404 * The factory that is used to create and list users. |
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
405 */ |
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
406 protected UserFactory userFactory; |
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
407 |
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
408 /** |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
409 * Reference to the storage backend. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
410 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
411 protected Backend backend; |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
412 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
413 * Reference of the global context of the artifact runtime system. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
414 */ |
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:
292
diff
changeset
|
415 protected GlobalContext context; |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
416 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
417 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
418 * The signing secret to be used for ex-/importing artifacts. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
419 */ |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
420 protected byte [] exportSecret; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
421 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
422 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
423 * A set of ids of artifact which currently running in background. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
424 * This artifacts should not be removed from the database by the |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
425 * database cleaner. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
426 */ |
331
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
427 protected HashSet<Integer> backgroundIds; |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
428 |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
429 /** |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
430 * A list of background messages for Artifacts and Collections. |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
431 */ |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
432 protected Map<String, LinkedList<Message>> backgroundMsgs; |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
433 |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
434 |
247
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
435 protected CallContext.Listener callContextListener; |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
436 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
437 /** |
292
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
438 * Hooks that are executed after an artifact has been fed. |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
439 */ |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
440 protected List<Hook> postFeedHooks; |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
441 |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
442 /** |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
443 * Hooks that are executed after an artifact has advanced. |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
444 */ |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
445 protected List<Hook> postAdvanceHooks; |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
446 |
348
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
447 /** |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
448 * Hooks that are executed after an artifact's describe() operation was |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
449 * called. |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
450 */ |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
451 protected List<Hook> postDescribeHooks; |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
452 |
304
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
453 protected List<LifetimeListener> lifetimeListeners; |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
454 |
292
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
455 /** |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
456 * Default constructor. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
457 */ |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
458 public ArtifactDatabaseImpl() { |
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
459 } |
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
460 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
461 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
462 * Constructor to create a artifact database with the given |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
463 * bootstrap parameters like artifact- and service factories et. al. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
464 * Created this way the artifact database has no backend. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
465 * @param bootstrap The parameters to start this artifact database. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
466 */ |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
467 public ArtifactDatabaseImpl(FactoryBootstrap bootstrap) { |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
468 this(bootstrap, null); |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
469 } |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
470 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
471 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
472 * Constructor to create a artifact database with the a given |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
473 * backend and |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
474 * bootstrap parameters like artifact- and service factories et. al. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
475 * @param bootstrap The parameters to start this artifact database. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
476 * @param backend The storage backend. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
477 */ |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
478 public ArtifactDatabaseImpl(FactoryBootstrap bootstrap, Backend backend) { |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
479 |
313
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
311
diff
changeset
|
480 logger.debug("new ArtifactDatabaseImpl"); |
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
311
diff
changeset
|
481 |
331
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
482 backgroundIds = new HashSet<Integer>(); |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
483 backgroundMsgs = new HashMap<String, LinkedList<Message>>(); |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
484 |
155
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
485 setupArtifactCollectionFactory(bootstrap); |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
486 setupArtifactFactories(bootstrap); |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
487 setupServices(bootstrap); |
127
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
488 setupUserFactory(bootstrap); |
249
c47a640cfdae
Enhanced the bootstrap - the CallContext.Listener is initialized (if configured).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
247
diff
changeset
|
489 setupCallContextListener(bootstrap); |
292
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
490 setupHooks(bootstrap); |
304
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
491 setupLifetimeListeners(bootstrap); |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
492 |
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:
292
diff
changeset
|
493 context = bootstrap.getContext(); |
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:
292
diff
changeset
|
494 context.put(GLOBAL_CONTEXT_KEY, this); |
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:
292
diff
changeset
|
495 |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
496 exportSecret = bootstrap.getExportSecret(); |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
497 |
313
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
311
diff
changeset
|
498 wireWithBackend(backend, bootstrap); |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
499 } |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
500 |
247
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
501 public CallContext.Listener getCallContextListener() { |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
502 return callContextListener; |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
503 } |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
504 |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
505 public void setCallContextListener( |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
506 CallContext.Listener callContextListener |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
507 ) { |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
508 this.callContextListener = callContextListener; |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
509 } |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
510 |
292
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
511 |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
512 public void setPostFeedHook(List<Hook> postFeedHooks) { |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
513 this.postFeedHooks = postFeedHooks; |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
514 } |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
515 |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
516 public void setPostAdvanceHook(List<Hook> postAdvanceHooks) { |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
517 this.postAdvanceHooks = postAdvanceHooks; |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
518 } |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
519 |
348
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
520 public void setPostDescribeHook(List<Hook> postDescribeHooks) { |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
521 this.postDescribeHooks = postDescribeHooks; |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
522 } |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
523 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
524 /** |
155
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
525 * Used to extract the artifact collection factory from bootstrap. |
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
526 * |
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
527 * @param bootstrap The bootstrap parameters. |
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
528 */ |
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
529 protected void setupArtifactCollectionFactory(FactoryBootstrap bootstrap) { |
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
530 collectionFactory = bootstrap.getArtifactCollectionFactory(); |
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
531 } |
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
532 |
f797093c60bd
Made a (single one) artifact collection factory configurable.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
154
diff
changeset
|
533 /** |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
534 * Used to extract the artifact factories from the bootstrap |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
535 * parameters and building the internal lookup tables. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
536 * @param bootstrap The bootstrap parameters. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
537 */ |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
538 protected void setupArtifactFactories(FactoryBootstrap bootstrap) { |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
539 name2factory = new HashMap(); |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
540 |
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
541 ArtifactFactory [] factories = bootstrap.getArtifactFactories(); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
542 factoryNamesAndDescription = new String[factories.length][]; |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
543 |
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
544 for (int i = 0; i < factories.length; ++i) { |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
545 |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
546 ArtifactFactory factory = factories[i]; |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
547 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
548 String name = factory.getName(); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
549 String description = factory.getDescription(); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
550 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
551 factoryNamesAndDescription[i] = |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
552 new String [] { name, description }; |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
553 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
554 name2factory.put(name, factory); |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
555 } |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
556 } |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
557 |
249
c47a640cfdae
Enhanced the bootstrap - the CallContext.Listener is initialized (if configured).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
247
diff
changeset
|
558 /** |
c47a640cfdae
Enhanced the bootstrap - the CallContext.Listener is initialized (if configured).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
247
diff
changeset
|
559 * Used to extract the callContextListener from the bootstrap. |
c47a640cfdae
Enhanced the bootstrap - the CallContext.Listener is initialized (if configured).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
247
diff
changeset
|
560 * |
c47a640cfdae
Enhanced the bootstrap - the CallContext.Listener is initialized (if configured).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
247
diff
changeset
|
561 * @param bootstrap The bootstrap parameters. |
c47a640cfdae
Enhanced the bootstrap - the CallContext.Listener is initialized (if configured).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
247
diff
changeset
|
562 */ |
c47a640cfdae
Enhanced the bootstrap - the CallContext.Listener is initialized (if configured).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
247
diff
changeset
|
563 protected void setupCallContextListener(FactoryBootstrap bootstrap) { |
c47a640cfdae
Enhanced the bootstrap - the CallContext.Listener is initialized (if configured).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
247
diff
changeset
|
564 setCallContextListener(bootstrap.getCallContextListener()); |
c47a640cfdae
Enhanced the bootstrap - the CallContext.Listener is initialized (if configured).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
247
diff
changeset
|
565 } |
127
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
566 |
292
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
567 |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
568 protected void setupHooks(FactoryBootstrap bootstrap) { |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
569 setPostFeedHook(bootstrap.getPostFeedHooks()); |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
570 setPostAdvanceHook(bootstrap.getPostAdvanceHooks()); |
348
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
571 setPostDescribeHook(bootstrap.getPostDescribeHooks()); |
292
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
572 } |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
573 |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
308
diff
changeset
|
574 protected void setupBackendListeners(FactoryBootstrap bootstrap) { |
313
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
311
diff
changeset
|
575 logger.debug("setupBackendListeners"); |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
308
diff
changeset
|
576 List<BackendListener> bls = bootstrap.getBackendListeners(); |
313
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
311
diff
changeset
|
577 if (bls != null && !bls.isEmpty()) { |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
308
diff
changeset
|
578 for (BackendListener listener: bls) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
308
diff
changeset
|
579 listener.setup(context); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
308
diff
changeset
|
580 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
308
diff
changeset
|
581 backend.addAllListeners(bls); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
308
diff
changeset
|
582 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
308
diff
changeset
|
583 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
308
diff
changeset
|
584 |
304
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
585 protected void setupLifetimeListeners(FactoryBootstrap bootstrap) { |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
586 this.lifetimeListeners = bootstrap.getLifetimeListeners(); |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
587 } |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
588 |
127
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
589 /** |
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
590 * Used to extract the user factory from the bootstrap. |
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
591 */ |
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
592 protected void setupUserFactory(FactoryBootstrap bootstrap) { |
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
593 userFactory = bootstrap.getUserFactory(); |
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
594 } |
0245a87df368
Made the user factory available in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
118
diff
changeset
|
595 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
596 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
597 * Used to extract the service factories from the bootstrap |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
598 * parameters, setting up the services and building the internal |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
599 * lookup tables. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
600 * @param bootstrap The bootstrap parameters. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
601 */ |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
602 protected void setupServices(FactoryBootstrap bootstrap) { |
26
83a059c204f8
Connected /create with artifact db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
603 |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
604 name2service = new HashMap(); |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
605 |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
606 ServiceFactory [] serviceFactories = |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
607 bootstrap.getServiceFactories(); |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
608 |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
609 serviceNamesAndDescription = |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
610 new String[serviceFactories.length][]; |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
611 |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
612 for (int i = 0; i < serviceFactories.length; ++i) { |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
613 ServiceFactory factory = serviceFactories[i]; |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
614 |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
615 String name = factory.getName(); |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
616 String description = factory.getDescription(); |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
617 |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
618 serviceNamesAndDescription[i] = |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
619 new String [] { name, description }; |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
620 |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
621 name2service.put( |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
622 name, |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
623 factory.createService(bootstrap.getContext())); |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
624 } |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
625 |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
626 } |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
627 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
628 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
629 * Wires a storage backend to this artifact database and |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
630 * establishes a callback to be able to revive artifacts |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
631 * via the serializers of this artifact factories. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
632 * @param backend The backend to be wired with this artifact database. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
633 */ |
313
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
311
diff
changeset
|
634 public void wireWithBackend(Backend backend, FactoryBootstrap bootstrap) { |
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
311
diff
changeset
|
635 logger.debug("wireWithBackend"); |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
636 if (backend != null) { |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
637 this.backend = backend; |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
638 backend.setFactoryLookup(this); |
313
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
311
diff
changeset
|
639 setupBackendListeners(bootstrap); |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
640 } |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
641 } |
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
642 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
643 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
644 * Called after an backgrounded artifact signals its |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
645 * will to be written back to the backend. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
646 * @param artifact The persistence wrapper around |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
647 * the backgrounded artifact. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
648 * @param action The action to be performed. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
649 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
650 protected void fromBackground(PersistentArtifact artifact, int action) { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
651 logger.warn("BACKGROUND processing is not fully implemented, yet!"); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
652 switch (action) { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
653 case CallContext.NOTHING: |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
654 break; |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
655 case CallContext.TOUCH: |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
656 artifact.touch(); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
657 break; |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
658 case CallContext.STORE: |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
659 artifact.store(); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
660 break; |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
661 default: |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
662 logger.warn("operation not allowed in fromBackground"); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
663 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
664 removeIdFromBackground(artifact.getId()); |
331
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
665 removeBackgroundMessages(artifact.getArtifact().identifier()); |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
666 } |
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
667 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
668 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
669 * Removes an artifact's database id from the set of backgrounded |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
670 * artifacts. The database cleaner is now able to remove it safely |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
671 * from the database again. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
672 * @param id The database id of the artifact. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
673 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
674 protected void removeIdFromBackground(int id) { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
675 synchronized (backgroundIds) { |
230
fbd57d2eeaef
Changed semantics of locked artifact ids.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
228
diff
changeset
|
676 backgroundIds.remove(id); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
677 } |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
678 } |
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
679 |
331
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
680 |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
681 /** |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
682 * Removes all messages that have been added to the <i>backgroundMsgs</i> |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
683 * list. |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
684 * |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
685 * @param uuid The UUID of an artifact or collection. |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
686 */ |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
687 protected void removeBackgroundMessages(String uuid) { |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
688 logger.debug("Remove background messages for: " + uuid); |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
689 |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
690 synchronized (backgroundMsgs) { |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
691 backgroundMsgs.remove(uuid); |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
692 } |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
693 } |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
694 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
695 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
696 * Adds an artifact's database id to the set of artifacts |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
697 * running in backgroound. To be in this set prevents the |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
698 * artifact to be removed from the database by the database cleaner. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
699 * @param id The database id of the artifact to be protected |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
700 * from being removed from the database. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
701 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
702 protected void addIdToBackground(int id) { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
703 synchronized (backgroundIds) { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
704 backgroundIds.add(Integer.valueOf(id)); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
705 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
706 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
707 |
331
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
708 /** |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
709 * Adds a <i>Message</i> to the background messages list of the Artifact or |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
710 * Collection. |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
711 * |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
712 * @param uuid The UUID of the Artifact or Collection. |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
713 * @param msg The message that should be added to the background messages |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
714 * list. |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
715 */ |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
716 public void addBackgroundMessage(String uuid, Message msg) { |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
717 logger.debug("Add new background messsage for: " + uuid); |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
718 |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
719 synchronized (backgroundMsgs) { |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
720 LinkedList<Message> messages = backgroundMsgs.get(uuid); |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
721 |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
722 if (messages == null) { |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
723 messages = new LinkedList<Message>(); |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
724 backgroundMsgs.put(uuid, messages); |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
725 } |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
726 |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
727 messages.addLast(msg); |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
728 } |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
729 } |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
730 |
230
fbd57d2eeaef
Changed semantics of locked artifact ids.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
228
diff
changeset
|
731 public Set<Integer> getLockedIds() { |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
732 synchronized (backgroundIds) { |
230
fbd57d2eeaef
Changed semantics of locked artifact ids.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
228
diff
changeset
|
733 return new HashSet<Integer>(backgroundIds); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
734 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
735 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
736 |
331
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
737 /** |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
738 * Returns the background <i>Message</i>s for a specific Artifact or |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
739 * Collection. |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
740 * |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
741 * @param uuid The Artifact's or Collection's UUID. |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
742 * |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
743 * @return a <i>List</i> of <i>Message</i>s or null if no messages are |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
744 * existing. |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
745 */ |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
746 public LinkedList<Message> getBackgroundMessages(String uuid) { |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
747 logger.debug("Retrieve background message for: " + uuid); |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
748 |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
749 synchronized (backgroundMsgs) { |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
750 return backgroundMsgs.get(uuid); |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
751 } |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
752 } |
089c6f7794b5
Integrated a messaging system for Artifacts and Collections that started background threads.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
328
diff
changeset
|
753 |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
754 public String [][] artifactFactoryNamesAndDescriptions() { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
755 return factoryNamesAndDescription; |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
756 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
757 |
66
89e3de0ee05f
Implemented some methods to get access to ArtifactFactories which are stored in the ArtifactDatabase.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
58
diff
changeset
|
758 public ArtifactFactory getInternalArtifactFactory(String factoryName) { |
89e3de0ee05f
Implemented some methods to get access to ArtifactFactories which are stored in the ArtifactDatabase.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
58
diff
changeset
|
759 return getArtifactFactory(factoryName); |
89e3de0ee05f
Implemented some methods to get access to ArtifactFactories which are stored in the ArtifactDatabase.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
58
diff
changeset
|
760 } |
89e3de0ee05f
Implemented some methods to get access to ArtifactFactories which are stored in the ArtifactDatabase.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
58
diff
changeset
|
761 |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
762 public ArtifactFactory getArtifactFactory(String factoryName) { |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
763 return (ArtifactFactory)name2factory.get(factoryName); |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
764 } |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
765 |
149
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
766 public UserFactory getUserFactory() { |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
767 return userFactory; |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
768 } |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
769 |
158
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
770 public ArtifactCollectionFactory getArtifactCollectionFactory() { |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
771 return collectionFactory; |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
772 } |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
773 |
48
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
774 public Document createArtifactWithFactory( |
86
b2e0cb83631c
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
84
diff
changeset
|
775 String factoryName, |
75
d4c4c23847f5
Extended the Artifact-Interface-Method setup to be able to put the XML-Document which can contain further Data
Tim Englich <tim.englich@intevation.de>
parents:
70
diff
changeset
|
776 CallMeta callMeta, |
d4c4c23847f5
Extended the Artifact-Interface-Method setup to be able to put the XML-Document which can contain further Data
Tim Englich <tim.englich@intevation.de>
parents:
70
diff
changeset
|
777 Document data |
48
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
778 ) |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
779 throws ArtifactDatabaseException |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
780 { |
343
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
781 logger.debug("ArtifactDatabaseImpl.createArtifactWithFactory " |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
782 + factoryName); |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
783 ArtifactFactory factory = getArtifactFactory(factoryName); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
784 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
785 if (factory == null) { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
786 throw new ArtifactDatabaseException(NO_SUCH_FACTORY); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
787 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
788 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
789 Artifact artifact = factory.createArtifact( |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
790 backend.newIdentifier(), |
75
d4c4c23847f5
Extended the Artifact-Interface-Method setup to be able to put the XML-Document which can contain further Data
Tim Englich <tim.englich@intevation.de>
parents:
70
diff
changeset
|
791 context, |
297
694d818e99b2
Adapted the signature of Artifact.setup() - a parameter of type CallMeta has been added.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
294
diff
changeset
|
792 callMeta, |
75
d4c4c23847f5
Extended the Artifact-Interface-Method setup to be able to put the XML-Document which can contain further Data
Tim Englich <tim.englich@intevation.de>
parents:
70
diff
changeset
|
793 data); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
794 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
795 if (artifact == null) { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
796 throw new ArtifactDatabaseException(CREATION_FAILED); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
797 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
798 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
799 PersistentArtifact persistentArtifact; |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
800 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
801 try { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
802 persistentArtifact = backend.storeInitially( |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
803 artifact, |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
36
diff
changeset
|
804 factory, |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
805 factory.timeToLiveUntouched(artifact, context)); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
806 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
807 catch (Exception e) { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
808 logger.error(e.getLocalizedMessage(), e); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
809 throw new ArtifactDatabaseException(CREATION_FAILED); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
810 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
811 |
219
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
812 ArtifactCallContext cc = new ArtifactCallContext( |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
813 ArtifactDatabaseImpl.this, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
814 CallContext.NOTHING, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
815 callMeta, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
816 persistentArtifact); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
817 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
818 try { |
55
9a29899b31e5
describe() in REST interface is also handled as POST to pass
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
48
diff
changeset
|
819 return artifact.describe(null, cc); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
820 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
821 finally { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
822 cc.postCall(); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
823 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
824 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
825 |
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:
292
diff
changeset
|
826 |
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:
292
diff
changeset
|
827 public Artifact getRawArtifact(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:
292
diff
changeset
|
828 throws ArtifactDatabaseException |
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:
292
diff
changeset
|
829 { |
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:
292
diff
changeset
|
830 PersistentArtifact artifact = backend.getArtifact(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:
292
diff
changeset
|
831 |
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:
292
diff
changeset
|
832 if (artifact == null) { |
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:
292
diff
changeset
|
833 throw new ArtifactDatabaseException(NO_SUCH_ARTIFACT); |
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:
292
diff
changeset
|
834 } |
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:
292
diff
changeset
|
835 |
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:
292
diff
changeset
|
836 return artifact.getArtifact(); |
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:
292
diff
changeset
|
837 } |
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:
292
diff
changeset
|
838 |
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:
292
diff
changeset
|
839 |
94
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
840 public Document describe( |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
841 String identifier, |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
842 Document data, |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
843 CallMeta callMeta |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
844 ) |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
845 throws ArtifactDatabaseException |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
846 { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
847 // TODO: Handle background tasks |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
848 PersistentArtifact artifact = backend.getArtifact(identifier); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
849 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
850 if (artifact == null) { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
851 throw new ArtifactDatabaseException(NO_SUCH_ARTIFACT); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
852 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
853 |
219
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
854 ArtifactCallContext cc = new ArtifactCallContext( |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
855 ArtifactDatabaseImpl.this, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
856 CallContext.TOUCH, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
857 callMeta, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
858 artifact); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
859 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
860 try { |
348
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
861 Artifact art = artifact.getArtifact(); |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
862 Document res = art.describe(data, cc); |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
863 |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
864 if (postDescribeHooks != null) { |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
865 for (Hook hook: postDescribeHooks) { |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
866 hook.execute(art, cc, res); |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
867 } |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
868 } |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
869 |
f2277458823e
Enabled 'post-describe' hooks for Artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
343
diff
changeset
|
870 return res; |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
871 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
872 finally { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
873 cc.postCall(); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
874 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
875 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
876 |
94
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
877 public Document advance( |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
878 String identifier, |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
879 Document target, |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
880 CallMeta callMeta |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
881 ) |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
882 throws ArtifactDatabaseException |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
883 { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
884 // TODO: Handle background tasks |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
885 PersistentArtifact artifact = backend.getArtifact(identifier); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
886 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
887 if (artifact == null) { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
888 throw new ArtifactDatabaseException(NO_SUCH_ARTIFACT); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
889 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
890 |
219
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
891 ArtifactCallContext cc = new ArtifactCallContext( |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
892 ArtifactDatabaseImpl.this, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
893 CallContext.STORE, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
894 callMeta, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
895 artifact); |
48
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
896 |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
897 try { |
292
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
898 Artifact art = artifact.getArtifact(); |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
899 Document res = art.advance(target, cc); |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
900 |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
901 if (postAdvanceHooks != null) { |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
902 for (Hook hook: postAdvanceHooks) { |
294
b530e83acf2e
Adapted the signature of Hook.execute() which now retrieves a Document as third parameter.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
293
diff
changeset
|
903 hook.execute(art, cc, res); |
292
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
904 } |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
905 } |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
906 |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
907 return res; |
48
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
908 } |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
909 finally { |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
910 cc.postCall(); |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
911 } |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
912 } |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
913 |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
914 public Document feed(String identifier, Document data, CallMeta callMeta) |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
915 throws ArtifactDatabaseException |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
916 { |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
917 // TODO: Handle background tasks |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
918 PersistentArtifact artifact = backend.getArtifact(identifier); |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
919 |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
920 if (artifact == null) { |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
921 throw new ArtifactDatabaseException(NO_SUCH_ARTIFACT); |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
922 } |
41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
47
diff
changeset
|
923 |
219
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
924 ArtifactCallContext cc = new ArtifactCallContext( |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
925 ArtifactDatabaseImpl.this, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
926 CallContext.STORE, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
927 callMeta, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
928 artifact); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
929 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
930 try { |
292
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
931 Artifact art = artifact.getArtifact(); |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
932 Document res = art.feed(data, cc); |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
933 |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
934 if (postFeedHooks != null) { |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
935 for (Hook hook: postFeedHooks) { |
294
b530e83acf2e
Adapted the signature of Hook.execute() which now retrieves a Document as third parameter.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
293
diff
changeset
|
936 hook.execute(art, cc, res); |
292
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
937 } |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
938 } |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
939 |
39c0ff00d188
Introduced a hook concept - currently used for 'post-feed' and 'post-advance'.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
284
diff
changeset
|
940 return res; |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
941 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
942 finally { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
943 cc.postCall(); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
944 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
945 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
946 |
94
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
947 public DeferredOutput out( |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
948 String identifier, |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
949 Document format, |
269
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
950 CallMeta callMeta) |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
951 throws ArtifactDatabaseException |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
952 { |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
953 return out(identifier, null, format, callMeta); |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
954 } |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
955 |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
956 public DeferredOutput out( |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
957 String identifier, |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
958 String type, |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
959 Document format, |
94
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
960 CallMeta callMeta |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
961 ) |
5332d956729c
Brought all line lengths of non Javadoc lines below 80.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
92
diff
changeset
|
962 throws ArtifactDatabaseException |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
963 { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
964 // TODO: Handle background tasks |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
965 PersistentArtifact artifact = backend.getArtifact(identifier); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
966 |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
967 if (artifact == null) { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
968 throw new ArtifactDatabaseException(NO_SUCH_ARTIFACT); |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
969 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
26
diff
changeset
|
970 |
269
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
971 return new DeferredOutputImpl(artifact, type, format, callMeta); |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
972 } |
68
541814404822
Added interfaces for XML processing services. TODO: Implement them!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
66
diff
changeset
|
973 |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
974 public Document exportArtifact(String artifact, CallMeta callMeta) |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
975 throws ArtifactDatabaseException |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
976 { |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
977 final String [] factoryName = new String[1]; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
978 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
979 byte [] bytes = (byte [])backend.loadArtifact( |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
980 artifact, |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
981 new Backend.ArtifactLoader() { |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
982 public Object load( |
86
b2e0cb83631c
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
84
diff
changeset
|
983 ArtifactFactory factory, |
84
72e2dd4feb31
Added the time to live of an artifact to the CallContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
82
diff
changeset
|
984 Long ttl, |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
985 byte [] bytes, |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
986 int id |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
987 ) { |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
988 factoryName[0] = factory.getName(); |
82
efe752c4f8b2
Call cleanup method to remove special data stored by an 'out'-target before exporting an artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
81
diff
changeset
|
989 |
efe752c4f8b2
Call cleanup method to remove special data stored by an 'out'-target before exporting an artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
81
diff
changeset
|
990 ArtifactSerializer serializer = factory.getSerializer(); |
efe752c4f8b2
Call cleanup method to remove special data stored by an 'out'-target before exporting an artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
81
diff
changeset
|
991 |
efe752c4f8b2
Call cleanup method to remove special data stored by an 'out'-target before exporting an artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
81
diff
changeset
|
992 Artifact artifact = serializer.fromBytes(bytes); |
efe752c4f8b2
Call cleanup method to remove special data stored by an 'out'-target before exporting an artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
81
diff
changeset
|
993 artifact.cleanup(context); |
efe752c4f8b2
Call cleanup method to remove special data stored by an 'out'-target before exporting an artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
81
diff
changeset
|
994 |
efe752c4f8b2
Call cleanup method to remove special data stored by an 'out'-target before exporting an artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
81
diff
changeset
|
995 return serializer.toBytes(artifact); |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
996 } |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
997 }); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
998 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
999 if (bytes == null) { |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1000 throw new ArtifactDatabaseException(NO_SUCH_ARTIFACT); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1001 } |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1002 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1003 return createExportDocument( |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1004 factoryName[0], |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1005 bytes, |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1006 exportSecret); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1007 } |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1008 |
92
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
1009 /** |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
1010 * Creates an exteral XML representation of an artifact. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
1011 * @param factoryName The name of the factory which is responsible |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
1012 * for the serialized artifact. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
1013 * @param artifact The byte data of the artifact itself. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
1014 * @param secret The signing secret. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
1015 * @return An XML document containing the external representation |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
1016 * of the artifact. |
73d0ebae81d7
Last bunch of javadoc
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
1017 */ |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1018 protected static Document createExportDocument( |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1019 String factoryName, |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1020 byte [] artifact, |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1021 byte [] secret |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1022 ) { |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1023 Document document = XMLUtils.newDocument(); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1024 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1025 MessageDigest md; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1026 try { |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1027 md = MessageDigest.getInstance(DIGEST_ALGORITHM); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1028 } |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1029 catch (NoSuchAlgorithmException nsae) { |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1030 logger.error(nsae.getLocalizedMessage(), nsae); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1031 return document; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1032 } |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1033 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1034 md.update(artifact); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1035 md.update(secret); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1036 |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1037 String checksum = Hex.encodeHexString(md.digest()); |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1038 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1039 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1040 document, |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1041 ArtifactNamespaceContext.NAMESPACE_URI, |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1042 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1043 |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1044 Element root = ec.create("action"); |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1045 document.appendChild(root); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1046 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1047 Element type = ec.create("type"); |
183
9b8923043a38
Repaired the namespaces of the xml element attributes in the collecton context of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
176
diff
changeset
|
1048 ec.addAttr(type, "name", "export", true); |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1049 root.appendChild(type); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1050 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1051 Element data = ec.create("data"); |
183
9b8923043a38
Repaired the namespaces of the xml element attributes in the collecton context of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
176
diff
changeset
|
1052 ec.addAttr(data, "checksum", checksum, true); |
9b8923043a38
Repaired the namespaces of the xml element attributes in the collecton context of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
176
diff
changeset
|
1053 ec.addAttr(data, "factory", factoryName, true); |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1054 data.setTextContent(Base64.encodeBase64String(artifact)); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1055 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1056 root.appendChild(data); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1057 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1058 return document; |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1059 } |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1060 |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1061 public Document importArtifact(Document input, CallMeta callMeta) |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1062 throws ArtifactDatabaseException |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1063 { |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1064 String factoryName = XMLUtils.xpathString( |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1065 input, |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1066 XPATH_IMPORT_FACTORY, |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1067 ArtifactNamespaceContext.INSTANCE); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1068 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1069 ArtifactFactory factory; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1070 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1071 if (factoryName == null |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1072 || (factoryName = factoryName.trim()).length() == 0 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1073 || (factory = getArtifactFactory(factoryName)) == null) { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1074 throw new ArtifactDatabaseException(NO_SUCH_FACTORY); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1075 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1076 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1077 String checksumString = XMLUtils.xpathString( |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1078 input, |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1079 XPATH_IMPORT_CHECKSUM, |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1080 ArtifactNamespaceContext.INSTANCE); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1081 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1082 byte [] checksum; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1083 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1084 if (checksumString == null |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1085 || (checksumString = checksumString.trim()).length() == 0 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1086 || (checksum = StringUtils.decodeHex(checksumString)) == null |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1087 ) { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1088 throw new ArtifactDatabaseException(INVALID_CHECKSUM); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1089 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1090 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1091 checksumString = null; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1092 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1093 String dataString = XMLUtils.xpathString( |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1094 input, |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1095 XPATH_IMPORT_DATA, |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1096 ArtifactNamespaceContext.INSTANCE); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1097 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1098 if (dataString == null |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1099 || (dataString = dataString.trim()).length() == 0) { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1100 throw new ArtifactDatabaseException(NO_DATA); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1101 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1102 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1103 byte [] data = Base64.decodeBase64(dataString); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1104 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1105 dataString = null; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1106 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1107 MessageDigest md; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1108 try { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1109 md = MessageDigest.getInstance(DIGEST_ALGORITHM); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1110 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1111 catch (NoSuchAlgorithmException nsae) { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1112 logger.error(nsae.getLocalizedMessage(), nsae); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1113 return XMLUtils.newDocument(); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1114 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1115 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1116 md.update(data); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1117 md.update(exportSecret); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1118 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1119 byte [] digest = md.digest(); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1120 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1121 if (!Arrays.equals(checksum, digest)) { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1122 throw new ArtifactDatabaseException(CHECKSUM_MISMATCH); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1123 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1124 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1125 ArtifactSerializer serializer = factory.getSerializer(); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1126 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1127 Artifact artifact = serializer.fromBytes(data); data = null; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1128 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1129 if (artifact == null) { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1130 throw new ArtifactDatabaseException(INVALID_ARTIFACT); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1131 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1132 |
81
e9c80fdfee13
Set new identifiers on artifacts after an artifact import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
80
diff
changeset
|
1133 artifact.setIdentifier(backend.newIdentifier()); |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1134 PersistentArtifact persistentArtifact; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1135 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1136 try { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1137 persistentArtifact = backend.storeOrReplace( |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1138 artifact, |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1139 factory, |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1140 factory.timeToLiveUntouched(artifact, context)); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1141 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1142 catch (Exception e) { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1143 logger.error(e.getLocalizedMessage(), e); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1144 throw new ArtifactDatabaseException(CREATION_FAILED); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1145 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1146 |
219
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1147 ArtifactCallContext cc = new ArtifactCallContext( |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1148 ArtifactDatabaseImpl.this, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1149 CallContext.NOTHING, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1150 callMeta, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1151 persistentArtifact); |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1152 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1153 try { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1154 return artifact.describe(input, cc); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1155 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1156 finally { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1157 cc.postCall(); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
1158 } |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1159 } |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1160 |
68
541814404822
Added interfaces for XML processing services. TODO: Implement them!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
66
diff
changeset
|
1161 public String [][] serviceNamesAndDescriptions() { |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
1162 return serviceNamesAndDescription; |
68
541814404822
Added interfaces for XML processing services. TODO: Implement them!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
66
diff
changeset
|
1163 } |
541814404822
Added interfaces for XML processing services. TODO: Implement them!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
66
diff
changeset
|
1164 |
380
9798e4d83681
Services are now able to return more than just XML documents.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
348
diff
changeset
|
1165 public Service.Output process( |
86
b2e0cb83631c
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
84
diff
changeset
|
1166 String serviceName, |
70
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
1167 Document input, |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
1168 CallMeta callMeta |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
1169 ) |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
1170 throws ArtifactDatabaseException |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
1171 { |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
1172 Service service = (Service)name2service.get(serviceName); |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
1173 |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
1174 if (service == null) { |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
1175 throw new ArtifactDatabaseException(NO_SUCH_SERVICE); |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
1176 } |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
1177 |
ce488c1d3fc4
Serve services over artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
68
diff
changeset
|
1178 return service.process(input, context, callMeta); |
68
541814404822
Added interfaces for XML processing services. TODO: Implement them!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
66
diff
changeset
|
1179 } |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1180 |
118
0e0c27bc0b90
Added creation time to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
117
diff
changeset
|
1181 // User API |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1182 |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1183 public Document listUsers(CallMeta callMeta) |
150
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1184 throws ArtifactDatabaseException |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1185 { |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1186 UserFactory factory = getUserFactory(); |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1187 |
150
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1188 if (factory == null) { |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1189 throw new ArtifactDatabaseException(NO_SUCH_FACTORY); |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1190 } |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1191 |
157
6e6965873a48
Simplified creation of users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
155
diff
changeset
|
1192 User [] users = backend.getUsers(factory, context); |
150
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1193 |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1194 if (users != null) { |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1195 logger.debug(users.length + " users found in the backend."); |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1196 } |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1197 |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1198 Document result = XMLUtils.newDocument(); |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1199 |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1200 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1201 result, |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1202 ArtifactNamespaceContext.NAMESPACE_URI, |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1203 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1204 |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1205 Element root = ec.create("users"); |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1206 result.appendChild(root); |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1207 |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1208 for (User user: users) { |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1209 Element ue = ec.create("user"); |
183
9b8923043a38
Repaired the namespaces of the xml element attributes in the collecton context of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
176
diff
changeset
|
1210 ec.addAttr(ue, "uuid", user.identifier(), true); |
9b8923043a38
Repaired the namespaces of the xml element attributes in the collecton context of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
176
diff
changeset
|
1211 ec.addAttr(ue, "name", user.getName(), true); |
150
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1212 |
160
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1213 Document role = user.getRole(); |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1214 |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1215 if (role != null) { |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1216 ue.appendChild(result.importNode(role.getFirstChild(), true)); |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1217 } |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1218 |
150
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1219 root.appendChild(ue); |
160
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1220 |
150
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1221 } |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1222 |
78a27a6b3f1f
Implemented the listUsers() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
149
diff
changeset
|
1223 return result; |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1224 } |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1225 |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1226 public Document createUser(Document data, CallMeta callMeta) |
149
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1227 throws ArtifactDatabaseException |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1228 { |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1229 UserFactory factory = getUserFactory(); |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1230 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1231 if (factory == null) { |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1232 throw new ArtifactDatabaseException(NO_SUCH_FACTORY); |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1233 } |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1234 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1235 String name = XMLUtils.xpathString( |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1236 data, XPATH_USERNAME, ArtifactNamespaceContext.INSTANCE); |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1237 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1238 if (name == null || name.length() == 0) { |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1239 logger.warn("User without username not accepted!"); |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1240 throw new ArtifactDatabaseException(NO_USERNAME); |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1241 } |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1242 |
160
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1243 Node tmp = (Node) XMLUtils.xpath( |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1244 data, |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1245 XPATH_USERROLE, |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1246 XPathConstants.NODE, |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1247 ArtifactNamespaceContext.INSTANCE); |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1248 |
149
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1249 Document role = XMLUtils.newDocument(); |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1250 |
160
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1251 if (tmp != null) { |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1252 Node clone = role.importNode(tmp, true); |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1253 role.appendChild(clone); |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1254 } |
dc687827439f
Enabled the artifact database to store and load roles of users.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1255 |
149
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1256 User newUser = null; |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1257 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1258 try { |
157
6e6965873a48
Simplified creation of users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
155
diff
changeset
|
1259 newUser = backend.createUser(name, role, userFactory, context); |
149
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1260 } |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1261 catch (Exception e) { |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1262 logger.error(e.getMessage(), e); |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1263 throw new ArtifactDatabaseException(USER_CREATION_FAILED); |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1264 } |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1265 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1266 Document result = XMLUtils.newDocument(); |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1267 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1268 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1269 result, |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1270 ArtifactNamespaceContext.NAMESPACE_URI, |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1271 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1272 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1273 Element root = ec.create("result"); |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1274 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1275 if (newUser != null) { |
153
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1276 root.setTextContent(OPERATION_SUCCESSFUL); |
149
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1277 } |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1278 else { |
153
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1279 root.setTextContent(OPERATION_FAILURE); |
149
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1280 } |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1281 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1282 result.appendChild(root); |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1283 |
c69abd07bdd0
Implemented the createUser() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
132
diff
changeset
|
1284 return result; |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1285 } |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1286 |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1287 public Document deleteUser(String userId, CallMeta callMeta) |
152
7e5619115d5b
Implemented the deleteUser() method in the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
150
diff
changeset
|
1288 throws ArtifactDatabaseException |
7e5619115d5b
Implemented the deleteUser() method in the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
150
diff
changeset
|
1289 { |
153
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1290 logger.debug("Delete user: " + userId); |
152
7e5619115d5b
Implemented the deleteUser() method in the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
150
diff
changeset
|
1291 |
153
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1292 Document result = XMLUtils.newDocument(); |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1293 |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1294 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1295 result, |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1296 ArtifactNamespaceContext.NAMESPACE_URI, |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1297 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1298 |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1299 Element root = ec.create("result"); |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1300 result.appendChild(root); |
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1301 |
157
6e6965873a48
Simplified creation of users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
155
diff
changeset
|
1302 boolean success = backend.deleteUser(userId); |
154
1a72f08ce8d7
Propagate delete user errors correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
153
diff
changeset
|
1303 |
1a72f08ce8d7
Propagate delete user errors correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
153
diff
changeset
|
1304 root.setTextContent(success ? OPERATION_SUCCESSFUL: OPERATION_FAILURE); |
152
7e5619115d5b
Implemented the deleteUser() method in the artifact server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
150
diff
changeset
|
1305 |
153
bf596b83d984
Adjusted method signatures for deleting users in the UserFactory and in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
152
diff
changeset
|
1306 return result; |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1307 } |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1308 |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1309 |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1310 // Collection API |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1311 |
343
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1312 public Document getCollectionsMasterArtifact( |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1313 String collectionId, |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1314 CallMeta meta) |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1315 throws ArtifactDatabaseException |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1316 { |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1317 Document result = XMLUtils.newDocument(); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1318 String masterUUID = backend.getMasterArtifact(collectionId); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1319 |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1320 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1321 result, |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1322 ArtifactNamespaceContext.NAMESPACE_URI, |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1323 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1324 |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1325 ArtifactCollectionFactory acf = getArtifactCollectionFactory(); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1326 |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1327 if (acf == null) { |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1328 throw new ArtifactDatabaseException(NO_SUCH_FACTORY); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1329 } |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1330 |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1331 UserFactory uf = getUserFactory(); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1332 if (uf == null) { |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1333 throw new ArtifactDatabaseException(NO_SUCH_FACTORY); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1334 } |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1335 |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1336 ArtifactCollection c = backend.getCollection( |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1337 collectionId, acf, uf, context); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1338 |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1339 if (c == null) { |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1340 logger.warn("No collection found with identifier: " + collectionId); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1341 throw new ArtifactDatabaseException(NO_SUCH_COLLECTION); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1342 } |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1343 |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1344 Element root = ec.create("artifact-collection"); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1345 ec.addAttr(root, "name", c.getName(), true); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1346 ec.addAttr(root, "uuid", c.identifier(), true); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1347 ec.addAttr(root, "ttl", String.valueOf(c.getTTL()), true); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1348 |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1349 Date creationTime = c.getCreationTime(); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1350 String creation = creationTime != null |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1351 ? Long.toString(creationTime.getTime()) |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1352 : ""; |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1353 |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1354 ec.addAttr(root, "creation", creation, true); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1355 result.appendChild(root); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1356 |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1357 if (masterUUID == null || masterUUID.length() == 0) { |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1358 logger.debug("No master for the collection existing."); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1359 return result; |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1360 } |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1361 |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1362 Element master = ec.create("artifact"); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1363 ec.addAttr(master, "uuid", masterUUID, true); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1364 |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1365 root.appendChild(master); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1366 |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1367 return result; |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1368 } |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
334
diff
changeset
|
1369 |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1370 public Document listCollections(String userId, CallMeta callMeta) |
164
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1371 throws ArtifactDatabaseException |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1372 { |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1373 ArtifactCollectionFactory acf = getArtifactCollectionFactory(); |
167
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
166
diff
changeset
|
1374 UserFactory uf = getUserFactory(); |
164
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1375 |
167
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
166
diff
changeset
|
1376 if (acf == null || uf == null) { |
164
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1377 throw new ArtifactDatabaseException(NO_SUCH_FACTORY); |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1378 } |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1379 |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1380 logger.debug("Fetch the list of collection for user: " + userId); |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1381 |
167
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
166
diff
changeset
|
1382 ArtifactCollection [] ac = backend.listCollections( |
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
166
diff
changeset
|
1383 userId, |
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
166
diff
changeset
|
1384 null, // XXX: fetch from REST |
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
166
diff
changeset
|
1385 acf, uf, |
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
166
diff
changeset
|
1386 context); |
164
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1387 |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1388 Document result = XMLUtils.newDocument(); |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1389 |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1390 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1391 result, |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1392 ArtifactNamespaceContext.NAMESPACE_URI, |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1393 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1394 |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1395 Element root = ec.create("artifact-collections"); |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1396 result.appendChild(root); |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1397 |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1398 if (ac == null || ac.length == 0) { |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1399 logger.debug("No collections for the user existing."); |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1400 |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1401 return result; |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1402 } |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1403 |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1404 logger.debug("Found " + ac.length + " collections of the user."); |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1405 |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1406 for (ArtifactCollection c: ac) { |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1407 Element collection = ec.create("artifact-collection"); |
183
9b8923043a38
Repaired the namespaces of the xml element attributes in the collecton context of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
176
diff
changeset
|
1408 ec.addAttr(collection, "name", c.getName(), true); |
9b8923043a38
Repaired the namespaces of the xml element attributes in the collecton context of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
176
diff
changeset
|
1409 ec.addAttr(collection, "uuid", c.identifier(), true); |
282
d15f09d5b89d
Put the ttl of each collection into the document that contains the user collections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
275
diff
changeset
|
1410 ec.addAttr(collection, "ttl", String.valueOf(c.getTTL()), true); |
168
f70977cf2faf
Avoid Nullpointer exception in listCollections() when no creation time of the collection is returned.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
167
diff
changeset
|
1411 |
f70977cf2faf
Avoid Nullpointer exception in listCollections() when no creation time of the collection is returned.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
167
diff
changeset
|
1412 Date creationTime = c.getCreationTime(); |
f70977cf2faf
Avoid Nullpointer exception in listCollections() when no creation time of the collection is returned.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
167
diff
changeset
|
1413 String creation = creationTime != null |
f70977cf2faf
Avoid Nullpointer exception in listCollections() when no creation time of the collection is returned.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
167
diff
changeset
|
1414 ? Long.toString(creationTime.getTime()) |
f70977cf2faf
Avoid Nullpointer exception in listCollections() when no creation time of the collection is returned.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
167
diff
changeset
|
1415 : ""; |
f70977cf2faf
Avoid Nullpointer exception in listCollections() when no creation time of the collection is returned.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
167
diff
changeset
|
1416 |
183
9b8923043a38
Repaired the namespaces of the xml element attributes in the collecton context of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
176
diff
changeset
|
1417 ec.addAttr(collection, "creation", creation, true); |
164
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1418 |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1419 root.appendChild(collection); |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1420 } |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1421 |
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
162
diff
changeset
|
1422 return result; |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1423 } |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1424 |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1425 public Document createCollection(String ownerId, Document data, |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1426 CallMeta callMeta) |
158
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1427 throws ArtifactDatabaseException |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1428 { |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1429 ArtifactCollectionFactory acf = getArtifactCollectionFactory(); |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1430 |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1431 if (acf == null) { |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1432 throw new ArtifactDatabaseException(NO_SUCH_FACTORY); |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1433 } |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1434 |
162
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1435 String name = XMLUtils.xpathString( |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1436 data, XPATH_COLLECTION_NAME, ArtifactNamespaceContext.INSTANCE); |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1437 |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1438 logger.debug("Create new collection with name: " + name); |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1439 |
254
6cf9560bd249
Bugfix: do not write empty xml documents into database any longer - caused exceptions while serialization/deserialization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1440 Document attr = null; |
198
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
1441 |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
1442 Node attrNode = (Node) XMLUtils.xpath( |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
1443 data, |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
1444 XPATH_COLLECTION_ATTRIBUTE, |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
1445 XPathConstants.NODE, |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
1446 ArtifactNamespaceContext.INSTANCE); |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
1447 |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
1448 if (attrNode != null) { |
254
6cf9560bd249
Bugfix: do not write empty xml documents into database any longer - caused exceptions while serialization/deserialization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1449 attr = XMLUtils.newDocument(); |
198
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
1450 attr.appendChild(attr.importNode(attrNode, true)); |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
1451 } |
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
1452 |
158
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1453 ArtifactCollection ac = backend.createCollection( |
198
6370369412e9
Parse the collection attribute of the incoming document of a create-collection call and store this in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
196
diff
changeset
|
1454 ownerId, name, acf, attr, context); |
158
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1455 |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1456 if (ac == null) { |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1457 throw new ArtifactDatabaseException(COLLECTION_CREATION_FAILED); |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1458 } |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1459 |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1460 Document result = XMLUtils.newDocument(); |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1461 |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1462 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1463 result, |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1464 ArtifactNamespaceContext.NAMESPACE_URI, |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1465 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1466 |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1467 Element root = ec.create("result"); |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1468 result.appendChild(root); |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1469 |
169
2f575d594fdb
The document returned by the createCollection() method will now contain the uuid of the created collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
168
diff
changeset
|
1470 Element acElement = ec.create("artifact-collection"); |
183
9b8923043a38
Repaired the namespaces of the xml element attributes in the collecton context of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
176
diff
changeset
|
1471 ec.addAttr(acElement, "uuid", ac.identifier(), true); |
284
084d68974d4a
The ttl is now contained in the document that is returned after a collection has been created.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
282
diff
changeset
|
1472 ec.addAttr(acElement, "ttl", String.valueOf(ac.getTTL()), true); |
169
2f575d594fdb
The document returned by the createCollection() method will now contain the uuid of the created collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
168
diff
changeset
|
1473 |
2f575d594fdb
The document returned by the createCollection() method will now contain the uuid of the created collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
168
diff
changeset
|
1474 root.appendChild(acElement); |
158
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1475 |
d718a4d55662
Implemented the createCollection() method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
157
diff
changeset
|
1476 return result; |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1477 } |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1478 |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1479 public Document deleteCollection(String collectionId, CallMeta callMeta) |
162
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1480 throws ArtifactDatabaseException |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1481 { |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1482 logger.debug("Delete collection: " + collectionId); |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1483 |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1484 Document result = XMLUtils.newDocument(); |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1485 |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1486 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1487 result, |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1488 ArtifactNamespaceContext.NAMESPACE_URI, |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1489 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1490 |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1491 Element root = ec.create("result"); |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1492 result.appendChild(root); |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1493 |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1494 boolean success = backend.deleteCollection(collectionId); |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1495 |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1496 root.setTextContent(success ? OPERATION_SUCCESSFUL: OPERATION_FAILURE); |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1497 |
4ac91485b4e0
Implemented the deleteCollection() interface method in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
160
diff
changeset
|
1498 return result; |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1499 } |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1500 |
196
171b6200d26d
Added a describe() action for collections - the implementation in the artifact server is currently just a stub that throws an not implemented exception.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
192
diff
changeset
|
1501 public Document describeCollection(String collectionId, CallMeta callMeta) |
171b6200d26d
Added a describe() action for collections - the implementation in the artifact server is currently just a stub that throws an not implemented exception.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
192
diff
changeset
|
1502 throws ArtifactDatabaseException |
171b6200d26d
Added a describe() action for collections - the implementation in the artifact server is currently just a stub that throws an not implemented exception.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
192
diff
changeset
|
1503 { |
171b6200d26d
Added a describe() action for collections - the implementation in the artifact server is currently just a stub that throws an not implemented exception.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
192
diff
changeset
|
1504 logger.debug("Describe collection: " + collectionId); |
219
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1505 ArtifactCollectionFactory acf = getArtifactCollectionFactory(); |
196
171b6200d26d
Added a describe() action for collections - the implementation in the artifact server is currently just a stub that throws an not implemented exception.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
192
diff
changeset
|
1506 |
219
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1507 if (acf == null) { |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1508 throw new ArtifactDatabaseException(NO_SUCH_FACTORY); |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1509 } |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1510 |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1511 UserFactory uf = getUserFactory(); |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1512 if (uf == null) { |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1513 throw new ArtifactDatabaseException(NO_SUCH_FACTORY); |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1514 } |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1515 |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1516 ArtifactCollection c = backend.getCollection( |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1517 collectionId, acf, uf, context); |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1518 |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1519 if (c == null) { |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1520 logger.warn("No collection found with identifier: " + collectionId); |
222
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1521 throw new ArtifactDatabaseException(NO_SUCH_COLLECTION); |
219
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1522 } |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1523 |
246
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1524 CollectionCallContext cc = new CollectionCallContext( |
219
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1525 ArtifactDatabaseImpl.this, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1526 CallContext.NOTHING, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1527 callMeta, |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1528 c); |
cabe4c02ab64
Refactored the CallContextImpl - there are two concrete classes for Artifacts and ArtifactCollections now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
207
diff
changeset
|
1529 |
246
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1530 try { |
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1531 return c.describe(cc); |
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1532 } |
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1533 finally { |
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1534 cc.postCall(); |
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1535 } |
253
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1536 } |
246
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1537 |
253
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1538 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1539 public Document getCollectionAttribute(String collectionId, CallMeta meta) |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1540 throws ArtifactDatabaseException |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1541 { |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1542 logger.debug("Fetch collection attribute for: " + collectionId); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1543 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1544 return backend.getCollectionAttribute(collectionId); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1545 } |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1546 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1547 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1548 public Document setCollectionAttribute( |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1549 String collectionId, |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1550 CallMeta meta, |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1551 Document attribute) |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1552 throws ArtifactDatabaseException |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1553 { |
268
4edaf3073109
Repaired the setting of a new attribute for a Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
254
diff
changeset
|
1554 logger.debug("Set new attribute for the collection: " + collectionId); |
253
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1555 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1556 Document result = XMLUtils.newDocument(); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1557 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1558 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1559 result, |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1560 ArtifactNamespaceContext.NAMESPACE_URI, |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1561 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1562 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1563 Element root = ec.create("result"); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1564 result.appendChild(root); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1565 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1566 boolean success = backend.setCollectionAttribute( |
268
4edaf3073109
Repaired the setting of a new attribute for a Collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
254
diff
changeset
|
1567 collectionId, attribute); |
253
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1568 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1569 root.setTextContent(success ? OPERATION_SUCCESSFUL: OPERATION_FAILURE); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1570 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1571 return result; |
196
171b6200d26d
Added a describe() action for collections - the implementation in the artifact server is currently just a stub that throws an not implemented exception.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
192
diff
changeset
|
1572 } |
171b6200d26d
Added a describe() action for collections - the implementation in the artifact server is currently just a stub that throws an not implemented exception.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
192
diff
changeset
|
1573 |
252
6de74b0b878e
Changed the method names to get and set the attributes of collection items.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
250
diff
changeset
|
1574 public Document getCollectionItemAttribute(String collectionId, String artifactId, |
192
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1575 CallMeta callMeta) throws ArtifactDatabaseException |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1576 { |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1577 logger.debug("Fetch the attribute for the artifact: " + artifactId); |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1578 |
252
6de74b0b878e
Changed the method names to get and set the attributes of collection items.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
250
diff
changeset
|
1579 return backend.getCollectionItemAttribute(collectionId, artifactId); |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1580 } |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1581 |
252
6de74b0b878e
Changed the method names to get and set the attributes of collection items.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
250
diff
changeset
|
1582 public Document setCollectionItemAttribute(String collectionId, String artifactId, |
192
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1583 Document source, CallMeta callMeta) |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1584 throws ArtifactDatabaseException |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1585 { |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1586 logger.debug("Set the attribute for the artifact: " + artifactId); |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1587 |
254
6cf9560bd249
Bugfix: do not write empty xml documents into database any longer - caused exceptions while serialization/deserialization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1588 Document attribute = null; |
192
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1589 |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1590 Node attr = (Node) XMLUtils.xpath( |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1591 source, |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1592 XPATH_COLLECTION_ITEM_ATTRIBUTE, |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1593 XPathConstants.NODE, |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1594 ArtifactNamespaceContext.INSTANCE); |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1595 |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1596 if (attr != null) { |
254
6cf9560bd249
Bugfix: do not write empty xml documents into database any longer - caused exceptions while serialization/deserialization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1597 attribute = XMLUtils.newDocument(); |
192
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1598 attribute.appendChild(attribute.importNode(attr, true)); |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1599 } |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1600 |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1601 Document result = XMLUtils.newDocument(); |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1602 |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1603 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1604 result, |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1605 ArtifactNamespaceContext.NAMESPACE_URI, |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1606 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1607 |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1608 Element root = ec.create("result"); |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1609 result.appendChild(root); |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1610 |
252
6de74b0b878e
Changed the method names to get and set the attributes of collection items.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
250
diff
changeset
|
1611 boolean success = backend.setCollectionItemAttribute( |
192
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1612 collectionId, artifactId, attribute); |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1613 |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1614 root.setTextContent(success ? OPERATION_SUCCESSFUL: OPERATION_FAILURE); |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1615 |
dad6071c9072
Implemented the getCollectionAttribute() and setCollectionAttribute() methods.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
190
diff
changeset
|
1616 return result; |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1617 } |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1618 |
189
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1619 public Document addCollectionArtifact( |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1620 String collectionId, |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1621 String artifactId, |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1622 Document input, |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1623 CallMeta callMeta) |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1624 throws ArtifactDatabaseException |
166
89db80380f7f
Implemented the method addCollectionArtifact() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
164
diff
changeset
|
1625 { |
89db80380f7f
Implemented the method addCollectionArtifact() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
164
diff
changeset
|
1626 logger.debug( |
89db80380f7f
Implemented the method addCollectionArtifact() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
164
diff
changeset
|
1627 "Add artifact '" + artifactId + "' collection '" +collectionId+"'"); |
89db80380f7f
Implemented the method addCollectionArtifact() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
164
diff
changeset
|
1628 |
189
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1629 Document attr = XMLUtils.newDocument(); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1630 |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1631 Node attrNode = (Node) XMLUtils.xpath( |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1632 input, |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1633 XPATH_COLLECTION_ITEM_ATTRIBUTE, |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1634 XPathConstants.NODE, |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1635 ArtifactNamespaceContext.INSTANCE); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1636 |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1637 if (attrNode != null) { |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1638 attr.appendChild(attr.importNode(attrNode, true)); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1639 } |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1640 |
166
89db80380f7f
Implemented the method addCollectionArtifact() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
164
diff
changeset
|
1641 boolean success = backend.addCollectionArtifact( |
176
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
169
diff
changeset
|
1642 collectionId, |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
169
diff
changeset
|
1643 artifactId, |
189
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1644 attr); |
166
89db80380f7f
Implemented the method addCollectionArtifact() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
164
diff
changeset
|
1645 |
222
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1646 if (!success) { |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1647 Document result = XMLUtils.newDocument(); |
166
89db80380f7f
Implemented the method addCollectionArtifact() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
164
diff
changeset
|
1648 |
222
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1649 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1650 result, |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1651 ArtifactNamespaceContext.NAMESPACE_URI, |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1652 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
166
89db80380f7f
Implemented the method addCollectionArtifact() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
164
diff
changeset
|
1653 |
222
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1654 Element root = ec.create("result"); |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1655 result.appendChild(root); |
166
89db80380f7f
Implemented the method addCollectionArtifact() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
164
diff
changeset
|
1656 |
222
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1657 root.setTextContent(OPERATION_FAILURE); |
166
89db80380f7f
Implemented the method addCollectionArtifact() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
164
diff
changeset
|
1658 |
222
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1659 return result; |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1660 } |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1661 |
98695dc6d94d
The operation that adds an artifact to an artifact collection will now return the DESCRIBE document of the artifact collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
219
diff
changeset
|
1662 return describeCollection(collectionId, callMeta); |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1663 } |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1664 |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1665 public Document removeCollectionArtifact(String collectionId, String artifactId, |
190
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1666 CallMeta callMeta) throws ArtifactDatabaseException |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1667 { |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1668 logger.debug( |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1669 "Remove artifact '" + artifactId + "' from collection '" + |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1670 collectionId + "'"); |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1671 |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1672 Document attr = XMLUtils.newDocument(); |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1673 |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1674 boolean success = backend.removeCollectionArtifact( |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1675 collectionId, |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1676 artifactId); |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1677 |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1678 Document result = XMLUtils.newDocument(); |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1679 |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1680 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1681 result, |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1682 ArtifactNamespaceContext.NAMESPACE_URI, |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1683 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1684 |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1685 Element root = ec.create("result"); |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1686 result.appendChild(root); |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1687 |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1688 root.setTextContent(success ? OPERATION_SUCCESSFUL: OPERATION_FAILURE); |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1689 |
7acf4a325bfe
Implemented removeCollectionArtifact() method of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
189
diff
changeset
|
1690 return result; |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1691 } |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1692 |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1693 public Document listCollectionArtifacts(String collectionId, |
189
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1694 CallMeta callMeta) throws ArtifactDatabaseException |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1695 { |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1696 CollectionItem[] items = backend.listCollectionArtifacts(collectionId); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1697 |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1698 Document result = XMLUtils.newDocument(); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1699 |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1700 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1701 result, |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1702 ArtifactNamespaceContext.NAMESPACE_URI, |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1703 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1704 |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1705 Element root = ec.create("result"); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1706 Element ac = ec.create("artifact-collection"); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1707 ec.addAttr(ac, "uuid", collectionId, true); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1708 |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1709 for (CollectionItem item: items) { |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1710 Element i = ec.create("collection-item"); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1711 Element attr = ec.create("attribute"); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1712 ec.addAttr(i, "uuid", item.getArtifactIdentifier(), true); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1713 |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1714 Document attribute = item.getAttribute(); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1715 if (attribute != null) { |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1716 Node firstChild = attribute.getFirstChild(); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1717 attr.appendChild(result.importNode(firstChild, true)); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1718 } |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1719 else { |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1720 logger.debug("No attributes for the collection item!"); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1721 } |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1722 |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1723 i.appendChild(attr); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1724 ac.appendChild(i); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1725 } |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1726 |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1727 root.appendChild(ac); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1728 result.appendChild(root); |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1729 |
fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
183
diff
changeset
|
1730 return result; |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1731 } |
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1732 |
273
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1733 public Document setCollectionTTL(String uuid, Document doc, CallMeta meta) |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1734 throws ArtifactDatabaseException |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1735 { |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1736 Document result = XMLUtils.newDocument(); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1737 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1738 result, |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1739 ArtifactNamespaceContext.NAMESPACE_URI, |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1740 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1741 |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1742 Element root = ec.create("result"); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1743 result.appendChild(root); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1744 |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1745 String tmp = XMLUtils.xpathString( |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1746 doc, XPATH_COLLECTION_TTL, ArtifactNamespaceContext.INSTANCE); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1747 |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1748 logger.info("Set TTL of artifact collection '" + uuid + "' to: " + tmp); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1749 |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1750 if (tmp == null || tmp.length() == 0) { |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1751 logger.warn("No ttl for this collection specified."); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1752 root.setTextContent(OPERATION_FAILURE); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1753 |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1754 return result; |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1755 } |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1756 |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1757 Long ttl = null; |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1758 if ((tmp = tmp.toUpperCase()).equals("INF")) { |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1759 ttl = null; |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1760 } |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1761 else if (tmp.equals("DEFAULT")) { |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1762 ArtifactCollectionFactory acf = getArtifactCollectionFactory(); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1763 ttl = acf.timeToLiveUntouched(null, context); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1764 } |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1765 else { |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1766 try { |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1767 ttl = Long.valueOf(tmp); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1768 |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1769 if (ttl < 0) { |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1770 throw new NumberFormatException("Negative value."); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1771 } |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1772 } |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1773 catch (NumberFormatException nfe) { |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1774 logger.error("Could not determine TTL", nfe); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1775 root.setTextContent(OPERATION_FAILURE); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1776 return result; |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1777 } |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1778 } |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1779 |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1780 boolean success = backend.setCollectionTTL(uuid, ttl); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1781 root.setTextContent(success ? OPERATION_SUCCESSFUL: OPERATION_FAILURE); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1782 |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1783 return result; |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1784 } |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
269
diff
changeset
|
1785 |
275
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1786 |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1787 public Document setCollectionName(String uuid, Document doc, CallMeta meta) |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1788 throws ArtifactDatabaseException |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1789 { |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1790 Document result = XMLUtils.newDocument(); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1791 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1792 result, |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1793 ArtifactNamespaceContext.NAMESPACE_URI, |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1794 ArtifactNamespaceContext.NAMESPACE_PREFIX); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1795 |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1796 Element root = ec.create("result"); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1797 result.appendChild(root); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1798 |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1799 String name = XMLUtils.xpathString( |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1800 doc, XPATH_COLLECTION_NAME, ArtifactNamespaceContext.INSTANCE); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1801 |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1802 logger.info("Set name of collection '" + uuid + "' to: " + name); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1803 |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1804 if (name == null || name.length() == 0) { |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1805 logger.warn("The new name is emtpy. No new name set!"); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1806 root.setTextContent(OPERATION_FAILURE); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1807 return result; |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1808 } |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1809 |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1810 boolean success = backend.setCollectionName(uuid, name); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1811 root.setTextContent(success ? OPERATION_SUCCESSFUL: OPERATION_FAILURE); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1812 |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1813 return result; |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1814 } |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1815 |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1816 |
269
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1817 public DeferredOutput outCollection( |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1818 String collectionId, |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1819 Document format, |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1820 CallMeta callMeta) |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1821 throws ArtifactDatabaseException |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1822 { |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1823 return outCollection(collectionId, null, format, callMeta); |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1824 } |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1825 |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1826 public DeferredOutput outCollection( |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1827 String collectionId, |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1828 String type, |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1829 Document format, |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1830 CallMeta callMeta) |
d9a99b28a847
Added support for the 'type' parameter of artifacts and collections out() call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
268
diff
changeset
|
1831 throws ArtifactDatabaseException |
228
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1832 { |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1833 ArtifactCollectionFactory acf = getArtifactCollectionFactory(); |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1834 |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1835 if (acf == null) { |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1836 throw new ArtifactDatabaseException(NO_SUCH_FACTORY); |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1837 } |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1838 |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1839 UserFactory uf = getUserFactory(); |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1840 if (uf == null) { |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1841 throw new ArtifactDatabaseException(NO_SUCH_FACTORY); |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1842 } |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1843 |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1844 ArtifactCollection c = backend.getCollection( |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1845 collectionId, acf, uf, context); |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1846 |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1847 if (c == null) { |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1848 logger.warn("No collection found with identifier: " + collectionId); |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1849 throw new ArtifactDatabaseException(NO_SUCH_COLLECTION); |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1850 } |
dd977fb7552e
Added an implementation of DeferredOutput for ArtifactCollections and implemented the out() operation of ArtifactCollections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
222
diff
changeset
|
1851 |
328
1eb7863136f4
ArtifactDatabase: Called context listeners too early.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1852 return new DeferredCollectionOutputImpl(c, type, format, callMeta); |
246
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1853 } |
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1854 |
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1855 protected void initCallContext(CallContext cc) { |
247
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
1856 logger.debug("initCallContext"); |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
1857 if (callContextListener != null) { |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
1858 callContextListener.init(cc); |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
1859 } |
246
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1860 } |
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1861 |
a8a06bbe306c
Added calls to call init/close for call contextes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1862 protected void closeCallContext(CallContext cc) { |
247
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
1863 logger.debug("closeCallContext"); |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
1864 if (callContextListener != null) { |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
1865 callContextListener.close(cc); |
3a1209f214f5
Added instance variable to hold a call context listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
246
diff
changeset
|
1866 } |
117
4d725248f8d1
Added external API for users and collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
100
diff
changeset
|
1867 } |
303
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1868 |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1869 @Override |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1870 public void loadAllArtifacts(ArtifactLoadedCallback callback) |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1871 throws ArtifactDatabaseException |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1872 { |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1873 logger.debug("loadAllArtifacts"); |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1874 boolean success = backend.loadAllArtifacts(callback); |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1875 if (!success) { |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1876 throw new ArtifactDatabaseException(INTERNAL_ERROR); |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1877 } |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1878 } |
304
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1879 |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1880 public void start() { |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1881 if (lifetimeListeners == null || lifetimeListeners.isEmpty()) { |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1882 return; |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1883 } |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1884 |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1885 for (LifetimeListener ltl: lifetimeListeners) { |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1886 ltl.systemUp(context); |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1887 } |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1888 |
308
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
304
diff
changeset
|
1889 logger.debug("all lifetime listeners started"); |
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
304
diff
changeset
|
1890 |
304
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1891 Runtime.getRuntime().addShutdownHook(new Thread() { |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1892 @Override |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1893 public void run() { |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1894 for (LifetimeListener ltl: lifetimeListeners) { |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1895 ltl.systemDown(context); |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1896 } |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1897 } |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1898 }); |
40b64b4aafce
Added lifetime listeners to be called when system is up and is going down.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1899 } |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1900 } |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
75
diff
changeset
|
1901 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |