view gnv/src/main/java/de/intevation/gnv/action/ChangeOptionsAction.java @ 409:df78178e1180

Moved user interface creation to an own action. This makes avoids code duplication and makes it easier to write new action to handle special interactions, because there is no need for parsing the describe document and creating the user interface after this. gnv/trunk@599 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 22 Jan 2010 11:28:25 +0000
parents b5733f9f386b
children 9a5e50e7afaa
line wrap: on
line source
/**
 *
 */
package de.intevation.gnv.action;

import java.util.Collection;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import de.intevation.gnv.action.sessionmodel.DiagrammOptions;
import de.intevation.gnv.action.sessionmodel.SessionModel;
import de.intevation.gnv.action.sessionmodel.SessionModelFactory;
import de.intevation.gnv.artifactdatabase.objects.ArtifactDescription;
import de.intevation.gnv.artifactdatabase.objects.OutputMode;
import de.intevation.gnv.artifactdatabase.objects.OutputParameter;

/**
 * @author Tim Englich <tim.englich@intevation.de>
 * 
 */
public class ChangeOptionsAction extends DescribeUIAction {
    /**
     * the logger, used to log exceptions and additonaly information
     */
    private static Logger log = Logger.getLogger(ChangeOptionsAction.class);

    /**
     * Constructor
     */
    public ChangeOptionsAction() {
        super();
    }

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response) throws Exception {
        log.debug("NextArtifactStepAction.execute");
        try {
            SessionModel sm = SessionModelFactory.getInstance()
                    .getSessionModel(request);

            ArtifactDescription ad = sm.getArtifactDescription();

            String target = request.getParameter("target");
            OutputMode outputMode = sm.getOutputMode(target);
            if (outputMode != null) {

                Collection<OutputParameter> op = outputMode
                        .getOutputParameters();
                if (op != null) {
                    Iterator<OutputParameter> it = op.iterator();
                    DiagrammOptions diagrammOptions = new DiagrammOptions();
                    while (it.hasNext()) {
                        OutputParameter parameter = it.next();
                        String value = request.getParameter(parameter.getName());
                        if (parameter.getType().equalsIgnoreCase("boolean")){
                            if (value == null){
                                value = "false";
                            }
                            else {
                                value = "true";
                            }
                        }
                        diagrammOptions.setValue(parameter.getName(),value);

                    }
                    sm.setDiagrammOptions(diagrammOptions);
                }
            }

            Map tmpOuts = ad.getOutputModes();
            if (tmpOuts == null || tmpOuts.isEmpty()) {
                request.setAttribute("furthertargets", true);
            }
            else {
                request.setAttribute("diagramm", true);
            }

            return super.execute(mapping, form, request, response);
        } catch (Exception e) {
            log.error(e, e);
            request.setAttribute(
                    CommunicationKeys.REQUEST_EXCEPTION_MESSAGE_ID, e
                            .getMessage());
            return super.getExceptionForward(mapping);
        }
    }

}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org