Java tutorial
/******************************************************************************* * 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.fte; import javax.ejb.Remove; import javax.ejb.Stateful; import org.apache.commons.logging.Log; 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.IAnalyseResults; import eu.planets_project.pp.plato.action.interfaces.IFastTrackAnalyseResults; import eu.planets_project.pp.plato.action.interfaces.IWorkflowStep; import eu.planets_project.pp.plato.action.workflow.AbstractWorkflowStep; import eu.planets_project.pp.plato.bean.PrepareChangesForPersist; import eu.planets_project.pp.plato.model.PlanState; import eu.planets_project.pp.plato.model.tree.Leaf; import eu.planets_project.pp.plato.util.PlatoLogger; /** * Action handler for the third step of Fast-track evaluation: Analyse results. * @author cbu */ @Stateful @Scope(ScopeType.SESSION) @Name("FTanalyse") @Cache(org.jboss.ejb3.cache.NoPassivationCache.class) public class AnalyseResultsFastTrack extends AbstractWorkflowStep implements IFastTrackAnalyseResults { private static final long serialVersionUID = 4514931519604967651L; private static final Log log = PlatoLogger.getLogger(AnalyseResultsFastTrack.class); @In(create = true) private IAnalyseResults analyseResults; public AnalyseResultsFastTrack() { requiredPlanState = new Integer(PlanState.FTE_ALTERNATIVES_EVALUATED); } @Override protected void init() { for (Leaf l : selectedPlan.getTree().getRoot().getAllLeaves()) { // initialise the values for free text transformers // AND fill up unmapped values to map to neutral, i.e. 2.5, in the transformer // since the user wont be able to edit the mappings in FTE... l.initTransformer(new Double(2.5)); } analyseResults.init(); } public String createPreservationPlan() { selectedPlan.createPPFromFastTrack(); selectedPlan.getState().setValue(PlanState.INITIALISED); return "success"; } /** * @see AbstractWorkflowStep#getWorkflowstepName() */ @Override protected String getWorkflowstepName() { return "FTanalyse"; } /** * @see AbstractWorkflowStep#getSuccessor() */ @Override protected IWorkflowStep getSuccessor() { return null; } @Override public String save() { analyseResults.save(); if (selectedPlan.getRecommendation().getAlternative() != null) { selectedPlan.getState().setValue(PlanState.FTE_RESULTS_ANALYSED); } else { selectedPlan.getState().setValue(PlanState.FTE_ALTERNATIVES_EVALUATED); } /** dont forget to prepare changed entities e.g. set current user */ PrepareChangesForPersist prep = new PrepareChangesForPersist(user.getUsername()); prep.prepare(selectedPlan.getState()); em.persist(em.merge(selectedPlan.getState())); em.flush(); changed = ""; return ""; } public boolean validate(boolean showValidationErrors) { return true; } @Destroy @Remove public void destroy() { } }