[Suiviobsmer-commits] r859 - in trunk/wao-business/src/main: java/fr/ifremer/wao/entity java/fr/ifremer/wao/service xmi
Author: bleny Date: 2010-12-24 15:10:34 +0000 (Fri, 24 Dec 2010) New Revision: 859 Log: fix user update Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java trunk/wao-business/src/main/xmi/wao.zargo Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java 2010-12-24 12:42:45 UTC (rev 858) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java 2010-12-24 15:10:34 UTC (rev 859) @@ -25,13 +25,14 @@ package fr.ifremer.wao.entity; import fr.ifremer.wao.WaoUtils; +import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.bean.UserRole; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.Serializable; import java.util.ArrayList; -import java.util.Collection; +import java.util.List; /** * UserImpl @@ -89,4 +90,25 @@ } return false; } + + @Override + public List<UserProfile> getUserProfile(ObsProgram obsProgram) { + List<UserProfile> userProfiles = new ArrayList<UserProfile>(); + if (getUserProfile() != null) { + for (UserProfile userProfile : getUserProfile()) { + if (userProfile.getObsProgram().equals(obsProgram)) { + userProfiles.add(userProfile); + } + } + } + return userProfiles; + } + + @Override + public void clearUserProfile(ObsProgram obsProgram) { + List<UserProfile> userProfiles = getUserProfile(obsProgram); + for (UserProfile userProfile : userProfiles) { + removeUserProfile(userProfile); + } + } } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-24 12:42:45 UTC (rev 858) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-24 15:10:34 UTC (rev 859) @@ -193,148 +193,53 @@ } @Override - public void executeCreateUpdateUser(TopiaContext transaction, - WaoUser user, boolean generatePassword) - throws TopiaException, IllegalArgumentException, - WaoBusinessException { - + protected void executeCreateUpdateUser(TopiaContext transaction, WaoUser user, boolean generatePassword) throws Exception { + if (user == null) { throw new IllegalArgumentException("user parameter can't be null"); } WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction); - UserProfileDAO userProfileDAO = WaoDAOHelper.getUserProfileDAO(transaction); - WaoUser userToUpdate; + boolean isNewUser = user.getTopiaId() == null; - boolean newUser = user.getTopiaId() == null; + if (isNewUser) { - if (newUser) { - userToUpdate = user; - - - context.prepareTopiaId(WaoUser.class, userToUpdate); - WaoUser existUser = dao.findByLogin(user.getLogin()); + WaoUser existingUser = dao.findByLogin(user.getLogin()); // Check for a new user if login already exists - if (existUser != null) { + if (existingUser != null) { throw new WaoBusinessException(Type.ALREADY_EXISTS, this.getClass(), "Un utilisateur existe déjà avec ce login " + user.getLogin()); } - if (user.getUserProfile() != null) { - - Collection<UserProfile> newProfiles = new ArrayList<UserProfile>(user.getUserProfile()); - userToUpdate.clearUserProfile(); - for (UserProfile profile : newProfiles) { - log.debug("saving profile " + profile.getDescription()); - UserProfile profileToAdd = userProfileDAO.create( - UserProfile.PROPERTY_OBS_PROGRAM_ORDINAL, - profile.getObsProgramOrdinal(), - UserProfile.PROPERTY_USER_ROLE_ORDINAL, - profile.getUserRoleOrdinal(), - UserProfile.PROPERTY_CAN_WRITE, - profile.getCanWrite() - ); - userToUpdate.addUserProfile(profileToAdd); - } - } - } else { - userToUpdate = dao.findByTopiaId(user.getTopiaId()); - /* - Collection<UserProfile> profilesToRemove; - if (userToUpdate.getUserProfile() == null) { - profilesToRemove = Collections.EMPTY_LIST; - } else { - profilesToRemove = new ArrayList<UserProfile>(userToUpdate.getUserProfile()); - } + context.prepareTopiaId(WaoUser.class, user); + } - if (log.isDebugEnabled()) { - log.debug("old profiles : " + profilesToRemove); - } -*/ - // set may be buggy -// userToUpdate.setUserProfile(new ArrayList<UserProfile>(user.getUserProfile())); -// userToUpdate.clearUserProfile(); -// userToUpdate.addAllUserProfile(user.getUserProfile()); - - List<UserProfile> newProfiles = new ArrayList<UserProfile>(); - - for (UserProfile profile : user.getUserProfile()) { - UserProfile profileToAdd; - if (profile.getTopiaId() == null) { - - // WaoBinderHelper.getSimpleTopiaBinder(UserProfile.class).copy(profile, profileToAdd); - - // userProfileDAO.create(profileToAdd); - profileToAdd = userProfileDAO.create( - UserProfile.PROPERTY_OBS_PROGRAM_ORDINAL, - profile.getObsProgramOrdinal(), - UserProfile.PROPERTY_USER_ROLE_ORDINAL, - profile.getUserRoleOrdinal(), - UserProfile.PROPERTY_CAN_WRITE, - profile.getCanWrite() - ); - } else { - profileToAdd = userProfileDAO.findByTopiaId(profile.getTopiaId()); - } - newProfiles.add(profileToAdd); - } - - - userToUpdate.clearUserProfile(); - userToUpdate.addAllUserProfile(newProfiles); - -/* - if (log.isDebugEnabled()) { - log.debug("new profiles : " + userToUpdate.getUserProfile()); - } - + if (user.getUserProfile() != null) { for (UserProfile userProfile : user.getUserProfile()) { - if (log.isDebugEnabled()) { - log.debug("is " + userProfile + " in " + profilesToRemove + " ? " - + profilesToRemove.contains(userProfile)); + if (userProfile.getTopiaId() == null) { + context.prepareTopiaId(UserProfile.class, userProfile); } - if (profilesToRemove.contains(userProfile)) { - // this profile was already attributed to this user, don't - // remove it : just keep it from being removed - if (log.isDebugEnabled()) { - log.debug("profile " + userProfile + " was already given to user"); - } - profilesToRemove.remove(userProfile); - } else { - // this profile was added to the user - if (log.isDebugEnabled()) { - log.debug("profile " + userProfile + " is new for user"); - } - userProfileDAO.create(userProfile); - } } - // now, oldProfiles contains user has no longer, we must remove them - if (log.isDebugEnabled()) { - log.debug("will remove deleted profiles : " + profilesToRemove); - } - for (UserProfile userProfile : profilesToRemove) { - userProfileDAO.delete(userProfile); - }*/ } - String password = userToUpdate.getPassword(); + String password = user.getPassword(); if (generatePassword) { password = context.createRandomString(8); - userToUpdate.setPasswordChanged(true); + user.setPasswordChanged(true); } // For a password set manually by user or generated - if (userToUpdate.isPasswordChanged()) { + if (user.isPasswordChanged()) { String passwordEncoded = context.encodeString(password); - userToUpdate.setPassword(passwordEncoded); + user.setPassword(passwordEncoded); } - log.debug("will store " + userToUpdate.getTopiaId()); - dao.update(userToUpdate); - log.debug("had stored " + userToUpdate.getTopiaId()); + log.debug("will store " + user.getTopiaId()); + dao.update(user); + log.debug("had stored " + user.getTopiaId()); transaction.commitTransaction(); @@ -343,7 +248,7 @@ if (user.getLogin().contains("@") && user.isPasswordChanged()) { String subject = "[WAO] "; String msg = "Bonjour,\n\n"; - if (newUser) { + if (isNewUser) { subject += "Création de votre compte"; msg += "\tVous avez été inscris sur le site WAO :" + " Web Applicatif Obsmer. Vos identifiants de " + Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ)
participants (1)
-
bleny@users.labs.libre-entreprise.org