Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java @ 2038:f73036b991e2
Bugfix: repaired broken named values in exports - the last solution had bad side effects.
flys-artifacts/trunk@3515 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 21 Dec 2011 15:44:41 +0000 |
parents | 3ebbe497d7f7 |
children | d13be39cfd1d |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java Wed Dec 21 11:56:08 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java Wed Dec 21 15:44:41 2011 +0000 @@ -14,11 +14,8 @@ import au.com.bytecode.opencsv.CSVWriter; -import de.intevation.artifacts.Artifact; import de.intevation.artifacts.CallContext; -import de.intevation.artifactdatabase.state.ArtifactAndFacet; - import de.intevation.flys.artifacts.WINFOArtifact; import de.intevation.flys.artifacts.model.CalculationResult; import de.intevation.flys.artifacts.model.WQCKms; @@ -100,40 +97,6 @@ /** - * This method is used to determine, if the name of the WQKms object - * <i>data</i> matches a named value. In such cases, the name of <i>data</i> - * is reset to this named value. - * - * @param aaf The wrapper for the Artifact and Facet. - * @param data Needs to be a CalculationResult that contains a WQKms[] - * objects, otherwise nothing is done. - */ - @Override - protected void prepareData(ArtifactAndFacet aaf, Object data) { - logger.debug("WaterlevelExporter.prepareData"); - - Artifact artifact = aaf.getArtifact(); - - if (!(artifact instanceof WINFOArtifact)) { - logger.debug("Artifact is no WINFOArtifact. Cannot prepare data."); - return; - } - - if (data instanceof CalculationResult) { - data = ((CalculationResult) data).getData(); - - if (data instanceof WQKms[]) { - WQKms[] wqkms = (WQKms[]) data; - - for (WQKms item: wqkms) { - prepareNamedValue((WINFOArtifact) artifact, item); - } - } - } - } - - - /** * This method is used to prepare the column titles of waterlevel exports. * Titles in this export include the Q value. If a Q value matches a named * main value (as HQ100 or MNQ) this named main value should be used as @@ -143,13 +106,17 @@ * @param winfo A WINFO Artifact. * @param wqkms A WQKms object that should be prepared. */ - protected void prepareNamedValue(WINFOArtifact winfo, WQKms wqkms) { + protected String getColumnTitle(WINFOArtifact winfo, WQKms wqkms) { logger.debug("WaterlevelExporter.prepareNamedValue"); String name = wqkms.getName(); logger.debug("Name of WQKms = '" + name + "'"); + if (name.indexOf("W=") >= 0) { + return name; + } + Matcher m = NUMBERS_PATTERN.matcher(name); if (m.matches()) { @@ -158,19 +125,21 @@ try { double v = Double.valueOf(raw); - String nmv = FLYSUtils.getNamedMainValue(winfo.getGauge(), v); + String nmv = FLYSUtils.getNamedMainValue(winfo, v); if (nmv != null && nmv.length() > 0) { nmv = FLYSUtils.stripNamedMainValue(nmv); logger.debug("Set named main value '" + nmv + "'"); - wqkms.setName(nmv); + return nmv; } } catch (NumberFormatException nfe) { // do nothing here } } + + return name; } @@ -269,8 +238,23 @@ } + /** + * This method is used to register a new column at <i>writer</i>. The name / + * title of the column depends on the Q or W value of <i>wqkms</i>. If a Q + * was selected and the Q fits to a named main value, the title is set to + * the named main value. Otherwise, the name returned by + * <i>WQKms.getName()</i> is set. + * + * @param writer The WstWriter. + * @param wqkms The new WST column. + */ protected void addWSTColumn(WstWriter writer, WQKms wqkms) { - writer.addColumn(wqkms.getName()); + if (master instanceof WINFOArtifact) { + writer.addColumn(getColumnTitle((WINFOArtifact) master, wqkms)); + } + else { + writer.addColumn(wqkms.getName()); + } }