4A Server -  2.0
 All Classes Namespaces Files Functions Variables Enumerator
UserSelectionForGroup.java
Go to the documentation of this file.
1 /*
2  * Project: Server for annotations sharing
3  * Author: Ing. Jaroslav Dytrych idytrych@fit.vutbr.cz
4  * File: UserSelectionForGroup.java
5  * Description: Backbean for page with selection of user
6  */
7 
8 /**
9  * @file UserSelectionForGroup.java
10  *
11  * @brief Backbean for page with selection of user
12  */
13 
14 package cz.vutbr.fit.knot.annotations.web;
15 
20 import java.io.Serializable;
21 import java.util.Iterator;
22 import java.util.List;
23 import java.util.logging.Level;
24 import java.util.logging.Logger;
25 import javax.faces.bean.ManagedBean;
26 import javax.faces.bean.ViewScoped;
27 import javax.faces.component.html.HtmlDataTable;
28 import javax.persistence.EntityManager;
29 import javax.persistence.EntityTransaction;
30 
31 /**
32  * Backbean for page with selection of user
33  *
34  * @brief Backbean for page with selection of user
35  * @author idytrych
36  */
37 @ManagedBean
38 @ViewScoped
39 public class UserSelectionForGroup implements Serializable {
40  /**
41  * Table with users
42  */
43  private HtmlDataTable listTable;
44  /**
45  * User selected in the table
46  */
47  private User user;
48  /**
49  * Error message to display
50  */
51  private String errorMessage = "";
52  /**
53  * Edited user group (for selection variant)
54  */
55  private UserGroup editedUG = null;
56  /**
57  * Backup of form data
58  */
59  private Object formBackup = null;
60 
61  /**
62  * Constructor
63  */
65  this.user = new User();
66  }
67 
68  /**
69  * Gets user selected in the table
70  *
71  * @return Returns user selected in the table
72  */
73  public User getUser() {
74  return user;
75  }
76 
77  /**
78  * Sets user selected in the table
79  *
80  * @param user
81  */
82  public void setUser(User user) {
83  this.user = user;
84  }
85 
86  /**
87  * Gets table with user
88  *
89  * @return Returns table with user
90  */
91  public HtmlDataTable getListTable() {
92  return listTable;
93  }
94 
95  /**
96  * Sets table with user
97  *
98  * @param listTable Table with user
99  */
100  public void setListTable(HtmlDataTable listTable) {
101  this.listTable = listTable;
102  }
103 
104  /**
105  * Gets list of all existing users which aren't in given group
106  *
107  * @return Returns list of users
108  */
109  public List<User> getUsersList() {
110  if (editedUG == null) {
111  editedUG = SessionManager.getSession().getEditedUG();
112  formBackup = SessionManager.getSession().getFormBackup();
113  }
114  @SuppressWarnings("unchecked")
115  List<User> retList = AppBean.getPersistenceManager().getEntitiesByName("User");
116  // remove users already in group
117  for (Iterator<User> it = retList.iterator(); it.hasNext();) {
118  User u = it.next();
119  if (editedUG.getUsers().contains(u)) {
120  it.remove();
121  }
122  }
123  return retList;
124  }
125 
126  /**
127  * Action listener for select links in table
128  *
129  * @returns Returns page outcome (identificator of next page or null to stay here)
130  */
131  public String btnSelectAction(Integer id) {
132  // gets row data of selected row
133  User refU = new User(id);
134  int index = getUsersList().indexOf(refU);
135  user = getUsersList().get(index);
136  try {
137  EntityManager em = AppBean.getPersistenceManager().getEM();
138  EntityTransaction transaction = em.getTransaction();
139  transaction.begin();
140  user = em.merge(user);
141  editedUG = em.merge(editedUG);
142  editedUG.getUsers().add(user); // remove user from group
143  user.addGroup(editedUG);
144  em.flush();
145  transaction.commit();
146  } catch (Exception e) {
147  errorMessage = MessageProvider.getMessage("ucerCantBeAddedDBFailure");
149  String msg = "Adding of user to user group failed.";
150  Logger.getLogger(UserSelectionForGroup.class.getName()).log(Level.SEVERE, msg, e);
151  }
152  return null;
153  }
154 
155  AppBean.refreshUsersInSessions(user); // refreshes data in sessions
156 
157  SessionManager.getSession().setEditedUG(editedUG);
158  SessionManager.getSession().setFormBackup(formBackup);
159  return "editUG";
160  }
161 
162  /**
163  * Action listener for cancel button
164  *
165  * @return Returns page outcome (identificator of next page)
166  */
167  public String btnCancelAction() {
168  SessionManager.getSession().setEditedUG(editedUG);
169  SessionManager.getSession().setFormBackup(formBackup);
170  return "editUG";
171  }
172 
173  /**
174  * Gets error message to display
175  *
176  * @return Returns error message to display
177  */
178  public String getErrorMessage() {
179  return errorMessage;
180  }
181 
182  /**
183  * Sets error message to display
184  *
185  * @param errorMessage Error message to display
186  */
187  public void setErrorMessage(String errorMessage) {
188  this.errorMessage = errorMessage;
189  }
190 
191 } // public class UserSelectionForGroup
Singleton for storing global variables.
Definition: AppBean.java:47
Class representing user group.
Definition: UserGroup.java:47
Class representing user.
Definition: User.java:51