View Javadoc

1   /*
2    * Created on Sep 13, 2004
3    *
4    * TODO To change the template for this generated file go to
5    * Window - Preferences - Java - Code Style - Code Templates
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 { // closing session
56          if (hibSession != null) {
57            hibSession.close();
58          }
59        } catch (HibernateException he) {
60          logger.warn("Hibernate session could not be closed", he);
61        } // closing session
62      } // getting session
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  }