r134 - in trunk: magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity magalie-services/src/main/java/com/franciaflex/magalie/services/service magalie-services/src/main/resources magalie-services/src/test/java/com/franciaflex/magalie/services/service magalie-web/src/main/java/com/franciaflex/magalie/web/ac
Author: bleny Date: 2013-04-25 16:38:56 +0200 (Thu, 25 Apr 2013) New Revision: 134 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: refs #2162 introduce list types Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedListDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedArticleJpaDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedListJpaDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/RequestedList.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java trunk/magalie-services/src/main/resources/fixtures.yaml trunk/magalie-services/src/main/resources/fixtures2.yaml trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedArticleServiceTest.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/DeliverRequestedArticleAction.java trunk/magalie-web/src/main/webapp/WEB-INF/content/deliver-requested-article-input.jsp Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleDao.java 2013-04-25 13:30:44 UTC (rev 133) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleDao.java 2013-04-25 14:38:56 UTC (rev 134) @@ -35,7 +35,7 @@ */ public interface RequestedArticleDao extends Dao<RequestedArticle> { - List<RequestedArticle> findAllUndelivered(Building building, MagalieUser affectedTo); + List<RequestedArticle> findAllUndelivered(Building building, MagalieUser affectedTo, String listType); List<RequestedArticle> findAll(RequestedList requestedList); Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedListDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedListDao.java 2013-04-25 13:30:44 UTC (rev 133) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedListDao.java 2013-04-25 14:38:56 UTC (rev 134) @@ -25,9 +25,13 @@ import com.franciaflex.magalie.persistence.entity.RequestedList; +import java.util.List; + /** * @author bleny */ public interface RequestedListDao extends Dao<RequestedList> { + List<String> findAllDistinctListTypes(); + } Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedArticleJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedArticleJpaDao.java 2013-04-25 13:30:44 UTC (rev 133) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedArticleJpaDao.java 2013-04-25 14:38:56 UTC (rev 134) @@ -46,13 +46,15 @@ } @Override - public List<RequestedArticle> findAllUndelivered(Building building, MagalieUser affectedTo) { + public List<RequestedArticle> findAllUndelivered(Building building, MagalieUser affectedTo, String listType) { TypedQuery<RequestedArticle> query = createQuery( "from RequestedArticle ra where " + " ra not in (select dra.requestedArticle from DeliveredRequestedArticle dra) " + " and ra.requestedList.building = :building " + + " and ra.requestedList.listType = :listType " + " and ra.requestedList not in (select drl.requestedList from DeliveredRequestedList drl where drl.status = :complete or drl.status = :affected and drl.affectedTo != :affectedTo)"); query.setParameter("building", building); + query.setParameter("listType", listType); query.setParameter("complete", DeliveredRequestedListStatus.COMPLETE); query.setParameter("affected", DeliveredRequestedListStatus.AFFECTED); query.setParameter("affectedTo", affectedTo); Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedListJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedListJpaDao.java 2013-04-25 13:30:44 UTC (rev 133) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedListJpaDao.java 2013-04-25 14:38:56 UTC (rev 134) @@ -27,6 +27,8 @@ import com.franciaflex.magalie.persistence.entity.RequestedList; import javax.persistence.EntityManager; +import javax.persistence.TypedQuery; +import java.util.List; public class RequestedListJpaDao extends AbstractJpaDao<RequestedList> implements RequestedListDao { @@ -39,4 +41,9 @@ return RequestedList.class; } + @Override + public List<String> findAllDistinctListTypes() { + TypedQuery<String> query = entityManager.createQuery("select distinct rl.listType from RequestedList rl", String.class); + return query.getResultList(); + } } Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/RequestedList.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/RequestedList.java 2013-04-25 13:30:44 UTC (rev 133) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/RequestedList.java 2013-04-25 14:38:56 UTC (rev 134) @@ -43,6 +43,8 @@ protected boolean urgent; + protected String listType; + @Override public String getId() { return id; @@ -83,4 +85,12 @@ public void setBuilding(Building building) { this.building = building; } + + public String getListType() { + return listType; + } + + public void setListType(String listType) { + this.listType = listType; + } } 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-04-25 13:30:44 UTC (rev 133) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedArticleService.java 2013-04-25 14:38:56 UTC (rev 134) @@ -29,6 +29,7 @@ import com.franciaflex.magalie.persistence.dao.DeliveredRequestedArticleDao; import com.franciaflex.magalie.persistence.dao.DeliveredRequestedListDao; import com.franciaflex.magalie.persistence.dao.RequestedArticleDao; +import com.franciaflex.magalie.persistence.dao.RequestedListDao; import com.franciaflex.magalie.persistence.entity.Article; import com.franciaflex.magalie.persistence.entity.Building; import com.franciaflex.magalie.persistence.entity.DeliveredRequestedArticle; @@ -62,9 +63,9 @@ this.serviceContext = serviceContext; } - public FindOrderToExecuteResult findOrderToExecute(MagalieUser magalieUser, Building building) { + public FindOrderToExecuteResult findOrderToExecute(MagalieUser magalieUser, Building building, String listType) { - List<RequestedArticle> requestedArticles = getRequestedArticles(building, magalieUser); + List<RequestedArticle> requestedArticles = getRequestedArticles(building, magalieUser, listType); Set<RequestedArticle> requestedArticlesByPriority = getRequestedArticlesByPriority(requestedArticles, magalieUser); @@ -78,11 +79,11 @@ } - protected List<RequestedArticle> getRequestedArticles(Building building, MagalieUser magalieUser) { + protected List<RequestedArticle> getRequestedArticles(Building building, MagalieUser magalieUser, String listType) { RequestedArticleDao requestedArticleDao = serviceContext.getPersistenceContext().getRequestedArticleDao(); - List<RequestedArticle> allRequestedArticles = requestedArticleDao.findAllUndelivered(building, magalieUser); + List<RequestedArticle> allRequestedArticles = requestedArticleDao.findAllUndelivered(building, magalieUser, listType); if (log.isInfoEnabled()) { log.info(allRequestedArticles.size() + " articles requested in building " + building.getCode()); @@ -407,4 +408,35 @@ } + public RequestedList getAffectationForUser(MagalieUser magalieUser) { + + MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext(); + + DeliveredRequestedListDao dao = persistenceContext.getDeliveredRequestedListDao(); + + DeliveredRequestedList deliveredRequestedList = dao.findByAffectedTo(magalieUser); + + RequestedList requestedList = null; + + if (deliveredRequestedList != null) { + + requestedList = deliveredRequestedList.getRequestedList(); + + } + + return requestedList; + + } + + public List<String> getListTypes() { + + MagaliePersistenceContext persistenceContext = serviceContext.getPersistenceContext(); + + RequestedListDao dao = persistenceContext.getRequestedListDao(); + + List<String> allDistinctListTypes = dao.findAllDistinctListTypes(); + + return allDistinctListTypes; + + } } Modified: trunk/magalie-services/src/main/resources/fixtures.yaml =================================================================== --- trunk/magalie-services/src/main/resources/fixtures.yaml 2013-04-25 13:30:44 UTC (rev 133) +++ trunk/magalie-services/src/main/resources/fixtures.yaml 2013-04-25 14:38:56 UTC (rev 134) @@ -522,6 +522,7 @@ requestDate: 2013-04-08 12:00:00 urgent: true building: *B1 + listType: LOT DE FAB requestedList2: &requestedList2 !requested-list @@ -530,6 +531,7 @@ requestDate: 2013-04-08 12:00:00 urgent: false building: *B1 + listType: LOT DE FAB requestedLists: - *requestedList1 Modified: trunk/magalie-services/src/main/resources/fixtures2.yaml =================================================================== --- trunk/magalie-services/src/main/resources/fixtures2.yaml 2013-04-25 13:30:44 UTC (rev 133) +++ trunk/magalie-services/src/main/resources/fixtures2.yaml 2013-04-25 14:38:56 UTC (rev 134) @@ -241,6 +241,7 @@ requestDate: 2013-04-08 12:00:00 urgent: true building: *B1 + listType: LOT DE FAB requestedList2: &requestedList2 !requested-list @@ -249,6 +250,7 @@ requestDate: 2013-04-08 12:00:00 urgent: false building: *B1 + listType: LOT DE FAB requestedLists: - *requestedList1 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-04-25 13:30:44 UTC (rev 133) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedArticleServiceTest.java 2013-04-25 14:38:56 UTC (rev 134) @@ -51,6 +51,8 @@ protected Building building; + protected static final String LIST_TYPE = "LOT DE FAB"; + @Before public void setUp() throws ParseException { @@ -68,7 +70,7 @@ @Test public void testGetRequestedArticles() { - List<RequestedArticle> requestedArticles = service.getRequestedArticles(building, magalieUser); + List<RequestedArticle> requestedArticles = service.getRequestedArticles(building, magalieUser, LIST_TYPE); for (RequestedArticle requestedArticle : requestedArticles) { @@ -114,7 +116,7 @@ @Test public void testFindOrderRequestedArticles() { - FindOrderToExecuteResult orderToExecute = service.findOrderToExecute(magalieUser, building); + FindOrderToExecuteResult orderToExecute = service.findOrderToExecute(magalieUser, building, LIST_TYPE); Assert.assertFalse(orderToExecute.isNothingToDo()); Assert.assertFalse(orderToExecute.isEverythingUnavailable()); @@ -179,7 +181,7 @@ // user is affected to first list, must know new affectation { - orderToExecute = service.findOrderToExecute(magalieUser, building); + orderToExecute = service.findOrderToExecute(magalieUser, building, LIST_TYPE); Preconditions.checkState(orderToExecute.isSuccess()); Assert.assertNull(orderToExecute.getOldAffectation()); @@ -189,7 +191,7 @@ // continuing first list, user affectation not changed { - orderToExecute = service.findOrderToExecute(magalieUser, building); + orderToExecute = service.findOrderToExecute(magalieUser, building, LIST_TYPE); Preconditions.checkState(orderToExecute.isSuccess()); Assert.assertNull(orderToExecute.getOldAffectation()); @@ -199,7 +201,7 @@ // first list is finished, must know old affectation and new affectation { - orderToExecute = service.findOrderToExecute(magalieUser, building); + orderToExecute = service.findOrderToExecute(magalieUser, building, LIST_TYPE); Preconditions.checkState(orderToExecute.isSuccess()); Assert.assertNotNull(orderToExecute.getOldAffectation()); @@ -211,7 +213,7 @@ } { - orderToExecute = service.findOrderToExecute(magalieUser, building); + orderToExecute = service.findOrderToExecute(magalieUser, building, LIST_TYPE); Preconditions.checkState(orderToExecute.isSuccess()); Assert.assertNull(orderToExecute.getOldAffectation()); 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-04-25 13:30:44 UTC (rev 133) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/DeliverRequestedArticleAction.java 2013-04-25 14:38:56 UTC (rev 134) @@ -26,17 +26,21 @@ 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.RequestedList; import com.franciaflex.magalie.persistence.entity.StorageMovementOrder; import com.franciaflex.magalie.services.service.FindOrderToExecuteResult; import com.franciaflex.magalie.services.service.RequestedArticleService; import com.franciaflex.magalie.web.Activity; import com.franciaflex.magalie.web.MagalieActionSupport; import com.franciaflex.magalie.web.MagalieSession; +import com.google.common.base.Preconditions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; +import java.util.List; + @Results({ @Result(name="success", type="redirectAction", params = { "actionName", "withdraw-item!input", "storageMovementOrderId", "${storageMovementOrderId}" }) }) @@ -50,6 +54,12 @@ protected StorageMovementOrder storageMovementOrder; + protected RequestedList requestedList; + + protected List<String> listTypes; + + protected String listType; + public void setService(RequestedArticleService service) { this.service = service; } @@ -59,8 +69,35 @@ } @Override + public String input() { + + MagalieUser magalieUser = session.getMagalieUser(); + + requestedList = service.getAffectationForUser(magalieUser); + + listTypes = service.getListTypes(); + + return INPUT; + + } + + public RequestedList getRequestedList() { + return requestedList; + } + + public List<String> getListTypes() { + return listTypes; + } + + public void setListType(String listType) { + this.listType = listType; + } + + @Override public String execute() { + Preconditions.checkState(listType != null); + session.setActivity(Activity.REQUESTED_LISTS); MagalieUser magalieUser = session.getMagalieUser(); @@ -68,7 +105,7 @@ Building building = session.getBuilding(); FindOrderToExecuteResult findOrderToExecuteResult = - service.findOrderToExecute(magalieUser, building); + service.findOrderToExecute(magalieUser, building, listType); String result; 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-04-25 13:30:44 UTC (rev 133) +++ trunk/magalie-web/src/main/webapp/WEB-INF/content/deliver-requested-article-input.jsp 2013-04-25 14:38:56 UTC (rev 134) @@ -23,8 +23,25 @@ <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> -<s:url namespace="/" action="deliver-requested-article" id="deliverRequestedArticleUrl"/> +<s:if test="requestedList"> + <p> + Vous êtes affecté à la liste <s:property value="requestedList.code" /> + </p> + <s:url namespace="/" action="deliver-requested-article" id="deliverRequestedArticleUrl"> + <s:param name="listType" value="%{requestedList.listType}" /> + </s:url> + <s:a href="%{deliverRequestedArticleUrl}" cssClass="btn btn-block">Demander un article à servir</s:a> +</s:if> +<s:else> + <s:iterator value="listTypes" var="listType"> + <s:url namespace="/" action="deliver-requested-article" id="deliverRequestedArticleUrl"> + <s:param name="listType" value="#listType" /> + </s:url> + <s:a href="%{deliverRequestedArticleUrl}" cssClass="btn btn-block"> + Commencer à traiter une liste « <s:property value="#listType" /> » + </s:a> + </s:iterator> +</s:else> + <s:url namespace="/" action="remove-user-affectation" id="removeUserAffectationUrl"/> - -<s:a href="%{deliverRequestedArticleUrl}" cssClass="btn btn-block">Demander un article à servir</s:a> <s:a href="%{removeUserAffectationUrl}" cssClass="btn btn-block">Changer d'activité</s:a>
participants (1)
-
bleny@users.forge.codelutin.com