sascha@730: package de.intevation.flys.exports;
sascha@730:
sascha@730: import java.io.OutputStream;
sascha@730: import java.io.OutputStreamWriter;
sascha@730: import java.io.IOException;
sascha@730:
sascha@730: import org.w3c.dom.Document;
sascha@730:
sascha@730: import org.apache.log4j.Logger;
sascha@730:
sascha@730: import de.intevation.artifacts.Artifact;
sascha@730: import de.intevation.artifacts.CallContext;
sascha@730:
ingo@1979: import de.intevation.artifactdatabase.state.ArtifactAndFacet;
ingo@1979: import de.intevation.artifactdatabase.state.Settings;
ingo@1979:
sascha@730: import de.intevation.flys.artifacts.FLYSArtifact;
sascha@730:
sascha@730: import de.intevation.flys.artifacts.model.WQ;
sascha@730:
ingo@1658: import de.intevation.flys.utils.FLYSUtils;
ingo@1658:
ingo@1658:
sascha@730: public class ATExporter
sascha@730: implements OutGenerator
sascha@730: {
sascha@730: private static Logger logger = Logger.getLogger(ATExporter.class);
sascha@730:
sascha@730: public static final String DEFAULT_ENCODING = "UTF-8";
sascha@730:
sascha@730: protected WQ data;
sascha@730: protected CallContext context;
sascha@730: protected OutputStream out;
ingo@1658: protected FLYSArtifact master;
sascha@730:
sascha@730: public ATExporter() {
sascha@730: }
sascha@730:
sascha@730: @Override
sascha@730: public void init(Document request, OutputStream out, CallContext context) {
sascha@730: this.context = context;
sascha@730: this.out = out;
sascha@730: }
sascha@730:
sascha@730: @Override
sascha@730: public void setMasterArtifact(Artifact master) {
ingo@1658: this.master = (FLYSArtifact) master;
sascha@730: }
sascha@730:
sascha@730: @Override
ingo@1684: public void doOut(
felix@1944: ArtifactAndFacet artifactf,
ingo@1684: Document attr,
ingo@1684: boolean visible
ingo@1684: ) {
felix@1944: data = (WQ)artifactf.getData(context);
sascha@730: }
sascha@730:
sascha@730: @Override
sascha@730: public void generate() throws IOException {
sascha@730:
sascha@730: if (data == null) {
sascha@730: logger.debug("no W/Q data");
sascha@730: return;
sascha@730: }
sascha@730:
sascha@730: ATWriter at;
sascha@730: try {
sascha@730: at = new ATWriter(data);
sascha@730: }
sascha@730: catch (IllegalArgumentException iae) {
sascha@730: logger.error("creating ATWriter failed", iae);
sascha@730: throw new IOException(iae);
sascha@730: }
sascha@730:
ingo@1658: String river = FLYSUtils.getRiver(master).getName();
ingo@1658: double[] kms = FLYSUtils.getLocations(master);
ingo@1658:
ingo@1658: at.write(
ingo@1658: new OutputStreamWriter(out, DEFAULT_ENCODING),
ingo@1658: context.getMeta(),
ingo@1658: river,
ingo@1658: kms[0]);
sascha@730: }
ingo@1979:
ingo@1979:
ingo@1979: /**
ingo@1979: * Returns an instance of EmptySettings currently!
ingo@1979: *
ingo@1979: * @return an instance of EmptySettings.
ingo@1979: */
ingo@2047: @Override
ingo@1979: public Settings getSettings() {
ingo@1979: return new EmptySettings();
ingo@1979: }
ingo@2047:
ingo@2047:
ingo@2047: /**
ingo@2047: * This method is not implemented!
ingo@2047: *
ingo@2047: * @param settings A settings object.
ingo@2047: */
ingo@2047: @Override
ingo@2047: public void setSettings(Settings settings) {
ingo@2047: // do nothing here
ingo@2047: }
sascha@730: }
sascha@730: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :