view flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MeasurementStationInfoService.java @ 4377:512a3af69e18

Extract common generator method from FixLongitudinalSectionGenerator The extracted methods and code can be reused for generating charts for bed differences if fixanalysis data is loaded via the datacache.
author Björn Ricks <bjoern.ricks@intevation.de>
date Fri, 02 Nov 2012 15:47:15 +0100
parents c6db11e3b83a
children 3937c6a85db4
line wrap: on
line source
package de.intevation.flys.artifacts.services;

import java.math.BigDecimal;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;

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.flys.model.MeasurementStation;
import de.intevation.flys.model.Gauge;
import de.intevation.flys.model.Range;
import de.intevation.flys.model.River;
import de.intevation.flys.model.TimeInterval;

/**
 * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a>
 */
public class MeasurementStationInfoService extends RiverInfoService {

    private static final Logger logger = Logger.getLogger(
            MeasurementStationInfoService.class);

    public static final DateFormat DATE_FORMAT = DateFormat.getDateInstance(
        DateFormat.SHORT, Locale.GERMANY);

    @Override
    public Document doProcess(
        Document      data,
        GlobalContext globalContext,
        CallMeta      callMeta
    ) {
        Document result = super.doProcess(data, globalContext, callMeta);

        Element egs = ec.create("measurement-stations");

        List<MeasurementStation> mstations = river.getMeasurementStations();

        if (logger.isDebugEnabled()) {
            logger.debug("Loaded stations: " + mstations);
        }

        for (MeasurementStation mstation: mstations) {
            Element eg = ec.create("measurement-station");

            String name = mstation.getName();
            if (name != null) {
                ec.addAttr(eg, "name", name, true);
            }

            Integer id = mstation.getId();
            if (id != null) {
                ec.addAttr(eg, "id", Integer.toString(id), true);
            }

            String type = mstation.getMeasurementType();
            if (type != null) {
                ec.addAttr(eg, "type", type, true);
            }

            String riverside = mstation.getRiverside();
            if (riverside != null) {
                ec.addAttr(eg, "riverside", riverside, true);
            }

            Double station = mstation.getStation();
            if (station != null) {
                ec.addAttr(eg, "station", Double.toString(station), true);
            }

            Range range = mstation.getRange();
            if (range != null) {
                BigDecimal a = range.getA();
                if (a != null) {
                    ec.addAttr(eg, "start", getStringValue(a), true);
                }

                BigDecimal b = range.getB();
                if (b != null) {
                    ec.addAttr(eg, "end", getStringValue(b), true);
                }
            }

            String moperator = mstation.getOperator();
            if (moperator != null) {
                ec.addAttr(eg, "operator", moperator, true);
            }

            TimeInterval tinterval = mstation.getObservationTimerange();
            if (tinterval != null) {
                Date tstart = tinterval.getStartTime();
                if (tstart != null) {
                    ec.addAttr(eg, "starttime", DATE_FORMAT.format(tstart),
                            true);
                }
                Date tstop = tinterval.getStopTime();
                if (tstop != null) {
                    ec.addAttr(eg, "stoptime", DATE_FORMAT.format(tstop),
                            true);
                }
            }

            Gauge gauge = mstation.getGauge();
            String gaugename = gauge.getName();

            if (gaugename != null) {
                Element egauge = ec.create("gauge");
                ec.addAttr(egauge, "name", gaugename, true);
                eg.appendChild(egauge);
            }

            egs.appendChild(eg);
        }

        this.riverele.appendChild(egs);

        return result;
    }

}

http://dive4elements.wald.intevation.org