Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/collections/OutputParser.java @ 1059:fdb0f4ef96f0
Made FLYS artifacts cloneable.
flys-artifacts/trunk@2531 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 23 Aug 2011 11:07:21 +0000 |
parents | 59ae2a823e73 |
children | a70e0cbc5e02 |
line wrap: on
line source
package de.intevation.flys.collections; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import de.intevation.artifacts.ArtifactDatabase; import de.intevation.artifacts.ArtifactDatabaseException; import de.intevation.artifacts.CallContext; import de.intevation.artifacts.CallMeta; import de.intevation.artifactdatabase.state.DefaultOutput; import de.intevation.artifactdatabase.state.Facet; import de.intevation.artifactdatabase.state.Output; import de.intevation.flys.artifacts.FLYSArtifact; import de.intevation.flys.artifacts.model.ManagedFacetAdapter; public class OutputParser { /** Constant XPath that points to the outputmodes of an artifact.*/ public static final String XPATH_ARTIFACT_OUTPUTMODES = "/art:result/art:outputmodes/art:output"; private static Logger logger = Logger.getLogger(OutputParser.class); protected ArtifactDatabase db; protected CallMeta meta; protected CallContext context; protected Map<String, Output> outs; public OutputParser(ArtifactDatabase db, CallContext context) { this.db = db; this.meta = context.getMeta(); this.context = context; this.outs = new HashMap<String, Output>(); } public void parse(String uuid) throws ArtifactDatabaseException { logger.debug("OutputParser.parse: " + uuid); FLYSArtifact flys = (FLYSArtifact) db.getRawArtifact(uuid); List<Output> outList = flys.getOutputs(context); for (Output out: outList) { String name = out.getName(); Output o = outs.get(name); int pos = 1; if (o == null) { o = new DefaultOutput( out.getName(), out.getDescription(), out.getMimeType(), new ArrayList<Facet>(), out.getType()); outs.put(name, o); } else { pos = o.getFacets().size() + 1; } List<Facet> facets = facet2ManagedFacet(uuid, out.getFacets(), pos); o.addFacets(facets); } } public Map<String, Output> getOuts() { return outs; } protected List<Facet> facet2ManagedFacet( String uuid, List<Facet> old, int pos) { List<Facet> newFacets = new ArrayList<Facet>(old.size()); for (Facet f: old) { newFacets.add(new ManagedFacetAdapter(f, uuid, pos++, 1)); } return newFacets; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :