Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/collections/AttributeWriter.java @ 1709:f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
flys-artifacts/trunk@2969 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Fri, 14 Oct 2011 08:52:44 +0000 |
parents | 12235a2ace21 |
children | b503d92dd709 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/collections/AttributeWriter.java Thu Oct 13 12:42:31 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/collections/AttributeWriter.java Fri Oct 14 08:52:44 2011 +0000 @@ -10,6 +10,8 @@ import org.w3c.dom.Element; import org.w3c.dom.Node; +import de.intevation.artifacts.ArtifactDatabase; +import de.intevation.artifacts.ArtifactDatabaseException; import de.intevation.artifacts.ArtifactNamespaceContext; import de.intevation.artifactdatabase.state.Facet; @@ -18,6 +20,7 @@ import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; +import de.intevation.flys.artifacts.FLYSArtifact; import de.intevation.flys.artifacts.model.ManagedFacet; /** @@ -27,7 +30,11 @@ */ public class AttributeWriter { + /** ArtifactDatabase used to fetch Artifacts. */ + protected ArtifactDatabase db = null; + protected Map<String, Output> oldAttr; + protected Map<String, Output> newAttr; private static Logger logger = Logger.getLogger(AttributeWriter.class); @@ -36,14 +43,17 @@ /** * Create a AttributeWriter. * Attributes not present in newAttr will not be included in the document. + * @param db Database to fetch artifacts. * @param oldAttr "Old" (possibly user-changed) outputs. * @param newAttr "New" (eventually re-read in its original, unchagnged * form) outputs. */ public AttributeWriter( + ArtifactDatabase db, Map<String, Output> oldAttr, Map<String, Output> newAttr) { + this.db = db; this.oldAttr = oldAttr; this.newAttr = newAttr; } @@ -109,7 +119,13 @@ facetsB = b.getFacets(); } - writeFacets(doc, cr, output, facetsA, facetsB); + + try { + writeFacets(doc, cr, output, facetsA, facetsB); + } + catch (ArtifactDatabaseException ade) { + logger.error(ade, ade); + } } @@ -125,6 +141,7 @@ Element output, List<Facet> newFacets, List<Facet> oldFacets) + throws ArtifactDatabaseException { int num = newFacets.size(); @@ -144,6 +161,15 @@ } } + // With each genuinely new Facet, ask Artifact whether it comes to live + // in/activate. + for (ManagedFacet newMF: genuinelyNewFacets) { + FLYSArtifact flys = (FLYSArtifact) db.getRawArtifact(newMF.getArtifact()); + newMF.setActive(flys.getInitialFacetActivity( + newMF.getName(), + newMF.getIndex())); + } + // For each genuinely new Facet check positional conflicts. for (ManagedFacet newMF: genuinelyNewFacets) { boolean conflicts = true; @@ -184,7 +210,8 @@ * @return facet if genuinely new, matching old facet otherwise. */ protected ManagedFacet pickFacet(ManagedFacet facet, - List<Facet> oldFacets) { + List<Facet> oldFacets) + { if (oldFacets == null) { logger.debug("No old facets to compare a new to found."); return facet;