sascha@710: package de.intevation.flys.exports;
sascha@710:
sascha@710: import java.io.IOException;
sascha@710: import java.io.OutputStream;
sascha@710:
sascha@710: import org.apache.log4j.Logger;
sascha@710:
sascha@710: import de.intevation.artifacts.Artifact;
sascha@710: import de.intevation.artifacts.CallContext;
sascha@710:
sascha@710: import de.intevation.artifacts.common.utils.XMLUtils;
sascha@710:
ingo@1979: import de.intevation.artifactdatabase.state.ArtifactAndFacet;
sascha@710: import de.intevation.artifactdatabase.state.Facet;
ingo@1979: import de.intevation.artifactdatabase.state.Settings;
sascha@710:
sascha@710: import de.intevation.flys.artifacts.model.Calculation;
sascha@710:
sascha@710: import org.w3c.dom.Document;
sascha@710:
sascha@710: public class ReportGenerator
sascha@742: implements OutGenerator
sascha@710: {
sascha@710: private static Logger logger = Logger.getLogger(ReportGenerator.class);
sascha@710:
sascha@710: protected Document result;
sascha@710: protected OutputStream out;
sascha@710: protected CallContext context;
sascha@710:
sascha@710: public ReportGenerator() {
sascha@710: }
sascha@710:
sascha@710: @Override
sascha@710: public void init(Document request, OutputStream out, CallContext context) {
sascha@710: logger.debug("init");
sascha@710: this.out = out;
sascha@710: this.context = context;
sascha@2303: result = null;
sascha@710: }
sascha@710:
sascha@710: @Override
sascha@710: public void setMasterArtifact(Artifact master) {
sascha@710: // not needed
sascha@710: }
sascha@710:
sascha@710: @Override
ingo@1684: public void doOut(
felix@1944: ArtifactAndFacet artifactFacet,
felix@1944: Document attr,
felix@1944: boolean visible
ingo@1684: ) {
sascha@710: logger.debug("doOut");
felix@1944: Facet facet = artifactFacet.getFacet();
sascha@710: if (facet != null) {
felix@1944: Calculation report = (Calculation) artifactFacet.getData(context);
sascha@2303: if (result == null) {
sascha@2303: result = XMLUtils.newDocument();
sascha@2303: report.toXML(result, context.getMeta());
sascha@2303: }
sascha@710: }
sascha@710: }
sascha@710:
sascha@710: @Override
sascha@710: public void generate() throws IOException {
sascha@710: logger.debug("generate");
sascha@2303: XMLUtils.toStream(result != null
sascha@2303: ? result
sascha@2303: : XMLUtils.newDocument(), out);
sascha@710: }
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@1979: public Settings getSettings() {
ingo@1979: return new EmptySettings();
ingo@1979: }
ingo@2047:
ingo@2047:
ingo@2047: /**
ingo@2047: * This method is not implemented. Override it in subclasses if those need a
ingo@2047: * Settings object.
ingo@2047: */
ingo@2047: public void setSettings(Settings settings) {
ingo@2047: // do nothing
ingo@2047: }
sascha@710: }
sascha@710: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :