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.sessionmodel;
tim@8:
tim@8: import javax.servlet.http.HttpServletRequest;
tim@8:
tim@8: import org.apache.log4j.Logger;
tim@8:
tim@8: /**
ingo@690: * Creates and restores SessionModel
objects from
ingo@690: * HttpServletRequest
.
sascha@699: *
sascha@684: * @author Tim Englich
tim@8: */
tim@8: public class SessionModelFactory {
tim@36:
tim@954: /**
tim@954: * The id of the SessionModel
that must be used to lookup the
tim@954: * model from the given HttpSession of the request.
tim@954: */
tim@954: public final static String SESSION_MODEL_ID = "de.intevation.gnv.action." +
tim@954: "sessionmodel.SessionModel.ID";
tim@954:
tim@8: /**
tim@8: * the logger, used to log exceptions and additonaly information
tim@8: */
tim@8: private static Logger log = Logger.getLogger(SessionModelFactory.class);
tim@8:
tim@8: /**
tim@8: * The singleton Instance of this Factory.
tim@8: */
tim@8: private static SessionModelFactory instance = null;
tim@8:
tim@8: /**
tim@8: * Constructor
tim@8: */
tim@8: private SessionModelFactory() {
tim@8: super();
tim@8: }
tim@8:
tim@8: /**
tim@8: * This Method provides an singleton Instance of this Class.
tim@8: * @return an singleton Instance of this Class
tim@8: */
ingo@394: public synchronized static SessionModelFactory getInstance() {
tim@954: log.debug("SessionModelFactory.getInstance");
tim@36: if (instance == null) {
tim@8: instance = new SessionModelFactory();
tim@8: }
tim@8: return instance;
tim@8: }
tim@36:
tim@8: /**
tim@8: * Getting the ArtifactDatabaseClient
tim@954: * @param request the tequest from which the SessionModel should be read.
tim@8: * @return the ArtifactDatabaseClient
tim@8: */
tim@36: public SessionModel getSessionModel(HttpServletRequest request) {
tim@954: log.debug("SessionModelFactory.getSessionModel");
ingo@394: synchronized (request) {
tim@8: SessionModel sm = null;
ingo@394: Object obj = request.getSession().getAttribute(SESSION_MODEL_ID);
ingo@394: if (obj instanceof SessionModel) {
ingo@394: sm = (SessionModel) obj;
tim@36: } else {
ingo@706: sm = new DefaultSessionModel(request.getLocale());
tim@8: request.getSession().setAttribute(SESSION_MODEL_ID, sm);
tim@8: }
tim@36:
tim@8: return sm;
tim@36: }
tim@8: }
tim@8: }
sascha@700: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :