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