view flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MeasurementStationInfoService.java @ 5462:f2371f3aaf03

Show top level folder icons only if node has no factory If you have an empty folder the folder icon is still shown. This makes it possible to add functional "Top Level" entries in the Datacage
author Andre Heinecke <aheinecke@intevation.de>
date Tue, 26 Mar 2013 18:29:13 +0100
parents 3937c6a85db4
children 5d99cd6e146a
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.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