Author: glandais Date: 2008-03-21 16:51:21 +0000 (Fri, 21 Mar 2008) New Revision: 1440 Modified: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationService.java trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationServiceImpl.java Log: Update group Modified: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationService.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationService.java 2008-03-21 16:50:29 UTC (rev 1439) +++ trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationService.java 2008-03-21 16:51:21 UTC (rev 1440) @@ -17,6 +17,8 @@ * ##% */ package fr.cemagref.simexplorer.is.service; +import java.util.Collection; + import javax.ejb.Remote; import fr.cemagref.simexplorer.is.exceptions.SimExplorerException; @@ -200,7 +202,7 @@ * * @throws SimExplorerException the sim explorer service exception */ - public Group updateGroup(String token, Group group) throws SimExplorerException; + public Group updateGroup(String token, Group group, Collection<Actor> members) throws SimExplorerException; /** * Delete group. Modified: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationServiceImpl.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationServiceImpl.java 2008-03-21 16:50:29 UTC (rev 1439) +++ trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationServiceImpl.java 2008-03-21 16:51:21 UTC (rev 1440) @@ -23,7 +23,9 @@ import java.util.Arrays; import java.util.Collection; import java.util.Date; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.UUID; import javax.ejb.EJB; @@ -143,7 +145,6 @@ msg.setHeader("X-Mailer", "JavaMailer"); msg.setSentDate(new java.util.Date()); Transport.send(msg); - log.info(mailFrom + " - " + mailRecipient + " - " + subject + " - " + content); } catch (MessagingException e) { throw new SimExplorerTechnicalException(e); } catch (NamingException e) { @@ -386,7 +387,7 @@ Group group = new Group(); group.setName(name); group.setOwner(getLoggedUser(token)); - daoActor.saveGroup(group); + daoActor.saveActor(group); group = getGroup(token, group.getActorId()); return group; } @@ -408,16 +409,18 @@ user.setLogin(login); user.setMail(mail); char[] password = generatePassword(); - sendMail(Config.getProperties().getProperty("simexplorer.adminmail"), mail, - _("simexplorer.service.mail.subject"), getMailContentWithPassword(login, password)); String passwordHash = AuthenticationServiceHelper.computeHash(password); user.setPasswordHash(passwordHash); - // reset array - Arrays.fill(password, (char) 0); user.setAdmin(false); user.setSuperAdmin(false); - daoActor.saveUser(user); + daoActor.saveActor(user); user = getUser(token, user.getActorId()); + + sendMail(Config.getProperties().getProperty("simexplorer.adminmail"), mail, + _("simexplorer.service.mail.subject"), getMailContentWithPassword(login, password)); + // reset array + Arrays.fill(password, (char) 0); + return user; } throw new SimExplorerSecurityException(); @@ -440,10 +443,28 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.service.AuthenticationService#updateGroup(java.lang.String, fr.cemagref.simexplorer.is.security.entities.Group) */ - public Group updateGroup(String token, Group group) throws SimExplorerException { + public Group updateGroup(String token, Group group, Collection<Actor> members) throws SimExplorerException { if (canUpdateGroup(token, group.getActorId())) { - // TODO isContaining - return daoActor.updateGroup(group); + Set<Actor> toUpdate = new HashSet<Actor>(); + for (Actor oldMember : group.getMembersReadOnly()) { + + Set<Group> memberOf = oldMember.getMemberOf(); + Set<Group> copy = new HashSet<Group>(memberOf); + copy.remove(group); + oldMember.setMemberOf(copy); + + toUpdate.add(oldMember); + } + for (Actor newMember : members) { + if (!(newMember instanceof Group) || !isContaining((Group) newMember, group)) { + newMember.getMemberOf().add(group); + toUpdate.add(newMember); + } + } + for (Actor actor : toUpdate) { + daoActor.updateActor(actor); + } + return (Group) daoActor.updateActor(group); } throw new SimExplorerSecurityException(); } @@ -476,7 +497,7 @@ */ public User updateUser(String token, User user) throws SimExplorerException { if (canUpdateUser(token, user)) { - return daoActor.updateUser(user); + return (User) daoActor.updateActor(user); } throw new SimExplorerSecurityException(); } @@ -489,7 +510,6 @@ return null; } User loggedUser; - // FIXME cleanup getLoggedUser loggedUser = daoActor.getLoggedUser(token); if (loggedUser != null) { return loggedUser; @@ -512,7 +532,7 @@ user.setPasswordHash(passwordHash); user.setAdmin(true); user.setSuperAdmin(true); - daoActor.saveUser(user); + daoActor.saveActor(user); } } @@ -572,7 +592,7 @@ // reset char[] Arrays.fill(password, (char) 0); user.setPasswordHash(passwordHash); - daoActor.updateUser(user); + daoActor.updateActor(user); } else { throw new SimExplorerSecurityException(); }