View Javadoc

1   // $Id: UserEntryManager.java,v 1.5 2004/06/24 20:54:18 powerpete Exp $
2   package com.pnpconsult.zeiterfassung.helper;
3   
4   import java.util.Date;
5   import java.util.List;
6   
7   import net.sf.hibernate.HibernateException;
8   import net.sf.hibernate.Session;
9   import net.sf.hibernate.Transaction;
10  
11  import org.apache.commons.logging.Log;
12  import org.apache.commons.logging.LogFactory;
13  
14  import com.pnpconsult.zeiterfassung.model.BackupUserEntry;
15  import com.pnpconsult.zeiterfassung.model.UserEntry;
16  import com.pnpconsult.zeiterfassung.util.MinMaxDates;
17  
18  /***
19   * @author <a href="mailto:powerpete@users.sf.net">Moritz Petersen </a>
20   * @version $Id: UserEntryManager.java,v 1.5 2004/06/24 20:54:18 powerpete Exp $
21   */
22  public class UserEntryManager extends AbstractObjectManager2
23  {
24      private static final Log LOG = LogFactory.getLog(UserEntryManager.class);
25  
26      public UserEntry open(long id) throws HibernateException
27      {
28          return (UserEntry) super.load(UserEntry.class, new Long(id));
29      }
30  
31      public void createBackup(UserEntry entry) throws HibernateException
32      {
33          Session session = SessionLocator.getSession();
34          Transaction tx = session.beginTransaction();
35          try
36          {
37              session.save(new BackupUserEntry(entry));
38              tx.commit();
39          }
40          catch (HibernateException e)
41          {
42              tx.rollback();
43              throw e;
44          }
45          finally
46          {
47              session.close();
48          }
49      }
50  
51      public void delete(long id) throws HibernateException
52      {
53          super.delete(UserEntry.class, new Long(id));
54      }
55  
56      public MinMaxDates loadMinMaxDates() throws HibernateException
57      {
58          Session session = SessionLocator.getSession();
59          try
60          {
61              Object[] datesArray = findMinMaxDatesAsArray(
62                  session,
63                  "select min(entry.date), max(entry.date) from "
64                      + UserEntry.class.getName()
65                      + " entry");
66              Date min1 = (Date) datesArray[0];
67              Date max1 = (Date) datesArray[1];
68              MinMaxDates minMaxDates = new MinMaxDates(min1, max1);
69              return minMaxDates;
70          }
71          catch (HibernateException e)
72          {
73              throw e;
74          }
75          finally
76          {
77              session.close();
78          }
79      }
80  
81      private Object[] findMinMaxDatesAsArray(Session session, String query)
82          throws HibernateException
83      {
84          List dates = session.find(query);
85          if (dates.size() != 1)
86          {
87              LOG.warn("Unexpected number of result values: " + dates.size());
88          }
89          return (Object[]) dates.get(0);
90      }
91  }