tim@64: /** tim@64: * tim@64: */ tim@64: package de.intevation.gnv.transition; tim@64: tim@64: import java.util.ArrayList; tim@64: import java.util.Collection; tim@64: tim@64: import org.apache.log4j.Logger; tim@64: import org.w3c.dom.Node; tim@64: import org.w3c.dom.NodeList; tim@64: tim@64: import de.intevation.artifactdatabase.Config; tim@86: import de.intevation.gnv.geobackend.base.Result; tim@86: import de.intevation.gnv.transition.exception.TransitionException; tim@64: tim@64: /** tim@64: * @author Tim Englich tim@64: * tim@64: */ tim@64: public abstract class OutputTransitionBase extends TransitionBase implements tim@64: OutputTransition { tim@86: tim@86: tim@86: /** tim@91: * The UID of this Class tim@86: */ tim@86: private static final long serialVersionUID = -1718732895737303823L; tim@86: tim@64: /** tim@64: * the logger, used to log exceptions and additonaly information tim@64: */ tim@64: private static Logger log = Logger.getLogger(OutputTransitionBase.class); tim@86: /** tim@86: * The Results which should be used for Rendering the Charts or tim@86: * do other output tim@86: */ tim@86: protected Collection chartResult = null; tim@64: tim@86: /** tim@86: * The different Outputmodes which are provided by an OutputTransition tim@86: */ tim@64: protected Collection outputModes = null; tim@86: tim@64: /** tim@64: * Constructor tim@64: */ tim@64: public OutputTransitionBase() { tim@64: super(); tim@64: } tim@64: tim@64: /** tim@64: * @see de.intevation.gnv.transition.OutputTransition#getOutputModes() tim@64: */ tim@64: public Collection getOutputModes() { tim@64: log.debug("OutputTransitionBase.getOutputModes"); tim@64: return this.outputModes; tim@64: } tim@86: /** tim@86: * @see de.intevation.gnv.transition.Transition#validate() tim@86: */ tim@86: public boolean validate() { tim@86: log.debug("OutputTransitionBase.validate"); tim@86: return true; tim@86: } tim@64: tim@64: /** tim@64: * @see de.intevation.gnv.transition.TransitionBase#setup(org.w3c.dom.Node) tim@64: */ tim@64: @Override tim@64: public void setup(Node configuration) { tim@64: log.debug("OutputTransitionBase.setup"); tim@64: super.setup(configuration); tim@64: NodeList outputModeList = Config.getNodeSetXPath(configuration, "outputsModes/outputsMode"); tim@64: if (outputModeList != null){ tim@64: log.debug(outputModeList.getLength()+ " were found."); tim@64: this.outputModes = new ArrayList(outputModeList.getLength()); tim@64: for (int i = 0; i < outputModeList.getLength(); i++){ tim@64: Node currentNode = outputModeList.item(i); tim@64: String name = Config.getStringXPath(currentNode, "@name"); tim@64: String description = Config.getStringXPath(currentNode, "@description"); tim@64: String mimeType = Config.getStringXPath(currentNode, "@mime-type"); tim@91: tim@91: NodeList inputValuesList = Config.getNodeSetXPath(currentNode, "parameters/inputvalue"); tim@91: Collection inputParameters = null; tim@91: if (inputValuesList != null){ tim@91: inputParameters = new ArrayList(inputValuesList.getLength()); tim@91: for (int j = 0 ; j < inputValuesList.getLength(); j++){ tim@91: Node currentInputValuesNode = inputValuesList.item(j); tim@91: String inputValueName = Config.getStringXPath(currentInputValuesNode, "@name"); tim@91: String inputValueType = Config.getStringXPath(currentInputValuesNode, "@type"); tim@91: String defaultValue = Config.getStringXPath(currentInputValuesNode, "@value"); tim@91: boolean isMultiselect = false; tim@91: InputValue inputValue = new DefaultInputValue(inputValueName, inputValueType, defaultValue, isMultiselect); tim@91: inputParameters.add(inputValue); tim@91: } tim@91: } tim@91: tim@91: OutputMode outputMode = new DefaultOutputMode(name, description, mimeType,inputParameters); tim@64: log.debug(outputMode.toString()); tim@64: this.outputModes.add(outputMode); tim@64: tim@64: } tim@64: } tim@64: } tim@86: tim@86: /** tim@86: * @see de.intevation.gnv.transition.TransitionBase#advance() tim@86: */ tim@86: @Override tim@86: public void advance() throws TransitionException { tim@86: log.debug("OutputTransitionBase.advance"); tim@86: if (this.chartResult == null){ tim@86: super.advance(); tim@86: } tim@86: } tim@86: tim@86: /** tim@86: * @see de.intevation.gnv.transition.TransitionBase#getInputData() tim@86: */ tim@86: @Override tim@86: public Collection getInputData() throws TransitionException { tim@86: log.debug("OutputTransitionBase.getInputData"); tim@86: this.chartResult = null; tim@86: return super.getInputData(); tim@86: } tim@64: tim@64: }