1
2 package com.pnpconsult.zeiterfassung.helper;
3
4 import java.util.Collection;
5 import java.util.Iterator;
6 import java.util.List;
7
8 import net.sf.hibernate.Hibernate;
9 import net.sf.hibernate.HibernateException;
10 import net.sf.hibernate.Session;
11 import net.sf.hibernate.Transaction;
12 import net.sf.hibernate.type.Type;
13
14 import com.pnpconsult.zeiterfassung.model.Project;
15 import com.pnpconsult.zeiterfassung.model.User;
16 import com.pnpconsult.zeiterfassung.model.UserEntry;
17 import com.pnpconsult.zeiterfassung.model.UserProject;
18
19 /***
20 * @author <a href="mailto:powerpete@users.sf.net">M. Petersen </a>
21 * @version $Id: UserManager.java,v 1.9 2004/06/24 20:54:18 powerpete Exp $
22 */
23 public class UserManager extends AbstractObjectManager2
24 {
25 /***
26 * @see com.pnpconsult.zeiterfassung.helper.UserManager#loadAll()
27 */
28 public List loadAll() throws HibernateException
29 {
30 return loadAll(User.class);
31 }
32
33 /***
34 * @see com.pnpconsult.zeiterfassung.helper.UserManager#setUserProjects(com.pnpconsult.zeiterfassung.model.User,
35 * java.lang.String[])
36 */
37 public void setUserProjects(User user, Collection userProjects)
38 throws HibernateException
39 {
40 Session session = SessionLocator.getSession();
41 Transaction tx = session.beginTransaction();
42 try
43 {
44 deleteUserProjects(session, user);
45 for (Iterator it = userProjects.iterator(); it.hasNext();)
46 {
47 UserProject userProject = (UserProject) it.next();
48 long projectId = userProject.getProject().getId();
49 Project project = (Project) session.load(
50 Project.class,
51 new Long(projectId));
52 userProject.setProject(project);
53 userProject.setUser(user);
54 user.addUserProject(userProject);
55 session.save(userProject);
56 }
57 tx.commit();
58 }
59 catch (HibernateException e)
60 {
61 tx.rollback();
62 throw e;
63 }
64 finally
65 {
66 session.close();
67 }
68 }
69
70 private void deleteUserProjects(Session session, User user)
71 throws HibernateException
72 {
73 session.delete(
74 "from "
75 + UserProject.class.getName()
76 + " userProject where userProject.user.login = ?",
77 user.getLogin(),
78 Hibernate.STRING);
79 user.setUserProjects(null);
80 }
81
82 /***
83 * @param login
84 * @return
85 */
86 public User load(String login) throws HibernateException
87 {
88 return (User) load(User.class, login);
89 }
90
91 public void deleteEntry(String login, long entryId)
92 throws HibernateException
93 {
94 Session session = SessionLocator.getSession();
95 Transaction tx = session.beginTransaction();
96 try
97 {
98 User user = (User) session.load(User.class, login);
99 UserEntry entry = (UserEntry) session.load(
100 UserEntry.class,
101 new Long(entryId));
102 session.delete(entry);
103 user.getUserEntries().remove(entry);
104 session.save(user);
105 tx.commit();
106 }
107 catch (HibernateException e)
108 {
109 tx.rollback();
110 throw e;
111 }
112 finally
113 {
114 session.close();
115 }
116 }
117
118 /***
119 * @param login
120 */
121 public void saveEntries(String login) throws HibernateException
122 {
123 User user = load(login);
124 Session session = SessionLocator.getSession();
125 Transaction tx = session.beginTransaction();
126 for (Iterator it = user.getUserEntries().iterator(); it.hasNext();)
127 {
128 UserEntry entry = (UserEntry) it.next();
129 if (!entry.isSaved())
130 {
131 entry.setSaved(true);
132 session.saveOrUpdate(entry);
133 }
134 }
135 tx.commit();
136 session.close();
137 }
138
139 public boolean exists(String login) throws HibernateException
140 {
141 String query = "as u where u.login = ?";
142 List list = find(User.class, query, login, Hibernate.STRING);
143 return list.size() > 0;
144 }
145
146 public Collection loadUserProjects(String userLogin, long projectId)
147 throws HibernateException
148 {
149 return find(
150 UserProject.class,
151 "as u where u.user.login=? and u.project.id=?",
152 new Object[] { userLogin, new Long(projectId) },
153 new Type[] { Hibernate.STRING, Hibernate.LONG });
154 }
155
156 public void deleteUser(String login) throws HibernateException
157 {
158 Session session = SessionLocator.getSession();
159 Transaction tx = session.beginTransaction();
160 User user = (User) session.load(User.class, login);
161 deleteUserProjects(session, user);
162 session.delete(user);
163 tx.commit();
164 session.close();
165 }
166
167 public List loadNotArchived() throws HibernateException
168 {
169 return super.loadAllNotArchived(User.class);
170 }
171 }