Author: bleny Date: 2013-03-19 17:05:56 +0100 (Tue, 19 Mar 2013) New Revision: 30 Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revisions... Log: implements first service, change daos, now the ui module really use persistence Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/ArticleDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/RequestedArticleDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaArticleDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaRequestedArticleDao.java Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/Dao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/AbstractJpaDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaMagalieUserDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStoredArticleDao.java trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Site.java 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/RequestedItemService.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawTask.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java trunk/magalie-web/src/main/webapp/WEB-INF/content/withdraw-item-input.jsp trunk/magalie-web/src/main/webapp/js/withdraw-item-input.js Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/ArticleDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/ArticleDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/ArticleDao.java 2013-03-19 16:05:56 UTC (rev 30) @@ -0,0 +1,10 @@ +package com.franciaflex.magalie.dao; + +import com.franciaflex.magalie.entity.Article; + +/** + * @author bleny + */ +public interface ArticleDao extends Dao<Article> { + +} Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/Dao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/Dao.java 2013-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/Dao.java 2013-03-19 16:05:56 UTC (rev 30) @@ -4,6 +4,8 @@ public interface Dao<E extends AbstractJpaEntity> { + E findById(String id); + void persist(E entity); E merge(E entity); Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/RequestedArticleDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/RequestedArticleDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/RequestedArticleDao.java 2013-03-19 16:05:56 UTC (rev 30) @@ -0,0 +1,9 @@ +package com.franciaflex.magalie.dao; + +import com.franciaflex.magalie.entity.RequestedArticle; + +/** + * @author bleny + */ +public interface RequestedArticleDao extends Dao<RequestedArticle> { +} Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/AbstractJpaDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/AbstractJpaDao.java 2013-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/AbstractJpaDao.java 2013-03-19 16:05:56 UTC (rev 30) @@ -13,7 +13,15 @@ this.entityManager = entityManager; } + protected abstract Class<E> getEntityClass(); + @Override + public E findById(String id) { + E entity = entityManager.find(getEntityClass(), id); + return entity; + } + + @Override public void persist(E entity) { entityManager.persist(entity); } Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaArticleDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaArticleDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaArticleDao.java 2013-03-19 16:05:56 UTC (rev 30) @@ -0,0 +1,18 @@ +package com.franciaflex.magalie.dao.jpa; + +import com.franciaflex.magalie.dao.ArticleDao; +import com.franciaflex.magalie.entity.Article; + +import javax.persistence.EntityManager; + +public class JpaArticleDao extends AbstractJpaDao<Article> implements ArticleDao { + + public JpaArticleDao(EntityManager entityManager) { + super(entityManager); + } + + @Override + protected Class<Article> getEntityClass() { + return Article.class; + } +} Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaMagalieUserDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaMagalieUserDao.java 2013-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaMagalieUserDao.java 2013-03-19 16:05:56 UTC (rev 30) @@ -10,4 +10,9 @@ public JpaMagalieUserDao(EntityManager entityManager) { super(entityManager); } + + @Override + protected Class<MagalieUser> getEntityClass() { + return MagalieUser.class; + } } Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaRequestedArticleDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaRequestedArticleDao.java (rev 0) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaRequestedArticleDao.java 2013-03-19 16:05:56 UTC (rev 30) @@ -0,0 +1,18 @@ +package com.franciaflex.magalie.dao.jpa; + +import com.franciaflex.magalie.dao.RequestedArticleDao; +import com.franciaflex.magalie.entity.RequestedArticle; + +import javax.persistence.EntityManager; + +public class JpaRequestedArticleDao extends AbstractJpaDao<RequestedArticle> implements RequestedArticleDao { + + public JpaRequestedArticleDao(EntityManager entityManager) { + super(entityManager); + } + + @Override + protected Class<RequestedArticle> getEntityClass() { + return RequestedArticle.class; + } +} Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStoredArticleDao.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStoredArticleDao.java 2013-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStoredArticleDao.java 2013-03-19 16:05:56 UTC (rev 30) @@ -15,8 +15,13 @@ } @Override + protected Class<StoredArticle> getEntityClass() { + return StoredArticle.class; + } + + @Override public List<StoredArticle> findAllForArticle(Article article) { - Query query = entityManager.createQuery("from storedArticle sa where sa.article = :article"); + Query query = entityManager.createQuery("from StoredArticle sa where sa.article = :article"); query.setParameter("article", article); List resultList = query.getResultList(); return resultList; Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Site.java =================================================================== --- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Site.java 2013-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Site.java 2013-03-19 16:05:56 UTC (rev 30) @@ -1,5 +1,7 @@ package com.franciaflex.magalie.entity; +import com.google.common.base.Joiner; + import javax.persistence.Entity; import javax.persistence.Id; @@ -51,4 +53,9 @@ public void setRequiredAccreditationLevel(int requiredAccreditationLevel) { this.requiredAccreditationLevel = requiredAccreditationLevel; } + + public String getBarcode() { + String barcode = Joiner.on('_').join("EMPL", getStoreCode(), getLocationCode()); + return barcode; + } } Modified: trunk/magalie-services/pom.xml =================================================================== --- trunk/magalie-services/pom.xml 2013-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-services/pom.xml 2013-03-19 16:05:56 UTC (rev 30) @@ -31,6 +31,11 @@ </dependency> <dependency> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + </dependency> + + <dependency> <groupId>${project.groupId}</groupId> <artifactId>magalie-persistence</artifactId> <version>${project.version}</version> 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-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-03-19 16:05:56 UTC (rev 30) @@ -1,9 +1,13 @@ package com.franciaflex.magalie.services; import com.franciaflex.magalie.MagalieTechnicalException; +import com.franciaflex.magalie.dao.ArticleDao; +import com.franciaflex.magalie.dao.RequestedArticleDao; import com.franciaflex.magalie.dao.StoredArticleDao; +import com.franciaflex.magalie.dao.jpa.JpaArticleDao; import com.franciaflex.magalie.dao.jpa.JpaMagalieUserDao; import com.franciaflex.magalie.dao.MagalieUserDao; +import com.franciaflex.magalie.dao.jpa.JpaRequestedArticleDao; import com.franciaflex.magalie.dao.jpa.JpaStoredArticleDao; import javax.persistence.EntityManager; @@ -55,15 +59,21 @@ @Override public MagalieUserDao getMagalieUserDao() { - return new JpaMagalieUserDao(entityManager); - } @Override public StoredArticleDao getStoredArticleDao() { - return new JpaStoredArticleDao(entityManager); + } + @Override + public RequestedArticleDao getRequestedArticleDao() { + return new JpaRequestedArticleDao(entityManager); } + + @Override + public ArticleDao getArticleDao() { + return new JpaArticleDao(entityManager); + } } 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-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-03-19 16:05:56 UTC (rev 30) @@ -23,7 +23,9 @@ * #L% */ +import com.franciaflex.magalie.dao.ArticleDao; import com.franciaflex.magalie.dao.MagalieUserDao; +import com.franciaflex.magalie.dao.RequestedArticleDao; import com.franciaflex.magalie.dao.StoredArticleDao; /** @@ -36,4 +38,8 @@ MagalieUserDao getMagalieUserDao(); StoredArticleDao getStoredArticleDao(); + + RequestedArticleDao getRequestedArticleDao(); + + ArticleDao getArticleDao(); } Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java 2013-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java 2013-03-19 16:05:56 UTC (rev 30) @@ -23,6 +23,11 @@ * #L% */ +import com.franciaflex.magalie.dao.ArticleDao; +import com.franciaflex.magalie.dao.MagalieUserDao; +import com.franciaflex.magalie.entity.Article; +import com.franciaflex.magalie.entity.MagalieUser; + public class RequestedItemService implements MagalieService { protected MagalieServiceContext serviceContext; @@ -31,32 +36,25 @@ this.serviceContext = serviceContext; } - public WithdrawTask getWithdrawTask() { + public WithdrawTask getWithdrawTask() throws RequiredDriverLicenceException, UnavailableArticleException { ArticleStorageService articleStorageService = serviceContext.newService(ArticleStorageService.class); - // articleStorageService.withdrawArticle(); + ArticleDao articleDao = serviceContext.getArticleDao(); -// MagalieUserDao magalieUserDao = serviceContext.getMagalieUserDao(); -// -// magalieUserDao.persist(new MagalieUser()); -// -// Set<Site> sites = ImmutableSet.of( -// new Site("A1", "1", 5), -// new Site("A2", "2", 5), -// new Site("B3", "3", 10), -// new Site("C4", "4", 15), -// new Site("D5", "5", 15) -// ); -// -// WithdrawTask withdrawTask = new WithdrawTask(); -// -// withdrawTask.setQuantity(50); -// withdrawTask.setUnit("kg"); -// withdrawTask.setSites(sites); -// -// return withdrawTask; + MagalieUserDao magalieUserDao = serviceContext.getMagalieUserDao(); - throw new UnsupportedOperationException(); + MagalieUser alexandre = magalieUserDao.findById("magalie_user_alexandre"); + + Article article1 = articleDao.findById("article1"); + + WithdrawTask withdrawTask = articleStorageService.withdrawArticle( + alexandre, + article1, + 40. + ); + + return withdrawTask; + } } Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java 2013-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java 2013-03-19 16:05:56 UTC (rev 30) @@ -1,7 +1,6 @@ package com.franciaflex.magalie.services; -import com.franciaflex.magalie.entity.*; -import com.franciaflex.magalie.entity.Site; +import com.franciaflex.magalie.entity.StoredArticle; import org.apache.commons.lang3.builder.ToStringBuilder; public class WithdrawArticleFromSiteTask { @@ -19,10 +18,26 @@ return quantity; } - public Site getSite() { - return storedArticle.getSite(); + public String getSiteId() { + return storedArticle.getSite().getId(); } + public boolean isDriverLicenseRequired() { + return storedArticle.getSite().isDriverLicenseRequired(); + } + + public String getStoreCode() { + return storedArticle.getSite().getStoreCode(); + } + + public String getLocationCode() { + return storedArticle.getSite().getLocationCode(); + } + + public String getSiteBarcode() { + return storedArticle.getSite().getBarcode(); + } + @Override public String toString() { return ToStringBuilder.reflectionToString(this); Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawTask.java =================================================================== --- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawTask.java 2013-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawTask.java 2013-03-19 16:05:56 UTC (rev 30) @@ -31,7 +31,7 @@ public class WithdrawTask { - protected Set<WithdrawArticleFromSiteTask> withdrawArticleFromSiteTasks; + protected Set<WithdrawArticleFromSiteTask> sites; protected Article article; @@ -42,12 +42,12 @@ this.quantity = quantity; } - public Set<WithdrawArticleFromSiteTask> getWithdrawArticleFromSiteTasks() { - return withdrawArticleFromSiteTasks; + public Set<WithdrawArticleFromSiteTask> getSites() { + return sites; } - public void setWithdrawArticleFromSiteTasks(Set<WithdrawArticleFromSiteTask> withdrawArticleFromSiteTasks) { - this.withdrawArticleFromSiteTasks = withdrawArticleFromSiteTasks; + public void setSites(Set<WithdrawArticleFromSiteTask> sites) { + this.sites = sites; } public Article getArticle() { @@ -67,10 +67,10 @@ } public void addWithdrawArticleFromSiteTask(WithdrawArticleFromSiteTask withdrawArticleFromSiteTask) { - if (withdrawArticleFromSiteTasks == null) { - withdrawArticleFromSiteTasks = Sets.newLinkedHashSet(); + if (sites == null) { + sites = Sets.newLinkedHashSet(); } - withdrawArticleFromSiteTasks.add(withdrawArticleFromSiteTask); + sites.add(withdrawArticleFromSiteTask); } @Override Modified: trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java 2013-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java 2013-03-19 16:05:56 UTC (rev 30) @@ -20,7 +20,7 @@ public MagalieFixtures(String fixturesName) { String yamlPath = "/" + fixturesName + ".yaml"; - InputStream inputStream = getClass().getResourceAsStream(yamlPath); + InputStream inputStream = MagalieFixtures.class.getResourceAsStream(yamlPath); String yaml; try { yaml = IOUtils.toString(inputStream, Charsets.UTF_8); Modified: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java =================================================================== --- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java 2013-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java 2013-03-19 16:05:56 UTC (rev 30) @@ -1,20 +1,31 @@ package com.franciaflex.magalie.services; +import com.franciaflex.magalie.MagalieApplicationConfig; import com.franciaflex.magalie.MagalieFixtures; +import com.franciaflex.magalie.dao.ArticleDao; import com.franciaflex.magalie.dao.MagalieUserDao; +import com.franciaflex.magalie.dao.RequestedArticleDao; import com.franciaflex.magalie.dao.StoredArticleDao; +import com.franciaflex.magalie.entity.AbstractJpaEntity; import com.franciaflex.magalie.entity.Article; import com.franciaflex.magalie.entity.MagalieUser; import com.franciaflex.magalie.entity.StoredArticle; import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.mockito.Mockito; +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import java.util.Collection; import java.util.List; +import java.util.Map; public class ArticleStorageServiceTest { @@ -53,6 +64,16 @@ ); return storedArticleDaoMock; } + + @Override + public RequestedArticleDao getRequestedArticleDao() { + return null; + } + + @Override + public ArticleDao getArticleDao() { + return null; //To change body of implemented methods use File | Settings | File Templates. + } }); } @@ -122,7 +143,7 @@ Assert.fail(); } - Assert.assertEquals(1, withdrawTask.getWithdrawArticleFromSiteTasks().size()); + Assert.assertEquals(1, withdrawTask.getSites().size()); } @Test @@ -149,10 +170,54 @@ Assert.fail(); } - Assert.assertEquals(2, withdrawTask.getWithdrawArticleFromSiteTasks().size()); - WithdrawArticleFromSiteTask site1 = Iterables.get(withdrawTask.getWithdrawArticleFromSiteTasks(), 0, null); + Assert.assertEquals(2, withdrawTask.getSites().size()); + WithdrawArticleFromSiteTask site1 = Iterables.get(withdrawTask.getSites(), 0, null); Assert.assertEquals(20., site1.getQuantity(), DELTA); - WithdrawArticleFromSiteTask site2 = Iterables.get(withdrawTask.getWithdrawArticleFromSiteTasks(), 1, null); + WithdrawArticleFromSiteTask site2 = Iterables.get(withdrawTask.getSites(), 1, null); Assert.assertEquals(30., site2.getQuantity(), DELTA); } + + @Test + @Ignore + public void testName() throws Exception { + + MagalieFixtures fixtures = new MagalieFixtures("fixtures"); + + MagalieApplicationConfig applicationConfig = new MagalieApplicationConfig(); + + Map<String, Object> jpaParameters = applicationConfig.getJpaParameters(); + + EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("magaliePersistenceUnit", jpaParameters); + + EntityManager entityManager = entityManagerFactory.createEntityManager(); + + entityManager.getTransaction().begin(); + +// entityManager.persist(new MagalieUser()); +// entityManager.persist(new Article()); +// entityManager.persist(new StoredArticle()); +// entityManager.persist(new Site()); +// entityManager.persist(new RequestedArticle()); + +// entityManager.persist(new SiteError()); +// entityManager.persist(new StorageMovement()); + + List<AbstractJpaEntity> toPersist = Lists.newArrayList(); + + toPersist.addAll(fixtures.<Collection<? extends AbstractJpaEntity>>fixture("users")); + toPersist.addAll(fixtures.<Collection<? extends AbstractJpaEntity>>fixture("sites")); + toPersist.addAll(fixtures.<Collection<? extends AbstractJpaEntity>>fixture("articles")); + toPersist.addAll(fixtures.<Collection<? extends AbstractJpaEntity>>fixture("storedArticles")); + + for (AbstractJpaEntity entity : toPersist) { + + entityManager.persist(entity); + + } + + entityManager.getTransaction().commit(); + + entityManager.close(); + + } } 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-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-03-19 16:05:56 UTC (rev 30) @@ -23,8 +23,9 @@ * #L% */ -import com.franciaflex.magalie.MagalieApplicationConfig; import com.franciaflex.magalie.services.RequestedItemService; +import com.franciaflex.magalie.services.RequiredDriverLicenceException; +import com.franciaflex.magalie.services.UnavailableArticleException; import com.franciaflex.magalie.services.WithdrawTask; import com.franciaflex.magalie.web.MagalieActionSupport; import org.apache.commons.logging.Log; @@ -38,18 +39,12 @@ protected RequestedItemService service; - protected MagalieApplicationConfig config; - protected WithdrawTask withdrawTask; public void setService(RequestedItemService service) { this.service = service; } - public void setConfig(MagalieApplicationConfig config) { - this.config = config; - } - public void setModel(String model) { if (log.isErrorEnabled()) { @@ -58,23 +53,23 @@ } - public String getModel() throws JSONException { + public WithdrawTask getWithdrawTask() { + return withdrawTask; + } - String json = JSONUtil.serialize(withdrawTask); + public String getModelAsJson() throws JSONException { + String json = JSONUtil.serialize(getWithdrawTask()); + return json; } @Override - public String input() { + public String input() throws RequiredDriverLicenceException, UnavailableArticleException { withdrawTask = service.getWithdrawTask(); - if (log.isDebugEnabled()) { - log.debug("config = " + config); - } - return INPUT; } Modified: trunk/magalie-web/src/main/webapp/WEB-INF/content/withdraw-item-input.jsp =================================================================== --- trunk/magalie-web/src/main/webapp/WEB-INF/content/withdraw-item-input.jsp 2013-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-web/src/main/webapp/WEB-INF/content/withdraw-item-input.jsp 2013-03-19 16:05:56 UTC (rev 30) @@ -25,7 +25,7 @@ <head> <script> - var model = <s:property value="model" escapeHtml="false" />; + var model = <s:property value="modelAsJson" escapeHtml="false" />; </script> <script src="<s:url value='/js/withdraw-item-input.js' />"></script> <title>Traitement des listes à servir</title> @@ -34,13 +34,13 @@ <header> <dl class="dl-horizontal"> <dt>Réf.</dt> - <dd>123456789</dd> + <dd><s:property value="withdrawTask.article.code" /></dd> <dt>Desc.</dt> - <dd>Rivet chromé</dd> + <dd><s:property value="withdrawTask.article.description" /></dd> <dt>LàS</dt> <dd>123456789</dd> <dt>Prélev.</dt> - <dd><span id="withdrawn">0</span> / 50 kg</dd> + <dd><span id="withdrawn">0</span> / <s:property value="withdrawTask.quantity" /> kg</dd> </dl> </header> <section id="sites"> @@ -58,8 +58,8 @@ <div id="siteTemplate" class="template"> <dl class="dl-horizontal"> <dt>Empl.</dt> - <dd data="name"></dd> + <dd data="locationCode"></dd> <dt>Prélev.</dt> - <dd><span data="withdrawn"></span> / <span data="available"></span> kg</dd> + <dd><span data="withdrawn">0</span> / <span data="quantity"></span> kg</dd> </dl> </div> Modified: trunk/magalie-web/src/main/webapp/js/withdraw-item-input.js =================================================================== --- trunk/magalie-web/src/main/webapp/js/withdraw-item-input.js 2013-03-18 17:25:24 UTC (rev 29) +++ trunk/magalie-web/src/main/webapp/js/withdraw-item-input.js 2013-03-19 16:05:56 UTC (rev 30) @@ -31,11 +31,13 @@ return processing; } +"use strict"; + model.sitesIndex = 0; model.allowSubmit = false; model.isFulfilled = function() { - var isFull = this.withdrawn() == this.required; + var isFull = this.withdrawn() === this.quantity; return isFull; }; @@ -51,7 +53,7 @@ model.withdrawn = function() { var withdrawn = 0; for (var i = 0; i < this.sites.length; i++) { - withdrawn += this.sites[i].withdrawn; + withdrawn += this.sites[i].withdrawn || 0; } return withdrawn; }; @@ -59,7 +61,7 @@ model.withdraw = function(barcode, quantity) { var site; for (var i = 0; i < this.sites.length; i++) { - if (barcode == this.sites[i].barcode) { + if (barcode == this.sites[i].siteBarcode) { site = this.sites[i]; } } @@ -67,7 +69,7 @@ alert(barcode + " n'est pas le code barre d'un emplacement valide"); } site.used = true; - site.defect = quantity != site.available; + site.defect = quantity != site.quantity; site.withdrawn = quantity; }; @@ -82,9 +84,9 @@ refreshSummary : function() { $('#withdrawn').text(model.withdrawn()); - if (model.withdrawn() === model.required) { + if (model.withdrawn() === model.quantity) { $('#withdrawn').addClass('success'); - } else if (model.withdrawn() > model.required) { + } else if (model.withdrawn() > model.quantity) { $('#withdrawn').addClass('warning'); } }, @@ -107,7 +109,7 @@ } else { $(siteElement).addClass('success'); } - } else if (site.name == model.sites[model.sitesIndex].name) { + } else if (site.siteId === model.sites[model.sitesIndex].siteId) { $(siteElement).addClass('pending'); sitesElement.scrollTop(siteElement[0].offsetTop); } else { @@ -122,7 +124,7 @@ $('#site').val(''); // set default value of quantity to what should be withdrawn on the current site if (model.sitesIndex != null) { - $('#quantity').val(model.sites[model.sitesIndex].available); + $('#quantity').val(model.sites[model.sitesIndex].quantity); } }, @@ -161,7 +163,7 @@ model.withdraw(barcode, quantity); // if used site focused as current, highlight next site to go - if (barcode == model.sites[model.sitesIndex].barcode) { + if (barcode == model.sites[model.sitesIndex].siteBarcode) { model.nextSite(); }