annotate flys-artifacts/src/main/java/de/intevation/flys/collections/FLYSArtifactCollection.java @ 750:b24be063f8d2

Tagged RELEASE 2.4 of flys-artifacts. flys-artifacts/tags/2.4@2262 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 28 Jun 2011 09:56:52 +0000
parents dc3a8c45349b
children c256061287d7
rev   line source
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.collections;
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
3 import java.io.IOException;
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
4 import java.io.OutputStream;
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
5 import java.util.ArrayList;
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import java.util.Date;
638
9c565eb46f06 Fixed the process of creating and storing the attribute of a collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 412
diff changeset
7 import java.util.HashMap;
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
8 import java.util.List;
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
9 import java.util.Map;
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import javax.xml.xpath.XPathConstants;
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import org.apache.log4j.Logger;
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import org.w3c.dom.Document;
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 import org.w3c.dom.Element;
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import org.w3c.dom.Node;
293
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
18 import org.w3c.dom.NodeList;
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
20 import de.intevation.artifacts.Artifact;
293
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
21 import de.intevation.artifacts.ArtifactDatabase;
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
22 import de.intevation.artifacts.ArtifactDatabaseException;
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 import de.intevation.artifacts.ArtifactNamespaceContext;
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 import de.intevation.artifacts.CallContext;
293
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
25 import de.intevation.artifacts.CallMeta;
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26
350
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
27 import de.intevation.artifacts.common.utils.ClientProtocolUtils;
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 import de.intevation.artifacts.common.utils.XMLUtils;
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
30 import de.intevation.artifactdatabase.Backend;
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
31 import de.intevation.artifactdatabase.Backend.PersistentArtifact;
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 import de.intevation.artifactdatabase.DefaultArtifactCollection;
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
34 import de.intevation.flys.artifacts.context.FLYSContext;
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
35 import de.intevation.flys.artifacts.model.ManagedFacet;
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
36 import de.intevation.flys.exports.OutGenerator;
350
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
37 import de.intevation.flys.themes.Theme;
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
38 import de.intevation.flys.themes.ThemeFactory;
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
39
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 /**
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 */
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 public class FLYSArtifactCollection extends DefaultArtifactCollection {
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 /** The logger used in this class.*/
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 private static Logger log = Logger.getLogger(FLYSArtifactCollection.class);
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 /** Constant XPath that points to the outputmodes of an artifact.*/
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 public static final String XPATH_ARTIFACT_OUTPUTMODES =
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 "/art:result/art:outputmodes";
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53
293
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
54 public static final String XPATH_COLLECTION_ITEMS =
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
55 "/art:result/art:artifact-collection/art:collection-item";
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
56
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
57 public static final String XPATH_OUT_NAME = "/art:action/@art:name";
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
58
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
59 public static final String XPATH_OUT_TYPE = "/art:action/@art:type";
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
60
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
61
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 @Override
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 public Document describe(CallContext context) {
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 log.debug("FLYSArtifactCollection.describe: " + identifier);
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 Document doc = XMLUtils.newDocument();
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 doc,
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 ArtifactNamespaceContext.NAMESPACE_URI,
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 ArtifactNamespaceContext.NAMESPACE_PREFIX);
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 Date creationTime = getCreationTime();
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 String creation = creationTime != null
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 ? Long.toString(creationTime.getTime())
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 : "";
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 Element collection = ec.create("artifact-collection");
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 Element artifacts = ec.create("artifacts");
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 ec.addAttr(collection, "name", getName(), true);
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 ec.addAttr(collection, "uuid", identifier(), true);
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 ec.addAttr(collection, "creation", creation, true);
713
dc3a8c45349b Put the time-to-live of the collection into its DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 695
diff changeset
85 ec.addAttr(collection, "ttl", String.valueOf(getTTL()), true);
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 collection.appendChild(artifacts);
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 doc.appendChild(collection);
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89
346
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
90 ArtifactDatabase db = context.getDatabase();
293
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
91
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
92 try {
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
93 String[] artifactUUIDs = getArtifactUUIDs(context);
293
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
94
346
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
95 Document oldAttrs = getAttribute();
638
9c565eb46f06 Fixed the process of creating and storing the attribute of a collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 412
diff changeset
96
9c565eb46f06 Fixed the process of creating and storing the attribute of a collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 412
diff changeset
97 Document attrs = buildAttributes(
346
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
98 db, context,
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
99 oldAttrs,
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
100 artifactUUIDs);
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
101
638
9c565eb46f06 Fixed the process of creating and storing the attribute of a collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 412
diff changeset
102 collection.appendChild(doc.importNode(attrs.getFirstChild(), true));
9c565eb46f06 Fixed the process of creating and storing the attribute of a collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 412
diff changeset
103
9c565eb46f06 Fixed the process of creating and storing the attribute of a collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 412
diff changeset
104 // save the merged document into database
9c565eb46f06 Fixed the process of creating and storing the attribute of a collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 412
diff changeset
105 db.setCollectionAttribute(identifier(), context.getMeta(), attrs);
346
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
106
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
107 for (String uuid: artifactUUIDs) {
293
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
108 try {
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
109 artifacts.appendChild(
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
110 buildArtifactNode(db, uuid, context, ec));
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
111 }
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
112 catch (ArtifactDatabaseException dbe) {
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
113 log.warn(dbe, dbe);
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
114 }
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
115 }
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
116 }
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
117 catch (ArtifactDatabaseException ade) {
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
118 log.error(ade, ade);
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119 }
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
121 return doc;
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 }
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
125 @Override
646
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
126 public void out(
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
127 String type,
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
128 Document format,
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
129 OutputStream out,
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
130 CallContext context)
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
131 throws IOException
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
132 {
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
133 log.info("FLYSArtifactCollection.out");
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
134
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
135 String name = XMLUtils.xpathString(
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
136 format, XPATH_OUT_NAME, ArtifactNamespaceContext.INSTANCE);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
137
646
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
138 String subtype = XMLUtils.xpathString(
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
139 format, XPATH_OUT_TYPE, ArtifactNamespaceContext.INSTANCE);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
140
646
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
141 log.info("-> Output name = " + name);
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
142 log.info("-> Output type = " + type);
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
143 log.info("-> Output subtype = " + subtype);
388
cc6840cbe503 Introduced an export output target on collection level that enables collections to be exported.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 372
diff changeset
144
646
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
145 OutGenerator generator = null;
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
146 if (type != null && type.length() > 0) {
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
147 if (type.indexOf("chartinfo") > 0) {
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
148 generator = getOutGenerator(context, type, subtype);
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
149 }
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
150 else {
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
151 generator = getOutGenerator(context, name, subtype);
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
152 }
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
153 }
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
154 else {
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
155 generator = getOutGenerator(context, name, subtype);
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
156 }
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
157
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
158 if (generator == null) {
390
a67748ad4d61 Modified a confusing debug statement.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 388
diff changeset
159 log.error("There is no generator specified for output: " + name);
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
160 // TODO throw an exception.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
161
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
162 return;
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
163 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
164
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
165 generator.init(format, out, context);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
166
412
046bd86ae41d Improved the OutGenerator interface to set a master artifact for the out generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 390
diff changeset
167 // TODO Determine the correct master artifact here!
046bd86ae41d Improved the OutGenerator interface to set a master artifact for the out generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 390
diff changeset
168
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
169 try {
646
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
170 Document attr = getAttribute(context, name);
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
171 doOut(generator, name, subtype, attr, context);
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
172 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
173 catch (ArtifactDatabaseException adbe) {
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
174 log.error(adbe, adbe);
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
175 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
176 }
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
177
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
178
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
179 /**
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
180 * This method creates the concrete output.
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
181 *
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
182 * @param generator The OutGenerator that creates the output.
350
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
183 * @param outputName The name of the requested output.
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
184 * @param attributes The collection's attributes for this concrete output
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
185 * type.
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
186 * @param context The context object.
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
187 */
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
188 protected void doOut(
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
189 OutGenerator generator,
350
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
190 String outName,
388
cc6840cbe503 Introduced an export output target on collection level that enables collections to be exported.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 372
diff changeset
191 String facet,
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
192 Document attributes,
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
193 CallContext context)
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
194 throws IOException
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
195 {
646
d299e220d89c Added support for the 'type' parameter of the collection's out() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 641
diff changeset
196 log.info("FLYSArtifactCollection.doOut: " + outName);
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
197
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
198 ThemeList themeList = new ThemeList(attributes);
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
199
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
200 int size = themeList.size();
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
201 log.debug("Output will contain " + size + " elements.");
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
202
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
203 try {
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
204 for (int i = 0; i < size; i++) {
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
205 ManagedFacet theme = themeList.get(i);
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
206
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
207 if (theme == null) {
370
4a8d934e745f Bugfix: Changed the datastructure of the ThemeList (inner class of FLYSArtifactCollection) to store the theme of a chart in an ordered list -> Q curves of longitudinal section charts are now drawn.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 364
diff changeset
208 log.debug("Theme is empty - no output is generated.");
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
209 continue;
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
210 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
211
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
212 String art = theme.getArtifact();
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
213
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
214 if (log.isDebugEnabled()) {
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
215 log.debug("Do output for...");
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
216 log.debug("... artifact: " + art);
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
217 log.debug("... facet: " + theme.getName());
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
218 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
219
364
8830eecad69e Added the name of the facet to the parameterlist of OutGenerator.doOut().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 353
diff changeset
220 String facetName = theme.getName();
8830eecad69e Added the name of the facet to the parameterlist of OutGenerator.doOut().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 353
diff changeset
221
388
cc6840cbe503 Introduced an export output target on collection level that enables collections to be exported.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 372
diff changeset
222 if (outName.equals("export") && !facetName.equals(facet)) {
cc6840cbe503 Introduced an export output target on collection level that enables collections to be exported.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 372
diff changeset
223 continue;
cc6840cbe503 Introduced an export output target on collection level that enables collections to be exported.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 372
diff changeset
224 }
cc6840cbe503 Introduced an export output target on collection level that enables collections to be exported.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 372
diff changeset
225
412
046bd86ae41d Improved the OutGenerator interface to set a master artifact for the out generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 390
diff changeset
226 // TODO Remove the following two lines of code! The master
046bd86ae41d Improved the OutGenerator interface to set a master artifact for the out generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 390
diff changeset
227 // artifact has to be determined correctly after
046bd86ae41d Improved the OutGenerator interface to set a master artifact for the out generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 390
diff changeset
228 // OutGenerator.init is called!
046bd86ae41d Improved the OutGenerator interface to set a master artifact for the out generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 390
diff changeset
229 Artifact artifact = getArtifact(art, context);
046bd86ae41d Improved the OutGenerator interface to set a master artifact for the out generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 390
diff changeset
230 generator.setMasterArtifact(artifact);
046bd86ae41d Improved the OutGenerator interface to set a master artifact for the out generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 390
diff changeset
231
640
7e1a59fefa0d Moved the code part that skips themes to a better place. This let us paint empty charts with no themes at all.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 639
diff changeset
232 if (theme.getActive() == 0) {
7e1a59fefa0d Moved the code part that skips themes to a better place. This let us paint empty charts with no themes at all.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 639
diff changeset
233 continue;
7e1a59fefa0d Moved the code part that skips themes to a better place. This let us paint empty charts with no themes at all.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 639
diff changeset
234 }
7e1a59fefa0d Moved the code part that skips themes to a better place. This let us paint empty charts with no themes at all.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 639
diff changeset
235
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
236 generator.doOut(
412
046bd86ae41d Improved the OutGenerator interface to set a master artifact for the out generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 390
diff changeset
237 artifact,
695
45cd58a2a2bb OutGenerators doOut() takes a facet object now instead of just its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 694
diff changeset
238 theme,
350
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
239 getFacetThemeFromAttribute(
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
240 art,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
241 outName,
364
8830eecad69e Added the name of the facet to the parameterlist of OutGenerator.doOut().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 353
diff changeset
242 facetName,
350
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
243 context));
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
244 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
245 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
246 catch (ArtifactDatabaseException ade) {
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
247 log.error(ade, ade);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
248 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
249
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
250 generator.generate();
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
251 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
252
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
253
346
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
254 protected Document buildAttributes(
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
255 ArtifactDatabase db,
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
256 CallContext context,
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
257 Document oldAttr,
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
258 String[] items)
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
259 {
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
260 Document doc = XMLUtils.newDocument();
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
261
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
262 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
263 doc,
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
264 ArtifactNamespaceContext.NAMESPACE_URI,
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
265 ArtifactNamespaceContext.NAMESPACE_PREFIX);
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
266
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
267 AttributeParser aParser = new AttributeParser();
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
268 OutputParser oParser = new OutputParser(db, context.getMeta());
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
269
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
270 for (String uuid: items) {
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
271 try {
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
272 oParser.parse(uuid);
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
273 }
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
274 catch (ArtifactDatabaseException ade) {
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
275 log.warn(ade, ade);
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
276 }
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
277 }
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
278
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
279 aParser.parse(oldAttr);
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
280
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
281 return new AttributeWriter(aParser.getOuts(), oParser.getOuts()).write();
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
282 }
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
283
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
284
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
285 /**
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
286 * Returns the attribute for a specific output type.
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
287 *
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
288 * @param output The name of the desired output type.
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
289 *
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
290 * @return the attribute for the desired output type.
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
291 */
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
292 protected Document getAttribute(CallContext context, String output)
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
293 throws ArtifactDatabaseException
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
294 {
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
295 Document attr = buildAttributes(
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
296 context.getDatabase(),
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
297 context,
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
298 getAttribute(),
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
299 getArtifactUUIDs(context));
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
300
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
301 Node out = (Node) XMLUtils.xpath(
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
302 attr,
638
9c565eb46f06 Fixed the process of creating and storing the attribute of a collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 412
diff changeset
303 "art:attribute/art:outputs/art:output[@name='" + output + "']",
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
304 XPathConstants.NODE,
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
305 ArtifactNamespaceContext.INSTANCE);
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
306
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
307
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
308 if (out != null) {
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
309 Document o = XMLUtils.newDocument();
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
310
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
311 o.appendChild(o.importNode(out, true));
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
312
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
313 return o;
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
314 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
315
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
316 return null;
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
317 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
318
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
319
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
320 /**
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
321 * This method returns the list of artifact UUIDs that this collections
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
322 * contains.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
323 *
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
324 * @param context The CallContext that is necessary to get information about
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
325 * the ArtifactDatabase.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
326 *
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
327 * @return a list of uuids.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
328 */
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
329 protected String[] getArtifactUUIDs(CallContext context)
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
330 throws ArtifactDatabaseException
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
331 {
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
332 log.debug("FLYSArtifactCollection.getArtifactUUIDs");
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
333
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
334 ArtifactDatabase db = context.getDatabase();
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
335 CallMeta meta = context.getMeta();
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
336
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
337 Document itemList = db.listCollectionArtifacts(identifier(), meta);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
338 NodeList items = (NodeList) XMLUtils.xpath(
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
339 itemList,
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
340 XPATH_COLLECTION_ITEMS,
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
341 XPathConstants.NODESET,
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
342 ArtifactNamespaceContext.INSTANCE);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
343
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
344 if (items == null || items.getLength() == 0) {
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
345 log.debug("No artifacts found in this collection.");
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
346 return null;
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
347 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
348
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
349 int num = items.getLength();
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
350
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
351 List<String> uuids = new ArrayList<String>(num);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
352
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
353 for (int i = 0; i < num; i++) {
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
354 String uuid = XMLUtils.xpathString(
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
355 items.item(i),
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
356 "@art:uuid",
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
357 ArtifactNamespaceContext.INSTANCE);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
358
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
359 if (uuid != null && uuid.trim().length() != 0) {
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
360 uuids.add(uuid);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
361 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
362 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
363
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
364 return (String[]) uuids.toArray(new String[uuids.size()]);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
365 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
366
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
367
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
368 /**
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
369 * Returns a concrete Artifact of this collection specified by its uuid.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
370 *
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
371 * @param uuid The Artifact's uuid.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
372 * @param context The CallContext.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
373 *
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
374 * @return an Artifact.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
375 */
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
376 protected Artifact getArtifact(String uuid, CallContext context)
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
377 throws ArtifactDatabaseException
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
378 {
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
379 log.debug("FLYSArtifactCollection.getArtifact");
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
380
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
381 Backend backend = Backend.getInstance();
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
382 PersistentArtifact persistent = backend.getArtifact(uuid);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
383
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
384 return persistent != null ? persistent.getArtifact() : null;
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
385 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
386
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
387
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
388 /**
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
389 * Returns the attribute that belongs to an artifact stored in this
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
390 * collection.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
391 *
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
392 * @param uuid The Artifact's uuid.
350
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
393 * @param outname The name of the requested output.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
394 * @param facet The name of the requested facet.
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
395 * @param context The CallContext.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
396 *
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
397 * @return an attribute in form of a document.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
398 */
350
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
399 protected Document getFacetThemeFromAttribute(
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
400 String uuid,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
401 String outName,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
402 String facet,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
403 CallContext context)
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
404 throws ArtifactDatabaseException
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
405 {
350
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
406 log.debug("FLYSArtifactCollection.getFacetThemeFromAttribute");
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
407
350
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
408 ArtifactDatabase db = context.getDatabase();
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
409 CallMeta meta = context.getMeta();
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
410
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
411 FLYSContext flysContext = context instanceof FLYSContext
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
412 ? (FLYSContext) context
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
413 : (FLYSContext) context.globalContext();
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
414
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
415 Map<String, String> mappings = (Map<String, String>)
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
416 flysContext.get(FLYSContext.THEME_MAPPING);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
417
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
418 String themeName = mappings.get(facet);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
419
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
420 Document attr = db.getCollectionItemAttribute(identifier(), uuid, meta);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
421
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
422 if (attr == null) {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
423 attr = initItemAttribute(uuid, facet, context);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
424
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
425 if (attr == null) {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
426 return null;
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
427 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
428 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
429
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
430 log.debug("Search attribute of collection item: " + uuid);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
431
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
432 Node tmp = (Node) XMLUtils.xpath(
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
433 attr,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
434 "/art:attribute",
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
435 XPathConstants.NODE,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
436 ArtifactNamespaceContext.INSTANCE);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
437
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
438 if (tmp == null) {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
439 log.warn("No attribute found. Operation failed.");
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
440 return null;
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
441 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
442
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
443 log.debug("Search theme '" + themeName + "' in attribute.");
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
444
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
445 Node theme = (Node) XMLUtils.xpath(
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
446 tmp,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
447 "art:themes/theme[@name='" + themeName + "']",
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
448 XPathConstants.NODE,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
449 ArtifactNamespaceContext.INSTANCE);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
450
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
451 if (theme == null) {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
452 log.warn("Could not find the theme in attribute of: " + uuid);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
453
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
454 Theme t = getThemeForFacet(uuid, facet, context);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
455
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
456 if (t == null) {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
457 log.warn("No theme found for facet: " + facet);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
458 return null;
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
459 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
460
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
461 addThemeToAttribute(uuid, attr, t, context);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
462 theme = t.toXML().getFirstChild();
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
463 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
464
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
465 Document doc = XMLUtils.newDocument();
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
466 doc.appendChild(doc.importNode(theme, true));
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
467
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
468 return doc;
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
469 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
470
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
471
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
472 /**
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
473 * Adds the theme of a facet to a CollectionItem's attribute.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
474 *
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
475 * @param uuid The uuid of the artifact.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
476 * @param attr The current attribute of an artifact.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
477 * @param t The theme to add.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
478 * @param context The CallContext.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
479 */
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
480 protected void addThemeToAttribute(
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
481 String uuid,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
482 Document attr,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
483 Theme t,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
484 CallContext context)
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
485 {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
486 log.debug("FLYSArtifactCollection.addThemeToAttribute: " + uuid);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
487
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
488 if (t == null) {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
489 log.warn("Theme is empty - cancel adding it to attribute!");
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
490 return;
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
491 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
492
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
493 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
494 attr,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
495 ArtifactNamespaceContext.NAMESPACE_URI,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
496 ArtifactNamespaceContext.NAMESPACE_PREFIX);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
497
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
498 Node tmp = (Node) XMLUtils.xpath(
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
499 attr,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
500 "/art:attribute",
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
501 XPathConstants.NODE,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
502 ArtifactNamespaceContext.INSTANCE);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
503
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
504 if (tmp == null) {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
505 tmp = ec.create("attribute");
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
506 attr.appendChild(tmp);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
507 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
508
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
509 Node themes = (Node) XMLUtils.xpath(
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
510 tmp,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
511 "art:themes",
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
512 XPathConstants.NODE,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
513 ArtifactNamespaceContext.INSTANCE);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
514
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
515 if (themes == null) {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
516 themes = ec.create("themes");
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
517 tmp.appendChild(themes);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
518 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
519
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
520 themes.appendChild(attr.importNode(t.toXML().getFirstChild(), true));
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
521
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
522 try {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
523 setCollectionItemAttribute(uuid, attr, context);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
524
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
525 log.debug("Successfully added theme to item attribute.");
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
526 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
527 catch (ArtifactDatabaseException e) {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
528 // do nothing
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
529 log.warn("Cannot set attribute of item: " + uuid);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
530 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
531 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
532
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
533
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
534 /**
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
535 * Initializes the attribute of an collection item with the theme of a
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
536 * specific facet.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
537 *
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
538 * @param uuid The uuid of an artifact.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
539 * @param facet The name of a facet.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
540 * @param context The CallContext.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
541 *
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
542 * @param the new attribute.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
543 */
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
544 protected Document initItemAttribute(
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
545 String uuid,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
546 String facet,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
547 CallContext context)
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
548 {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
549 log.info("FLYSArtifactCollection.initItemAttribute");
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
550
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
551 Theme t = getThemeForFacet(uuid, facet, context);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
552
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
553 if (t == null) {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
554 log.info("Could not find theme for facet. Cancel initialization.");
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
555 return null;
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
556 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
557
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
558 Document attr = XMLUtils.newDocument();
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
559
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
560 addThemeToAttribute(uuid, attr, t, context);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
561
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
562 return attr;
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
563 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
564
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
565
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
566 /**
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
567 * Sets the attribute of a CollectionItem specified by <i>uuid</i> to a new
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
568 * value <i>attr</i>.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
569 *
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
570 * @param uuid The uuid of the CollectionItem.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
571 * @param attr The new attribute for the CollectionItem.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
572 * @param context The CallContext.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
573 */
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
574 public void setCollectionItemAttribute(
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
575 String uuid,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
576 Document attr,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
577 CallContext context)
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
578 throws ArtifactDatabaseException
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
579 {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
580 Document doc = ClientProtocolUtils.newSetItemAttributeDocument(
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
581 uuid,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
582 attr);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
583
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
584 if (doc == null) {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
585 log.warn("Cannot set item attribute: No attribute found.");
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
586 return;
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
587 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
588
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
589 ArtifactDatabase db = context.getDatabase();
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
590 CallMeta meta = context.getMeta();
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
591
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
592 db.setCollectionItemAttribute(identifier(), uuid, doc, meta);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
593 }
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
594
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
595
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
596 /**
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
597 * Returns the theme of a specific facet.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
598 *
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
599 * @param uuid The uuid of an artifact.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
600 * @param facet The name of the facet.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
601 * @param context The CallContext object.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
602 *
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
603 * @return the desired theme.
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
604 */
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
605 protected Theme getThemeForFacet(
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
606 String uuid,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
607 String facet,
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
608 CallContext context)
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
609 {
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
610 log.info("FLYSArtifactCollection.getThemeForFacet: " + facet);
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
611
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
612 FLYSContext flysContext = context instanceof FLYSContext
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
613 ? (FLYSContext) context
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
614 : (FLYSContext) context.globalContext();
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
615
2465dc296395 The OutGenerator gets the theme of a facet while output creation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 347
diff changeset
616 return ThemeFactory.getTheme(flysContext, facet);
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
617 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
618
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
619
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
620 /**
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
621 * Returns the OutGenerator for a specified <i>type</i>.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
622 *
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
623 * @param name The name of the output type.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
624 * @param type Defines the type of the desired OutGenerator.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
625 *
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
626 * @return The OutGenerator specified by <i>type</i>.
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
627 */
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
628 protected OutGenerator getOutGenerator(
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
629 CallContext context,
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
630 String name,
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
631 String type)
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
632 {
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
633 FLYSContext flysContext = context instanceof FLYSContext
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
634 ? (FLYSContext) context
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
635 : (FLYSContext) context.globalContext();
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
636
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
637 Map<String, Class> generators = (Map<String, Class>)
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
638 flysContext.get(FLYSContext.OUTGENERATORS_KEY);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
639
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
640 if (generators == null) {
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
641 log.error("No output generators found in the running application!");
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
642 return null;
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
643 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
644
388
cc6840cbe503 Introduced an export output target on collection level that enables collections to be exported.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 372
diff changeset
645 Class clazz = generators.get(name);
300
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
646
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
647 try {
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
648 return clazz != null ? (OutGenerator) clazz.newInstance() : null;
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
649 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
650 catch (InstantiationException ie) {
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
651 log.error(ie, ie);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
652 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
653 catch (IllegalAccessException iae) {
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
654 log.error(iae, iae);
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
655 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
656
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
657 return null;
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
658 }
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
659
9a0e1289bab6 The FLYSArtifactCollection overrides out() and uses OutGenerators to create output for this operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 296
diff changeset
660
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
661 protected Element buildArtifactNode(
293
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
662 ArtifactDatabase database,
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
663 String uuid,
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
664 CallContext context,
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
665 XMLUtils.ElementCreator ec)
293
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
666 throws ArtifactDatabaseException
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
667 {
293
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
668 log.debug("Append artifact '" + uuid + "' to collection description");
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
669
346
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
670 // TODO
293
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
671 String hash = "MYHASH";
156
d03b8bbeb853 Added the hash code of an artifact to the artifact part of the collection's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 148
diff changeset
672
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
673 Element ci = ec.create("artifact");
148
2649ada6b053 Bugfix: Added a missing artifact namespace prefix in the DESCRIBE document of a FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 147
diff changeset
674 ec.addAttr(ci, "uuid", uuid, true);
293
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
675 ec.addAttr(ci, "hash", hash, true);
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
676
346
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
677 // XXX I am not sure if it works well every time with an empty document
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
678 // in the describe operation of an artifact.
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
679 Document description = database.describe(uuid, null, context.getMeta());
16161de47662 The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 300
diff changeset
680
293
3419b1c8ca28 Removed the Backend reference from FLYSArtifactCollection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 156
diff changeset
681 Node outputModes = (Node) XMLUtils.xpath(
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
682 description,
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
683 XPATH_ARTIFACT_OUTPUTMODES,
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
684 XPathConstants.NODE,
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
685 ArtifactNamespaceContext.INSTANCE);
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
686
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
687 if (outputModes != null) {
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
688 Document doc = ci.getOwnerDocument();
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
689 ci.appendChild(doc.importNode(outputModes, true));
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
690 }
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
691
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
692 return ci;
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
693 }
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
694
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
695
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
696 /**
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
697 * Inner class to structure/order the themes of a chart.
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
698 */
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
699 private class ThemeList {
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
700 private Logger logger = Logger.getLogger(ThemeList.class);
638
9c565eb46f06 Fixed the process of creating and storing the attribute of a collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 412
diff changeset
701 protected Map<Integer, ManagedFacet> themes;
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
702
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
703 public ThemeList(Document output) {
638
9c565eb46f06 Fixed the process of creating and storing the attribute of a collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 412
diff changeset
704 themes = new HashMap<Integer, ManagedFacet>();
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
705 parse(output);
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
706 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
707
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
708 protected void parse(Document output) {
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
709 NodeList themes = (NodeList) XMLUtils.xpath(
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
710 output,
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
711 "art:output/art:theme",
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
712 XPathConstants.NODESET,
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
713 ArtifactNamespaceContext.INSTANCE);
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
714
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
715 int num = themes != null ? themes.getLength() : 0;
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
716
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
717 logger.debug("Output has " + num + " elements.");
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
718
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
719 if (num == 0) {
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
720 return;
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
721 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
722
694
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
723 String uri = ArtifactNamespaceContext.NAMESPACE_URI;
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
724
694
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
725 for (int i = 0; i < num; i++) {
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
726 Element theme = (Element) themes.item(i);
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
727
694
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
728 String name = theme.getAttributeNS(uri, "facet");
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
729 String uuid = theme.getAttributeNS(uri, "artifact");
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
730 String pos = theme.getAttributeNS(uri, "pos");
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
731 String active = theme.getAttributeNS(uri, "active");
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
732 String idx = theme.getAttributeNS(uri, "index");
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
733 String desc = theme.getAttributeNS(uri, "description");
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
734
694
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
735 addTheme(uuid, name, idx, pos, active, desc);
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
736 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
737 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
738
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
739 protected void addTheme(
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
740 String uuid,
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
741 String name,
694
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
742 String index,
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
743 String position,
694
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
744 String active,
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
745 String description)
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
746 {
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
747 if (logger.isDebugEnabled()) {
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
748 logger.debug("Add theme: ");
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
749 logger.debug(".. name: " + name);
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
750 logger.debug(".. uuid: " + uuid);
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
751 logger.debug(".. position: " + position);
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
752 logger.debug(".. active: " + active);
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
753 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
754
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
755 try {
370
4a8d934e745f Bugfix: Changed the datastructure of the ThemeList (inner class of FLYSArtifactCollection) to store the theme of a chart in an ordered list -> Q curves of longitudinal section charts are now drawn.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 364
diff changeset
756 int pos = Integer.parseInt(position);
4a8d934e745f Bugfix: Changed the datastructure of the ThemeList (inner class of FLYSArtifactCollection) to store the theme of a chart in an ordered list -> Q curves of longitudinal section charts are now drawn.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 364
diff changeset
757 int act = Integer.parseInt(active);
694
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
758 int idx = Integer.parseInt(index);
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
759
638
9c565eb46f06 Fixed the process of creating and storing the attribute of a collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 412
diff changeset
760 themes.put(
9c565eb46f06 Fixed the process of creating and storing the attribute of a collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 412
diff changeset
761 new Integer(pos-1),
694
68c6c75a6f7c Add index and description of facets to collections describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 649
diff changeset
762 new ManagedFacet(name, idx, description, uuid, pos, act));
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
763 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
764 catch (NumberFormatException nfe) {
370
4a8d934e745f Bugfix: Changed the datastructure of the ThemeList (inner class of FLYSArtifactCollection) to store the theme of a chart in an ordered list -> Q curves of longitudinal section charts are now drawn.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 364
diff changeset
765 logger.warn(nfe, nfe);
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
766 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
767 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
768
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
769 public ManagedFacet get(int idx) {
638
9c565eb46f06 Fixed the process of creating and storing the attribute of a collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 412
diff changeset
770 return themes.get(new Integer(idx));
347
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
771 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
772
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
773 public int size() {
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
774 return themes.size();
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
775 }
a63d8bdb2d79 Improved the out() operation of a Collection - the OutGenerator gets to know about the facets and its theme.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 346
diff changeset
776 }
147
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
777 }
76cc1a66a05f Implemented a FLYSArtifactCollection that will be used in this application now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
778 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org