Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/collections/AttributeWriter.java @ 704:eab5e5089d77
Merged revisions 2127-2133,2136-2137,2140,2143-2144,2146,2150-2151,2153-2154 via svnmerge from
svn+ssh://teichmann@thoe/home/projects/Geospatial/bsh-generischer-viewer/Material/SVN/flys-artifacts/branches/facets-slt
........
r2127 | ingo | 2011-06-16 09:50:56 +0200 (Do, 16 Jun 2011) | 1 line
Added a compute() method to WINFOArtifact which acts as a dispatcher for different computations. It triggers a calculation based on ComputeCallbacks that are generated by the current states.
........
r2128 | ingo | 2011-06-16 10:25:06 +0200 (Do, 16 Jun 2011) | 1 line
Moved Waterlevel state into the correct package.
........
r2129 | ingo | 2011-06-16 10:43:58 +0200 (Do, 16 Jun 2011) | 1 line
Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
........
r2130 | ingo | 2011-06-16 10:57:05 +0200 (Do, 16 Jun 2011) | 1 line
Use enums to dispatch computeFeed() and computeAdvance().
........
r2131 | ingo | 2011-06-16 11:04:59 +0200 (Do, 16 Jun 2011) | 1 line
Store facets for each state.
........
r2132 | ingo | 2011-06-16 12:05:44 +0200 (Do, 16 Jun 2011) | 1 line
Generated facets for each output aspect.
........
r2133 | ingo | 2011-06-16 15:24:00 +0200 (Do, 16 Jun 2011) | 1 line
Write computed facets into artifacts describe document.
........
r2136 | ingo | 2011-06-16 16:10:49 +0200 (Do, 16 Jun 2011) | 1 line
Add index and description of facets to collections describe document.
........
r2137 | ingo | 2011-06-16 16:31:41 +0200 (Do, 16 Jun 2011) | 1 line
OutGenerators doOut() takes a facet object now instead of just its name.
........
r2140 | ingo | 2011-06-17 11:19:43 +0200 (Fr, 17 Jun 2011) | 1 line
OutGenerators use now facets to fetch necessary data.
........
r2143 | teichmann | 2011-06-17 12:40:54 +0200 (Fr, 17 Jun 2011) | 1 line
Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
........
r2144 | teichmann | 2011-06-17 13:08:31 +0200 (Fr, 17 Jun 2011) | 1 line
make getGauges() more robust
........
r2146 | teichmann | 2011-06-17 13:23:57 +0200 (Fr, 17 Jun 2011) | 1 line
mico opt: inter cmps are faster than str cmps.
........
r2150 | teichmann | 2011-06-17 15:10:20 +0200 (Fr, 17 Jun 2011) | 1 line
call computeAdvance() if we want to advance.
........
r2151 | teichmann | 2011-06-17 15:45:50 +0200 (Fr, 17 Jun 2011) | 1 line
Base WST/CSV exports on facets. TODO: generate the facets.
........
r2153 | teichmann | 2011-06-17 16:03:29 +0200 (Fr, 17 Jun 2011) | 1 line
Add facet to access raw computed data.
........
r2154 | teichmann | 2011-06-17 16:37:09 +0200 (Fr, 17 Jun 2011) | 1 line
Generate data facets for the computed states.
........
flys-artifacts/trunk@2156 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 17 Jun 2011 16:17:03 +0000 |
parents | 68c6c75a6f7c |
children | 853dceead0f4 |
line wrap: on
line source
package de.intevation.flys.collections; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import de.intevation.artifacts.ArtifactNamespaceContext; import de.intevation.artifactdatabase.state.Facet; import de.intevation.artifactdatabase.state.Output; import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; import de.intevation.flys.artifacts.model.ManagedFacet; public class AttributeWriter { protected Map<String, Output> oldAttr; protected Map<String, Output> newAttr; private static Logger logger = Logger.getLogger(AttributeWriter.class); public AttributeWriter( Map<String, Output> oldAttr, Map<String, Output> newAttr) { this.oldAttr = oldAttr; this.newAttr = newAttr; } protected Document write() { Document doc = XMLUtils.newDocument(); ElementCreator cr = new ElementCreator( doc, ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX); Element attribute = cr.create("attribute"); Element outs = cr.create("outputs"); attribute.appendChild(outs); doc.appendChild(attribute); Iterator<String> iter = newAttr.keySet().iterator(); while (iter.hasNext()) { String outName = iter.next(); Output a = newAttr.get(outName); Output b = oldAttr.get(outName); writeOutput(doc, outs, cr, a, b); } return doc; } protected void writeOutput( Document doc, Node outs, ElementCreator cr, Output a, Output b) { Element output = cr.create("output"); cr.addAttr(output, "name", a.getName()); outs.appendChild(output); List<Facet> facetsA = a.getFacets(); List<Facet> facetsB = null; if (b != null) { facetsB = b.getFacets(); } writeFacets(doc, cr, output, facetsA, facetsB); } protected void writeFacets( Document doc, ElementCreator cr, Element output, List<Facet> a, List<Facet> b) { int num = a.size(); for (int i = 0; i < num; i++) { ManagedFacet fA = (ManagedFacet) a.get(i); if (!mergeFacets(doc, cr, output, fA, b)) { writeFacet(doc, cr, output, fA); } } } protected boolean mergeFacets( Document doc, ElementCreator cr, Element output, ManagedFacet a, List<Facet> list) { String name = a.getName() + a.getIndex(); if (list == null) { logger.debug("No old facets found."); return false; } for (Facet facet: list) { if (name.equals(facet.getName() + facet.getIndex())) { writeFacet(doc, cr, output, (ManagedFacet) facet); return true; } } return false; } protected void writeFacet( Document doc, ElementCreator cr, Node output, ManagedFacet f) { Element theme = cr.create("theme"); cr.addAttr(theme, "artifact", f.getArtifact(), true); cr.addAttr(theme, "facet", f.getName(), true); cr.addAttr(theme, "pos", Integer.toString(f.getPosition()), true); cr.addAttr(theme, "active", Integer.toString(f.getActive()), true); cr.addAttr(theme, "index", Integer.toString(f.getIndex()), true); cr.addAttr(theme, "description", f.getDescription(), true); output.appendChild(theme); } }