r74 - in trunk: magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa magalie-services/src/main/java/com/franciaflex/magalie/services/service magalie-web/src/main/java/com/franciaflex/magalie/web/action magalie-web/src/main/webapp/WEB-INF/content
Author: bleny Date: 2013-04-04 18:41:25 +0200 (Thu, 04 Apr 2013) New Revision: 74 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: start implementing requested articles service Added: 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/Dao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java trunk/magalie-web/src/main/webapp/WEB-INF/content/choose-activity.jsp Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java 2013-04-04 14:55:54 UTC (rev 73) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java 2013-04-04 16:41:25 UTC (rev 74) @@ -2,10 +2,14 @@ import com.franciaflex.magalie.persistence.entity.AbstractEntity; +import java.util.List; + public interface Dao<E extends AbstractEntity> { E findById(String id); + List<E> findAll(); + void persist(E entity); E merge(E entity); Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java 2013-04-04 14:55:54 UTC (rev 73) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java 2013-04-04 16:41:25 UTC (rev 74) @@ -4,6 +4,8 @@ import com.franciaflex.magalie.persistence.entity.AbstractEntity; import javax.persistence.EntityManager; +import javax.persistence.TypedQuery; +import java.util.List; public abstract class AbstractJpaDao<E extends AbstractEntity> implements Dao<E> { @@ -22,6 +24,13 @@ } @Override + public List<E> findAll() { + String simpleName = getEntityClass().getSimpleName(); + TypedQuery<E> query = entityManager.createQuery("from " + simpleName, getEntityClass()); + return query.getResultList(); + } + + @Override public void persist(E entity) { entityManager.persist(entity); } Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java 2013-04-04 14:55:54 UTC (rev 73) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java 2013-04-04 16:41:25 UTC (rev 74) @@ -23,43 +23,108 @@ * #L% */ -import com.franciaflex.magalie.persistence.dao.ArticleDao; -import com.franciaflex.magalie.persistence.dao.MagalieUserDao; +import com.franciaflex.magalie.persistence.dao.RequestedArticleDao; import com.franciaflex.magalie.persistence.entity.Article; import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.RequestedArticle; import com.franciaflex.magalie.persistence.entity.StorageMovementOrder; import com.franciaflex.magalie.services.MagalieService; import com.franciaflex.magalie.services.MagalieServiceContext; import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException; import com.franciaflex.magalie.services.exception.UnavailableArticleException; +import com.google.common.collect.Sets; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + public class RequestedItemService implements MagalieService { + private static final Log log = LogFactory.getLog(RequestedItemService.class); + protected MagalieServiceContext serviceContext; public void setServiceContext(MagalieServiceContext serviceContext) { this.serviceContext = serviceContext; } - public StorageMovementOrder getWithdrawTask() throws RequiredDriverLicenceException, UnavailableArticleException { + public StorageMovementOrder getWithdrawTask( + MagalieUser magalieUser, + String storeCode) { - ArticleStorageService articleStorageService = serviceContext.newService(ArticleStorageService.class); + ArticleStorageService articleStorageService = + serviceContext.newService(ArticleStorageService.class); - ArticleDao articleDao = serviceContext.getArticleDao(); + RequestedArticleDao requestedArticleDao = serviceContext.getRequestedArticleDao(); - MagalieUserDao magalieUserDao = serviceContext.getMagalieUserDao(); + List<RequestedArticle> allRequestedArticles = requestedArticleDao.findAll(); - MagalieUser alexandre = magalieUserDao.findById("magalie_user_alexandre"); + if (log.isInfoEnabled()) { + log.info(allRequestedArticles.size() + " articles requested"); + } - Article article1 = articleDao.findById("article1"); + Set<RequestedArticle> sortedRequestedArticles = Sets.newHashSet(allRequestedArticles); - StorageMovementOrder storageMovementOrder = - articleStorageService.bookArticle( - alexandre, - article1, - 40. - ); + StorageMovementOrder storageMovementOrder = null; + int requestedArticlesCount = allRequestedArticles.size(); + + Iterator<RequestedArticle> requestedArticleIterator = sortedRequestedArticles.iterator(); + + boolean everythingIsUnavailable = true; + + boolean requiredDriverLicence = false; + + while (storageMovementOrder == null && requestedArticleIterator.hasNext()) { + + RequestedArticle requestedArticle = requestedArticleIterator.next(); + + Article article = requestedArticle.getArticle(); + + double quantity = requestedArticle.getQuantity(); + + try { + + storageMovementOrder = articleStorageService.bookArticle(magalieUser, article, quantity, null); + + everythingIsUnavailable = false; + + } catch (UnavailableArticleException e) { + + if (log.isDebugEnabled()) { + log.debug("cannot work for order", e); + } + + } catch (RequiredDriverLicenceException e) { + + if (log.isDebugEnabled()) { + log.debug("cannot work for order", e); + } + + requiredDriverLicence = true; + + } + + } + + if (storageMovementOrder == null && requestedArticlesCount > 0) { + + if (everythingIsUnavailable) { + + if (requiredDriverLicence) { + + // throw new RequiredDriverLicenceException(); + + } else { + + // throw new UnavailableArticleException(); + + } + } + } + return storageMovementOrder; } Added: 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 (rev 0) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/DeliverRequestedArticleAction.java 2013-04-04 16:41:25 UTC (rev 74) @@ -0,0 +1,60 @@ +package com.franciaflex.magalie.web.action; + +import com.franciaflex.magalie.persistence.entity.MagalieUser; +import com.franciaflex.magalie.persistence.entity.StorageMovementOrder; +import com.franciaflex.magalie.services.service.RequestedItemService; +import com.franciaflex.magalie.web.MagalieActionSupport; +import com.franciaflex.magalie.web.MagalieSession; +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; + +@Results({ + @Result(name="success", type="redirectAction", params = { "actionName", "withdraw-item!input", "storageMovementOrderId", "${storageMovementOrderId}" }) +}) +public class DeliverRequestedArticleAction extends MagalieActionSupport { + + private static final Log log = LogFactory.getLog(DeliverRequestedArticleAction.class); + + protected MagalieSession session; + + protected RequestedItemService service; + + protected StorageMovementOrder storageMovementOrder; + + public void setService(RequestedItemService service) { + this.service = service; + } + + public void setSession(MagalieSession session) { + this.session = session; + } + + @Override + public String execute() { + + MagalieUser magalieUser = session.getMagalieUser(); + + String storeCode = session.getStoreCode(); + + storageMovementOrder = service.getWithdrawTask(magalieUser, storeCode); + + String result = SUCCESS; + + if (storageMovementOrder == null) { + + addActionMessage("Aucun article"); + + result = INPUT; + + } + + return result; + + } + + public String getStorageMovementOrderId() { + return storageMovementOrder.getId(); + } +} Modified: trunk/magalie-web/src/main/webapp/WEB-INF/content/choose-activity.jsp =================================================================== --- trunk/magalie-web/src/main/webapp/WEB-INF/content/choose-activity.jsp 2013-04-04 14:55:54 UTC (rev 73) +++ trunk/magalie-web/src/main/webapp/WEB-INF/content/choose-activity.jsp 2013-04-04 16:41:25 UTC (rev 74) @@ -26,8 +26,8 @@ <%@ taglib prefix="sb" uri="/struts-bootstrap-tags" %> <%@ taglib prefix="sj" uri="/struts-jquery-tags" %> -<s:url namespace="/" action="withdraw-item!input" id="withdrawItemUrl"/> <s:url namespace="/" action="fulfil-kanban!input" id="fulfilKanbanUrl"/> +<s:url namespace="/" action="deliver-requested-article!input" id="deliverRequestedArticleUrl"/> <s:url namespace="/" action="logout" id="logoutUrl"/> <header> @@ -39,7 +39,7 @@ </dl> </header> -<s:a href="%{withdrawItemUrl}" cssClass="btn btn-block">Traiter listes à servir</s:a> <s:a href="%{fulfilKanbanUrl}" cssClass="btn btn-block">Traiter kanbans</s:a> -<s:a href="" cssClass="btn btn-block">Traiter les réceptions fournisseurs</s:a> +<s:a href="%{deliverRequestedArticleUrl}" cssClass="btn btn-block">Traiter listes à servir</s:a> +<s:a href="%{}" cssClass="btn btn-block">Traiter les réceptions fournisseurs</s:a> <s:a href="%{logoutUrl}" cssClass="btn btn-block">Déconnexion</s:a> Added: 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 (rev 0) +++ trunk/magalie-web/src/main/webapp/WEB-INF/content/deliver-requested-article-input.jsp 2013-04-04 16:41:25 UTC (rev 74) @@ -0,0 +1,8 @@ +<%@ 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:url namespace="/" action="choose-activity" id="chooseActivityUrl"/> + +<s:a href="%{deliverRequestedArticleUrl}" cssClass="btn btn-block">Demander un article à servir</s:a> +<s:a href="%{chooseActivityUrl}" cssClass="btn btn-block">Changer d'activité</s:a>
participants (1)
-
bleny@users.forge.codelutin.com