14 package cz.vutbr.fit.knot.annotations.web;
23 import java.io.Serializable;
24 import java.security.MessageDigest;
25 import java.security.NoSuchAlgorithmException;
26 import java.util.Iterator;
27 import java.util.List;
28 import java.util.ListIterator;
29 import java.util.logging.Level;
30 import java.util.logging.Logger;
31 import javax.faces.bean.ManagedBean;
32 import javax.faces.bean.ViewScoped;
33 import javax.faces.component.html.HtmlDataTable;
34 import javax.persistence.EntityManager;
35 import javax.persistence.EntityTransaction;
45 public class EditUser implements Serializable {
61 private String
name = null;
100 SessionManager.getSession().setFormBackup(null);
101 SessionManager.getSession().setEditedUser(null);
105 boolean errorOccurred =
false;
107 if (
login.isEmpty()) {
109 errorOccurred =
true;
113 errorOccurred =
true;
115 if (
name.isEmpty()) {
117 errorOccurred =
true;
125 user.setLogin(
login);
127 user.setEmail(
email);
132 MessageDigest md5 = MessageDigest.getInstance(
"MD5");
133 md5.update(password.getBytes());
134 hash = MessageProcessor.getHexString(md5.digest());
135 }
catch (NoSuchAlgorithmException ex) {
138 user.setPassword(hash);
143 errorMessage = MessageProvider.getMessage(
"changesNSDatabaseFailure");
145 String msg =
"Persisting of changes in the user account failed.";
146 Logger.getLogger(EditUser.class.getName()).log(Level.SEVERE, msg);
153 AppBean.refreshUsersInSessions(
user);
155 SessionManager.getSession().setFormBackup(null);
156 SessionManager.getSession().setEditedUser(null);
167 SessionManager.getSession().setFormBackup(null);
168 SessionManager.getSession().setEditedUser(null);
172 boolean errorOccurred =
false;
174 if (
login.isEmpty()) {
176 errorOccurred =
true;
180 errorOccurred =
true;
184 errorOccurred =
true;
186 if (
name.isEmpty()) {
188 errorOccurred =
true;
198 MessageDigest md5 = MessageDigest.getInstance(
"MD5");
199 md5.update(password.getBytes());
200 hash = MessageProcessor.getHexString(md5.digest());
201 }
catch (NoSuchAlgorithmException ex) {
210 errorMessage = MessageProvider.getMessage(
"newuserNSDatabaseFailure");
212 String msg =
"Persisting of new user account failed.";
213 Logger.getLogger(EditUser.class.getName()).log(Level.SEVERE, msg);
218 Object[] params = {
"login",
login};
219 @SuppressWarnings(
"unchecked")
220 List<User> userList = AppBean.getPersistenceManager().queryDB(
"User.findByLogin",params);
221 if(userList != null) {
224 if(resultError != null){
230 SessionManager.getSession().setFormBackup(null);
231 SessionManager.getSession().setEditedUser(null);
241 SessionManager.getSession().setFormBackup(null);
242 SessionManager.getSession().setEditedUser(null);
245 }
else return "users";
256 SessionManager.getSession().setFormBackup(null);
257 SessionManager.getSession().setEditedUser(null);
261 Object[] params =
new Object[2];
263 params[1] = user.getId();
264 List gList = AppBean.getPersistenceManager().queryDB(
"Annotation.findByAuthor", params);
265 if (gList != null && !gList.isEmpty()) {
266 errorMessage = MessageProvider.getMessage(
"ifAnnotationsExistsUserCantBeDeleted");
271 for (Iterator<UserGroup> gIt =
user.
getGroups().iterator(); gIt.hasNext();) {
274 errorMessage = MessageProvider.getMessage(
"removeLastAdmin");
280 params[0] =
"userId";
281 params[1] = user.getId();
282 @SuppressWarnings(
"unchecked")
283 List<Settings> settingsList = AppBean.getPersistenceManager().queryDB(
"Settings.findByUser",params);
284 if(settingsList != null && !settingsList.isEmpty()){
285 Iterator<Settings> settingsIt = settingsList.iterator();
286 while(settingsIt.hasNext()){
287 Settings actualSetting = settingsIt.next();
289 errorMessage = MessageProvider.getMessage(
"userSettingsDeleteError");
291 String msg =
"DB failure during deleting of user settings.";
292 Logger.getLogger(EditUser.class.getName()).log(Level.SEVERE, msg);
300 errorMessage = MessageProvider.getMessage(
"userCantBeDeletedDatabaseFailure");
302 String msg =
"DB failure during deleting of user account.";
303 Logger.getLogger(EditUser.class.getName()).log(Level.SEVERE, msg);
308 SessionManager.getSession().setFormBackup(null);
309 SessionManager.getSession().setEditedUser(null);
321 user = SessionManager.getSession().getEditedUser();
343 user = SessionManager.getSession().getEditedUser();
349 if (backup.
getId() != user.getId()) {
354 if (
name == null && backup != null) {
355 name = backup.getName();
356 }
else if (
name == null &&
user != null) {
357 name = user.getName();
358 }
else if (
name == null) {
381 user = SessionManager.getSession().getEditedUser();
387 if (backup.
getId() != user.getId()) {
392 if (
login == null && backup != null) {
393 login = backup.getLogin();
394 }
else if (
login == null &&
user != null) {
395 login = user.getLogin();
396 }
else if (
login == null) {
419 user = SessionManager.getSession().getEditedUser();
425 if (backup.
getId() != user.getId()) {
430 if (
comeFrom == null && backup != null) {
457 user = SessionManager.getSession().getEditedUser();
463 if (backup.
getId() != user.getId()) {
468 if (
email == null && backup != null) {
469 email = backup.getEmail();
470 }
else if (
email == null &&
user != null) {
471 email = user.getEmail();
472 }
else if (
email == null) {
565 user = SessionManager.getSession().getEditedUser();
566 if(
user == null)
return null;
568 return user.getGroups();
601 SessionManager.getSession().setFormBackup(null);
602 SessionManager.getSession().setEditedUser(null);
609 if (userGroup.getName().equalsIgnoreCase(
Constants.ADMIN_GROUP) && userGroup.getUsers().size() < 2) {
611 errorMessage = MessageProvider.getMessage(
"removeLastAdmin");
615 EntityManager em = AppBean.getPersistenceManager().getEM();
616 EntityTransaction transaction = em.getTransaction();
620 userGroup.getUsers().
remove(user);
621 user.getGroups().
remove(userGroup);
623 transaction.commit();
624 }
catch (Exception e) {
625 errorMessage = MessageProvider.getMessage(
"userCantBeREmovedDFromGroup");
627 String msg =
"Removing of user from the user group failed.";
628 Logger.getLogger(EditUser.class.getName()).log(Level.SEVERE, msg, e);
633 AppBean.refreshUsersInSessions(
user);
646 SessionManager.getSession().setFormBackup(null);
647 SessionManager.getSession().setEditedUser(null);
652 SessionManager.getSession().setFormBackup(backup);
654 SessionManager.getSession().setEditedUser(
user);
655 return "selectUserGroup";
660 SessionManager.getSession().setFormBackup(null);
661 SessionManager.getSession().setEditedUser(null);
664 @SuppressWarnings(
"unchecked")
665 List<DefaultSettings> settingsList = AppBean.getPersistenceManager().queryDB(
"DefaultSettings.findAll");
666 if(settingsList != null){
667 String errorMessageOut;
668 ListIterator<DefaultSettings> resultIt = settingsList.listIterator();
669 while(resultIt.hasNext()){
674 errorMessageOut = MessageProvider.getMessage(
"newUserSettingDBFailure");
676 String msg =
"Persisting of new user settings failed.";
677 Logger.getLogger(EditUser.class.getName()).log(Level.SEVERE, msg);
679 return errorMessageOut;
void setUserGroup(UserGroup userGroup)
String getPasswordControl()
List< UserGroup > getUserGroupsList()
static WebSession getSession()
Class for manipulating with session.
void setComeFrom(String comeFrom)
Singleton for storing global variables.
String actionRemoveUserFromGroup(Integer id)
static final String ADMIN_GROUP
String btnSaveNewAction()
Static class which parses and process XML with messages.
Class representing user group.
Class representing parameter of user settings.
HtmlDataTable getListTable()
void setPasswordControl(String passwordControl)
void setErrorMessage(String errorMessage)
void setEmail(String email)
List< UserGroup > getGroups()
static final int LOG_LEVEL
String actionAddUserGroup()
Backbean for adding, editing and deleting of users.
void setPassword(String password)
void setLogin(String login)
static PersistM getPersistenceManager()
Class representing parameter of default user settings.
String loadDefaultSettings(User user)
static final int LOG_LEVEL_SERVER_ERRORS
void setListTable(HtmlDataTable listTable)
void setName(String name)