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 :