Author: bleny Date: 2013-08-21 15:08:11 +0200 (Wed, 21 Aug 2013) New Revision: 370 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: fixes #2999 introduce notification context in services and use it Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUserNotificationContext.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/StrutsActionMessagesUserNotificationContext.java Modified: trunk/magalie-services/pom.xml trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedArticleServiceTest.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieApplicationContext.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/DeliverRequestedArticleAction.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java trunk/magalie-web/src/main/webapp/WEB-INF/content/deliver-requested-article-input.jsp Modified: trunk/magalie-services/pom.xml =================================================================== --- trunk/magalie-services/pom.xml 2013-08-21 09:40:45 UTC (rev 369) +++ trunk/magalie-services/pom.xml 2013-08-21 13:08:11 UTC (rev 370) @@ -81,6 +81,11 @@ <artifactId>junit</artifactId> </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + </dependency> + </dependencies> <build> Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-08-21 09:40:45 UTC (rev 369) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-08-21 13:08:11 UTC (rev 370) @@ -26,6 +26,7 @@ import com.franciaflex.magalie.MagalieApplicationConfig; import com.franciaflex.magalie.MagalieTechnicalException; import com.franciaflex.magalie.persistence.JpaMagaliePersistenceContext; +import com.google.common.base.Preconditions; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -37,6 +38,8 @@ protected JpaMagaliePersistenceContext persistenceContext; + protected MagalieUserNotificationContext userNotificationContext; + @Override public MagalieApplicationConfig getMagalieApplicationConfig() { return magalieApplicationConfig; @@ -95,4 +98,17 @@ public void setPersistenceContext(JpaMagaliePersistenceContext persistenceContext) { this.persistenceContext = persistenceContext; } + + @Override + public MagalieUserNotificationContext getUserNotificationContext() { + Preconditions.checkState( + userNotificationContext != null, + "user notification context not provided"); + return userNotificationContext; + } + + public void setUserNotificationContext(MagalieUserNotificationContext userNotificationContext) { + this.userNotificationContext = userNotificationContext; + } + } Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-08-21 09:40:45 UTC (rev 369) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-08-21 13:08:11 UTC (rev 370) @@ -41,4 +41,6 @@ MagalieApplicationConfig getMagalieApplicationConfig(); + MagalieUserNotificationContext getUserNotificationContext(); + } Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUserNotificationContext.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUserNotificationContext.java (rev 0) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUserNotificationContext.java 2013-08-21 13:08:11 UTC (rev 370) @@ -0,0 +1,22 @@ +package com.franciaflex.magalie.services; + +import com.franciaflex.magalie.persistence.entity.DeliveredRequestedList; +import com.franciaflex.magalie.persistence.entity.MagalieUser; + +/** + * Ce contrat représente pour les services une façon de notifier un utilisateur + * pour différent messages. + * + * @author bleny + */ +public interface MagalieUserNotificationContext { + + void notifyUnaffectedRequestedListDriverLicenseRequired(MagalieUser magalieUser, DeliveredRequestedList oldAffectation); + + void notifyUnaffectedRequestedListForEverythingUnavailable(MagalieUser magalieUser, DeliveredRequestedList oldAffectation); + + void notifyUnaffectedRequestedListForCompletedRequestedList(MagalieUser magalieUser, DeliveredRequestedList oldAffectation); + + void notifyAffectedRequestedList(MagalieUser magalieUser, DeliveredRequestedList newAffectation); + +} Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-08-21 09:40:45 UTC (rev 369) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-08-21 13:08:11 UTC (rev 370) @@ -274,7 +274,7 @@ RequestedArticleService requestedArticleService = serviceContext.newService(RequestedArticleService.class); - requestedArticleService.onStorageMovementConfirmation(confirmation, confirmedStorageMovements); + requestedArticleService.onStorageMovementConfirmation(magalieUser, confirmation, confirmedStorageMovements); persistenceContext.commit(); Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java 2013-08-21 09:40:45 UTC (rev 369) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java 2013-08-21 13:08:11 UTC (rev 370) @@ -41,6 +41,7 @@ import com.franciaflex.magalie.persistence.entity.StorageMovement; import com.franciaflex.magalie.services.MagalieService; import com.franciaflex.magalie.services.MagalieServiceContext; +import com.franciaflex.magalie.services.MagalieUserNotificationContext; import com.franciaflex.magalie.services.StorageMovementConfirmation; import com.google.common.base.Optional; import com.google.common.base.Preconditions; @@ -74,6 +75,9 @@ JpaMagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext(); + MagalieUserNotificationContext userNotificationContext = + serviceContext.getUserNotificationContext(); + // first, try find order in affected list FindOrderToExecuteResult findOrderToExecuteResult = null; @@ -112,6 +116,16 @@ oldAffectation = affectedDeliveredRequestedList; + if (findOrderToExecuteResult.isDriverLicenseRequired()) { + + userNotificationContext.notifyUnaffectedRequestedListDriverLicenseRequired(magalieUser, oldAffectation); + + } else if (findOrderToExecuteResult.isEverythingUnavailable()) { + + userNotificationContext.notifyUnaffectedRequestedListForEverythingUnavailable(magalieUser, oldAffectation); + + } + } } @@ -175,10 +189,20 @@ persistenceContext.commit(); - findOrderToExecuteResult.setOldAffectation(oldAffectation); + if (oldAffectation != null) { - findOrderToExecuteResult.setNewAffectation(newAffectation); + findOrderToExecuteResult.setOldAffectation(oldAffectation); + } + + if (newAffectation != null) { + + findOrderToExecuteResult.setNewAffectation(newAffectation); + + userNotificationContext.notifyAffectedRequestedList(magalieUser, newAffectation); + + } + if (log.isInfoEnabled()) { log.info("will return " + findOrderToExecuteResult); } @@ -331,7 +355,7 @@ } - public void onStorageMovementConfirmation(StorageMovementConfirmation confirmation, Collection<StorageMovement> storageMovements) { + public void onStorageMovementConfirmation(MagalieUser magalieUser, StorageMovementConfirmation confirmation, Collection<StorageMovement> storageMovements) { String requestedArticleId = confirmation.getRequestedArticleId(); @@ -399,6 +423,11 @@ + requestedList.getCode() + " as complete"); } + MagalieUserNotificationContext userNotificationContext = + serviceContext.getUserNotificationContext(); + + userNotificationContext.notifyUnaffectedRequestedListForCompletedRequestedList(magalieUser, deliveredRequestedList); + deliveredRequestedList.setStatus(DeliveredRequestedListStatus.COMPLETE); } Modified: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedArticleServiceTest.java =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedArticleServiceTest.java 2013-08-21 09:40:45 UTC (rev 369) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedArticleServiceTest.java 2013-08-21 13:08:11 UTC (rev 370) @@ -28,6 +28,7 @@ import com.franciaflex.magalie.persistence.entity.RequestedArticle; import com.franciaflex.magalie.persistence.entity.StorageMovement; import com.franciaflex.magalie.services.AbstractMagalieServiceTest; +import com.franciaflex.magalie.services.MagalieUserNotificationContext; import com.franciaflex.magalie.services.StorageMovementConfirmation; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; @@ -37,6 +38,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.mockito.Mockito; import java.text.ParseException; import java.util.Date; @@ -55,6 +57,8 @@ protected static final String LIST_TYPE = "LOT DE FAB"; + private MagalieUserNotificationContext magalieUserNotificationContextMock; + @Before public void setUp() throws ParseException { @@ -68,6 +72,10 @@ building = fixture("B1"); + magalieUserNotificationContextMock = Mockito.mock(MagalieUserNotificationContext.class); + + serviceContext.setUserNotificationContext(magalieUserNotificationContextMock); + } @Test @@ -106,6 +114,8 @@ Assert.assertNull(orderToExecute.getOldAffectation()); Assert.assertNotNull(orderToExecute.getNewAffectation()); + Mockito.verify(magalieUserNotificationContextMock).notifyAffectedRequestedList(magalieUser, orderToExecute.getNewAffectation()); + } @Test @@ -169,7 +179,7 @@ StorageMovementConfirmation confirmation = new StorageMovementConfirmation(); confirmation.setRequestedArticleId(orderToExecute.getRequestedArticle().getId()); - service.onStorageMovementConfirmation(confirmation, emptySet); + service.onStorageMovementConfirmation(magalieUser, confirmation, emptySet); } @@ -184,7 +194,7 @@ StorageMovementConfirmation confirmation = new StorageMovementConfirmation(); confirmation.setRequestedArticleId(orderToExecute.getRequestedArticle().getId()); - service.onStorageMovementConfirmation(confirmation, emptySet); + service.onStorageMovementConfirmation(magalieUser, confirmation, emptySet); } @@ -199,7 +209,7 @@ StorageMovementConfirmation confirmation = new StorageMovementConfirmation(); confirmation.setRequestedArticleId(orderToExecute.getRequestedArticle().getId()); - service.onStorageMovementConfirmation(confirmation, emptySet); + service.onStorageMovementConfirmation(magalieUser, confirmation, emptySet); } @@ -210,17 +220,14 @@ Assert.assertEquals("requestedArticle6", orderToExecute.getRequestedArticle().getId()); Assert.assertNotNull(orderToExecute.getNewAffectation()); - if (true) { - // XXX brendan 13/07/13 doesn't works but doesn't mind, the information is given to the user by another mean - Assert.assertNotNull(orderToExecute.getOldAffectation()); - Assert.assertNotEquals( - orderToExecute.getOldAffectation().getRequestedList(), - orderToExecute.getNewAffectation().getRequestedList()); - } + Assert.assertNotNull(orderToExecute.getOldAffectation()); + Assert.assertNotEquals( + orderToExecute.getOldAffectation().getRequestedList(), + orderToExecute.getNewAffectation().getRequestedList()); StorageMovementConfirmation confirmation = new StorageMovementConfirmation(); confirmation.setRequestedArticleId(orderToExecute.getRequestedArticle().getId()); - service.onStorageMovementConfirmation(confirmation, emptySet); + service.onStorageMovementConfirmation(magalieUser, confirmation, emptySet); } @@ -234,7 +241,7 @@ StorageMovementConfirmation confirmation = new StorageMovementConfirmation(); confirmation.setRequestedArticleId(orderToExecute.getRequestedArticle().getId()); - service.onStorageMovementConfirmation(confirmation, emptySet); + service.onStorageMovementConfirmation(magalieUser, confirmation, emptySet); } Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieApplicationContext.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieApplicationContext.java 2013-08-21 09:40:45 UTC (rev 369) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieApplicationContext.java 2013-08-21 13:08:11 UTC (rev 370) @@ -25,6 +25,7 @@ import com.franciaflex.magalie.MagalieApplicationConfig; import com.franciaflex.magalie.persistence.JpaMagaliePersistenceContext; +import com.franciaflex.magalie.persistence.entity.MagalieUser; import com.franciaflex.magalie.services.DefaultMagalieServiceContext; import com.franciaflex.magalie.services.MagalieServiceContext; import com.franciaflex.magalie.services.service.FixturesService; @@ -49,8 +50,11 @@ protected String contextPath; + protected StrutsActionMessagesUserNotificationContext userNotificationContext; + public MagalieApplicationContext(String contextPath) { this.contextPath = contextPath; + userNotificationContext = new StrutsActionMessagesUserNotificationContext(); } public MagalieApplicationConfig getMagalieApplicationConfig() { @@ -94,20 +98,6 @@ } - public void close() { - - if (entityManagerFactory != null && entityManagerFactory.isOpen()) { - - if (log.isInfoEnabled()) { - log.info("stopping magalie, will close entity manager factory"); - } - - entityManagerFactory.close(); - - } - - } - public MagalieServiceContext newServiceContext(EntityManager entityManager) { // FIXME brendan 04/06/13 very strange behavior, raise exception when loading a page @@ -124,6 +114,8 @@ serviceContext.setMagalieApplicationConfig(applicationConfig); + serviceContext.setUserNotificationContext(userNotificationContext); + return serviceContext; } @@ -152,4 +144,34 @@ } + public void close() { + + if (entityManagerFactory != null && entityManagerFactory.isOpen()) { + + if (log.isInfoEnabled()) { + log.info("stopping magalie, will close entity manager factory"); + } + + entityManagerFactory.close(); + + } + + for (Map.Entry<MagalieUser, String> magalieUserMessage : userNotificationContext.getUsersNotifications().entries()) { + + MagalieUser magalieUser = magalieUserMessage.getKey(); + + String message = magalieUserMessage.getValue(); + + if (log.isWarnEnabled()) { + log.warn("notification message was not delivered magalieUser=" + magalieUser + " message=" + message); + } + + } + + } + + public StrutsActionMessagesUserNotificationContext getUserNotificationContext() { + return userNotificationContext; + } + } Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java 2013-08-21 09:40:45 UTC (rev 369) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java 2013-08-21 13:08:11 UTC (rev 370) @@ -24,6 +24,7 @@ */ import com.franciaflex.magalie.MagalieApplicationConfig; +import com.franciaflex.magalie.persistence.entity.MagalieUser; import com.franciaflex.magalie.services.MagalieService; import com.franciaflex.magalie.services.MagalieServiceContext; import com.franciaflex.magalie.web.action.ChooseCompanyAction; @@ -33,9 +34,9 @@ import com.franciaflex.magalie.web.action.RestoreFixturesAction; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.beans.BeanUtil; @@ -77,20 +78,40 @@ if (action instanceof MagalieActionSupport) { + // on ajoute les notifications pour l'utilisateur + + Set<String> messages = Sets.newLinkedHashSet(); + + // d'abord on récupère les notifications ajoutées par les actions dans la session + MagalieSession magalieSession = getMagalieSession(invocation); - if (CollectionUtils.isNotEmpty(magalieSession.getMessages())) { + messages.addAll(magalieSession.getMessagesAndClear()); - for (String message : magalieSession.getMessages()) { + // ensuite on ajoute les notifications ajoutées par les services - ((MagalieActionSupport) action).addActionMessage(message); + MagalieApplicationContext magalieApplicationContext = + getMagalieApplicationContext(invocation); - } + StrutsActionMessagesUserNotificationContext userNotificationContext = + magalieApplicationContext.getUserNotificationContext(); - magalieSession.getMessages().clear(); + MagalieUser magalieUser = magalieSession.getMagalieUser(); + if (magalieUser != null) { + + messages.addAll(userNotificationContext.getMessagesAndClearFor(magalieUser)); + } + // on ajoute tous ces messages comme actionMessage + + for (String message : messages) { + + ((MagalieActionSupport) action).addActionMessage(message); + + } + Class<?> actionClass = action.getClass(); Set<PropertyDescriptor> descriptors = @@ -119,7 +140,7 @@ } else if (MagalieApplicationConfig.class.isAssignableFrom(propertyType)) { - toInject = getMagalieApplicationContext(invocation).getMagalieApplicationConfig(); + toInject = magalieApplicationContext.getMagalieApplicationConfig(); } @@ -137,7 +158,7 @@ try { // prevent accessing a page without a session - if (magalieSession.getMagalieUser() == null) { + if (magalieUser == null) { if (ACCESSIBLE_ACTIONS_FOR_NOT_LOGGED_USER.contains(actionClass)) { Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java 2013-08-21 09:40:45 UTC (rev 369) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java 2013-08-21 13:08:11 UTC (rev 370) @@ -33,6 +33,7 @@ import java.io.Serializable; import java.util.Collection; +import java.util.List; /** * The single object every user will have in its session. @@ -54,7 +55,7 @@ protected Activity activity; - protected Collection<String> messages; + protected Collection<String> messages = Lists.newLinkedList(); public MagalieUser getMagalieUser() { return magalieUser; @@ -87,15 +88,14 @@ this.lastUsedDestinationWarehouseForKanbans = lastUsedDestinationWarehouseForKanbans; } - public Collection<String> getMessages() { - if (messages == null) { - messages = Lists.newLinkedList(); - } - return messages; + public void addMessage(String message) { + messages.add(message); } - public void addMessage(String message) { - getMessages().add(message); + public List<String> getMessagesAndClear() { + List<String> messages = Lists.newArrayList(this.messages); + this.messages.clear(); + return messages; } public Activity getActivity() { Added: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/StrutsActionMessagesUserNotificationContext.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/StrutsActionMessagesUserNotificationContext.java (rev 0) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/StrutsActionMessagesUserNotificationContext.java 2013-08-21 13:08:11 UTC (rev 370) @@ -0,0 +1,61 @@ +package com.franciaflex.magalie.web; + +import com.franciaflex.magalie.persistence.entity.DeliveredRequestedList; +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.services.MagalieUserNotificationContext; +import com.google.common.base.Supplier; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimaps; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.Sets; + +import java.util.Collection; +import java.util.Map; +import java.util.Set; + +public class StrutsActionMessagesUserNotificationContext implements MagalieUserNotificationContext { + + protected SetMultimap<MagalieUser, String> usersNotifications; + + public StrutsActionMessagesUserNotificationContext() { + Supplier<Set<String>> emptySetFactory = new Supplier<Set<String>>() { + + @Override + public Set<String> get() { + return Sets.newLinkedHashSet(); + } + }; + Map<MagalieUser, Collection<String >> magalieUserToMessages = Maps.newHashMap(); + SetMultimap<MagalieUser, String> multimap = Multimaps.newSetMultimap(magalieUserToMessages, emptySetFactory); + usersNotifications = Multimaps.synchronizedSetMultimap(multimap); + } + + @Override + public void notifyUnaffectedRequestedListDriverLicenseRequired(MagalieUser magalieUser, DeliveredRequestedList oldAffectation) { + usersNotifications.put(magalieUser, "Vous n'êtes plus affecté à la liste " + oldAffectation.getRequestedList().getCode() + " : permis requis"); + } + + @Override + public void notifyUnaffectedRequestedListForEverythingUnavailable(MagalieUser magalieUser, DeliveredRequestedList oldAffectation) { + usersNotifications.put(magalieUser, "Vous n'êtes plus affecté à la liste " + oldAffectation.getRequestedList().getCode() + " : stock manquant"); + } + + @Override + public void notifyUnaffectedRequestedListForCompletedRequestedList(MagalieUser magalieUser, DeliveredRequestedList oldAffectation) { + usersNotifications.put(magalieUser, "Vous n'êtes plus affecté à la liste " + oldAffectation.getRequestedList().getCode() + " : liste terminée"); + } + + @Override + public void notifyAffectedRequestedList(MagalieUser magalieUser, DeliveredRequestedList newAffectation) { + usersNotifications.put(magalieUser, "Vous êtes désormais affecté à la liste " + newAffectation.getRequestedList().getCode()); + } + + public SetMultimap<MagalieUser, String> getUsersNotifications() { + return usersNotifications; + } + + public Set<String> getMessagesAndClearFor(MagalieUser magalieUser) { + return usersNotifications.removeAll(magalieUser); + } + +} Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/DeliverRequestedArticleAction.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/DeliverRequestedArticleAction.java 2013-08-21 09:40:45 UTC (rev 369) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/DeliverRequestedArticleAction.java 2013-08-21 13:08:11 UTC (rev 370) @@ -24,7 +24,6 @@ */ import com.franciaflex.magalie.persistence.entity.Building; -import com.franciaflex.magalie.persistence.entity.DeliveredRequestedList; import com.franciaflex.magalie.persistence.entity.MagalieUser; import com.franciaflex.magalie.persistence.entity.RequestedArticle; import com.franciaflex.magalie.persistence.entity.RequestedList; @@ -111,34 +110,6 @@ if (findOrderToExecuteResult.isSuccess()) { - DeliveredRequestedList oldAffectation = findOrderToExecuteResult.getOldAffectation(); - - if (oldAffectation != null) { - - String message = "Vous n'êtes plus affecté à la liste " + oldAffectation.getRequestedList().getCode(); - - if (oldAffectation.getStatus().isComplete()) { - - message += " : liste terminée"; - - } else { - - // message += " : liste non terminée"; - - } - - session.addMessage(message); - - } - - DeliveredRequestedList newAffectation = findOrderToExecuteResult.getNewAffectation(); - - if (newAffectation != null) { - - session.addMessage("Vous venez d'être affecté à la liste " + newAffectation.getRequestedList().getCode()); - - } - requestedArticle = findOrderToExecuteResult.getRequestedArticle(); result = SUCCESS; Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java =================================================================== --- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-08-21 09:40:45 UTC (rev 369) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-08-21 13:08:11 UTC (rev 370) @@ -25,7 +25,6 @@ import com.franciaflex.magalie.MagalieTechnicalException; import com.franciaflex.magalie.persistence.entity.Article; -import com.franciaflex.magalie.persistence.entity.DeliveredRequestedList; import com.franciaflex.magalie.persistence.entity.MagalieUser; import com.franciaflex.magalie.persistence.entity.RequestedArticle; import com.franciaflex.magalie.services.StorageMovementConfirmation; @@ -33,7 +32,6 @@ import com.franciaflex.magalie.services.service.RequestedArticleService; import com.franciaflex.magalie.web.MagalieActionSupport; import com.franciaflex.magalie.web.MagalieSession; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.Maps; import com.opensymphony.xwork2.Preparable; @@ -197,21 +195,6 @@ articleStorageService.confirmStorageMovement(confirmation, magalieUser); - Optional<DeliveredRequestedList> deliveredRequestedListOptional = - requestedArticleService.getDeliveredRequestedList(confirmation); - - if (deliveredRequestedListOptional.isPresent()) { - - DeliveredRequestedList deliveredRequestedList = deliveredRequestedListOptional.get(); - - if (deliveredRequestedList.getStatus().isComplete()) { - - session.addMessage("La liste " + deliveredRequestedList.getRequestedList().getCode() + " est terminée"); - - } - - } - String resultName = session.getActivity().name(); return resultName; Modified: trunk/magalie-web/src/main/webapp/WEB-INF/content/deliver-requested-article-input.jsp =================================================================== --- trunk/magalie-web/src/main/webapp/WEB-INF/content/deliver-requested-article-input.jsp 2013-08-21 09:40:45 UTC (rev 369) +++ trunk/magalie-web/src/main/webapp/WEB-INF/content/deliver-requested-article-input.jsp 2013-08-21 13:08:11 UTC (rev 370) @@ -46,29 +46,34 @@ <s:a href="%{removeUserAffectationUrl}" cssClass="btn btn-block" id="removeUserAffectationLink">Abandonner la liste (Esc)</s:a> </s:if> <s:else> - <s:iterator value="listTypes" var="listType" status="stat"> - <s:set var="deliverRequestedArticleId">prepareArticleReceptionId<s:property value="#stat.index" /></s:set> - <s:url action="deliver-requested-article" id="deliverRequestedArticleUrl"> - <s:param name="listType" value="#listType" /> - </s:url> - <s:if test="#stat.index < shortcuts.size()"> - <script type="text/javascript"> - $(document).ready(function () { - var id = '<s:property value="deliverRequestedArticleId" />'; - bindKey('<s:property value="shortcuts.get(#stat.index)" />', function(){ redirectTo($('#' + id));}); - }); - </script> - <s:a href="%{deliverRequestedArticleUrl}" cssClass="btn btn-block" id="%{deliverRequestedArticleId}"> - Commencer à traiter une liste « <s:property value="#listType" /> » - (<s:property value="shortcuts.get(#stat.index)" />) - </s:a> - </s:if> - <s:else> - <s:a href="%{deliverRequestedArticleUrl}" cssClass="btn btn-block"> - Commencer à traiter une liste « <s:property value="#listType" /> » - </s:a> - </s:else> - </s:iterator> + <s:if test="listTypes.empty"> + Aucune liste à servir à traiter + </s:if> + <s:else> + <s:iterator value="listTypes" var="listType" status="stat"> + <s:set var="deliverRequestedArticleId">prepareArticleReceptionId<s:property value="#stat.index" /></s:set> + <s:url action="deliver-requested-article" id="deliverRequestedArticleUrl"> + <s:param name="listType" value="#listType" /> + </s:url> + <s:if test="#stat.index < shortcuts.size()"> + <script type="text/javascript"> + $(document).ready(function () { + var id = '<s:property value="deliverRequestedArticleId" />'; + bindKey('<s:property value="shortcuts.get(#stat.index)" />', function(){ redirectTo($('#' + id));}); + }); + </script> + <s:a href="%{deliverRequestedArticleUrl}" cssClass="btn btn-block" id="%{deliverRequestedArticleId}"> + Commencer à traiter une liste « <s:property value="#listType" /> » + (<s:property value="shortcuts.get(#stat.index)" />) + </s:a> + </s:if> + <s:else> + <s:a href="%{deliverRequestedArticleUrl}" cssClass="btn btn-block"> + Commencer à traiter une liste « <s:property value="#listType" /> » + </s:a> + </s:else> + </s:iterator> + </s:else> <s:url action="remove-user-affectation" id="removeUserAffectationUrl"> <s:param name="result">REDIRECT_TO_ACTIVITIES</s:param>