Author: fdesbois Date: 2010-01-22 08:31:08 +0000 (Fri, 22 Jan 2010) New Revision: 258 Modified: trunk/changelog.txt trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java trunk/suiviobsmer-ui/src/main/webapp/Administration.tml Log: Evol #2017 : A user can be deleted if he is not linked with a contact or a sampleRowLog Modified: trunk/changelog.txt =================================================================== --- trunk/changelog.txt 2010-01-22 07:39:50 UTC (rev 257) +++ trunk/changelog.txt 2010-01-22 08:31:08 UTC (rev 258) @@ -4,6 +4,7 @@ 0.1.2 ----- +- [fdesbois] Evol #2017 : Permettre la suppression d'un utilisateur non utilisé dans l'application - [fdesbois] Evol #1959 : Contacts : Popup pour la sasie d'un commentaire sur une ligne - [fdesbois] Evol #2030 : Refactoré filtres des navires pour utiliser la partie commune a ceux des contacts et des syntheses - [fdesbois] Ano #2019 : L'affichage des zones sur le plan d'échantillonnage n'est pas cohérent avec les lignes. Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-22 07:39:50 UTC (rev 257) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-22 08:31:08 UTC (rev 258) @@ -28,6 +28,10 @@ import fr.ifremer.suiviobsmer.SuiviObsmerContext; import fr.ifremer.suiviobsmer.entity.Company; import fr.ifremer.suiviobsmer.entity.CompanyDAO; +import fr.ifremer.suiviobsmer.entity.Contact; +import fr.ifremer.suiviobsmer.entity.ContactDAO; +import fr.ifremer.suiviobsmer.entity.SampleRowLog; +import fr.ifremer.suiviobsmer.entity.SampleRowLogDAO; import fr.ifremer.suiviobsmer.entity.User; import fr.ifremer.suiviobsmer.entity.UserDAO; import fr.ifremer.suiviobsmer.services.ServiceUser; @@ -204,6 +208,47 @@ } @Override + public void deleteUser(User user) throws SuiviObsmerException { + TopiaContext transaction = null; + try { + transaction = rootContext.beginTransaction(); + + String userType = user.getAdmin() ? "administrateur" : "observateur"; + String msgBegin = "L'" + userType + " '" + user.getLogin() + "' ne peut pas être supprimé"; + String msgEnd = "Vous pouvez cependant le désactiver pour qu'il ne puisse plus se connecter."; + + if (user.getAdmin()) { + SampleRowLogDAO logDAO = SuiviObsmerModelDAOHelper.getSampleRowLogDAO(transaction); + List<SampleRowLog> results = logDAO.findAllByUser(user); + + if (!results.isEmpty()) { + throw new SuiviObsmerBusinessException(Type.ALREADY_EXISTS, this.getClass(), + msgBegin + " car il a participé à la modification du plan d'échantillonnage. " + msgEnd); + } + } else { + + ContactDAO contactDAO = SuiviObsmerModelDAOHelper.getContactDAO(transaction); + List<Contact> results = contactDAO.findAllByUser(user); + + if (!results.isEmpty()) { + throw new SuiviObsmerBusinessException(Type.ALREADY_EXISTS, this.getClass(), + msgBegin + " car il est lié à plusieurs contacts existants. " + msgEnd); + } + } + + + UserDAO dao = SuiviObsmerModelDAOHelper.getUserDAO(transaction); + + dao.delete(user); + + transaction.commitTransaction(); + transaction.closeContext(); + } catch (Exception eee) { + SuiviObsmerContext.serviceException(transaction, "Impossible de créer ou de mettre à jour l'utilisateur", eee); + } + } + + @Override public void createUpdateCompany(Company company) throws SuiviObsmerException { TopiaContext transaction = null; try { Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo =================================================================== (Binary files differ) Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java 2010-01-22 07:39:50 UTC (rev 257) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Administration.java 2010-01-22 08:31:08 UTC (rev 258) @@ -112,6 +112,7 @@ private boolean addNewCompanySelected; private boolean addNewUserSelected; + private boolean deleteUserSelected; void setupRender() { companies = null; @@ -241,13 +242,24 @@ addNewUserSelected = true; } - void onSuccessFromUserActionsForm() { + void onSelectedFromDeleteUser() { + deleteUserSelected = true; + } + + void onSuccessFromUserActionsForm() throws SuiviObsmerException { if (addNewUserSelected) { userId = null; + } else if (deleteUserSelected && userId != null) { + user = getUsersSelectModel().findObject(userId); + try { + serviceUser.deleteUser(user); + user = null; + userId = null; + layout.getFeedBack().addInfo("Utilisateur supprimé avec succès !"); + } catch (SuiviObsmerBusinessException eee) { + layout.getFeedBack().addError(eee.getMessage()); + } } - // If login already defined by an other user : - // popup : "Un autre utilisateur possède le même identifiant, voulez désactiver l'ancien compte ?" - // Technique : catch exception for alreadyExist user } @Log Modified: trunk/suiviobsmer-ui/src/main/webapp/Administration.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/Administration.tml 2010-01-22 07:39:50 UTC (rev 257) +++ trunk/suiviobsmer-ui/src/main/webapp/Administration.tml 2010-01-22 08:31:08 UTC (rev 258) @@ -37,7 +37,9 @@ </div> <div class="icons fleft"> <input t:type="submit" t:id="showUser" class="ico search" value="Show Details" t:title="Afficher détails" /> - <input t:type="submit" t:id="addNewUser" class="ico add" value="Add new company" t:title="Ajouter une nouvelle société" /> + <input t:type="submit" t:id="deleteUser" class="ico22px delete" value="Delete user" t:title="Supprimer cet utilisateur" + t:mixins="Confirm" t:message="Etes-vous sûr de vouloir supprimer définitivement cet utilisateur ?" /> + <input t:type="submit" t:id="addNewUser" class="ico add" value="Add new company" t:title="Ajouter un nouvel utilisateur" /> </div> </form>