tim@64: /** tim@64: * tim@64: */ tim@64: package de.intevation.gnv.transition; tim@64: tim@99: import java.io.OutputStream; tim@64: import java.util.ArrayList; tim@64: import java.util.Collection; tim@64: tim@99: import net.sf.ehcache.Element; tim@99: 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@99: import de.intevation.gnv.artifacts.cache.CacheFactory; 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@99: 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@99: public void advance(String uuid) throws TransitionException { tim@86: log.debug("OutputTransitionBase.advance"); tim@99: if (this.getChartResult(uuid) == null){ tim@99: super.advance(uuid); tim@86: } tim@86: } tim@86: tim@86: /** tim@99: * @see de.intevation.gnv.transition.OutputTransition#out(java.lang.String, java.util.Collection, java.io.OutputStream) tim@99: */ tim@99: public void out(String outputMode, Collection inputData, tim@99: OutputStream outputStream) throws TransitionException { tim@99: } tim@99: tim@99: /** tim@99: * @return tim@99: */ tim@99: protected Collection getChartResult(String uuid) { tim@99: log.debug("OutputTransitionBase.getChartResult"); tim@99: if (CacheFactory.getInstance().isInitialized()){ tim@99: String key = uuid+super.getID(); tim@99: log.debug("Hash for Queryelements: "+key); tim@99: Element value = CacheFactory.getInstance().getCache().get(key); tim@99: if (value != null){ tim@99: return (Collection)(value.getObjectValue()); tim@99: } tim@99: } tim@99: return null; tim@99: } tim@99: tim@99: /** tim@99: * @see de.intevation.gnv.transition.TransitionBase#purifyResult(java.util.Collection, java.lang.String) tim@86: */ tim@86: @Override tim@99: protected void purifyResult(Collection result, String uuid) { tim@99: log.debug("OutputTransitionBase.purifyResult"); tim@99: if (CacheFactory.getInstance().isInitialized()){ tim@99: String key = uuid+super.getID(); tim@99: log.debug("Hash for Queryelements: "+key); tim@99: CacheFactory.getInstance().getCache().put(new Element(key, result)); tim@99: } tim@86: } tim@64: tim@64: }