ingo@1115: /*
ingo@1115: * Copyright (c) 2010 by Intevation GmbH
ingo@1115: *
ingo@1115: * This program is free software under the LGPL (>=v2.1)
ingo@1115: * Read the file LGPL.txt coming with the software for details
ingo@1115: * or visit http://www.gnu.org/licenses/ if it does not exist.
ingo@1115: */
ingo@1115:
tim@612: package de.intevation.gnv.state;
tim@612:
sascha@779: import de.intevation.artifactdatabase.Config;
sascha@779:
sascha@779: import de.intevation.artifacts.CallContext;
sascha@779:
sascha@779: import de.intevation.gnv.state.exception.StateException;
sascha@779:
tim@612: import java.util.ArrayList;
tim@612: import java.util.Collection;
tim@612: import java.util.Map;
tim@612:
tim@612: import org.w3c.dom.Element;
tim@612: import org.w3c.dom.Node;
tim@612:
tim@612: /**
ingo@796: * This special state does a lookup for already inserted data while
ingo@796: * initializing. If there are some data for this state, take them for further
ingo@796: * work.
ingo@796: *
sascha@780: * @author Tim Englich
tim@612: */
tim@612: public class PreSettingsTransferState extends DefaultState {
tim@612:
tim@612: /**
tim@612: * The UID of this Class
tim@612: */
tim@612: private static final long serialVersionUID = 573381812690806922L;
tim@612:
tim@612: private String transferPreSettingsName = null;
sascha@778:
tim@612: private String transferInputDataname = null;
tim@612: /**
tim@612: * Constructor
tim@612: */
tim@612: public PreSettingsTransferState() {
tim@612: super();
tim@612: }
tim@612:
ingo@796:
tim@612: /**
ingo@796: * This method does a lookup for already inserted data before initializing
ingo@796: * it.
sascha@803: *
ingo@796: * @param uuid
ingo@796: * @param context
ingo@796: * @throws StateException
tim@612: */
tim@612: @Override
tim@612: public void initialize(String uuid, CallContext context)
tim@612: throws StateException {
tim@612: Map preSettings = this.getPreSettings();
tim@612: if (preSettings != null){
tim@612: InputData ip = preSettings.get(transferPreSettingsName);
tim@612: if (ip != null){
tim@612: Collection localInputdata = new ArrayList(1);
tim@612: localInputdata.add(new DefaultInputData(transferInputDataname,
tim@612: ip.getValue()));
tim@612: this.putInputData(localInputdata, uuid);
tim@612: }
tim@612: }
sascha@778:
tim@612: super.initialize(uuid, context);
tim@612: }
tim@612:
ingo@796:
tim@612: /**
sascha@803: *
ingo@796: * @param configuration
tim@612: */
tim@612: @Override
tim@612: public void setup(Node configuration) {
sascha@778:
tim@612: Element preSettingsNode = (Element)Config.getNodeXPath(configuration,
tim@612: "presettings-transfer");
tim@612: if (preSettingsNode != null){
tim@612: this.transferPreSettingsName = preSettingsNode.getAttribute("presetting");
tim@732: this.transferInputDataname = preSettingsNode.getAttribute("inputvalue");
tim@612: }
tim@612: super.setup(configuration);
tim@612: }
tim@612: }
sascha@836: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :