1
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 }