# HG changeset patch # User Björn Ricks # Date 1351089419 -7200 # Node ID 5da024c2af624030b635737f1aa954331dac716e # Parent cac0878b4a92a41961ae9062fb9d743c20ce0f0a Refactor GaugeOverviewInfoService and MeasurementStationInfoService Refactor RiverInfoService out of GaugeOverviewInfoService and MeasurementStationInfoService to share common code of both classes in a base class. diff -r cac0878b4a92 -r 5da024c2af62 flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/GaugeOverviewInfoService.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/GaugeOverviewInfoService.java Wed Oct 24 15:57:48 2012 +0200 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/GaugeOverviewInfoService.java Wed Oct 24 16:36:59 2012 +0200 @@ -22,53 +22,20 @@ /** * @author Björn Ricks */ -public class GaugeOverviewInfoService extends FLYSService { +public class GaugeOverviewInfoService extends RiverInfoService { private static final Logger logger = Logger.getLogger( GaugeOverviewInfoService.class); - public static final String RIVER_XPATH = "/art:river/text()"; - @Override public Document doProcess( Document data, GlobalContext globalContext, CallMeta callMeta ) { - logger.debug("GaugeOverviewInfoService.process"); - - String riverstr = XMLUtils.xpathString( - data, RIVER_XPATH, ArtifactNamespaceContext.INSTANCE); - - River river = RiverFactory.getRiver(riverstr); - - Document result = XMLUtils.newDocument(); - - if (river == null) { - logger.warn("No river with name " + riverstr + " found."); - return result; - } + Document result = super.doProcess(data, globalContext, callMeta); - XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( - result, - ArtifactNamespaceContext.NAMESPACE_URI, - ArtifactNamespaceContext.NAMESPACE_PREFIX); - - Element go = ec.create("gauge-info"); - - double[] minmax = river.determineMinMaxDistance(); - double[] minmaxq = river.determineMinMaxQ(); - - Element r = ec.create("river"); - ec.addAttr(r, "name", river.getName(), true); - ec.addAttr(r, "start", Double.toString(minmax[0]), true); - ec.addAttr(r, "end", Double.toString(minmax[1]), true); - ec.addAttr(r, "wstunit", river.getWstUnit().getName(), true); - ec.addAttr(r, "kmup", Boolean.toString(river.getKmUp()), true); - ec.addAttr(r, "minq", Double.toString(minmaxq[0]), true); - ec.addAttr(r, "maxq", Double.toString(minmaxq[1]), true); - ec.addAttr(r, "official", Long.toString(river.getOfficialNumber()), - true); + logger.debug("GaugeOverviewInfoService.process"); Element egs = ec.create("gauges"); @@ -86,12 +53,12 @@ ec.addAttr(eg, "name", gauge.getName(), true); } - String aeo = getGaugeValue(gauge.getAeo()); + String aeo = getStringValue(gauge.getAeo()); if (aeo != null) { ec.addAttr(eg, "aeo", aeo, true); } - String datum = getGaugeValue(gauge.getDatum()); + String datum = getStringValue(gauge.getDatum()); if (datum != null) { ec.addAttr(eg, "datum", datum, true); } @@ -111,10 +78,10 @@ } } MinMaxWQ minmaxwq = gauge.fetchMaxMinWQ(); - String minw = getGaugeValue(minmaxwq.getMinW()); - String maxw = getGaugeValue(minmaxwq.getMaxW()); - String minq = getGaugeValue(minmaxwq.getMinQ()); - String maxq = getGaugeValue(minmaxwq.getMaxQ()); + String minw = getStringValue(minmaxwq.getMinW()); + String maxw = getStringValue(minmaxwq.getMaxW()); + String minq = getStringValue(minmaxwq.getMinQ()); + String maxq = getStringValue(minmaxwq.getMaxQ()); if (minw != null) { ec.addAttr(eg, "minw", minw, true); @@ -129,7 +96,7 @@ ec.addAttr(eg, "maxq", maxq, true); } - String station = getGaugeValue(gauge.getStation()); + String station = getStringValue(gauge.getStation()); if (station != null) { ec.addAttr(eg, "station", station, true); } @@ -142,19 +109,8 @@ egs.appendChild(eg); } - go.appendChild(r); - go.appendChild(egs); - result.appendChild(go); + riverele.appendChild(egs); return result; } - - /** - * Returns a Double from a BigDecimal value or null if value is null - */ - private static String getGaugeValue(BigDecimal value) { - return value != null - ? Double.toString(value.doubleValue()) - : ""; - } } diff -r cac0878b4a92 -r 5da024c2af62 flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MeasurementStationInfoService.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MeasurementStationInfoService.java Wed Oct 24 15:57:48 2012 +0200 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MeasurementStationInfoService.java Wed Oct 24 16:36:59 2012 +0200 @@ -21,53 +21,18 @@ /** * @author Björn Ricks */ -public class MeasurementStationInfoService extends FLYSService { +public class MeasurementStationInfoService extends RiverInfoService { private static final Logger logger = Logger.getLogger( GaugeOverviewInfoService.class); - public static final String RIVER_XPATH = "/art:river/text()"; - @Override public Document doProcess( Document data, GlobalContext globalContext, CallMeta callMeta ) { - logger.debug("MeasurementStationInfoService.process"); - - String riverstr = XMLUtils.xpathString( - data, RIVER_XPATH, ArtifactNamespaceContext.INSTANCE); - - River river = RiverFactory.getRiver(riverstr); - - Document result = XMLUtils.newDocument(); - - if (river == null) { - logger.warn("No river with name " + riverstr + " found."); - return result; - } - - XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( - result, - ArtifactNamespaceContext.NAMESPACE_URI, - ArtifactNamespaceContext.NAMESPACE_PREFIX); - - Element go = ec.create("masurement-station-info"); - - double[] minmax = river.determineMinMaxDistance(); - double[] minmaxq = river.determineMinMaxQ(); - - Element r = ec.create("river"); - ec.addAttr(r, "name", river.getName(), true); - ec.addAttr(r, "start", Double.toString(minmax[0]), true); - ec.addAttr(r, "end", Double.toString(minmax[1]), true); - ec.addAttr(r, "wstunit", river.getWstUnit().getName(), true); - ec.addAttr(r, "kmup", Boolean.toString(river.getKmUp()), true); - ec.addAttr(r, "minq", Double.toString(minmaxq[0]), true); - ec.addAttr(r, "maxq", Double.toString(minmaxq[1]), true); - ec.addAttr(r, "official", Long.toString(river.getOfficialNumber()), - true); + Document result = super.doProcess(data, globalContext, callMeta); Element egs = ec.create("measurement-stations"); @@ -116,20 +81,9 @@ egs.appendChild(eg); } - go.appendChild(r); - go.appendChild(egs); - result.appendChild(go); + this.riverele.appendChild(egs); return result; } - /** - * Returns a Double as String from a BigDecimal value. - * - * If value is null an empty String is returned. - */ - private static String getStringValue(BigDecimal value) { - return value != null - ? Double.toString(value.doubleValue()) : ""; - } } diff -r cac0878b4a92 -r 5da024c2af62 flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/RiverInfoService.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/RiverInfoService.java Wed Oct 24 16:36:59 2012 +0200 @@ -0,0 +1,85 @@ +package de.intevation.flys.artifacts.services; + +import java.math.BigDecimal; + +import org.apache.log4j.Logger; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import de.intevation.artifacts.CallMeta; +import de.intevation.artifacts.GlobalContext; +import de.intevation.artifacts.common.ArtifactNamespaceContext; +import de.intevation.artifacts.common.utils.XMLUtils; + +import de.intevation.flys.artifacts.model.RiverFactory; +import de.intevation.flys.model.River; + +/** + * @author Björn Ricks + */ +public class RiverInfoService extends FLYSService { + + private static final Logger logger = Logger.getLogger( + RiverInfoService.class); + + protected static final String RIVER_XPATH = "/art:river/text()"; + + protected XMLUtils.ElementCreator ec; + protected River river; + protected Element riverele; + + protected Document doProcess( + Document data, + GlobalContext globalContext, + CallMeta callMeta + ) { + String rivername = XMLUtils.xpathString( + data, RIVER_XPATH, ArtifactNamespaceContext.INSTANCE); + + river = RiverFactory.getRiver(rivername); + + Document result = XMLUtils.newDocument(); + + if (river == null) { + logger.warn("No river with name " + rivername + " found."); + return null; + } + + ec = new XMLUtils.ElementCreator( + result, + ArtifactNamespaceContext.NAMESPACE_URI, + ArtifactNamespaceContext.NAMESPACE_PREFIX); + + riverele = ec.create("river-info"); + + double[] minmax = river.determineMinMaxDistance(); + double[] minmaxq = river.determineMinMaxQ(); + + Element r = ec.create("river"); + ec.addAttr(r, "name", river.getName(), true); + ec.addAttr(r, "start", Double.toString(minmax[0]), true); + ec.addAttr(r, "end", Double.toString(minmax[1]), true); + ec.addAttr(r, "wstunit", river.getWstUnit().getName(), true); + ec.addAttr(r, "kmup", Boolean.toString(river.getKmUp()), true); + ec.addAttr(r, "minq", Double.toString(minmaxq[0]), true); + ec.addAttr(r, "maxq", Double.toString(minmaxq[1]), true); + ec.addAttr(r, "official", Long.toString(river.getOfficialNumber()), + true); + + riverele.appendChild(r); + result.appendChild(riverele); + + return result; + } + + /** + * Returns a Double as String from a BigDecimal value. + * + * If value is null an empty String is returned. + */ + protected static String getStringValue(BigDecimal value) { + return value != null + ? Double.toString(value.doubleValue()) : ""; + } +}