# HG changeset patch # User Tim Englich # Date 1252494115 0 # Node ID 5db77e0a8594a07bd6e0939e20dfe821bb7cb6eb # Parent 6ae2d4134da3f5d4650468edccc4a07edd67106f Integrated Output Methods and Interfacsstructure gnv-artifacts/trunk@47 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 6ae2d4134da3 -r 5db77e0a8594 gnv-artifacts/Changelog --- a/gnv-artifacts/Changelog Wed Sep 09 09:39:43 2009 +0000 +++ b/gnv-artifacts/Changelog Wed Sep 09 11:01:55 2009 +0000 @@ -1,3 +1,21 @@ +2009-09-09 Tim Englich + + * src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Added: + The specifed OutputTransition for the Product TimeSeries. + + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited: + Integration of the OutputModes in the DescriberesultDocument. + + * src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java Added, + src/main/java/de/intevation/gnv/transition/OutputTransition.java Added: + The Interface and the abstract Basicimplementation of an Transition which + can produce different outputs. + + * src/main/java/de/intevation/gnv/transition/DefaultOutputMode.java Added, + src/main/java/de/intevation/gnv/transition/OutputMode.java Added: + Interfacestructur and Defaultimplementation for the Representation of the + Different OutputModes given in an Artifact. + 2009-09-09 Tim Englich * src/main/java/de/intevation/gnv/transition/TransitionBase.java (describe) Edited: diff -r 6ae2d4134da3 -r 5db77e0a8594 gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Wed Sep 09 09:39:43 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Wed Sep 09 11:01:55 2009 +0000 @@ -21,6 +21,8 @@ import de.intevation.gnv.transition.DefaultInputData; import de.intevation.gnv.transition.InputData; import de.intevation.gnv.transition.InputValue; +import de.intevation.gnv.transition.OutputMode; +import de.intevation.gnv.transition.OutputTransition; import de.intevation.gnv.transition.Transition; import de.intevation.gnv.transition.TransitionFactory; import de.intevation.gnv.transition.exception.TransitionException; @@ -259,10 +261,25 @@ } protected void createOutputs(Element parent, Document document){ + log.debug("GNVArtifactBase.createOutputs"); Element outputsNode = createElement(document,"outputs"); - - // TODO_ Mit Leben füllen. - + if (this.current instanceof OutputTransition){ + Collection outputModes = ((OutputTransition)this.current).getOutputModes(); + if (outputModes != null){ + Iterator it = outputModes.iterator(); + while(it.hasNext()){ + OutputMode outputMode = it.next(); + log.debug("Write Outputnode for "+ outputMode.toString()); + Element outputModeNode = createElement(document,"output"); + outputModeNode.setAttribute("name", outputMode.getName()); + outputModeNode.setAttribute("description", outputMode.getDescription()); + outputModeNode.setAttribute("mime-type", outputMode.getMimeType()); + outputsNode.appendChild(outputModeNode); + } + }else{ + log.warn("No Outputmodes given."); + } + } parent.appendChild(outputsNode); } diff -r 6ae2d4134da3 -r 5db77e0a8594 gnv-artifacts/src/main/java/de/intevation/gnv/transition/DefaultOutputMode.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/DefaultOutputMode.java Wed Sep 09 11:01:55 2009 +0000 @@ -0,0 +1,57 @@ +/** + * + */ +package de.intevation.gnv.transition; +/** + * @author Tim Englich + * + */ +public class DefaultOutputMode implements OutputMode { + + private String name = null; + private String description = null; + private String mimeType = null; + + /** + * Constructor + * @param name + * @param description + * @param mimeType + */ + public DefaultOutputMode(String name, String description, String mimeType) { + super(); + this.name = name; + this.description = description; + this.mimeType = mimeType; + } + + /** + * @see de.intevation.gnv.transition.OutputMode#getDescription() + */ + public String getDescription() { + return this.description; + } + + /** + * @see de.intevation.gnv.transition.OutputMode#getMimeType() + */ + public String getMimeType() { + return this.mimeType; + } + + /** + * @see de.intevation.gnv.transition.OutputMode#getName() + */ + public String getName() { + return this.name; + } + + /** + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return "Name: "+this.name+" ; Description: "+this.description+" ; Mime-Type: "+this.mimeType; + } + +} diff -r 6ae2d4134da3 -r 5db77e0a8594 gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputMode.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputMode.java Wed Sep 09 11:01:55 2009 +0000 @@ -0,0 +1,16 @@ +/** + * + */ +package de.intevation.gnv.transition; +/** + * @author Tim Englich + * + */ +public interface OutputMode { + + public String getName(); + + public String getDescription(); + + public String getMimeType(); +} diff -r 6ae2d4134da3 -r 5db77e0a8594 gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputTransition.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputTransition.java Wed Sep 09 11:01:55 2009 +0000 @@ -0,0 +1,26 @@ +/** + * + */ +package de.intevation.gnv.transition; + +import java.util.Collection; + +/** + * @author Tim Englich + * + */ +public interface OutputTransition extends Transition { + + /** + * Returns the Rendered Result of an Transition. + * @param outputMode The Mode that should be produces (Chart, Map, ...) + * @return The Bytecode of the Result + */ + public byte[] out( String outputMode); + + /** + * Delivers the provided OutputModes of an Transition + * @return the provided OutputModes of an Transition + */ + public Collection getOutputModes(); +} diff -r 6ae2d4134da3 -r 5db77e0a8594 gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java Wed Sep 09 11:01:55 2009 +0000 @@ -0,0 +1,66 @@ +/** + * + */ +package de.intevation.gnv.transition; + +import java.util.ArrayList; +import java.util.Collection; + +import org.apache.log4j.Logger; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import de.intevation.artifactdatabase.Config; + +/** + * @author Tim Englich + * + */ +public abstract class OutputTransitionBase extends TransitionBase implements + OutputTransition { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(OutputTransitionBase.class); + + protected Collection outputModes = null; + /** + * Constructor + */ + public OutputTransitionBase() { + super(); + } + + /** + * @see de.intevation.gnv.transition.OutputTransition#getOutputModes() + */ + public Collection getOutputModes() { + log.debug("OutputTransitionBase.getOutputModes"); + return this.outputModes; + } + + /** + * @see de.intevation.gnv.transition.TransitionBase#setup(org.w3c.dom.Node) + */ + @Override + public void setup(Node configuration) { + log.debug("OutputTransitionBase.setup"); + super.setup(configuration); + NodeList outputModeList = Config.getNodeSetXPath(configuration, "outputsModes/outputsMode"); + if (outputModeList != null){ + log.debug(outputModeList.getLength()+ " were found."); + this.outputModes = new ArrayList(outputModeList.getLength()); + for (int i = 0; i < outputModeList.getLength(); i++){ + Node currentNode = outputModeList.item(i); + String name = Config.getStringXPath(currentNode, "@name"); + String description = Config.getStringXPath(currentNode, "@description"); + String mimeType = Config.getStringXPath(currentNode, "@mime-type"); + OutputMode outputMode = new DefaultOutputMode(name, description, mimeType); + log.debug(outputMode.toString()); + this.outputModes.add(outputMode); + + } + } + } + +} diff -r 6ae2d4134da3 -r 5db77e0a8594 gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Wed Sep 09 11:01:55 2009 +0000 @@ -0,0 +1,35 @@ +/** + * + */ +package de.intevation.gnv.transition.timeseries; + +import de.intevation.gnv.transition.OutputTransitionBase; + +/** + * @author Tim Englich + * + */ +public class TimeSeriesOutputTransition extends OutputTransitionBase{ + + /** + * Constructor + */ + public TimeSeriesOutputTransition() { + super(); + } + + /** + * @see de.intevation.gnv.transition.Transition#validate() + */ + public boolean validate() { + return true; + } + + /** + * @see de.intevation.gnv.transition.OutputTransition#out(java.lang.String) + */ + public byte[] out(String outputMode) { + return null; + } + +}