Package eu.planets_project.pp.plato.action.workflow

Source Code of eu.planets_project.pp.plato.action.workflow.DevelopExperimentsAction

/*******************************************************************************
* Copyright (c) 2006-2010 Vienna University of Technology,
* Department of Software Technology and Interactive Systems
*
* All rights reserved. This program and the accompanying
* materials are made available under the terms of the
* Apache License, Version 2.0 which accompanies
* this distribution, and is available at
* http://www.apache.org/licenses/LICENSE-2.0
*******************************************************************************/

package eu.planets_project.pp.plato.action.workflow;

import javax.ejb.Remove;
import javax.ejb.Stateful;

import org.jboss.annotation.ejb.cache.Cache;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;

import eu.planets_project.pp.plato.action.interfaces.IDevelopExperiments;
import eu.planets_project.pp.plato.action.interfaces.IRunExperiments;
import eu.planets_project.pp.plato.action.interfaces.IWorkflowStep;
import eu.planets_project.pp.plato.bean.PrepareChangesForPersist;
import eu.planets_project.pp.plato.model.Alternative;
import eu.planets_project.pp.plato.model.PlanState;
import eu.planets_project.pp.plato.model.User;

/**
* Implements actions for workflow step 'Develop Experiments'.
*
* At present this is just a text box per alternative.
*
* @author Hannes Kulovits
*/
@Stateful
@Scope(ScopeType.SESSION)
@Name("devexperiments")
@Cache(org.jboss.ejb3.cache.NoPassivationCache.class)
public class DevelopExperimentsAction extends AbstractWorkflowStep implements IDevelopExperiments {

    /**
     *
     */
    private static final long serialVersionUID = 815927044490356685L;

    @In(create=true)
    IRunExperiments runexperiments;

    @In (required=false)
    private User user;

    protected IWorkflowStep getSuccessor() {
        return runexperiments;
    }

    public DevelopExperimentsAction() {
        requiredPlanState = new Integer(PlanState.GO_CHOSEN);
    }

    /**
     * @see AbstractWorkflowStep#init()
     */
    public void init() {
       
        // if alternative has config setting defined (e.g. parameters for web services) we adopt
        // them as experiment settings
//        for (Alternative alt : selectedPlan.getAlternativesDefinition().getConsideredAlternatives()) {
//
//            if (alt.getExperiment().getSettings() == null || "".equals(alt.getExperiment().getSettings())) {
//                alt.getExperiment().setSettings(alt.getResourceDescription().getConfigSettings());
//            }
//        }
    }

    /**
     * @see AbstractWorkflowStep#save()
     */
    public String save() {
        /** dont forget to prepare changed entities e.g. set current user */
        PrepareChangesForPersist prep = new PrepareChangesForPersist(user.getUsername());

        for (Alternative alt : selectedPlan.getAlternativesDefinition().getAlternatives()) {
            prep.prepare(alt);
            em.persist(em.merge(alt));
        }

        super.save(selectedPlan.getAlternativesDefinition());
        changed = "";

        return null;
    }

    /**
     * @see AbstractWorkflowStep#validate(boolean)
     *
     * @return Always returns true
     */
    public boolean validate(boolean showValidationErrors) {
        return true;
    }

    /**
     * @see AbstractWorkflowStep#destroy()
     */
    @Destroy
    @Remove
    public void destroy() {
    }

    /**
     * @see AbstractWorkflowStep#getWorkflowstepName()
     *
     * @return "devexperiments"
     */
    protected String getWorkflowstepName() {
        return "devexperiments";
    }

}
TOP

Related Classes of eu.planets_project.pp.plato.action.workflow.DevelopExperimentsAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.