Author: bleny Date: 2012-03-01 12:23:29 +0100 (Thu, 01 Mar 2012) New Revision: 1541 Url: http://forge.codelutin.com/repositories/revision/wao/1541 Log: Evolution #665: Ajouter une contrainte de filtrage des informations par navire pour le professionnel - partie UI Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/BoatFilterImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatDAOImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties trunk/wao-ui/src/main/webapp/Administration.tml Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/BoatFilterImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/BoatFilterImpl.java 2012-03-01 10:45:39 UTC (rev 1540) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/BoatFilterImpl.java 2012-03-01 11:23:29 UTC (rev 1541) @@ -24,6 +24,7 @@ package fr.ifremer.wao.bean; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; /** @@ -46,7 +47,8 @@ StringUtils.isNotEmpty(getShipOwnerName()) || getBoatImmatriculation() != null || getPortOfRegistry() != null || - getBoatGroup() != null; + getBoatGroup() != null || + CollectionUtils.isNotEmpty(getBoats()); } @Override Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatDAOImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatDAOImpl.java 2012-03-01 10:45:39 UTC (rev 1540) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatDAOImpl.java 2012-03-01 11:23:29 UTC (rev 1541) @@ -129,7 +129,7 @@ for (Boat boat : filter.getBoats()) { boatIds.add(boat.getTopiaId()); } - query.addEquals(Boat.TOPIA_ID, boatIds.toArray()); + query.addEquals(boatProperty.topiaId(), boatIds.toArray()); } if (log.isDebugEnabled()) { Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2012-03-01 10:45:39 UTC (rev 1540) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2012-03-01 11:23:29 UTC (rev 1541) @@ -561,7 +561,7 @@ boatFilter.setSamplingFilter(samplingFilter); boatFilter.setObsProgram(connectedUser.getProfile().getObsProgram()); - if (connectedUser.getProfile().isProfessional()) { + if (connectedUser.isProfessional()) { // Pour le profesionnel, on restreint d'office à la liste des bateaux qu'il peut voir Collection<Boat> canReadBoats = connectedUser.getUser().getCanReadBoats(); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2012-03-01 10:45:39 UTC (rev 1540) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2012-03-01 11:23:29 UTC (rev 1541) @@ -96,6 +96,7 @@ import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collection; import java.util.Comparator; import java.util.Date; import java.util.HashMap; @@ -1269,6 +1270,19 @@ contactFilter.setPeriod(initialPeriod); contactFilter.setObsProgram(connectedUser.getProfile().getObsProgram()); + if (connectedUser.isProfessional()) { + // Pour le profesionnel, on restreint d'office à la liste des contacts portant sur les bateaux qu'il peut voir + Collection<Boat> canReadBoats = connectedUser.getUser().getCanReadBoats(); + + if (CollectionUtils.isEmpty(canReadBoats)) { + if (log.isWarnEnabled()) { + log.warn("user " + connectedUser.getUser() + " is professional but can't read any boat"); + } + } else { + contactFilter.getBoatFilter().setBoats(new ArrayList<Boat>(canReadBoats)); + } + } + return contactFilter; } 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 2012-03-01 10:45:39 UTC (rev 1540) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2012-03-01 11:23:29 UTC (rev 1541) @@ -148,6 +148,11 @@ result.setProfile(profiles.get(0)); } + // force load + if (result.getUser().hasUserRole(UserRole.PROFESSIONAL, ObsProgram.OBSMER)) { + result.getUser().sizeCanReadBoats(); + } + if (log.isInfoEnabled()) { log.info("successfully logged in " + result.getFullName() + " (" + login + ") with profile " + result.getProfile()); @@ -415,6 +420,13 @@ List<WaoUser> users = dao.findUsersByCompany(company); + // force load + for (WaoUser user : users) { + if (user.hasUserRole(UserRole.PROFESSIONAL)) { + user.sizeCanReadBoats(); + } + } + return users; } 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 2012-03-01 10:45:39 UTC (rev 1540) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2012-03-01 11:23:29 UTC (rev 1541) @@ -32,6 +32,7 @@ import fr.ifremer.wao.bean.GlobalSynthesisParameters; import fr.ifremer.wao.bean.ReferentialState; import fr.ifremer.wao.bean.UserRole; +import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.CompanyImpl; import fr.ifremer.wao.entity.Indicator; @@ -503,6 +504,7 @@ userModel = beanModelSource.createEditModel(WaoUser.class, messages); userModel.add("generatePassword", null); userModel.add("userRole", null); + userModel.add(WaoUser.PROPERTY_CAN_READ_BOATS, null); userModel.include( WaoUser.PROPERTY_FIRST_NAME, WaoUser.PROPERTY_LAST_NAME, @@ -512,8 +514,12 @@ WaoUser.PROPERTY_PHONE_NUMBER, WaoUser.PROPERTY_MAMMALS_NOTIFICATIONS, WaoUser.PROPERTY_ACTIVE, - "userRole" + "userRole", + WaoUser.PROPERTY_CAN_READ_BOATS ); + if ( ! getUserEdited().hasUserRole(UserRole.PROFESSIONAL, currentUser.getProfile().getObsProgram())) { + userModel.exclude(WaoUser.PROPERTY_CAN_READ_BOATS); + } } return userModel; } @@ -695,6 +701,15 @@ return userRoleZone; } + private List<Boat> boats; + + public List<Boat> getBoats() { + if (boats == null) { + boats = serviceBoat.getAllActiveBoats(); + } + return boats; + } + /*********************** INDICATORS AND LEVELS ****************************/ @Inject Modified: trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties =================================================================== --- trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2012-03-01 10:45:39 UTC (rev 1540) +++ trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2012-03-01 11:23:29 UTC (rev 1541) @@ -163,6 +163,7 @@ wao.ui.field.User.lastName=Last name wao.ui.field.User.login=Login wao.ui.field.UserProfile.userRole=Role +wao.ui.field.WaoUser.canReadBoats=Restraint view to boats wao.ui.field.WaoUser.login=Identifier wao.ui.field.WaoUser.mammalsNotifications=Receive notifications about mammals captures wao.ui.field.WaoUser.password=Password Modified: trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties =================================================================== --- trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2012-03-01 10:45:39 UTC (rev 1540) +++ trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2012-03-01 11:23:29 UTC (rev 1541) @@ -159,6 +159,7 @@ wao.ui.field.User.lastName=Nom wao.ui.field.User.login=Identifiant wao.ui.field.UserProfile.userRole=Rôle +wao.ui.field.WaoUser.canReadBoats=Restreindre la vue aux navires wao.ui.field.WaoUser.login=Identifiant wao.ui.field.WaoUser.mammalsNotifications=Recevoir les notifications de captures accidentelles wao.ui.field.WaoUser.password=Mot de passe Modified: trunk/wao-ui/src/main/webapp/Administration.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Administration.tml 2012-03-01 10:45:39 UTC (rev 1540) +++ trunk/wao-ui/src/main/webapp/Administration.tml 2012-03-01 11:23:29 UTC (rev 1541) @@ -147,6 +147,18 @@ </t:if> </t:if> </p:mammalsNotifications> + <p:canReadBoats> + <t:if t:test="currentUser.admin"> + <label t:for="canReadBoats">${message:wao.ui.field.WaoUser.canReadBoats}</label> + <t:topiaEntitySelector t:id="canReadBoats" + t:multiple="true" + t:clazzName="Boat" + t:labelPropertyName="description" + t:values="boats" + t:selectedValues="userEdited.canReadBoats" + size="6"/> + </t:if> + </p:canReadBoats> </t:beaneditform> </fieldset> </t:if>