1
2
3
4
5
6
7 package ch.ledcom.hephaistos.abstractActions;
8
9 import java.util.List;
10
11 import javax.servlet.ServletContext;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14
15 import net.sf.hibernate.HibernateException;
16 import net.sf.hibernate.Session;
17 import net.sf.hibernate.SessionFactory;
18
19 import org.apache.log4j.Logger;
20 import org.apache.struts.action.Action;
21 import org.apache.struts.action.ActionForm;
22 import org.apache.struts.action.ActionForward;
23 import org.apache.struts.action.ActionMapping;
24
25 import ch.ledcom.hephaistos.dao.HibernatePlugIn;
26
27 /***
28 * @author gehel
29 *
30 * TODO To change the template for this generated type comment go to
31 * Window - Preferences - Java - Code Style - Code Templates
32 */
33 public abstract class HibernateListAction extends Action {
34 private static final Logger logger = Logger
35 .getLogger(HibernateListAction.class);
36
37
38 protected List getHibernateList (ActionForm form) {
39 List list = null;
40
41 Session hibSession = null;
42
43 try {
44 ServletContext servletContext = servlet.getServletContext();
45 logger.debug("Getting session factory ...");
46 SessionFactory sf = (SessionFactory) servletContext
47 .getAttribute(HibernatePlugIn.SESSION_FACTORY_KEY);
48 hibSession = sf.openSession();
49
50 list = getList (form, hibSession);
51
52 } catch (HibernateException he) {
53 logger.error("Hibernate session could not be opened", he);
54 } finally {
55 try {
56 if (hibSession != null) {
57 hibSession.close();
58 }
59 } catch (HibernateException he) {
60 logger.warn("Hibernate session could not be closed", he);
61 }
62 }
63
64 return list;
65 }
66
67 protected abstract List getList(ActionForm form, Session session) throws HibernateException;
68
69
70
71 public ActionForward execute(ActionMapping mapping, ActionForm form,
72 HttpServletRequest request, HttpServletResponse response) {
73 String target = new String("success");
74
75 List list = null;
76
77 list = getHibernateList(form);
78
79 if (list == null) {
80 target = new String("failure");
81 } else {
82 request.setAttribute("list", list);
83 }
84
85 return (mapping.findForward(target));
86 }
87
88 }