[Suiviobsmer-commits] r826 - in trunk: wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/resources/i18n wao-business/src/main/xmi wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/webapp
Author: bleny Date: 2010-12-09 11:27:50 +0000 (Thu, 09 Dec 2010) New Revision: 826 Log: add action to delete a company in Administration page Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceNewsImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java trunk/wao-ui/src/main/webapp/Administration.tml Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceNewsImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceNewsImpl.java 2010-12-09 09:18:12 UTC (rev 825) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceNewsImpl.java 2010-12-09 11:27:50 UTC (rev 826) @@ -28,6 +28,7 @@ import fr.ifremer.wao.WaoDAOHelper; import fr.ifremer.wao.WaoException; import fr.ifremer.wao.bean.ConnectedUser; +import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.News; import fr.ifremer.wao.entity.NewsDAO; import fr.ifremer.wao.entity.NewsImpl; @@ -81,6 +82,14 @@ public List<News> executeGetNews(TopiaContext transaction, ConnectedUser user) throws TopiaException { + List<News> results = executeGetNews(transaction, user.getCompany()); + + return results; + } + + @Override + protected List<News> executeGetNews(TopiaContext transaction, Company company) + throws TopiaException { NewsDAO dao = WaoDAOHelper.getNewsDAO(transaction); String newsAlias = "N"; @@ -93,7 +102,7 @@ // Add fetch to load company (will used a join) addFetch(companyProperty). addOrderDesc(createDateProperty). - addNullOr(companyProperty, TopiaQuery.Op.EQ, user.getCompany()); + addNullOr(companyProperty, TopiaQuery.Op.EQ, company); List<News> results = dao.findAllByQuery(query); 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-09 09:18:12 UTC (rev 825) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-09 11:27:50 UTC (rev 826) @@ -31,14 +31,21 @@ import fr.ifremer.wao.WaoException; import fr.ifremer.wao.WaoProperty; import fr.ifremer.wao.WaoQueryHelper; +import fr.ifremer.wao.bean.BoatFilter; +import fr.ifremer.wao.bean.BoatFilterImpl; import fr.ifremer.wao.bean.ConnectedUser; import fr.ifremer.wao.bean.ConnectedUserImpl; import fr.ifremer.wao.bean.ObsProgram; +import fr.ifremer.wao.bean.SamplingFilter; +import fr.ifremer.wao.bean.SamplingFilterImpl; import fr.ifremer.wao.bean.UserRole; +import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.CompanyDAO; import fr.ifremer.wao.entity.Contact; import fr.ifremer.wao.entity.ContactDAO; +import fr.ifremer.wao.entity.News; +import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.SampleRowLog; import fr.ifremer.wao.entity.SampleRowLogDAO; import fr.ifremer.wao.entity.UserProfile; @@ -385,6 +392,7 @@ } } + // FIXME 2010-12-09 bleny remove profiles WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction); @@ -435,9 +443,14 @@ errorArgs.add(company.getName()); + List<WaoUser> users = getUsersByCompany(transaction, company); + + return users; + } + + protected List<WaoUser> getUsersByCompany(TopiaContext transaction, Company company) throws TopiaException { WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction); - TopiaQuery query = dao.createQuery(). addEquals(WaoUser.PROPERTY_COMPANY, company). addOrder(WaoUser.PROPERTY_FIRST_NAME, WaoUser.PROPERTY_LAST_NAME); @@ -545,4 +558,56 @@ return result; } + @Override + protected void executeDeleteCompany(TopiaContext transaction, Company company) throws Exception { + + // we can delete a company only if no users are attached + List<WaoUser> users = getUsersByCompany(transaction, company); + if ( ! users.isEmpty()) { + String message = "Impossible de supprimer la société " + + company.getName() + " : des utilisateurs sont encore associés à cette société"; + throw new WaoBusinessException(Type.ALREADY_EXISTS, + this.getClass(), message); + } + + // we can delete a company only if no boat are attached + BoatFilter boatFilter = new BoatFilterImpl(); + boatFilter.setCompany(company); + ServiceBoat serviceBoat = context.getServiceFactory().getServiceBoat(); + Collection<Boat> boats = serviceBoat.getBoatsByFilter(boatFilter).values(); + if ( ! boats.isEmpty()) { + String message = "Impossible de supprimer la société " + + company.getName() + " : des navires sont encore associés à cette société"; + throw new WaoBusinessException(Type.ALREADY_EXISTS, + this.getClass(), message); + } + + // we can delete a company if no sample-row are attached + SamplingFilter samplingFilter = new SamplingFilterImpl(); + samplingFilter.setCompany(company); + ServiceSampling serviceSampling = context.getServiceFactory().getServiceSampling(); + List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(samplingFilter); + if ( ! sampleRows.isEmpty()) { + String message = "Impossible de supprimer la société " + + company.getName() + " : des lignes du plan sont associées à cette société"; + throw new WaoBusinessException(Type.ALREADY_EXISTS, + this.getClass(), message); + } + + // we can delete a company if + ServiceNews serviceNews = context.getServiceFactory().getServiceNews(); + List<News> news = serviceNews.getNews(company); + if ( ! news.isEmpty()) { + String message = "Impossible de supprimer la société " + + company.getName() + " : des actualités sont associées à cette société"; + throw new WaoBusinessException(Type.ALREADY_EXISTS, + this.getClass(), message); + } + + // all checks ok, we can delete the company + CompanyDAO dao = WaoDAOHelper.getCompanyDAO(transaction); + dao.delete(company); + transaction.commitTransaction(); + + } } Modified: trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties =================================================================== --- trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties 2010-12-09 09:18:12 UTC (rev 825) +++ trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties 2010-12-09 11:27:50 UTC (rev 826) @@ -161,6 +161,7 @@ wao.error.serviceUser.createDefaultAdmin= wao.error.serviceUser.createUpdateCompany= wao.error.serviceUser.createUpdateUser= +wao.error.serviceUser.deleteCompany= wao.error.serviceUser.deleteUser= wao.error.serviceUser.existLogin= wao.error.serviceUser.forgetPassword= Modified: trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties =================================================================== --- trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-12-09 09:18:12 UTC (rev 825) +++ trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-12-09 11:27:50 UTC (rev 826) @@ -178,6 +178,7 @@ wao.error.serviceUser.createDefaultAdmin=Impossible de cr\u00E9er l'administrateur par d\u00E9faut wao.error.serviceUser.createUpdateCompany=Impossible de cr\u00E9er ou de mettre \u00E0 jour la soci\u00E9t\u00E9 wao.error.serviceUser.createUpdateUser=Impossible de cr\u00E9er ou de mettre \u00E0 jour l'utilisateur +wao.error.serviceUser.deleteCompany=Impossible de supprimer la société ou de vérifier les contraintes de suppression wao.error.serviceUser.deleteUser=Impossible de supprimer l'utilisateur wao.error.serviceUser.existLogin= wao.error.serviceUser.forgetPassword=Impossible d'envoyer le mail d'oubli de mot de passe Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-12-09 09:18:12 UTC (rev 825) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-12-09 11:27:50 UTC (rev 826) @@ -151,6 +151,7 @@ private BeanEditForm userForm; private boolean addNewCompanySelected; + private boolean deleteCompanySelected; private boolean addNewUserSelected; private boolean deleteUserSelected; @@ -331,9 +332,23 @@ addNewCompanySelected = true; } + void onSelectedFromDeleteCompany() { + deleteCompanySelected = true; + } + void onSuccessFromActionsForm() { if (addNewCompanySelected) { companyId = null; + } else if (deleteCompanySelected && companyId != null) { + company = getCompaniesSelectModel().findObject(companyId); + try { + serviceUser.deleteCompany(company); + companyId = null; + company = null; + layout.addInfo("Société supprimée avec succès !"); + } catch (WaoBusinessException eee) { + layout.addError(eee.getMessage()); + } } userId = null; userEdited = null; Modified: trunk/wao-ui/src/main/webapp/Administration.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Administration.tml 2010-12-09 09:18:12 UTC (rev 825) +++ trunk/wao-ui/src/main/webapp/Administration.tml 2010-12-09 11:27:50 UTC (rev 826) @@ -40,6 +40,8 @@ </div> <div class="icons fleft"> <input t:type="submit" t:id="showUsers" class="ico search" value="Show Details" t:title="Afficher détails" /> + <input t:type="submit" t:id="deleteCompany" class="ico22px delete" value="Delete company" t:title="Supprimer cette société" + t:mixins="nuiton/confirm" t:message="literal:Êtes-vous sûr de vouloir supprimer définitivement cette société ?" /> <input t:type="submit" t:id="addNewCompany" class="ico add" value="Add new company" t:title="Ajouter une nouvelle société" /> </div> </form>
participants (1)
-
bleny@users.labs.libre-entreprise.org