View Javadoc

1   // Created on 13.12.2003
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 }