# HG changeset patch # User Felix Wolfsteller # Date 1319631827 0 # Node ID 5d8b3880a55378721780394fbc5881718fedb473 # Parent 87c82499b98fbd77afded86ef6ff890f96e8dff3 Do not store association of states to facets, let artifacts keep facets in a pure list. flys-artifacts/trunk@3083 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 87c82499b98f -r 5d8b3880a553 flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Wed Oct 26 12:03:59 2011 +0000 +++ b/flys-artifacts/ChangeLog Wed Oct 26 12:23:47 2011 +0000 @@ -1,3 +1,23 @@ +2011-10-26 Felix Wolfsteller + + Resolve association of facets to states in artifacts. This eases + merging of outputs and facets and inhibition of unwanted outputs + substiantially (at the price of slightly more expensive merging). + Also, the semantics of artifacts configuration files (e.g. winfo.xml) + is changed (facet elements within an output elements are used for + merging). + + * src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java, + src/main/java/de/intevation/flys/artifacts/StaticFLYSArtifact.java, + src/main/java/de/intevation/flys/artifacts/StaticWKmsArtifact.java, + src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java, + src/main/java/de/intevation/flys/artifacts/WMSBackgroundArtifact.java, + src/main/java/de/intevation/flys/artifacts/AnnotationArtifact.java, + src/main/java/de/intevation/flys/artifacts/WaterlevelArtifact.java, + src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java: + Do not store facets in a map from stateId to list of facets, but in + a pure list instead. + 2011-10-26 Felix Wolfsteller * doc/conf/meta-data.xml: Added dc configuration for some data diff -r 87c82499b98f -r 5d8b3880a553 flys-artifacts/src/main/java/de/intevation/flys/artifacts/AnnotationArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/AnnotationArtifact.java Wed Oct 26 12:03:59 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/AnnotationArtifact.java Wed Oct 26 12:23:47 2011 +0000 @@ -63,7 +63,7 @@ if (!fs.isEmpty()) { logger.debug("Facets to add in AnnotationsArtifact.initialize ."); - facets.put(getCurrentStateId(), fs); + facets.addAll(fs); } else { logger.debug("No facets to add in AnnotationsArtifact.initialize ."); @@ -173,15 +173,14 @@ continue; } - List fs = facets.get(stateId); - if (fs == null || fs.size() == 0) { + if (facets == null || facets.size() == 0) { logger.debug("No facets found."); continue; } - logger.debug("Found " + fs.size() + " facets in previous states."); + logger.debug("Found " + facets.size() + " facets in previous states."); - List generated = generateOutputs(list, fs); + List generated = generateOutputs(list, facets); ProtocolUtils.appendOutputModes(doc, outs, generated); } @@ -194,11 +193,10 @@ logger.debug( "Append output modes for state: " + cur.getID()); - List fs = facets.get(cur.getID()); - if (fs != null && fs.size() > 0) { - List generated = generateOutputs(list, fs); + if (facets != null && facets.size() > 0) { + List generated = generateOutputs(list, facets); - logger.debug("Found " + fs.size() + " current facets."); + logger.debug("Found " + facets.size() + " current facets."); if (!generated.isEmpty()) { ProtocolUtils.appendOutputModes( doc, outs, generated); diff -r 87c82499b98f -r 5d8b3880a553 flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java Wed Oct 26 12:03:59 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java Wed Oct 26 12:23:47 2011 +0000 @@ -85,7 +85,6 @@ /** The constant string that shows that an operation failed. */ public static final String OPERATION_FAILED = "FAILURE"; - /** The identifier of the current state. */ protected String currentStateId; @@ -98,8 +97,8 @@ /** The data that have been inserted into this artifact. */ protected Map data; - /** The list of facets supported by this artifact. */ - protected Map> facets; + /** The list of facets produced by this artifact. */ + protected List facets; /** * Used to generates "view" on the facets (hides facets not matching the @@ -114,7 +113,7 @@ public FLYSArtifact() { data = new TreeMap(); previousStateIds = new ArrayList(); - facets = new HashMap>(); + facets = new ArrayList(); } @@ -209,24 +208,22 @@ /** * Return a copy of the facet mapping. - * @return Mapping of outputnames to facets. + * @return Copy of facets list. */ - protected Map> cloneFacets() { - Map copy = new HashMap>(); + protected List cloneFacets() { + List copy = new ArrayList(facets.size()); - for (Map.Entry> entry: facets.entrySet()) { - List facets = entry.getValue(); - List facetCopies = new ArrayList(facets.size()); - for (Facet facet: facets) { - facetCopies.add(facet.deepCopy()); - } - copy.put(entry.getKey(), facetCopies); + for (Facet facet: facets) { + copy.add(facet.deepCopy()); } return copy; } + /** + * (called from setup). + */ protected void initialize( Artifact artifact, Object context, @@ -547,11 +544,9 @@ String name = facet.getName(); int index = facet.getIndex(); - for (Map.Entry> entry: facets.entrySet()) { - for (Facet f: entry.getValue()) { - if (f.getIndex() == index && f.getName().equals(name)) { - return f; - } + for (Facet f: facets) { + if (f.getIndex() == index && f.getName().equals(name)) { + return f; } } @@ -729,6 +724,12 @@ } + /** + * Get all outputs that the Artifact can do in this state (which includes + * all previous states). + * + * @return list of outputs + */ public List getOutputs(Object context) { List stateIds = getPreviousStateIds(); List generated = new ArrayList(); @@ -744,6 +745,10 @@ } + /** + * Get output(s) for current state. + * @return list of outputs for current state. + */ public List getCurrentOutputs(Object context) { DefaultState cur = (DefaultState) getCurrentState(context); @@ -758,6 +763,11 @@ } + /** + * Get output(s) for a specific state. + * @param state State of interest + * @return list of output(s) for given state. + */ protected List getOutputForState(DefaultState state) { List list = state.getOutputs(); if (list == null || list.size() == 0) { @@ -765,13 +775,12 @@ return new ArrayList(); } - List fs = facets.get(state.getID()); - if (fs == null || fs.size() == 0) { + if (facets == null || facets.size() == 0) { logger.debug("No facets found."); return new ArrayList(); } - return generateOutputs(list, fs); + return generateOutputs(list, facets); } @@ -885,6 +894,8 @@ /** + * Let current state compute and register facets. + * * @param key key of state * @param state state * @param type Type of compute @@ -940,10 +951,10 @@ finally { if (generateFacets) { if (fs.isEmpty()) { - facets.remove(stateID); + facets.removeAll(fs); } else { - facets.put(stateID, fs); + facets.addAll(fs); } } } diff -r 87c82499b98f -r 5d8b3880a553 flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java Wed Oct 26 12:03:59 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java Wed Oct 26 12:23:47 2011 +0000 @@ -71,29 +71,30 @@ Document data) { logger.debug("MainValuesArtifact.setup"); - state = new StaticState("state.mainvalue.static", "state.mainvalue.static"); - List fs = new ArrayList(); - Facet qfacet = new MainValuesQFacet(Resources.getMsg(callMeta, - "facet.discharge_curves.mainvalues.q", - "facet.discharge_curves.mainvalues.q")); - Facet wfacet = new MainValuesWFacet(Resources.getMsg(callMeta, - "facet.discharge_curves.mainvalues.w", - "facet.discharge_curves.mainvalues.w")); - fs.add(qfacet); - fs.add(wfacet); - facets.put(state.getID(), fs); + state = new StaticState( + "state.mainvalue.static", + "state.mainvalue.static"); + Facet qfacet = new MainValuesQFacet(Resources.getMsg( + callMeta, + "facet.discharge_curves.mainvalues.q", + "facet.discharge_curves.mainvalues.q")); + Facet wfacet = new MainValuesWFacet(Resources.getMsg( + callMeta, + "facet.discharge_curves.mainvalues.w", + "facet.discharge_curves.mainvalues.w")); + facets.add(qfacet); + facets.add(wfacet); spawnState(); super.setup(identifier, factory, context, callMeta, data); } protected State spawnState() { state = new StaticState("state.mainvalue.static", "state.mainvalue.static"); - List fs = (List) facets.get("state.mainvalue.static"); DefaultOutput mainValuesOutput2 = new DefaultOutput( - "computed_discharge_curve", - "output.computed_discharge_curve", "image/png", - fs, - "chart"); + "computed_discharge_curve", + "output.computed_discharge_curve", "image/png", + facets, + "chart"); state.getOutputs().add(mainValuesOutput2); return state; diff -r 87c82499b98f -r 5d8b3880a553 flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticFLYSArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticFLYSArtifact.java Wed Oct 26 12:03:59 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticFLYSArtifact.java Wed Oct 26 12:23:47 2011 +0000 @@ -58,11 +58,10 @@ List list = state.getOutputs(); if (list != null && list.size() > 0) { - List fs = facets.get(state.getID()); - if (fs != null && fs.size() > 0) { - List generated = generateOutputs(list, fs); + if (facets != null && facets.size() > 0) { + List generated = generateOutputs(list, facets); - logger.debug("Found " + fs.size() + " current facets."); + logger.debug("Found " + facets.size() + " current facets."); if (!generated.isEmpty()) { ProtocolUtils.appendOutputModes( doc, outs, generated); diff -r 87c82499b98f -r 5d8b3880a553 flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticWKmsArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticWKmsArtifact.java Wed Oct 26 12:03:59 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticWKmsArtifact.java Wed Oct 26 12:23:47 2011 +0000 @@ -72,7 +72,6 @@ "state.additional_wkms.static", "state.additional_wkms.static"); - List fs = new ArrayList(); logger.debug(XMLUtils.toString(data)); String code = XMLUtils.xpathString( data, XPATH_DATA, ArtifactNamespaceContext.INSTANCE); @@ -100,9 +99,7 @@ wkmsName, wkmsName)); - fs.add(facet); - facets.put(state.getID(), fs); - + facets.add(facet); } catch (Exception e) {} } @@ -121,15 +118,19 @@ state = new StaticState( "state.additional_wkms.static", "state.additional_wkms.static"); - List fs = (List) facets.get("state.additional_wkms.static"); - DefaultOutput output = new DefaultOutput( + DefaultOutput output1 = new DefaultOutput( "w_differences", "w_differences.longitudinal_section", "image/png", - fs, + facets, "chart"); - // TODO: also add longitudinal_section output? + DefaultOutput output2 = new DefaultOutput( + "longitudinal_section", + "longitudinal_section.longitudinal_section", "image/png", + facets, + "chart"); - state.getOutputs().add(output); + state.getOutputs().add(output1); + state.getOutputs().add(output2); return state; } diff -r 87c82499b98f -r 5d8b3880a553 flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Wed Oct 26 12:03:59 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Wed Oct 26 12:23:47 2011 +0000 @@ -226,6 +226,9 @@ } + /** + * Append output mode nodes to a document. + */ protected void appendOutputModes( Document doc, Element outs, @@ -253,15 +256,14 @@ continue; } - List fs = facets.get(stateId); - if (fs == null || fs.size() == 0) { + if (facets == null || facets.size() == 0) { logger.debug("No facets for previous state found."); continue; } - logger.debug("Found " + fs.size() + " facets in previous states."); + logger.debug("Found " + facets.size() + " facets in previous states."); - List generated = generateOutputs(list, fs); + List generated = generateOutputs(list, facets); ProtocolUtils.appendOutputModes(doc, outs, generated); } @@ -274,11 +276,10 @@ logger.debug( "Append output modes for current state: " + cur.getID()); - List fs = facets.get(cur.getID()); - if (fs != null && fs.size() > 0) { - List generated = generateOutputs(list, fs); + if (facets != null && facets.size() > 0) { + List generated = generateOutputs(list, facets); - logger.debug("Found " + fs.size() + " current facets."); + logger.debug("Found " + facets.size() + " current facets."); if (!generated.isEmpty()) { ProtocolUtils.appendOutputModes( doc, outs, generated); @@ -287,7 +288,6 @@ else { logger.debug("No facets found for the current state."); } - } } } diff -r 87c82499b98f -r 5d8b3880a553 flys-artifacts/src/main/java/de/intevation/flys/artifacts/WMSBackgroundArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WMSBackgroundArtifact.java Wed Oct 26 12:03:59 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WMSBackgroundArtifact.java Wed Oct 26 12:23:47 2011 +0000 @@ -17,7 +17,6 @@ public static final String NAME = "wmsbackground"; - private static final Logger logger = Logger.getLogger(WMSBackgroundArtifact.class); @@ -42,7 +41,7 @@ state.computeInit(this, hash(), context, meta, fs); if (!fs.isEmpty()) { - facets.put(getCurrentStateId(), fs); + facets.addAll(fs); } } } diff -r 87c82499b98f -r 5d8b3880a553 flys-artifacts/src/main/java/de/intevation/flys/artifacts/WaterlevelArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WaterlevelArtifact.java Wed Oct 26 12:03:59 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WaterlevelArtifact.java Wed Oct 26 12:23:47 2011 +0000 @@ -51,9 +51,11 @@ Document data) { super.setup(identifier, factory, context, callMeta, data); - filterFacets.put( - "w_differences", - filterFacets.get("longitudinal_section")); + if(filterFacets != null) { + filterFacets.put( + "w_differences", + filterFacets.get("longitudinal_section")); + } } /** @@ -74,7 +76,7 @@ state.computeInit(this, hash(), context, meta, fs); if (!fs.isEmpty()) { logger.debug("Facets to add in WaterlevelArtifact.initialize ."); - facets.put(getCurrentStateId(), fs); + facets.addAll(fs); } else { logger.debug("No facets to add in WaterlevelArtifact.initialize ("