ingo@348: package de.intevation.flys.exports; ingo@348: ingo@348: import java.io.IOException; ingo@348: import java.io.OutputStream; ingo@348: ingo@348: import org.apache.log4j.Logger; ingo@348: ingo@348: import org.w3c.dom.Document; ingo@348: ingo@348: import de.intevation.artifacts.Artifact; ingo@412: import de.intevation.artifacts.CallContext; ingo@412: ingo@412: import de.intevation.flys.model.River; ingo@412: ingo@412: import de.intevation.flys.artifacts.FLYSArtifact; ingo@408: import de.intevation.flys.artifacts.resources.Resources; ingo@348: ingo@348: ingo@348: /** ingo@348: * The base class for chart creation. It should provide some basic things that ingo@348: * equal in all chart types. ingo@348: * ingo@348: * @author Ingo Weinzierl ingo@348: */ ingo@348: public abstract class ChartGenerator implements OutGenerator { ingo@348: ingo@348: private static Logger logger = Logger.getLogger(ChartGenerator.class); ingo@348: ingo@348: ingo@348: /** The document of the incoming out() request.*/ ingo@348: protected Document request; ingo@348: ingo@348: /** The output stream where the data should be written to.*/ ingo@348: protected OutputStream out; ingo@348: ingo@348: /** The CallContext object.*/ ingo@348: protected CallContext context; ingo@348: ingo@412: /** The artifact that is used to decorate the chart with meta information.*/ ingo@412: protected Artifact master; ingo@412: ingo@348: ingo@348: public void init(Document request, OutputStream out, CallContext context) { ingo@348: logger.debug("ChartGenerator.init"); ingo@348: ingo@348: this.request = request; ingo@348: this.out = out; ingo@348: this.context = context; ingo@348: } ingo@348: ingo@348: ingo@412: public void setMasterArtifact(Artifact master) { ingo@412: this.master = master; ingo@412: } ingo@412: ingo@412: ingo@408: protected String msg(String key, String def) { ingo@408: return Resources.getMsg(context.getMeta(), key, def); ingo@408: } ingo@408: ingo@408: ingo@412: protected String msg(String key, String def, Object[] args) { ingo@412: return Resources.getMsg(context.getMeta(), key, def, args); ingo@412: } ingo@412: ingo@412: ingo@412: protected String getRiverName() { ingo@412: FLYSArtifact flys = (FLYSArtifact) master; ingo@412: ingo@412: River river = flys.getRiver(); ingo@412: return river != null ? river.getName() : ""; ingo@412: } ingo@412: ingo@412: ingo@412: protected double[] getRange() { ingo@412: FLYSArtifact flys = (FLYSArtifact) master; ingo@412: ingo@412: return flys.getDistance(); ingo@412: } ingo@412: ingo@412: ingo@364: public abstract void doOut(Artifact artifact, String facet, Document attr); ingo@348: ingo@348: public abstract void generate() throws IOException; ingo@348: } ingo@348: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :