ingo@1022: /* ingo@1022: * Copyright (c) 2010 by Intevation GmbH ingo@1022: * ingo@1022: * This program is free software under the LGPL (>=v2.1) ingo@1022: * Read the file LGPL.txt coming with the software for details ingo@1022: * or visit http://www.gnu.org/licenses/ if it does not exist. ingo@1022: */ ingo@1022: tim@8: package de.intevation.gnv.action; tim@8: tim@19: import java.util.Collection; tim@19: tim@8: import javax.servlet.http.HttpServletRequest; tim@8: import javax.servlet.http.HttpServletResponse; tim@8: tim@8: import org.apache.log4j.Logger; tim@8: import org.apache.struts.action.ActionForm; tim@8: import org.apache.struts.action.ActionForward; tim@8: import org.apache.struts.action.ActionMapping; tim@8: tim@963: import de.intevation.gnv.action.sessionmodel.SessionModel; tim@963: import de.intevation.gnv.action.sessionmodel.SessionModelFactory; tim@963: import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClient; tim@963: import de.intevation.gnv.artifactdatabase.client.ArtifactDatabaseClientFactory; tim@963: import de.intevation.gnv.artifactdatabase.objects.ArtifactObject; tim@963: tim@8: /** ingo@690: * This controller is called to select a specific fis. sascha@699: * sascha@684: * @author Tim Englich tim@8: */ ingo@682: public class SelectArtifactFactoryAction extends DescribeUIAction { tim@963: tim@8: /** tim@8: * the logger, used to log exceptions and additonaly information tim@8: */ tim@36: private static Logger log = Logger tim@36: .getLogger(SelectArtifactFactoryAction.class); tim@36: tim@963: /** tim@963: * Constructor tim@963: */ tim@963: public SelectArtifactFactoryAction() { tim@963: super(); tim@963: } ingo@690: tim@8: @Override tim@8: public ActionForward execute(ActionMapping mapping, ActionForm form, tim@38: HttpServletRequest request, tim@38: HttpServletResponse response) throws Exception { tim@8: log.debug("SelectArtifactFactoryAction.execute"); tim@36: String selectedArtifactFactoryID = request tim@36: .getParameter("artifactFactory"); tim@36: log.debug("Selected ArtifactFactory ==> " + selectedArtifactFactoryID); tim@36: tim@34: try { tim@36: SessionModel sm = SessionModelFactory.getInstance() tim@36: .getSessionModel(request); tim@36: Collection artifactFactories = sm tim@36: .getArtifactFactories(); tim@390: // Removes the Artifactspecific Attributes from the SessionModel- tim@34: sm.resetModel(); tim@36: if (artifactFactories == null || artifactFactories.isEmpty()) { tim@36: new FetchArtifactFactoriesAction().execute(mapping, form, tim@36: request, response); tim@36: tim@34: } tim@36: tim@34: sm.selectArtifactFactory(selectedArtifactFactoryID); tim@36: ArtifactObject af = sm.getSelectedArtifactFactory(); ingo@690: tim@36: ArtifactDatabaseClient adc = ArtifactDatabaseClientFactory tim@40: .getInstance() tim@40: .getArtifactDatabaseClient(getLocale(request)); tim@34: ArtifactObject artifact = adc.createNewArtifact(af); tim@34: sm.setCurrentArtifact(artifact); tim@36: tim@34: return super.execute(mapping, form, request, response); tim@34: } catch (Exception e) { tim@36: log.error(e, e); tim@36: request.setAttribute( tim@36: CommunicationKeys.REQUEST_EXCEPTION_MESSAGE_ID, e tim@36: .getMessage()); tim@34: return super.getExceptionForward(mapping); tim@19: } tim@8: } tim@8: } sascha@700: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :