comparison flys-artifacts/src/main/java/de/intevation/flys/collections/FLYSArtifactCollection.java @ 1784:0fe3c4849baa

Cosmetics and refactoring in FLYSArtifactCollection. flys-artifacts/trunk@3106 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 28 Oct 2011 09:59:47 +0000
parents b503d92dd709
children 661dfad9910a
comparison
equal deleted inserted replaced
1783:376c81aa7d55 1784:0fe3c4849baa
30 import de.intevation.artifactdatabase.Backend; 30 import de.intevation.artifactdatabase.Backend;
31 import de.intevation.artifactdatabase.Backend.PersistentArtifact; 31 import de.intevation.artifactdatabase.Backend.PersistentArtifact;
32 import de.intevation.artifactdatabase.DefaultArtifactCollection; 32 import de.intevation.artifactdatabase.DefaultArtifactCollection;
33 33
34 import de.intevation.flys.artifacts.context.FLYSContext; 34 import de.intevation.flys.artifacts.context.FLYSContext;
35 import de.intevation.flys.artifacts.FLYSArtifact;
35 import de.intevation.flys.artifacts.model.ManagedFacet; 36 import de.intevation.flys.artifacts.model.ManagedFacet;
36 import de.intevation.flys.artifacts.model.ManagedDomFacet; 37 import de.intevation.flys.artifacts.model.ManagedDomFacet;
37 import de.intevation.flys.exports.OutGenerator; 38 import de.intevation.flys.exports.OutGenerator;
38 import de.intevation.flys.themes.Theme; 39 import de.intevation.flys.themes.Theme;
39 import de.intevation.flys.themes.ThemeFactory; 40 import de.intevation.flys.themes.ThemeFactory;
40 41
42 import de.intevation.flys.utils.FLYSUtils;
41 43
42 /** 44 /**
43 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> 45 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
44 */ 46 */
45 public class FLYSArtifactCollection extends DefaultArtifactCollection { 47 public class FLYSArtifactCollection extends DefaultArtifactCollection {
103 String[] aUUIDs = getArtifactUUIDs(context); 105 String[] aUUIDs = getArtifactUUIDs(context);
104 Node newAttr = mergeAttributes(db, context, oldAttrs, aUUIDs); 106 Node newAttr = mergeAttributes(db, context, oldAttrs, aUUIDs);
105 107
106 collection.appendChild(doc.importNode(newAttr, true)); 108 collection.appendChild(doc.importNode(newAttr, true));
107 109
108 if (aUUIDs != null) { 110 // Make it an empty array if null.
109 for (String uuid: aUUIDs) { 111 if (aUUIDs == null) {
110 try { 112 aUUIDs = new String[] {};
111 artifacts.appendChild( 113 }
112 buildArtifactNode(db, uuid, context, ec)); 114
113 } 115 for (String uuid: aUUIDs) {
114 catch (ArtifactDatabaseException dbe) { 116 try {
115 log.warn(dbe, dbe); 117 artifacts.appendChild(
116 } 118 buildArtifactNode(db, uuid, context, ec));
119 }
120 catch (ArtifactDatabaseException dbe) {
121 log.warn(dbe, dbe);
117 } 122 }
118 } 123 }
119 } 124 }
120 catch (ArtifactDatabaseException ade) { 125 catch (ArtifactDatabaseException ade) {
121 log.error(ade, ade); 126 log.error(ade, ade);
129 134
130 135
131 /** 136 /**
132 * Merge the current art:outputs nodes with the the outputs provided by the 137 * Merge the current art:outputs nodes with the the outputs provided by the
133 * artifacts in the Collection. 138 * artifacts in the Collection.
139 *
134 * @param uuids Artifact uuids. 140 * @param uuids Artifact uuids.
135 */ 141 */
136 protected Node mergeAttributes( 142 protected Node mergeAttributes(
137 ArtifactDatabase db, 143 ArtifactDatabase db,
138 CallContext context, 144 CallContext context,
217 } 223 }
218 224
219 generator.init(format, out, context); 225 generator.init(format, out, context);
220 226
221 // Get master artifact. 227 // Get master artifact.
222 try{ 228 FLYSArtifact master = getMasterArtifact(context);
223 ArtifactDatabase db = context.getDatabase(); 229 if (master != null) {
224 CallMeta callMeta = context.getMeta(); 230 log.debug("Will set master Artifact to uuid: " + master.identifier());
225 Document document = db.getCollectionsMasterArtifact( 231 generator.setMasterArtifact(master);
226 identifier(), callMeta); 232 }
227 233 else {
228 String masterUUID = XMLUtils.xpathString( 234 log.warn("Could not set master artifact.");
229 document, XPATH_MASTER_UUID, ArtifactNamespaceContext.INSTANCE);
230
231 log.debug("Will set master Artifact to uuid: " + masterUUID);
232 generator.setMasterArtifact(getArtifact(masterUUID, context));
233 }
234 catch (ArtifactDatabaseException adb) {
235 log.error(adb, adb);
236 } 235 }
237 236
238 try { 237 try {
239 Document attr = getAttribute(context, name); 238 Document attr = getAttribute(context, name);
240 doOut(generator, name, subtype, attr, context); 239 doOut(generator, name, subtype, attr, context);
314 generator.generate(); 313 generator.generate();
315 } 314 }
316 315
317 316
318 /** 317 /**
318 * @return masterartifact or null if exception/not found.
319 */
320 protected FLYSArtifact getMasterArtifact(CallContext context)
321 {
322 try {
323 ArtifactDatabase db = context.getDatabase();
324 CallMeta callMeta = context.getMeta();
325 Document document = db.getCollectionsMasterArtifact(
326 identifier(), callMeta);
327
328 String masterUUID = XMLUtils.xpathString(
329 document, XPATH_MASTER_UUID, ArtifactNamespaceContext.INSTANCE);
330 FLYSArtifact masterArtifact =
331 (FLYSArtifact) getArtifact(masterUUID, context);
332 return masterArtifact;
333 }
334 catch (ArtifactDatabaseException ade) {
335 log.error(ade, ade);
336 }
337 return null;
338 }
339
340
341 /**
319 * Return merged output document. 342 * Return merged output document.
320 * @param uuids List of artifact uuids. 343 * @param uuids List of artifact uuids.
321 */ 344 */
322 protected Document buildOutAttributes( 345 protected Document buildOutAttributes(
323 ArtifactDatabase db, 346 ArtifactDatabase db,

http://dive4elements.wald.intevation.org