package dk.hansen; import javax.servlet.ServletConfig; import javax.servlet.http.*; import javax.sql.DataSource; import org.apache.struts.action.*; public abstract class CommonBookAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws DAOException { HttpSession session = request.getSession(); if (session.getAttribute("bookfactory") == null) { // No factory factory created yet ServletConfig conf = servlet.getServletConfig(); String managerName = conf.getInitParameter("myfactory"); BookManagerFactoryIF factory = null; // Select the proper factory if (managerName.equals("Struts")) { DataSource dataSource = getDataSource(request); factory = new StrutsBookManagerFactory(dataSource); } else if (managerName.equals("Simple")) { factory = new SimpleBookManagerFactory(); } else if (managerName.equals("Tomcat")) { factory = new TomcatBookManagerFactory(); } else throw new DAOException("factory " + managerName + " is not known"); session.setAttribute("bookfactory", factory); } return commonExecute(mapping, form, request, response); } public abstract ActionForward commonExecute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response); }