view flys-artifacts/src/main/java/org/dive4elements/river/exports/ATExporter.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/exports/ATExporter.java@64139914e446
children
line wrap: on
line source
package org.dive4elements.river.exports;

import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.IOException;

import org.w3c.dom.Document;

import org.apache.log4j.Logger;

import org.dive4elements.artifacts.Artifact;
import org.dive4elements.artifacts.CallContext;

import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
import org.dive4elements.artifactdatabase.state.Settings;

import org.dive4elements.river.artifacts.FLYSArtifact;

import org.dive4elements.river.artifacts.model.WQ;
import org.dive4elements.river.collections.FLYSArtifactCollection;

import org.dive4elements.river.model.Gauge;
import org.dive4elements.river.model.River;
import org.dive4elements.river.model.TimeInterval;
import org.dive4elements.river.utils.FLYSUtils;
import org.dive4elements.river.artifacts.access.RangeAccess;

public class ATExporter
implements   OutGenerator
{
    private static Logger logger = Logger.getLogger(ATExporter.class);

    public static final String DEFAULT_ENCODING = "UTF-8";

    protected WQ           data;
    protected CallContext  context;
    protected OutputStream out;
    protected FLYSArtifact master;

    protected FLYSArtifactCollection collection;


    public ATExporter() {
    }

    @Override
    public void init(Document request, OutputStream out, CallContext context) {
        this.context = context;
        this.out     = out;
    }


    @Override
    public void setMasterArtifact(Artifact master) {
        this.master = (FLYSArtifact) master;
    }

    @Override
    public void setCollection(FLYSArtifactCollection collection) {
        this.collection = collection;
    }

    @Override
    public void doOut(
        ArtifactAndFacet artifactf,
        Document attr,
        boolean  visible
    ) {
        data = (WQ)artifactf.getData(context);
    }

    @Override
    public void generate() throws IOException {

        if (data == null) {
            logger.debug("no W/Q data");
            return;
        }

        ATWriter at;
        try {
            at = new ATWriter(data);
        }
        catch (IllegalArgumentException iae) {
            logger.error("creating ATWriter failed", iae);
            throw new IOException(iae);
        }

        River river = FLYSUtils.getRiver(master);
        RangeAccess rangeAccess = new RangeAccess(master, context);
        double[] kms = rangeAccess.getLocations();

        Gauge gauge = river.determineGaugeByPosition(kms[0]);
        if (Math.abs(kms[0] - gauge.getStation().doubleValue()) < 1e-4) {
            // at gauge.
            TimeInterval interval =
                gauge.fetchMasterDischargeTable().getTimeInterval();
            at.write(
                new OutputStreamWriter(out, DEFAULT_ENCODING),
                context.getMeta(),
                river.getName(),
                kms[0],
                gauge.getName(),
                gauge.getDatum(),
                interval.getStartTime(),
                100d);
        }
        else {
            // at km
            at.write(
                new OutputStreamWriter(out),
                context.getMeta(),
                river.getName(),
                kms[0],
                null,
                null,
                null,
                0d);
        }

    }


    /**
     * Returns an instance of <i>EmptySettings</i> currently!
     *
     * @return an instance of <i>EmptySettings</i>.
     */
    @Override
    public Settings getSettings() {
        return new EmptySettings();
    }


    /**
     * This method is not implemented!
     *
     * @param settings A settings object.
     */
    @Override
    public void setSettings(Settings settings) {
        // do nothing here
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org