Franciaflex-magalie-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
March 2013
- 2 participants
- 45 discussions
r34 - in trunk: magalie-persistence/src/main/java/com/franciaflex/magalie magalie-persistence/src/main/java/com/franciaflex/magalie/dao magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa magalie-persistence/src/main/resources magalie-services/src/main/java/com/franciaflex/magalie/services magalie-services/src/test/java/com/franciaflex/magalie/services
by bleny@users.forge.codelutin.com 22 Mar '13
by bleny@users.forge.codelutin.com 22 Mar '13
22 Mar '13
Author: bleny
Date: 2013-03-22 16:46:02 +0100 (Fri, 22 Mar 2013)
New Revision: 34
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
refs #2162: consider sites reported in errors
Added:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/SiteErrorDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaSiteErrorDao.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java
Removed:
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/Site.java
Modified:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.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/JpaStorageMovementDao.java
trunk/magalie-persistence/src/main/resources/magalie.properties
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java
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/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java 2013-03-22 15:45:13 UTC (rev 33)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java 2013-03-22 15:46:02 UTC (rev 34)
@@ -54,10 +54,13 @@
String h2dataPath = databaseFile.getAbsolutePath() + File.separator + "h2data";
- allJpaParameters.put(AvailableSettings.JDBC_URL, "jdbc:h2:file:" + h2dataPath);
+ String jdbcUrl = "jdbc:h2:file:" + h2dataPath;
+ allJpaParameters.put(AvailableSettings.JDBC_URL, jdbcUrl);
+
if (log.isTraceEnabled()) {
log.trace("will store H2 data in " + h2dataPath);
+ log.trace("jdbc url is\n" + jdbcUrl);
log.trace("allJpaParameters = " + allJpaParameters);
}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java 2013-03-22 15:45:13 UTC (rev 33)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java 2013-03-22 15:46:02 UTC (rev 34)
@@ -3,7 +3,9 @@
import com.franciaflex.magalie.entity.MagalieUser;
import com.franciaflex.magalie.entity.Site;
import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import java.util.Collection;
import java.util.Comparator;
public class Sites {
@@ -60,4 +62,8 @@
public static Comparator<Site> siteRequiringDriverLicenseFirstComparator() {
return new SiteRequiringDriverLicenseFirstComparator();
}
+
+ public static Predicate<Site> siteIsNotReportedInError(Collection<Site> allSitesInError) {
+ return Predicates.not(Predicates.in(allSitesInError));
+ }
}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java 2013-03-22 15:45:13 UTC (rev 33)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java 2013-03-22 15:46:02 UTC (rev 34)
@@ -9,6 +9,7 @@
import com.google.common.base.Predicates;
import com.google.common.collect.Ordering;
+import java.util.Collection;
import java.util.Comparator;
public class StoredArticles {
@@ -118,5 +119,7 @@
return new ArticleStoredInSitesRequiringDriverLicenseFirstComparator();
}
-
+ public static Predicate<StoredArticle> articleNotStoredInSiteReportedInError(Collection<Site> allSitesInError) {
+ return Predicates.compose(Sites.siteIsNotReportedInError(allSitesInError), getSiteFunction());
+ }
}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/SiteErrorDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/SiteErrorDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/SiteErrorDao.java 2013-03-22 15:46:02 UTC (rev 34)
@@ -0,0 +1,17 @@
+package com.franciaflex.magalie.dao;
+
+import com.franciaflex.magalie.entity.Site;
+import com.franciaflex.magalie.entity.SiteError;
+
+import java.util.List;
+
+/**
+ * @author bleny
+ */
+public interface SiteErrorDao extends Dao<SiteError> {
+
+ SiteError findBySite(Site site);
+
+ List<Site> getAllSitesInError();
+
+}
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-22 15:45:13 UTC (rev 33)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/AbstractJpaDao.java 2013-03-22 15:46:02 UTC (rev 34)
@@ -4,6 +4,7 @@
import com.franciaflex.magalie.entity.AbstractJpaEntity;
import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
public abstract class AbstractJpaDao<E extends AbstractJpaEntity> implements Dao<E> {
@@ -23,7 +24,10 @@
@Override
public void persist(E entity) {
+ EntityTransaction transaction = entityManager.getTransaction();
+ transaction.begin();
entityManager.persist(entity);
+ transaction.commit();
}
@Override
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaSiteErrorDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaSiteErrorDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaSiteErrorDao.java 2013-03-22 15:46:02 UTC (rev 34)
@@ -0,0 +1,40 @@
+package com.franciaflex.magalie.dao.jpa;
+
+import com.franciaflex.magalie.dao.SiteErrorDao;
+import com.franciaflex.magalie.entity.Site;
+import com.franciaflex.magalie.entity.SiteError;
+import com.google.common.collect.Iterables;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class JpaSiteErrorDao extends AbstractJpaDao<SiteError> implements SiteErrorDao {
+
+ public JpaSiteErrorDao(EntityManager entityManager) {
+ super(entityManager);
+ }
+
+ @Override
+ protected Class<SiteError> getEntityClass() {
+ return SiteError.class;
+ }
+
+ @Override
+ public SiteError findBySite(Site site) {
+ Query query = entityManager.createQuery("from SiteError se where se.site = :site");
+ query.setParameter("site", site);
+ SiteError siteError = (SiteError)
+ Iterables.getOnlyElement(
+ query.getResultList(),
+ null);
+ return siteError;
+ }
+
+ @Override
+ public List<Site> getAllSitesInError() {
+ Query query = entityManager.createQuery("select se.site from SiteError se");
+ List<Site> allSitesInError = query.getResultList();
+ return allSitesInError;
+ }
+}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementDao.java 2013-03-22 15:45:13 UTC (rev 33)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementDao.java 2013-03-22 15:46:02 UTC (rev 34)
@@ -5,7 +5,6 @@
import com.franciaflex.magalie.entity.StorageMovement;
import javax.persistence.EntityManager;
-import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import java.util.List;
@@ -29,11 +28,11 @@
@Override
public void persistAll(Iterable<StorageMovement> storageMovements) {
- EntityTransaction transaction = entityManager.getTransaction();
- transaction.begin();
+ // EntityTransaction transaction = entityManager.getTransaction();
+ // transaction.begin();
for (StorageMovement storageMovement : storageMovements) {
persist(storageMovement);
}
- transaction.commit();
+ // transaction.commit();
}
}
Modified: trunk/magalie-persistence/src/main/resources/magalie.properties
===================================================================
--- trunk/magalie-persistence/src/main/resources/magalie.properties 2013-03-22 15:45:13 UTC (rev 33)
+++ trunk/magalie-persistence/src/main/resources/magalie.properties 2013-03-22 15:46:02 UTC (rev 34)
@@ -6,5 +6,4 @@
hibernate.hbm2ddl.auto=create-drop
hibernate.show_sql=true
hibernate.format_sql=true
-hibernate.transaction.flush_before_completion=true
hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java 2013-03-22 15:45:13 UTC (rev 33)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java 2013-03-22 15:46:02 UTC (rev 34)
@@ -138,7 +138,7 @@
List<StorageMovement> storageMovements = storageMovementDao.findAllByArticle(article);
- ImmutableMap<Site,StoredArticle> storedArticlesBySite =
+ ImmutableMap<Site, StoredArticle> storedArticlesBySite =
Maps.uniqueIndex(
storedArticles,
StoredArticles.getSiteFunction()
@@ -165,8 +165,20 @@
}
- // TODO brendan 21/03/13 consider sites in error
+ // exclude sites reported in error
+ SiteErrorsService siteErrorsService = serviceContext.newService(SiteErrorsService.class);
+
+ List<Site> allSitesInError = siteErrorsService.getAllSitesInError();
+
+ storedArticles =
+ Lists.newArrayList(
+ Iterables.filter(
+ storedArticles,
+ StoredArticles.articleNotStoredInSiteReportedInError(allSitesInError)
+ )
+ );
+
return storedArticles;
}
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-22 15:45:13 UTC (rev 33)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-03-22 15:46:02 UTC (rev 34)
@@ -5,11 +5,13 @@
import com.franciaflex.magalie.dao.ArticleDao;
import com.franciaflex.magalie.dao.MagalieUserDao;
import com.franciaflex.magalie.dao.RequestedArticleDao;
+import com.franciaflex.magalie.dao.SiteErrorDao;
import com.franciaflex.magalie.dao.StorageMovementDao;
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.jpa.JpaRequestedArticleDao;
+import com.franciaflex.magalie.dao.jpa.JpaSiteErrorDao;
import com.franciaflex.magalie.dao.jpa.JpaStorageMovementDao;
import com.franciaflex.magalie.dao.jpa.JpaStoredArticleDao;
@@ -102,4 +104,9 @@
public StorageMovementDao getStorageMovementDao() {
return new JpaStorageMovementDao(entityManager);
}
+
+ @Override
+ public SiteErrorDao getSiteErrorDao() {
+ return new JpaSiteErrorDao(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-22 15:45:13 UTC (rev 33)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-03-22 15:46:02 UTC (rev 34)
@@ -27,6 +27,7 @@
import com.franciaflex.magalie.dao.ArticleDao;
import com.franciaflex.magalie.dao.MagalieUserDao;
import com.franciaflex.magalie.dao.RequestedArticleDao;
+import com.franciaflex.magalie.dao.SiteErrorDao;
import com.franciaflex.magalie.dao.StorageMovementDao;
import com.franciaflex.magalie.dao.StoredArticleDao;
@@ -52,4 +53,7 @@
StorageMovementDao getStorageMovementDao();
MagalieApplicationConfig getMagalieApplicationConfig();
+
+ SiteErrorDao getSiteErrorDao();
+
}
Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/Site.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/Site.java 2013-03-22 15:45:13 UTC (rev 33)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/Site.java 2013-03-22 15:46:02 UTC (rev 34)
@@ -1,86 +0,0 @@
-package com.franciaflex.magalie.services;
-
-/*
- * #%L
- * MagaLiE :: Services
- * $Id:$
- * $HeadURL:$
- * %%
- * Copyright (C) 2013 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-
-public class Site {
-
- protected String name;
-
- protected String barcode;
-
- protected int available;
-
- protected int withdrawn;
-
- protected boolean used;
-
- public Site() {}
-
- public Site(String name, String barcode, int available) {
- this.name = name;
- this.barcode = barcode;
- this.available = available;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getBarcode() {
- return barcode;
- }
-
- public void setBarcode(String barcode) {
- this.barcode = barcode;
- }
-
- public int getAvailable() {
- return available;
- }
-
- public void setAvailable(int available) {
- this.available = available;
- }
-
- public int getWithdrawn() {
- return withdrawn;
- }
-
- public void setWithdrawn(int withdrawn) {
- this.withdrawn = withdrawn;
- }
-
- public boolean isUsed() {
- return used;
- }
-
- public void setUsed(boolean used) {
- this.used = used;
- }
-
-}
Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java 2013-03-22 15:46:02 UTC (rev 34)
@@ -0,0 +1,63 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.dao.SiteErrorDao;
+import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.entity.Site;
+import com.franciaflex.magalie.entity.SiteError;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Date;
+import java.util.List;
+
+public class SiteErrorsService implements MagalieService {
+
+ private static final Log log = LogFactory.getLog(SiteErrorsService.class);
+
+ protected MagalieServiceContext serviceContext;
+
+ @Override
+ public void setServiceContext(MagalieServiceContext serviceContext) {
+ this.serviceContext = serviceContext;
+ }
+
+ public void reportError(Site site, MagalieUser magalieUser) {
+
+ SiteErrorDao siteErrorDao = serviceContext.getSiteErrorDao();
+
+ SiteError existingSiteError = siteErrorDao.findBySite(site);
+
+ if (existingSiteError == null) {
+
+ SiteError newSiteError = new SiteError();
+
+ newSiteError.setMagalieUser(magalieUser);
+
+ newSiteError.setSite(site);
+
+ Date reportDate = serviceContext.getDate();
+
+ newSiteError.setReportDate(reportDate);
+
+ siteErrorDao.persist(newSiteError);
+
+ } else {
+
+ if (log.isInfoEnabled()) {
+ log.info("error on site " + site + " already reported, nothing saved");
+ }
+
+ }
+
+ }
+
+ public List<Site> getAllSitesInError() {
+
+ SiteErrorDao siteErrorDao = serviceContext.getSiteErrorDao();
+
+ List<Site> allSitesInError = siteErrorDao.getAllSitesInError();
+
+ return allSitesInError;
+
+ }
+}
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-22 15:45:13 UTC (rev 33)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java 2013-03-22 15:46:02 UTC (rev 34)
@@ -3,6 +3,7 @@
import com.franciaflex.magalie.AbstractMagalieServiceTest;
import com.franciaflex.magalie.entity.Article;
import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.entity.Site;
import com.google.common.collect.Iterables;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -184,5 +185,42 @@
}
}
+ @Test
+ public void testWithdrawArticleConsiderSitesInError() throws Exception {
+ MagalieUser alexandre = fixture("alexandre");
+ MagalieUser cathy = fixture("cathy");
+
+ Article article = fixture("article1");
+
+ // report site 2 in error
+ Site site2 = fixture("site2");
+ SiteErrorsService siteErrorsService = newService(SiteErrorsService.class);
+ siteErrorsService.reportError(site2, alexandre);
+
+ try {
+ WithdrawTask withdrawTask = service.withdrawArticle(cathy, article, 30.);
+ if (log.isDebugEnabled()) {
+ log.debug("withdrawTask = " + withdrawTask);
+ }
+ Assert.assertEquals(1, withdrawTask.getSites().size());
+ WithdrawArticleFromSiteTask site = Iterables.get(withdrawTask.getSites(), 0, null);
+ Assert.assertNotEquals(
+ "site2 must not be returned because it was reported in error",
+ site2.getId(),
+ site.getSiteId());
+ } catch (RequiredDriverLicenceException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("exception raised = " + e);
+ }
+ Assert.fail();
+ } catch (UnavailableArticleException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("exception raised = " + e);
+ }
+ Assert.fail();
+ }
+ }
+
+
}
1
0
r33 - trunk/magalie-web/src/main/webapp/WEB-INF/content
by bleny@users.forge.codelutin.com 22 Mar '13
by bleny@users.forge.codelutin.com 22 Mar '13
22 Mar '13
Author: bleny
Date: 2013-03-22 16:45:13 +0100 (Fri, 22 Mar 2013)
New Revision: 33
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
fix hardcoded unit in withdraw item input
Modified:
trunk/magalie-web/src/main/webapp/WEB-INF/content/withdraw-item-input.jsp
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-22 13:19:12 UTC (rev 32)
+++ trunk/magalie-web/src/main/webapp/WEB-INF/content/withdraw-item-input.jsp 2013-03-22 15:45:13 UTC (rev 33)
@@ -40,14 +40,14 @@
<dt>LàS</dt>
<dd>123456789</dd>
<dt>Prélev.</dt>
- <dd><span id="withdrawn">0</span> / <s:property value="withdrawTask.quantity" /> kg</dd>
+ <dd><span id="withdrawn">0</span> / <s:property value="withdrawTask.quantity" /> <s:property value="withdrawTask.article.unit" /></dd>
</dl>
</header>
<section id="sites">
</section>
<form class="form-horizontal">
<s:textfield name="site" label="Empl." inputAppendIcon="barcode" cssClass="input-small" />
- <s:textfield name="quantity" label="Qté" inputAppend="kg" cssClass="input-mini" />
+ <s:textfield name="quantity" label="Qté" inputAppend="%{withdrawTask.article.description}" cssClass="input-mini" />
<s:hidden name="model" />
<div class="btn-group">
@@ -60,6 +60,6 @@
<dt>Empl.</dt>
<dd data="locationCode"></dd>
<dt>Prélev.</dt>
- <dd><span data="withdrawn">0</span> / <span data="quantity"></span> kg</dd>
+ <dd><span data="withdrawn">0</span> / <span data="quantity"></span> <s:property value="withdrawTask.article.description" /></dd>
</dl>
</div>
1
0
r32 - in trunk: magalie-persistence/src/main/java/com/franciaflex/magalie/dao magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa magalie-services/src/main/java/com/franciaflex/magalie/services magalie-services/src/test/java/com/franciaflex/magalie magalie-services/src/test/java/com/franciaflex/magalie/services
by bleny@users.forge.codelutin.com 22 Mar '13
by bleny@users.forge.codelutin.com 22 Mar '13
22 Mar '13
Author: bleny
Date: 2013-03-22 14:19:12 +0100 (Fri, 22 Mar 2013)
New Revision: 32
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
refs #2162: consider already removed items
Added:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementDao.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.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/JpaStoredArticleDao.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java
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/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java
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-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/Dao.java 2013-03-22 13:19:12 UTC (rev 32)
@@ -14,5 +14,4 @@
boolean contains(E entity);
- void commit();
}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementDao.java 2013-03-22 13:19:12 UTC (rev 32)
@@ -0,0 +1,17 @@
+package com.franciaflex.magalie.dao;
+
+import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.entity.StorageMovement;
+
+import java.util.List;
+
+/**
+ * @author bleny
+ */
+public interface StorageMovementDao extends Dao<StorageMovement> {
+
+ List<StorageMovement> findAllByArticle(Article article);
+
+ void persistAll(Iterable<StorageMovement> storageMovements);
+
+}
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-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/AbstractJpaDao.java 2013-03-22 13:19:12 UTC (rev 32)
@@ -41,8 +41,4 @@
return entityManager.contains(entity);
}
- @Override
- public void commit() {
- entityManager.getTransaction().commit();
- }
}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementDao.java 2013-03-22 13:19:12 UTC (rev 32)
@@ -0,0 +1,39 @@
+package com.franciaflex.magalie.dao.jpa;
+
+import com.franciaflex.magalie.dao.StorageMovementDao;
+import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.entity.StorageMovement;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Query;
+import java.util.List;
+
+public class JpaStorageMovementDao extends AbstractJpaDao<StorageMovement> implements StorageMovementDao {
+
+ public JpaStorageMovementDao(EntityManager entityManager) {
+ super(entityManager);
+ }
+
+ @Override
+ protected Class<StorageMovement> getEntityClass() {
+ return StorageMovement.class;
+ }
+
+ @Override
+ public List<StorageMovement> findAllByArticle(Article article) {
+ Query query = entityManager.createQuery("from StorageMovement sm where sm.article = :article");
+ query.setParameter("article", article);
+ return query.getResultList();
+ }
+
+ @Override
+ public void persistAll(Iterable<StorageMovement> storageMovements) {
+ EntityTransaction transaction = entityManager.getTransaction();
+ transaction.begin();
+ for (StorageMovement storageMovement : storageMovements) {
+ persist(storageMovement);
+ }
+ transaction.commit();
+ }
+}
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-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStoredArticleDao.java 2013-03-22 13:19:12 UTC (rev 32)
@@ -23,7 +23,10 @@
public List<StoredArticle> findAllForArticle(Article article) {
Query query = entityManager.createQuery("from StoredArticle sa where sa.article = :article");
query.setParameter("article", article);
- List resultList = query.getResultList();
+ List<StoredArticle> resultList = query.getResultList();
+ for (StoredArticle storedArticle : resultList) {
+ entityManager.detach(storedArticle);
+ }
return resultList;
}
}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java 2013-03-22 13:19:12 UTC (rev 32)
@@ -1,18 +1,24 @@
package com.franciaflex.magalie.services;
import com.franciaflex.magalie.StoredArticles;
+import com.franciaflex.magalie.dao.StorageMovementDao;
import com.franciaflex.magalie.dao.StoredArticleDao;
import com.franciaflex.magalie.entity.Article;
import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.entity.Site;
+import com.franciaflex.magalie.entity.StorageMovement;
import com.franciaflex.magalie.entity.StoredArticle;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import com.google.common.collect.Ordering;
import com.google.common.collect.Sets;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import java.util.Date;
import java.util.List;
import java.util.Set;
@@ -73,6 +79,10 @@
double quantity = 0;
+ List<StorageMovement> newStorageMovements = Lists.newLinkedList();
+
+ Date orderDate = serviceContext.getDate();
+
for (StoredArticle storedArticle : sortedStoredArticles) {
double quantityLeft = requestedQuantity - quantity;
@@ -85,9 +95,21 @@
quantity += quantityWithdrawn;
- // TODO brendan 18/03/13 enregistrer le mouvement
- // quantityInSite -= quantityWithdrawn;
+ StorageMovement newStorageMovement = new StorageMovement();
+ newStorageMovement.setArticle(article);
+
+ newStorageMovement.setOrderDate(orderDate);
+
+ newStorageMovement.setMagalieUser(magalieUser);
+
+ newStorageMovement.setSite(storedArticle.getSite());
+
+ // we remove from the stock so negative number
+ newStorageMovement.setQuantity( -1. * quantityWithdrawn);
+
+ newStorageMovements.add(newStorageMovement);
+
}
WithdrawArticleFromSiteTask withdrawArticleFromSiteTask = new WithdrawArticleFromSiteTask(storedArticle, quantityWithdrawn);
@@ -96,6 +118,10 @@
}
+ StorageMovementDao storageMovementDao = serviceContext.getStorageMovementDao();
+
+ storageMovementDao.persistAll(newStorageMovements);
+
return withdrawTask;
}
@@ -104,10 +130,45 @@
StoredArticleDao storedArticleDao = serviceContext.getStoredArticleDao();
- // TODO brendan 18/03/13 remove storage movement, remove sites in error
+ List<StoredArticle> storedArticles = storedArticleDao.findAllForArticle(article);
- return storedArticleDao.findAllForArticle(article);
+ // consider storage movements and compute actually available quantities
+ StorageMovementDao storageMovementDao = serviceContext.getStorageMovementDao();
+
+ List<StorageMovement> storageMovements = storageMovementDao.findAllByArticle(article);
+
+ ImmutableMap<Site,StoredArticle> storedArticlesBySite =
+ Maps.uniqueIndex(
+ storedArticles,
+ StoredArticles.getSiteFunction()
+ );
+
+ for (StorageMovement storageMovement : storageMovements) {
+
+ Site site = storageMovement.getSite();
+
+ StoredArticle storedArticle = storedArticlesBySite.get(site);
+
+ double actualQuantity = storedArticle.getQuantity() + storageMovement.getQuantity();
+
+ if (actualQuantity > 0.) {
+
+ storedArticle.setQuantity(actualQuantity);
+
+ } else {
+
+ // site is empty, do not include it as a site where you can take an article
+ storedArticles.remove(storedArticle);
+
+ }
+
+ }
+
+ // TODO brendan 21/03/13 consider sites in error
+
+ return storedArticles;
+
}
protected double getAvailableQuantity(Article article) {
@@ -147,4 +208,5 @@
return accessibleQuantity;
}
+
}
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-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-03-22 13:19:12 UTC (rev 32)
@@ -3,17 +3,20 @@
import com.franciaflex.magalie.MagalieApplicationConfig;
import com.franciaflex.magalie.MagalieTechnicalException;
import com.franciaflex.magalie.dao.ArticleDao;
+import com.franciaflex.magalie.dao.MagalieUserDao;
import com.franciaflex.magalie.dao.RequestedArticleDao;
+import com.franciaflex.magalie.dao.StorageMovementDao;
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.JpaStorageMovementDao;
import com.franciaflex.magalie.dao.jpa.JpaStoredArticleDao;
import javax.persistence.EntityManager;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
+import java.util.Date;
public class DefaultMagalieServiceContext implements MagalieServiceContext {
@@ -25,6 +28,7 @@
this.entityManager = entityManager;
}
+ @Override
public MagalieApplicationConfig getMagalieApplicationConfig() {
return magalieApplicationConfig;
}
@@ -69,6 +73,12 @@
}
@Override
+ public Date getDate() {
+ Date now = new Date();
+ return now;
+ }
+
+ @Override
public MagalieUserDao getMagalieUserDao() {
return new JpaMagalieUserDao(entityManager);
}
@@ -87,4 +97,9 @@
public ArticleDao getArticleDao() {
return new JpaArticleDao(entityManager);
}
+
+ @Override
+ public StorageMovementDao getStorageMovementDao() {
+ return new JpaStorageMovementDao(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-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-03-22 13:19:12 UTC (rev 32)
@@ -23,16 +23,22 @@
* #L%
*/
+import com.franciaflex.magalie.MagalieApplicationConfig;
import com.franciaflex.magalie.dao.ArticleDao;
import com.franciaflex.magalie.dao.MagalieUserDao;
import com.franciaflex.magalie.dao.RequestedArticleDao;
+import com.franciaflex.magalie.dao.StorageMovementDao;
import com.franciaflex.magalie.dao.StoredArticleDao;
+import java.util.Date;
+
/**
* @author bleny
*/
public interface MagalieServiceContext {
+ Date getDate();
+
<E extends MagalieService> E newService(Class<E> serviceClass);
MagalieUserDao getMagalieUserDao();
@@ -42,4 +48,8 @@
RequestedArticleDao getRequestedArticleDao();
ArticleDao getArticleDao();
+
+ StorageMovementDao getStorageMovementDao();
+
+ MagalieApplicationConfig getMagalieApplicationConfig();
}
Modified: trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java 2013-03-22 13:19:12 UTC (rev 32)
@@ -1,13 +1,13 @@
package com.franciaflex.magalie;
import com.franciaflex.magalie.entity.AbstractJpaEntity;
-import com.franciaflex.magalie.services.DefaultMagalieServiceContext;
import com.franciaflex.magalie.services.MagalieService;
import com.franciaflex.magalie.services.MagalieServiceContext;
import com.google.common.collect.Lists;
import org.junit.Rule;
import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -22,7 +22,7 @@
protected JpaEntityManagerRule jpaEntityManagerRule;
- protected MagalieServiceContext serviceContext;
+ protected FakeMagalieServiceContext serviceContext;
protected static MagalieApplicationConfig getMagalieApplicationConfig() {
@@ -57,7 +57,7 @@
if (serviceContext == null) {
- DefaultMagalieServiceContext serviceContext = new DefaultMagalieServiceContext();
+ FakeMagalieServiceContext serviceContext = new FakeMagalieServiceContext();
serviceContext.setMagalieApplicationConfig(getMagalieApplicationConfig());
@@ -74,13 +74,17 @@
toPersist.addAll(fixtures.<Collection<? extends AbstractJpaEntity>>fixture("articles"));
toPersist.addAll(fixtures.<Collection<? extends AbstractJpaEntity>>fixture("storedArticles"));
+ EntityTransaction transaction = entityManager.getTransaction();
+
+ transaction.begin();
+
for (AbstractJpaEntity entity : toPersist) {
entityManager.persist(entity);
}
- entityManager.getTransaction().commit();
+ transaction.commit();
this.serviceContext = serviceContext;
Added: trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java (rev 0)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java 2013-03-22 13:19:12 UTC (rev 32)
@@ -0,0 +1,29 @@
+package com.franciaflex.magalie;
+
+import com.franciaflex.magalie.services.DefaultMagalieServiceContext;
+import com.google.common.base.Preconditions;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Date;
+
+public class FakeMagalieServiceContext extends DefaultMagalieServiceContext {
+
+ private static final Log log = LogFactory.getLog(FakeMagalieServiceContext.class);
+
+ protected Date date;
+
+ @Override
+ public Date getDate() {
+ Preconditions.checkState(date != null, "you must provide a date before running service test");
+ if (log.isTraceEnabled()) {
+ log.trace("injecting fake date in service: " + date);
+ }
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+
+}
Modified: trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java 2013-03-22 13:19:12 UTC (rev 32)
@@ -65,11 +65,9 @@
entityManager = entityManagerFactory.createEntityManager();
if (log.isDebugEnabled()) {
- log.debug("created entityManager " + entityManager + " and opened transaction");
+ log.debug("created entityManager " + entityManager);
}
- entityManager.getTransaction().begin();
-
open = true;
}
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-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java 2013-03-22 13:19:12 UTC (rev 32)
@@ -10,6 +10,9 @@
import org.junit.Before;
import org.junit.Test;
+import java.text.ParseException;
+import java.util.Date;
+
public class ArticleStorageServiceTest extends AbstractMagalieServiceTest {
private static final Log log = LogFactory.getLog(ArticleStorageServiceTest.class);
@@ -17,10 +20,12 @@
protected ArticleStorageService service;
@Before
- public void setUp() {
+ public void setUp() throws ParseException {
service = newService(ArticleStorageService.class);
+ serviceContext.setDate(new Date(1363948427576l));
+
}
@Test
@@ -123,4 +128,61 @@
Assert.assertEquals(30., site2.getQuantity(), DELTA);
}
+ @Test
+ public void testWithdrawArticleConsiderAlreadyRemovedItem() throws Exception {
+
+ MagalieUser alexandre = fixture("alexandre");
+ MagalieUser cathy = fixture("cathy");
+
+ Article article = fixture("article1");
+
+ WithdrawTask withdrawTask = null;
+
+ try {
+ withdrawTask = service.withdrawArticle(alexandre, article, 30.);
+ if (log.isDebugEnabled()) {
+ log.debug("withdrawTask = " + withdrawTask);
+ }
+ Assert.assertEquals(2, withdrawTask.getSites().size());
+ WithdrawArticleFromSiteTask site1 = Iterables.get(withdrawTask.getSites(), 0, null);
+ Assert.assertEquals(20., site1.getQuantity(), DELTA);
+ Assert.assertEquals("B2", site1.getLocationCode());
+ WithdrawArticleFromSiteTask site2 = Iterables.get(withdrawTask.getSites(), 1, null);
+ Assert.assertEquals(10., site2.getQuantity(), DELTA);
+ Assert.assertEquals("A1", site2.getLocationCode());
+ } catch (RequiredDriverLicenceException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("exception raised = " + e);
+ }
+ Assert.fail();
+ } catch (UnavailableArticleException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("exception raised = " + e);
+ }
+ Assert.fail();
+ }
+
+ try {
+ withdrawTask = service.withdrawArticle(cathy, article, 30.);
+ if (log.isDebugEnabled()) {
+ log.debug("withdrawTask = " + withdrawTask);
+ }
+ Assert.assertEquals(1, withdrawTask.getSites().size());
+ WithdrawArticleFromSiteTask site1 = Iterables.get(withdrawTask.getSites(), 0, null);
+ Assert.assertEquals(30., site1.getQuantity(), DELTA);
+ Assert.assertEquals("A1", site1.getLocationCode());
+ } catch (RequiredDriverLicenceException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("exception raised = " + e);
+ }
+ Assert.fail();
+ } catch (UnavailableArticleException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("exception raised = " + e);
+ }
+ Assert.fail();
+ }
+ }
+
+
}
1
0
r31 - in trunk: magalie-persistence magalie-persistence/src/main/java/com/franciaflex/magalie magalie-services/src/main/java/com/franciaflex/magalie/services magalie-services/src/test/java/com/franciaflex/magalie magalie-services/src/test/java/com/franciaflex/magalie/services magalie-web/src/main/java/com/franciaflex/magalie/web
by bleny@users.forge.codelutin.com 21 Mar '13
by bleny@users.forge.codelutin.com 21 Mar '13
21 Mar '13
Author: bleny
Date: 2013-03-21 14:55:30 +0100 (Thu, 21 Mar 2013)
New Revision: 31
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
introduce JUnit rule to open/close entityManager in each test, sandbox every test in a single H2 instance
Added:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java
Modified:
trunk/magalie-persistence/pom.xml
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieJpaTransactionFilter.java
Modified: trunk/magalie-persistence/pom.xml
===================================================================
--- trunk/magalie-persistence/pom.xml 2013-03-19 16:05:56 UTC (rev 30)
+++ trunk/magalie-persistence/pom.xml 2013-03-21 13:55:30 UTC (rev 31)
@@ -28,16 +28,19 @@
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
+ <scope>compile</scope>
</dependency>
<dependency>
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java 2013-03-21 13:55:30 UTC (rev 31)
@@ -0,0 +1,70 @@
+package com.franciaflex.magalie;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
+import org.apache.commons.lang3.SystemUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.hibernate.cfg.Environment;
+import org.hibernate.ejb.AvailableSettings;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+import java.io.File;
+import java.util.Collections;
+import java.util.Map;
+
+public class JpaUtil {
+
+ private static final Log log = LogFactory.getLog(JpaUtil.class);
+
+ private JpaUtil() {}
+
+ protected static final ImmutableMap<String, String> JPA_H2_CONFIG =
+ ImmutableMap.of(
+ AvailableSettings.JDBC_DRIVER, org.h2.Driver.class.getName(),
+ AvailableSettings.JDBC_USER, "sa",
+ AvailableSettings.JDBC_PASSWORD, "",
+ Environment.DIALECT, org.hibernate.dialect.H2Dialect.class.getName(),
+ Environment.HBM2DDL_AUTO, "create"
+ );
+
+ public static EntityManagerFactory createTempEntityManagerFactory(String persistenceUnitName, String context) {
+
+ EntityManagerFactory tempEntityManagerFactory =
+ createTempEntityManagerFactory(
+ persistenceUnitName,
+ context, Collections.<String, String>emptyMap());
+
+ return tempEntityManagerFactory;
+
+ }
+
+ public static EntityManagerFactory createTempEntityManagerFactory(String persistenceUnitName, String context, Map<String, String> jpaParameters) {
+
+ Map<String, String> allJpaParameters = Maps.newHashMap();
+
+ allJpaParameters.putAll(jpaParameters);
+
+ allJpaParameters.putAll(JPA_H2_CONFIG);
+
+ File tempDirFile = SystemUtils.getJavaIoTmpDir();
+
+ File databaseFile = new File(tempDirFile, context);
+
+ String h2dataPath = databaseFile.getAbsolutePath() + File.separator + "h2data";
+
+ allJpaParameters.put(AvailableSettings.JDBC_URL, "jdbc:h2:file:" + h2dataPath);
+
+ if (log.isTraceEnabled()) {
+ log.trace("will store H2 data in " + h2dataPath);
+ log.trace("allJpaParameters = " + allJpaParameters);
+ }
+
+ EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName, allJpaParameters);
+
+ return entityManagerFactory;
+
+ }
+
+}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java 2013-03-19 16:05:56 UTC (rev 30)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java 2013-03-21 13:55:30 UTC (rev 31)
@@ -29,8 +29,8 @@
}
}
- public Map<String, Object> getJpaParameters() {
- Map<String, Object> jpaParameters = Maps.newHashMap();
+ public Map<String, String> getJpaParameters() {
+ Map<String, String> jpaParameters = Maps.newHashMap();
Properties hibernateProperties = applicationConfig.getOptionStartsWith("hibernate");
jpaParameters.putAll((Map) hibernateProperties);
Properties jpaProperties = applicationConfig.getOptionStartsWith("javax.persistence");
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-19 16:05:56 UTC (rev 30)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-03-21 13:55:30 UTC (rev 31)
@@ -1,5 +1,6 @@
package com.franciaflex.magalie.services;
+import com.franciaflex.magalie.MagalieApplicationConfig;
import com.franciaflex.magalie.MagalieTechnicalException;
import com.franciaflex.magalie.dao.ArticleDao;
import com.franciaflex.magalie.dao.RequestedArticleDao;
@@ -18,10 +19,20 @@
protected EntityManager entityManager;
+ protected MagalieApplicationConfig magalieApplicationConfig;
+
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
+ public MagalieApplicationConfig getMagalieApplicationConfig() {
+ return magalieApplicationConfig;
+ }
+
+ public void setMagalieApplicationConfig(MagalieApplicationConfig magalieApplicationConfig) {
+ this.magalieApplicationConfig = magalieApplicationConfig;
+ }
+
@Override
public <E extends MagalieService> E newService(Class<E> serviceClass) {
Added: trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java (rev 0)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java 2013-03-21 13:55:30 UTC (rev 31)
@@ -0,0 +1,114 @@
+package com.franciaflex.magalie;
+
+import com.franciaflex.magalie.entity.AbstractJpaEntity;
+import com.franciaflex.magalie.services.DefaultMagalieServiceContext;
+import com.franciaflex.magalie.services.MagalieService;
+import com.franciaflex.magalie.services.MagalieServiceContext;
+import com.google.common.collect.Lists;
+import org.junit.Rule;
+
+import javax.persistence.EntityManager;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+public abstract class AbstractMagalieServiceTest {
+
+ protected static final double DELTA = 0.0001;
+
+ protected static MagalieFixtures fixtures;
+
+ protected static MagalieApplicationConfig magalieApplicationConfig;
+
+ protected JpaEntityManagerRule jpaEntityManagerRule;
+
+ protected MagalieServiceContext serviceContext;
+
+ protected static MagalieApplicationConfig getMagalieApplicationConfig() {
+
+ if (magalieApplicationConfig == null) {
+
+ magalieApplicationConfig = new MagalieApplicationConfig();
+
+ }
+
+ return magalieApplicationConfig;
+
+ }
+
+ public static MagalieFixtures getFixtures() {
+
+ if (fixtures == null) {
+
+ fixtures = new MagalieFixtures("fixtures");
+
+ }
+
+ return fixtures;
+ }
+
+ protected static <E> E fixture(String id) {
+
+ return getFixtures().fixture(id);
+
+ }
+
+ protected MagalieServiceContext getServiceContext() {
+
+ if (serviceContext == null) {
+
+ DefaultMagalieServiceContext serviceContext = new DefaultMagalieServiceContext();
+
+ serviceContext.setMagalieApplicationConfig(getMagalieApplicationConfig());
+
+ EntityManager entityManager = getJpaEntityManagerRule().getEntityManager();
+
+ serviceContext.setEntityManager(entityManager);
+
+ MagalieFixtures fixtures = getFixtures();
+
+ 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();
+
+ this.serviceContext = serviceContext;
+
+ }
+
+ return serviceContext;
+
+ }
+
+ protected <E extends MagalieService> E newService(Class<E> serviceClass) {
+
+ return getServiceContext().newService(serviceClass);
+
+ }
+
+ @Rule
+ public JpaEntityManagerRule getJpaEntityManagerRule() {
+
+ if (jpaEntityManagerRule == null) {
+
+ Map<String, String> jpaParameters = getMagalieApplicationConfig().getJpaParameters();
+
+ jpaEntityManagerRule = new JpaEntityManagerRule("magaliePersistenceUnit", jpaParameters);
+
+ }
+
+ return jpaEntityManagerRule;
+
+ }
+
+}
Added: trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java (rev 0)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java 2013-03-21 13:55:30 UTC (rev 31)
@@ -0,0 +1,100 @@
+package com.franciaflex.magalie;
+
+import com.google.common.base.Joiner;
+import com.google.common.base.Preconditions;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import java.util.Date;
+import java.util.Map;
+
+public class JpaEntityManagerRule implements TestRule {
+
+ private static final Log log = LogFactory.getLog(JpaEntityManagerRule.class);
+
+ protected String persistenceUnitName;
+
+ protected String timestamp = String.valueOf(new Date().getTime());
+
+ protected EntityManager entityManager;
+
+ protected boolean open = false;
+
+ protected Map<String, String> jpaParameters;
+
+ public JpaEntityManagerRule(String persistenceUnitName, Map<String, String> jpaParameters) {
+ this.persistenceUnitName = persistenceUnitName;
+ this.jpaParameters = jpaParameters;
+ }
+
+ @Override
+ public Statement apply(final Statement base, Description description) {
+
+ final String testClassName = description.getClassName();
+
+ final String testMethodName = description.getMethodName();
+
+ if (log.isDebugEnabled()) {
+ log.debug("will create entityManager for test class " + testClassName + " and method " + testMethodName);
+ }
+
+ return new Statement() {
+ @Override
+ public void evaluate() throws Throwable {
+ createEntityManager(testClassName, testMethodName);
+ try {
+ base.evaluate();
+ } finally {
+ closeEntityManager();
+ }
+ }
+ };
+ }
+
+ protected void createEntityManager(String testClassName, String testMethodName) {
+
+ String context = Joiner.on('_').join(testClassName, testMethodName, timestamp);
+
+ EntityManagerFactory entityManagerFactory = JpaUtil.createTempEntityManagerFactory(persistenceUnitName, context, jpaParameters);
+
+ entityManager = entityManagerFactory.createEntityManager();
+
+ if (log.isDebugEnabled()) {
+ log.debug("created entityManager " + entityManager + " and opened transaction");
+ }
+
+ entityManager.getTransaction().begin();
+
+ open = true;
+
+ }
+
+ public EntityManager getEntityManager() {
+
+ Preconditions.checkState(open);
+
+ return entityManager;
+
+ }
+
+ /**
+ * Override to tear down your specific external resource.
+ */
+ protected void closeEntityManager() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("close entityManager " + entityManager);
+ }
+
+ open = false;
+
+ entityManager.close();
+
+ }
+
+}
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-19 16:05:56 UTC (rev 30)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java 2013-03-21 13:55:30 UTC (rev 31)
@@ -1,87 +1,33 @@
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.AbstractMagalieServiceTest;
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 extends AbstractMagalieServiceTest {
-public class ArticleStorageServiceTest {
-
private static final Log log = LogFactory.getLog(ArticleStorageServiceTest.class);
- protected static final double DELTA = 0.0001;
-
protected ArticleStorageService service;
- protected MagalieFixtures fixtures;
-
@Before
- public void setUp() throws Exception {
+ public void setUp() {
- service = new ArticleStorageService();
+ service = newService(ArticleStorageService.class);
- fixtures = new MagalieFixtures("fixtures");
-
- service.setServiceContext(new MagalieServiceContext() {
-
- @Override
- public <E extends MagalieService> E newService(Class<E> serviceClass) {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- @Override
- public MagalieUserDao getMagalieUserDao() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public StoredArticleDao getStoredArticleDao() {
- StoredArticleDao storedArticleDaoMock = Mockito.mock(StoredArticleDao.class);
- Mockito.when(storedArticleDaoMock.findAllForArticle(Mockito.<Article>any())).thenReturn(
- fixtures.<List<StoredArticle>>fixture("storedArticlesForArticle1")
- );
- 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.
- }
- });
}
@Test
public void testThrowUnavailableArticle() throws Exception {
- MagalieUser basile = fixtures.fixture("basile");
- Article article = fixtures.fixture("article1");
+ MagalieUser basile = fixture("basile");
+ Article article = fixture("article1");
WithdrawTask withdrawTask;
try {
@@ -101,8 +47,8 @@
@Test
public void testThrowRequiredDriverLicenceException() throws Exception {
- MagalieUser basile = fixtures.fixture("basile");
- Article article = fixtures.fixture("article1");
+ MagalieUser basile = fixture("basile");
+ Article article = fixture("article1");
WithdrawTask withdrawTask;
try {
@@ -122,8 +68,8 @@
@Test
public void testWithdrawArticleWithoutDriverLicense() throws Exception {
- MagalieUser basile = fixtures.fixture("basile");
- Article article = fixtures.fixture("article1");
+ MagalieUser basile = fixture("basile");
+ Article article = fixture("article1");
WithdrawTask withdrawTask = null;
try {
@@ -149,8 +95,8 @@
@Test
public void testWithdrawArticleWithDriverLicense() throws Exception {
- MagalieUser alexandre = fixtures.fixture("alexandre");
- Article article = fixtures.fixture("article1");
+ MagalieUser alexandre = fixture("alexandre");
+ Article article = fixture("article1");
WithdrawTask withdrawTask = null;
try {
@@ -177,47 +123,4 @@
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/MagalieJpaTransactionFilter.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieJpaTransactionFilter.java 2013-03-19 16:05:56 UTC (rev 30)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieJpaTransactionFilter.java 2013-03-21 13:55:30 UTC (rev 31)
@@ -22,7 +22,7 @@
MagalieApplicationConfig applicationConfig = new MagalieApplicationConfig();
- Map<String, Object> jpaParameters = applicationConfig.getJpaParameters();
+ Map<String, String> jpaParameters = applicationConfig.getJpaParameters();
entityManagerFactory = Persistence.createEntityManagerFactory("magaliePersistenceUnit", jpaParameters);
1
0
See <http://ci.nuiton.org/jenkins/job/franciaflex-magalie/9/changes>
Changes:
[Brendan Le Ny] fix warn caused by using deprecated ApplicationConfig API
[Brendan Le Ny] fix warn while analyzing dependencies
[Brendan Le Ny] introduce JPA layer and servlet filter
------------------------------------------
Started by an SCM change
Building on master in workspace <http://ci.nuiton.org/jenkins/job/franciaflex-magalie/ws/>
Updating http://svn.forge.codelutin.com/svn/franciaflex-magalie/trunk to revision '2013-03-15T13:21:24.256 +0100'
U magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java
U magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java
U magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java
D magalie-persistence/src/test/resources/magalie.properties
D magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDAO.java
A magalie-persistence/src/main/java/com/franciaflex/magalie/dao/AbstractJpaDao.java
A magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java
A magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaMagalieUserDao.java
A magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaDao.java
U magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java
A magalie-persistence/src/main/resources/magalie.properties
U magalie-persistence/pom.xml
A magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieJpaTransactionFilter.java
U magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java
U magalie-web/src/main/resources/log4j.properties
A magalie-web/src/main/resources/magalie.properties
U magalie-web/src/main/webapp/WEB-INF/web.xml
U magalie-web/pom.xml
U pom.xml
At revision 25
Parsing POMs
ERROR: Failed to parse POMs
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[ERROR] 'dependencies.dependency.version' for org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar is missing. @ line 23, column 17
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:363)
at hudson.maven.MavenEmbedder.buildProjects(MavenEmbedder.java:361)
at hudson.maven.MavenEmbedder.readProjects(MavenEmbedder.java:331)
at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1179)
at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:997)
at hudson.FilePath.act(FilePath.java:865)
at hudson.FilePath.act(FilePath.java:838)
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.parsePoms(MavenModuleSetBuild.java:862)
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:620)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:593)
at hudson.model.Run.execute(Run.java:1567)
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:477)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:237)
1
5
19 Mar '13
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/revision…
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();
}
1
0
18 Mar '13
Author: bleny
Date: 2013-03-18 18:25:24 +0100 (Mon, 18 Mar 2013)
New Revision: 29
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
implements force service
Added:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/Dao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StoredArticleDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/
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/AbstractJpaEntity.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieException.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequiredDriverLicenceException.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/UnavailableArticleException.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.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-services/src/test/resources/fixtures.yaml
trunk/magalie-services/src/test/resources/log4j.properties
Removed:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/AbstractJpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaMagalieUserDao.java
trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/MagalieFixtures.java
trunk/magalie-persistence/src/test/resources/fixtures.yaml
Modified:
trunk/magalie-persistence/pom.xml
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/RequestedArticle.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Site.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StoredArticle.java
trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.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/WithdrawTask.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java
trunk/magalie-web/pom.xml
trunk/magalie-web/src/main/resources/log4j.properties
trunk/pom.xml
Modified: trunk/magalie-persistence/pom.xml
===================================================================
--- trunk/magalie-persistence/pom.xml 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/pom.xml 2013-03-18 17:25:24 UTC (rev 29)
@@ -21,13 +21,6 @@
<dependencies>
<dependency>
- <groupId>com.esotericsoftware.yamlbeans</groupId>
- <artifactId>yamlbeans</artifactId>
- <version>1.06</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
</dependency>
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,63 @@
+package com.franciaflex.magalie;
+
+import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.entity.Site;
+import com.google.common.base.Predicate;
+
+import java.util.Comparator;
+
+public class Sites {
+
+ protected static class SiteRequireDriverLicensePredicate implements Predicate<Site> {
+
+ @Override
+ public boolean apply(Site site) {
+ return site.isDriverLicenseRequired();
+ }
+ }
+
+ protected static class AccessibleSitePredicate implements Predicate<Site> {
+
+ protected MagalieUser magalieUser;
+
+ public AccessibleSitePredicate(MagalieUser magalieUser) {
+ this.magalieUser = magalieUser;
+ }
+
+ @Override
+ public boolean apply(Site site) {
+ boolean isSiteAccessible = magalieUser.isDriverLicenseOwner()
+ || ! site.isDriverLicenseRequired();
+ return isSiteAccessible;
+ }
+
+ }
+
+ protected static class SiteRequiringDriverLicenseFirstComparator implements Comparator<Site> {
+
+ @Override
+ public int compare(Site site1, Site site2) {
+ boolean site1RequireDriverLicense = siteRequireDriverLicensePredicate().apply(site1);
+ boolean site2RequireDriverLicense = siteRequireDriverLicensePredicate().apply(site2);
+ if (site1RequireDriverLicense && ! site2RequireDriverLicense) {
+ return -1;
+ } else if ( ! site1RequireDriverLicense && site2RequireDriverLicense) {
+ return +1;
+ } else {
+ return 0;
+ }
+ }
+ }
+
+ public static Predicate<Site> accessibleSitePredicate(MagalieUser magalieUser) {
+ return new AccessibleSitePredicate(magalieUser);
+ }
+
+ public static Predicate<Site> siteRequireDriverLicensePredicate() {
+ return new SiteRequireDriverLicensePredicate();
+ }
+
+ public static Comparator<Site> siteRequiringDriverLicenseFirstComparator() {
+ return new SiteRequiringDriverLicenseFirstComparator();
+ }
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,122 @@
+package com.franciaflex.magalie;
+
+import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.entity.Site;
+import com.franciaflex.magalie.entity.StoredArticle;
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Ordering;
+
+import java.util.Comparator;
+
+public class StoredArticles {
+
+ protected static class FixedSiteForArticleFirst implements Comparator<StoredArticle> {
+
+ protected Article article;
+
+ public FixedSiteForArticleFirst(Article article) {
+ this.article = article;
+ }
+
+ @Override
+ public int compare(StoredArticle o1, StoredArticle o2) {
+ if (o1.getSite().equals(article.getFixedSite())) {
+ return -1;
+ } else if (o2.getSite().equals(article.getFixedSite())) {
+ return +1;
+ }
+ return 0;
+ }
+
+ }
+
+ protected static class SiteWithHighestQuantityFirst implements Comparator<StoredArticle> {
+
+ @Override
+ public int compare(StoredArticle o1, StoredArticle o2) {
+ return Double.compare(o1.getQuantity(), o2.getQuantity());
+ }
+
+ }
+
+ protected static class AccessibleSiteFirst implements Comparator<StoredArticle> {
+
+ protected Predicate<StoredArticle> articleStoredInAccessibleSitePredicate;
+
+ public AccessibleSiteFirst(MagalieUser magalieUser) {
+ articleStoredInAccessibleSitePredicate =
+ articleStoredInAccessibleSitePredicate(magalieUser);
+ }
+
+ @Override
+ public int compare(StoredArticle o1, StoredArticle o2) {
+ boolean isSite1Accessible = articleStoredInAccessibleSitePredicate.apply(o1);
+ boolean isSite2Accessible = articleStoredInAccessibleSitePredicate.apply(o2);
+ if (isSite1Accessible && ! isSite2Accessible) {
+ return -1;
+ } else if ( ! isSite1Accessible && isSite2Accessible) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+
+ }
+
+ protected static class GetSiteFunction implements Function<StoredArticle, Site> {
+
+ @Override
+ public Site apply(StoredArticle storedArticle) {
+ return storedArticle.getSite();
+ }
+ }
+
+ protected static class ArticleStoredInSitesRequiringDriverLicenseFirstComparator implements Comparator<StoredArticle> {
+
+ @Override
+ public int compare(StoredArticle o1, StoredArticle o2) {
+ return Sites.siteRequiringDriverLicenseFirstComparator().compare(o1.getSite(), o2.getSite());
+ }
+ }
+
+ public static Comparator<StoredArticle> siteWithHighestQuantityFirst() {
+ return new SiteWithHighestQuantityFirst();
+ }
+
+ public static Comparator<StoredArticle> siteWithLowestQuantityFirstComparator() {
+ return Ordering.from(new SiteWithHighestQuantityFirst()).reverse();
+ }
+
+
+ public static Comparator<StoredArticle> accessibleSiteFirstComparator(MagalieUser magalieUser) {
+ return new AccessibleSiteFirst(magalieUser);
+ }
+
+ public static Comparator<StoredArticle> fixedSiteForArticleFirstComparator(Article article) {
+ return new FixedSiteForArticleFirst(article);
+ }
+
+ public static Comparator<StoredArticle> fixedSiteForArticleLastComparator(Article article) {
+ return Ordering.from(new FixedSiteForArticleFirst(article)).reverse();
+ }
+
+ public static Function<StoredArticle, Site> getSiteFunction() {
+ return new GetSiteFunction();
+ }
+
+ public static Predicate<StoredArticle> articleStoredInAccessibleSitePredicate(MagalieUser magalieUser) {
+ Predicate<StoredArticle> predicate = Predicates.compose(
+ Sites.accessibleSitePredicate(magalieUser),
+ getSiteFunction());
+ return predicate;
+ }
+
+ public static Comparator<StoredArticle> articleStoredInSitesRequiringDriverLicenseFirstComparator() {
+ return new ArticleStoredInSitesRequiringDriverLicenseFirstComparator();
+ }
+
+
+}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/AbstractJpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/AbstractJpaDao.java 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/AbstractJpaDao.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -1,37 +0,0 @@
-package com.franciaflex.magalie.dao;
-
-import javax.persistence.EntityManager;
-
-public abstract class AbstractJpaDao<E> implements JpaDao<E> {
-
- protected EntityManager entityManager;
-
- public AbstractJpaDao(EntityManager entityManager) {
- this.entityManager = entityManager;
- }
-
- @Override
- public void persist(E entity) {
- entityManager.persist(entity);
- }
-
- @Override
- public E merge(E entity) {
- return entityManager.merge(entity);
- }
-
- @Override
- public void remove(E entity) {
- entityManager.remove(entity);
- }
-
- @Override
- public boolean contains(E entity) {
- return entityManager.contains(entity);
- }
-
- @Override
- public void commit() {
- entityManager.getTransaction().commit();
- }
-}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/Dao.java (from rev 23, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaDao.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/Dao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/Dao.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,16 @@
+package com.franciaflex.magalie.dao;
+
+import com.franciaflex.magalie.entity.AbstractJpaEntity;
+
+public interface Dao<E extends AbstractJpaEntity> {
+
+ void persist(E entity);
+
+ E merge(E entity);
+
+ void remove(E entity);
+
+ boolean contains(E entity);
+
+ void commit();
+}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaDao.java 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaDao.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -1,14 +0,0 @@
-package com.franciaflex.magalie.dao;
-
-public interface JpaDao<E> {
-
- void persist(E entity);
-
- E merge(E entity);
-
- void remove(E entity);
-
- boolean contains(E entity);
-
- void commit();
-}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaMagalieUserDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaMagalieUserDao.java 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaMagalieUserDao.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -1,12 +0,0 @@
-package com.franciaflex.magalie.dao;
-
-import com.franciaflex.magalie.entity.MagalieUser;
-
-import javax.persistence.EntityManager;
-
-public class JpaMagalieUserDao extends AbstractJpaDao<MagalieUser> implements MagalieUserDao {
-
- public JpaMagalieUserDao(EntityManager entityManager) {
- super(entityManager);
- }
-}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -5,6 +5,6 @@
/**
* @author bleny
*/
-public interface MagalieUserDao extends JpaDao<MagalieUser> {
+public interface MagalieUserDao extends Dao<MagalieUser> {
}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StoredArticleDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StoredArticleDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StoredArticleDao.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,13 @@
+package com.franciaflex.magalie.dao;
+
+import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.entity.StoredArticle;
+
+import java.util.List;
+import java.util.Set;
+
+public interface StoredArticleDao extends Dao<StoredArticle> {
+
+ List<StoredArticle> findAllForArticle(Article article);
+
+}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/AbstractJpaDao.java (from rev 23, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/AbstractJpaDao.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/AbstractJpaDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/AbstractJpaDao.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,40 @@
+package com.franciaflex.magalie.dao.jpa;
+
+import com.franciaflex.magalie.dao.Dao;
+import com.franciaflex.magalie.entity.AbstractJpaEntity;
+
+import javax.persistence.EntityManager;
+
+public abstract class AbstractJpaDao<E extends AbstractJpaEntity> implements Dao<E> {
+
+ protected EntityManager entityManager;
+
+ public AbstractJpaDao(EntityManager entityManager) {
+ this.entityManager = entityManager;
+ }
+
+ @Override
+ public void persist(E entity) {
+ entityManager.persist(entity);
+ }
+
+ @Override
+ public E merge(E entity) {
+ return entityManager.merge(entity);
+ }
+
+ @Override
+ public void remove(E entity) {
+ entityManager.remove(entity);
+ }
+
+ @Override
+ public boolean contains(E entity) {
+ return entityManager.contains(entity);
+ }
+
+ @Override
+ public void commit() {
+ entityManager.getTransaction().commit();
+ }
+}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaMagalieUserDao.java (from rev 23, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/JpaMagalieUserDao.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaMagalieUserDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaMagalieUserDao.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,13 @@
+package com.franciaflex.magalie.dao.jpa;
+
+import com.franciaflex.magalie.dao.MagalieUserDao;
+import com.franciaflex.magalie.entity.MagalieUser;
+
+import javax.persistence.EntityManager;
+
+public class JpaMagalieUserDao extends AbstractJpaDao<MagalieUser> implements MagalieUserDao {
+
+ public JpaMagalieUserDao(EntityManager entityManager) {
+ super(entityManager);
+ }
+}
Added: 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 (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStoredArticleDao.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,24 @@
+package com.franciaflex.magalie.dao.jpa;
+
+import com.franciaflex.magalie.dao.StoredArticleDao;
+import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.entity.StoredArticle;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class JpaStoredArticleDao extends AbstractJpaDao<StoredArticle> implements StoredArticleDao {
+
+ public JpaStoredArticleDao(EntityManager entityManager) {
+ super(entityManager);
+ }
+
+ @Override
+ public List<StoredArticle> findAllForArticle(Article article) {
+ Query query = entityManager.createQuery("from storedArticle sa where sa.article = :article");
+ query.setParameter("article", article);
+ List resultList = query.getResultList();
+ return resultList;
+ }
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/AbstractJpaEntity.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/AbstractJpaEntity.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/AbstractJpaEntity.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,29 @@
+package com.franciaflex.magalie.entity;
+
+import com.google.common.base.Objects;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+public abstract class AbstractJpaEntity {
+
+ public abstract String getId();
+
+ @Override
+ public boolean equals(Object o) {
+ String id = getId();
+ if (this == o) return true;
+ if (!(o instanceof AbstractJpaEntity)) return false;
+ AbstractJpaEntity that = (AbstractJpaEntity) o;
+ if (!id.equals(that.getId())) return false;
+ return Objects.equal(id, that.getId());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(getId());
+ }
+
+ @Override
+ public String toString() {
+ return ToStringBuilder.reflectionToString(this);
+ }
+}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -5,7 +5,7 @@
import javax.persistence.ManyToOne;
@Entity
-public class Article {
+public class Article extends AbstractJpaEntity {
@Id
protected String id;
@@ -21,6 +21,7 @@
protected String unit;
+ @Override
public String getId() {
return id;
}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -4,7 +4,7 @@
import javax.persistence.Id;
@Entity
-public class MagalieUser {
+public class MagalieUser extends AbstractJpaEntity {
@Id
protected String id;
@@ -15,6 +15,7 @@
protected int accreditationLevel;
+ @Override
public String getId() {
return id;
}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/RequestedArticle.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/RequestedArticle.java 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/RequestedArticle.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -6,7 +6,7 @@
import java.util.Date;
@Entity
-public class RequestedArticle {
+public class RequestedArticle extends AbstractJpaEntity {
@Id
protected String id;
@@ -22,6 +22,15 @@
protected double quantity;
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
public String getRequestList() {
return requestList;
}
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-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Site.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -4,7 +4,7 @@
import javax.persistence.Id;
@Entity
-public class Site {
+public class Site extends AbstractJpaEntity {
@Id
protected String id;
@@ -15,6 +15,7 @@
protected int requiredAccreditationLevel;
+ @Override
public String getId() {
return id;
}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -8,7 +8,7 @@
import java.util.Date;
@Entity
-public class SiteError {
+public class SiteError extends AbstractJpaEntity {
@Id
@GeneratedValue
@@ -22,6 +22,7 @@
protected Date reportDate;
+ @Override
public String getId() {
return id;
}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -7,7 +7,7 @@
import java.util.Date;
@Entity
-public class StorageMovement {
+public class StorageMovement extends AbstractJpaEntity {
@Id
@GeneratedValue
@@ -28,6 +28,7 @@
protected Date confirmDate;
+ @Override
public String getId() {
return id;
}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StoredArticle.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StoredArticle.java 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StoredArticle.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -5,19 +5,20 @@
import javax.persistence.ManyToOne;
@Entity
-public class StoredArticle {
+public class StoredArticle extends AbstractJpaEntity {
@Id
protected String id;
@ManyToOne
- protected Site site;
+ protected Article article;
@ManyToOne
- protected Article article;
+ protected Site site;
protected double quantity;
+ @Override
public String getId() {
return id;
}
Deleted: trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/MagalieFixtures.java
===================================================================
--- trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/MagalieFixtures.java 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/MagalieFixtures.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -1,46 +0,0 @@
-package com.franciaflex.magalie;
-
-import com.esotericsoftware.yamlbeans.YamlException;
-import com.esotericsoftware.yamlbeans.YamlReader;
-import com.franciaflex.magalie.entity.Article;
-import com.franciaflex.magalie.entity.MagalieUser;
-import com.franciaflex.magalie.entity.RequestedArticle;
-import com.franciaflex.magalie.entity.Site;
-import com.franciaflex.magalie.entity.StoredArticle;
-import org.apache.commons.io.Charsets;
-import org.apache.commons.io.IOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Map;
-
-public class MagalieFixtures {
-
- private final Map<String,Object> fixtures;
-
- public MagalieFixtures(String fixturesName) {
- String yamlPath = "/" + fixturesName + ".yaml";
- InputStream inputStream = getClass().getResourceAsStream(yamlPath);
- String yaml;
- try {
- yaml = IOUtils.toString(inputStream, Charsets.UTF_8);
- } catch (IOException e) {
- throw new IllegalArgumentException(fixturesName + " is not a valid fixtures set name", e);
- }
- YamlReader reader = new YamlReader(yaml);
- reader.getConfig().setClassTag("article", Article.class);
- reader.getConfig().setClassTag("stored article", StoredArticle.class);
- reader.getConfig().setClassTag("user", MagalieUser.class);
- reader.getConfig().setClassTag("requested article", RequestedArticle.class);
- reader.getConfig().setClassTag("site", Site.class);
- try {
- fixtures = (Map<String, Object>) reader.read();
- } catch (YamlException e) {
- throw new MagalieTechnicalException("unable to read yaml file", e);
- }
- }
-
- public <E> E fixture(String id) throws Exception {
- return (E) fixtures.get(id);
- }
-}
Modified: trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java
===================================================================
--- trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -1,58 +1,48 @@
package com.franciaflex.magalie;
-import com.franciaflex.magalie.entity.Article;
-import com.franciaflex.magalie.entity.Site;
-import org.junit.Ignore;
import org.junit.Test;
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import java.util.List;
-import java.util.Map;
-
public class PersistenceTest {
@Test
- @Ignore
public void testName() throws Exception {
- MagalieFixtures fixtures = new MagalieFixtures("fixtures");
+// MagalieFixtures fixtures = new MagalieFixtures("fixtures");
+//
+// Article article = fixtures.fixture("article2");
+//
+// System.out.println(article);
+//
+// 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<Site> sites = fixtures.fixture("sites");
+//
+// for (Site site : sites) {
+//
+// entityManager.persist(site);
+//
+// }
+//
+// entityManager.getTransaction().commit();
+//
+// entityManager.close();
- Article article = fixtures.fixture("article2");
-
- System.out.println(article);
-
- 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<Site> sites = fixtures.fixture("sites");
-
- for (Site site : sites) {
-
- entityManager.persist(site);
-
- }
-
- entityManager.getTransaction().commit();
-
- entityManager.close();
-
}
}
Deleted: trunk/magalie-persistence/src/test/resources/fixtures.yaml
===================================================================
--- trunk/magalie-persistence/src/test/resources/fixtures.yaml 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-persistence/src/test/resources/fixtures.yaml 2013-03-18 17:25:24 UTC (rev 29)
@@ -1,72 +0,0 @@
-site1:
- &site1 !site
- id: site1
- storeCode: UO1
- locationCode: A1
- requiredAccreditationLevel: 0
-
-site2:
- &site2 !site
- id: site2
- storeCode: UO1
- locationCode: B2
- requiredAccreditationLevel: 9
-
-site3:
- &site3 !site
- id: site3
- storeCode: UO1
- locationCode: C3
- requiredAccreditationLevel: 0
-
-site4:
- &site4 !site
- id: site4
- storeCode: UO1
- locationCode: D4
- requiredAccreditationLevel: 0
-
-site5:
- &site5 !site
- id: site5
- storeCode: UO2
- locationCode: A1
- requiredAccreditationLevel: 0
-
-sites:
- - *site1
- - *site2
- - *site3
- - *site4
- - *site5
-
-article1:
- &article1 !article
- id: article1
- fixedSite: *site1
- code: 111111111
- quantityInKanban: 10
- unit: kg
- description: very big screws
-
-article2:
- &article2 !article
- id: article2
- code: 222222222
- quantityInKanban: 2
- unit: box
- description: little buttons
-
-article3:
- &article3 !article
- id: article3
- fixedSite: *site2
- code: 333333333
- quantityInKanban: 50
- unit: g
- description: magic powder
-
-articles:
- - *article1
- - *article2
- - *article3
Modified: trunk/magalie-services/pom.xml
===================================================================
--- trunk/magalie-services/pom.xml 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-services/pom.xml 2013-03-18 17:25:24 UTC (rev 29)
@@ -21,6 +21,16 @@
<dependencies>
<dependency>
+ <groupId>com.esotericsoftware.yamlbeans</groupId>
+ <artifactId>yamlbeans</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>${project.groupId}</groupId>
<artifactId>magalie-persistence</artifactId>
<version>${project.version}</version>
Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,150 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.StoredArticles;
+import com.franciaflex.magalie.dao.StoredArticleDao;
+import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.entity.StoredArticle;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Ordering;
+import com.google.common.collect.Sets;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.List;
+import java.util.Set;
+
+public class ArticleStorageService implements MagalieService {
+
+ private static final Log log = LogFactory.getLog(ArticleStorageService.class);
+
+ protected MagalieServiceContext serviceContext;
+
+ public void setServiceContext(MagalieServiceContext serviceContext) {
+ this.serviceContext = serviceContext;
+ }
+
+ public WithdrawTask withdrawArticle(MagalieUser magalieUser, Article article, double requestedQuantity) throws UnavailableArticleException, RequiredDriverLicenceException {
+
+ Preconditions.checkNotNull(magalieUser);
+
+ Preconditions.checkNotNull(article);
+
+ Preconditions.checkArgument(requestedQuantity > 0.);
+
+ double availableQuantity = getAvailableQuantity(article);
+ UnavailableArticleException.throwIfRequestMoreThanAvailable(requestedQuantity, availableQuantity, article);
+
+ double accessibleQuantity = getAccessibleQuantity(article, magalieUser);
+ RequiredDriverLicenceException.throwIfRequestMoreThanAccessible(requestedQuantity, accessibleQuantity, magalieUser, article);
+
+ if (log.isInfoEnabled()) {
+ log.info("will process article request"
+ + ": requested = " + requestedQuantity
+ + ", accessible " + accessibleQuantity
+ + ", available " + availableQuantity);
+ }
+
+ List<StoredArticle> storedArticles = getStoredArticles(article);
+
+ Ordering<StoredArticle> storedArticlesOrdering =
+ Ordering.compound(
+ Lists.newArrayList(
+ StoredArticles.fixedSiteForArticleLastComparator(article),
+ StoredArticles.siteWithLowestQuantityFirstComparator(),
+ StoredArticles.articleStoredInSitesRequiringDriverLicenseFirstComparator()
+ )
+ );
+
+ Set<StoredArticle> sortedStoredArticles =
+ Sets.newTreeSet(storedArticlesOrdering);
+
+ Iterables.addAll(
+ sortedStoredArticles,
+ Iterables.filter(
+ storedArticles,
+ StoredArticles.articleStoredInAccessibleSitePredicate(magalieUser)
+ )
+ );
+
+ WithdrawTask withdrawTask = new WithdrawTask(article, requestedQuantity);
+
+ double quantity = 0;
+
+ for (StoredArticle storedArticle : sortedStoredArticles) {
+
+ double quantityLeft = requestedQuantity - quantity;
+
+ double quantityInSite = storedArticle.getQuantity();
+
+ double quantityWithdrawn = Math.min(quantityLeft, quantityInSite);
+
+ if (quantityWithdrawn > 0.) {
+
+ quantity += quantityWithdrawn;
+
+ // TODO brendan 18/03/13 enregistrer le mouvement
+ // quantityInSite -= quantityWithdrawn;
+
+ }
+
+ WithdrawArticleFromSiteTask withdrawArticleFromSiteTask = new WithdrawArticleFromSiteTask(storedArticle, quantityWithdrawn);
+
+ withdrawTask.addWithdrawArticleFromSiteTask(withdrawArticleFromSiteTask);
+
+ }
+
+ return withdrawTask;
+
+ }
+
+ protected List<StoredArticle> getStoredArticles(Article article) {
+
+ StoredArticleDao storedArticleDao = serviceContext.getStoredArticleDao();
+
+ // TODO brendan 18/03/13 remove storage movement, remove sites in error
+
+ return storedArticleDao.findAllForArticle(article);
+
+ }
+
+ protected double getAvailableQuantity(Article article) {
+
+ List<StoredArticle> storedArticles = getStoredArticles(article);
+
+ double availableQuantity = 0.;
+
+ for (StoredArticle storedArticle : storedArticles) {
+
+ availableQuantity += storedArticle.getQuantity();
+
+ }
+
+ return availableQuantity;
+
+ }
+
+ protected double getAccessibleQuantity(Article article, MagalieUser magalieUser) {
+
+ List<StoredArticle> storedArticles = getStoredArticles(article);
+
+ Iterable<StoredArticle> accessibleStoredArticles =
+ Iterables.filter(
+ storedArticles,
+ StoredArticles.articleStoredInAccessibleSitePredicate(magalieUser)
+ );
+
+ double accessibleQuantity = 0.;
+
+ for (StoredArticle storedArticle : accessibleStoredArticles) {
+
+ accessibleQuantity += storedArticle.getQuantity();
+
+ }
+
+ return accessibleQuantity;
+
+ }
+}
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-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -1,8 +1,10 @@
package com.franciaflex.magalie.services;
import com.franciaflex.magalie.MagalieTechnicalException;
-import com.franciaflex.magalie.dao.JpaMagalieUserDao;
+import com.franciaflex.magalie.dao.StoredArticleDao;
+import com.franciaflex.magalie.dao.jpa.JpaMagalieUserDao;
import com.franciaflex.magalie.dao.MagalieUserDao;
+import com.franciaflex.magalie.dao.jpa.JpaStoredArticleDao;
import javax.persistence.EntityManager;
import java.lang.reflect.Constructor;
@@ -29,7 +31,7 @@
} catch (NoSuchMethodException e) {
- throw new MagalieTechnicalException("all services must provide a non-argument contructor", e);
+ throw new MagalieTechnicalException("all services must provide a non-argument constructor", e);
} catch (InvocationTargetException e) {
@@ -57,4 +59,11 @@
return new JpaMagalieUserDao(entityManager);
}
+
+ @Override
+ public StoredArticleDao getStoredArticleDao() {
+
+ return new JpaStoredArticleDao(entityManager);
+
+ }
}
Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieException.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieException.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieException.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,20 @@
+package com.franciaflex.magalie.services;
+
+public class MagalieException extends Exception {
+
+ public MagalieException() {
+ }
+
+ public MagalieException(String message) {
+ super(message);
+ }
+
+ public MagalieException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public MagalieException(Throwable cause) {
+ super(cause);
+ }
+
+}
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-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -24,6 +24,7 @@
*/
import com.franciaflex.magalie.dao.MagalieUserDao;
+import com.franciaflex.magalie.dao.StoredArticleDao;
/**
* @author bleny
@@ -34,4 +35,5 @@
MagalieUserDao getMagalieUserDao();
+ StoredArticleDao getStoredArticleDao();
}
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-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -23,12 +23,6 @@
* #L%
*/
-import com.franciaflex.magalie.dao.MagalieUserDao;
-import com.franciaflex.magalie.entity.MagalieUser;
-import com.google.common.collect.ImmutableSet;
-
-import java.util.Set;
-
public class RequestedItemService implements MagalieService {
protected MagalieServiceContext serviceContext;
@@ -39,25 +33,30 @@
public WithdrawTask getWithdrawTask() {
- MagalieUserDao magalieUserDao = serviceContext.getMagalieUserDao();
+ ArticleStorageService articleStorageService = serviceContext.newService(ArticleStorageService.class);
- magalieUserDao.persist(new MagalieUser());
+ // articleStorageService.withdrawArticle();
- 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)
- );
+// 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;
- WithdrawTask withdrawTask = new WithdrawTask();
-
- withdrawTask.setQuantity(50);
- withdrawTask.setUnit("kg");
- withdrawTask.setSites(sites);
-
- return withdrawTask;
-
+ throw new UnsupportedOperationException();
}
}
Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequiredDriverLicenceException.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequiredDriverLicenceException.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequiredDriverLicenceException.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,58 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.entity.MagalieUser;
+
+public class RequiredDriverLicenceException extends MagalieException {
+
+ protected Article article;
+
+ protected MagalieUser magalieUser;
+
+ protected double requestedQuantity;
+
+ protected double accessibleQuantity;
+
+ protected RequiredDriverLicenceException(String message) {
+ super(message);
+ }
+
+ public static void throwIfRequestMoreThanAccessible(double requestedQuantity, double accessibleQuantity, MagalieUser magalieUser, Article article) throws RequiredDriverLicenceException {
+
+ if (requestedQuantity > accessibleQuantity) {
+
+ String message = "requested article " + article
+ + " can not be retrieved since user " + magalieUser
+ + " has no driver license";
+
+ RequiredDriverLicenceException newException = new RequiredDriverLicenceException(message);
+
+ newException.article = article;
+
+ newException.magalieUser = magalieUser;
+
+ newException.requestedQuantity = requestedQuantity;
+
+ newException.accessibleQuantity = accessibleQuantity;
+
+ throw newException;
+
+ }
+ }
+
+ public Article getArticle() {
+ return article;
+ }
+
+ public MagalieUser getMagalieUser() {
+ return magalieUser;
+ }
+
+ public double getRequestedQuantity() {
+ return requestedQuantity;
+ }
+
+ public double getAccessibleQuantity() {
+ return accessibleQuantity;
+ }
+}
Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/UnavailableArticleException.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/UnavailableArticleException.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/UnavailableArticleException.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,49 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.entity.Article;
+
+public class UnavailableArticleException extends MagalieException {
+
+ protected Article article;
+
+ protected double availableQuantity;
+
+ protected double requestedQuantity;
+
+ protected UnavailableArticleException(String message) {
+ super(message);
+ }
+
+ public static void throwIfRequestMoreThanAvailable(double requestedQuantity, double availableQuantity, Article article) throws UnavailableArticleException {
+
+ if (requestedQuantity > availableQuantity) {
+
+ String message = "requested article " + article
+ + " is not available at expected quantity: requested = " + requestedQuantity
+ + " available = " + availableQuantity;
+
+ UnavailableArticleException newException = new UnavailableArticleException(message);
+
+ newException.article = article;
+
+ newException.availableQuantity = availableQuantity;
+
+ newException.requestedQuantity = requestedQuantity;
+
+ throw newException;
+
+ }
+ }
+
+ public Article getArticle() {
+ return article;
+ }
+
+ public double getAvailableQuantity() {
+ return availableQuantity;
+ }
+
+ public double getRequestedQuantity() {
+ return requestedQuantity;
+ }
+}
Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,30 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.entity.*;
+import com.franciaflex.magalie.entity.Site;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+public class WithdrawArticleFromSiteTask {
+
+ protected StoredArticle storedArticle;
+
+ protected double quantity;
+
+ public WithdrawArticleFromSiteTask(StoredArticle storedArticle, double quantity) {
+ this.storedArticle = storedArticle;
+ this.quantity = quantity;
+ }
+
+ public double getQuantity() {
+ return quantity;
+ }
+
+ public Site getSite() {
+ return storedArticle.getSite();
+ }
+
+ @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-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawTask.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -23,32 +23,41 @@
* #L%
*/
+import com.franciaflex.magalie.entity.Article;
+import com.google.common.collect.Sets;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
import java.util.Set;
public class WithdrawTask {
- protected Set<Site> sites;
+ protected Set<WithdrawArticleFromSiteTask> withdrawArticleFromSiteTasks;
- protected String unit;
+ protected Article article;
protected double quantity;
- public Set<Site> getSites() {
- return sites;
+ public WithdrawTask(Article article, double quantity) {
+ this.article = article;
+ this.quantity = quantity;
}
- public void setSites(Set<Site> sites) {
- this.sites = sites;
+ public Set<WithdrawArticleFromSiteTask> getWithdrawArticleFromSiteTasks() {
+ return withdrawArticleFromSiteTasks;
}
- public String getUnit() {
- return unit;
+ public void setWithdrawArticleFromSiteTasks(Set<WithdrawArticleFromSiteTask> withdrawArticleFromSiteTasks) {
+ this.withdrawArticleFromSiteTasks = withdrawArticleFromSiteTasks;
}
- public void setUnit(String unit) {
- this.unit = unit;
+ public Article getArticle() {
+ return article;
}
+ public void setArticle(Article article) {
+ this.article = article;
+ }
+
public double getQuantity() {
return quantity;
}
@@ -56,4 +65,16 @@
public void setQuantity(double quantity) {
this.quantity = quantity;
}
+
+ public void addWithdrawArticleFromSiteTask(WithdrawArticleFromSiteTask withdrawArticleFromSiteTask) {
+ if (withdrawArticleFromSiteTasks == null) {
+ withdrawArticleFromSiteTasks = Sets.newLinkedHashSet();
+ }
+ withdrawArticleFromSiteTasks.add(withdrawArticleFromSiteTask);
+ }
+
+ @Override
+ public String toString() {
+ return ToStringBuilder.reflectionToString(this);
+ }
}
Copied: trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java (from rev 28, trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/MagalieFixtures.java)
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java (rev 0)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,46 @@
+package com.franciaflex.magalie;
+
+import com.esotericsoftware.yamlbeans.YamlException;
+import com.esotericsoftware.yamlbeans.YamlReader;
+import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.entity.RequestedArticle;
+import com.franciaflex.magalie.entity.Site;
+import com.franciaflex.magalie.entity.StoredArticle;
+import org.apache.commons.io.Charsets;
+import org.apache.commons.io.IOUtils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Map;
+
+public class MagalieFixtures {
+
+ protected Map<String, Object> fixtures;
+
+ public MagalieFixtures(String fixturesName) {
+ String yamlPath = "/" + fixturesName + ".yaml";
+ InputStream inputStream = getClass().getResourceAsStream(yamlPath);
+ String yaml;
+ try {
+ yaml = IOUtils.toString(inputStream, Charsets.UTF_8);
+ } catch (IOException e) {
+ throw new IllegalArgumentException(fixturesName + " is not a valid fixtures set name", e);
+ }
+ YamlReader reader = new YamlReader(yaml);
+ reader.getConfig().setClassTag("article", Article.class);
+ reader.getConfig().setClassTag("stored-article", StoredArticle.class);
+ reader.getConfig().setClassTag("user", MagalieUser.class);
+ reader.getConfig().setClassTag("requested-article", RequestedArticle.class);
+ reader.getConfig().setClassTag("site", Site.class);
+ try {
+ fixtures = (Map<String, Object>) reader.read();
+ } catch (YamlException e) {
+ throw new MagalieTechnicalException("unable to read yaml file", e);
+ }
+ }
+
+ public <E> E fixture(String id) {
+ return (E) fixtures.get(id);
+ }
+}
Added: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java (rev 0)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,158 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.MagalieFixtures;
+import com.franciaflex.magalie.dao.MagalieUserDao;
+import com.franciaflex.magalie.dao.StoredArticleDao;
+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 org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import java.util.List;
+
+public class ArticleStorageServiceTest {
+
+ private static final Log log = LogFactory.getLog(ArticleStorageServiceTest.class);
+
+ protected static final double DELTA = 0.0001;
+
+ protected ArticleStorageService service;
+
+ protected MagalieFixtures fixtures;
+
+ @Before
+ public void setUp() throws Exception {
+
+ service = new ArticleStorageService();
+
+ fixtures = new MagalieFixtures("fixtures");
+
+ service.setServiceContext(new MagalieServiceContext() {
+
+ @Override
+ public <E extends MagalieService> E newService(Class<E> serviceClass) {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public MagalieUserDao getMagalieUserDao() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public StoredArticleDao getStoredArticleDao() {
+ StoredArticleDao storedArticleDaoMock = Mockito.mock(StoredArticleDao.class);
+ Mockito.when(storedArticleDaoMock.findAllForArticle(Mockito.<Article>any())).thenReturn(
+ fixtures.<List<StoredArticle>>fixture("storedArticlesForArticle1")
+ );
+ return storedArticleDaoMock;
+ }
+ });
+ }
+
+ @Test
+ public void testThrowUnavailableArticle() throws Exception {
+
+ MagalieUser basile = fixtures.fixture("basile");
+ Article article = fixtures.fixture("article1");
+ WithdrawTask withdrawTask;
+
+ try {
+ withdrawTask = service.withdrawArticle(basile, article, 100.);
+ if (log.isDebugEnabled()) {
+ log.debug("withdrawTask = " + withdrawTask);
+ }
+ Assert.fail();
+ } catch (UnavailableArticleException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("exception raised = " + e);
+ }
+ Assert.assertEquals(70., e.getAvailableQuantity(), DELTA);
+ }
+ }
+
+ @Test
+ public void testThrowRequiredDriverLicenceException() throws Exception {
+
+ MagalieUser basile = fixtures.fixture("basile");
+ Article article = fixtures.fixture("article1");
+ WithdrawTask withdrawTask;
+
+ try {
+ withdrawTask = service.withdrawArticle(basile, article, 70.);
+ if (log.isDebugEnabled()) {
+ log.debug("withdrawTask = " + withdrawTask);
+ }
+ Assert.fail();
+ } catch (RequiredDriverLicenceException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("exception raised = " + e);
+ }
+ Assert.assertEquals(50., e.getAccessibleQuantity(), DELTA);
+ }
+ }
+
+ @Test
+ public void testWithdrawArticleWithoutDriverLicense() throws Exception {
+
+ MagalieUser basile = fixtures.fixture("basile");
+ Article article = fixtures.fixture("article1");
+ WithdrawTask withdrawTask = null;
+
+ try {
+ withdrawTask = service.withdrawArticle(basile, article, 50.);
+ if (log.isDebugEnabled()) {
+ log.debug("withdrawTask = " + withdrawTask);
+ }
+ } catch (RequiredDriverLicenceException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("exception raised = " + e);
+ }
+ Assert.fail();
+ } catch (UnavailableArticleException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("exception raised = " + e);
+ }
+ Assert.fail();
+ }
+
+ Assert.assertEquals(1, withdrawTask.getWithdrawArticleFromSiteTasks().size());
+ }
+
+ @Test
+ public void testWithdrawArticleWithDriverLicense() throws Exception {
+
+ MagalieUser alexandre = fixtures.fixture("alexandre");
+ Article article = fixtures.fixture("article1");
+ WithdrawTask withdrawTask = null;
+
+ try {
+ withdrawTask = service.withdrawArticle(alexandre, article, 50.);
+ if (log.isDebugEnabled()) {
+ log.debug("withdrawTask = " + withdrawTask);
+ }
+ } catch (RequiredDriverLicenceException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("exception raised = " + e);
+ }
+ Assert.fail();
+ } catch (UnavailableArticleException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("exception raised = " + e);
+ }
+ Assert.fail();
+ }
+
+ Assert.assertEquals(2, withdrawTask.getWithdrawArticleFromSiteTasks().size());
+ WithdrawArticleFromSiteTask site1 = Iterables.get(withdrawTask.getWithdrawArticleFromSiteTasks(), 0, null);
+ Assert.assertEquals(20., site1.getQuantity(), DELTA);
+ WithdrawArticleFromSiteTask site2 = Iterables.get(withdrawTask.getWithdrawArticleFromSiteTasks(), 1, null);
+ Assert.assertEquals(30., site2.getQuantity(), DELTA);
+ }
+}
Modified: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java 2013-03-18 17:25:24 UTC (rev 29)
@@ -1,10 +1,29 @@
package com.franciaflex.magalie.services;
+import com.google.common.collect.Sets;
import org.junit.Test;
+import java.util.Comparator;
+import java.util.Set;
+
public class RequestedItemServiceTest {
@Test
public void testGetWithdrawTask() throws Exception {
+
+ Set<Double> doubles = Sets.newTreeSet(new Comparator<Double>() {
+ @Override
+ public int compare(Double o1, Double o2) {
+ return Double.compare(o1, o2);
+ }
+ });
+
+ doubles.add(3.);
+ doubles.add(2.);
+ doubles.add(4.);
+ doubles.add(1.);
+ doubles.add(7.);
+
+ System.out.println(doubles);
}
}
Copied: trunk/magalie-services/src/test/resources/fixtures.yaml (from rev 28, trunk/magalie-persistence/src/test/resources/fixtures.yaml)
===================================================================
--- trunk/magalie-services/src/test/resources/fixtures.yaml (rev 0)
+++ trunk/magalie-services/src/test/resources/fixtures.yaml 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,144 @@
+alexandre:
+ &alexandre !user
+ id: magalie_user_alexandre
+ login: ale
+ name: Alexandre
+ accreditationLevel: 9
+
+basile:
+ &basile !user
+ id: magalie_user_basile
+ login: bas
+ name: Basile
+ accreditationLevel: 0
+
+cathy:
+ &cathy !user
+ id: magalie_user_cathy
+ login: cat
+ name: Cathy
+ accreditationLevel: 9
+
+david:
+ &david !user
+ id: magalie_user_david
+ login: dav
+ name: David
+ accreditationLevel: 0
+
+users:
+ - *alexandre
+ - *basile
+ - *cathy
+ - *david
+
+site1:
+ &site1 !site
+ id: site1
+ storeCode: UO1
+ locationCode: A1
+ requiredAccreditationLevel: 0
+
+site2:
+ &site2 !site
+ id: site2
+ storeCode: UO1
+ locationCode: B2
+ requiredAccreditationLevel: 9
+
+site3:
+ &site3 !site
+ id: site3
+ storeCode: UO1
+ locationCode: C3
+ requiredAccreditationLevel: 0
+
+site4:
+ &site4 !site
+ id: site4
+ storeCode: UO1
+ locationCode: D4
+ requiredAccreditationLevel: 9
+
+site5:
+ &site5 !site
+ id: site5
+ storeCode: UO2
+ locationCode: A1
+ requiredAccreditationLevel: 0
+
+sites:
+ - *site1
+ - *site2
+ - *site3
+ - *site4
+ - *site5
+
+article1:
+ &article1 !article
+ id: article1
+ fixedSite: *site1
+ code: 111111111
+ quantityInKanban: 10
+ unit: kg
+ description: very big screws
+
+article2:
+ &article2 !article
+ id: article2
+ code: 222222222
+ quantityInKanban: 2
+ unit: box
+ description: little buttons
+
+article3:
+ &article3 !article
+ id: article3
+ fixedSite: *site2
+ code: 333333333
+ quantityInKanban: 50
+ unit: g
+ description: magic powder
+
+articles:
+ - *article1
+ - *article2
+ - *article3
+
+storedArticle1:
+ &storedArticle1 !stored-article
+ id: storedArticle1
+ article: *article1
+ site: *site1
+ quantity: 50
+
+storedArticle2:
+ &storedArticle2 !stored-article
+ id: storedArticle2
+ article: *article1
+ site: *site2
+ quantity: 20
+
+storedArticle3:
+ &storedArticle3 !stored-article
+ id: storedArticle3
+ article: *article2
+ site: *site1
+ quantity: 10
+
+storedArticle4:
+ &storedArticle4 !stored-article
+ id: storedArticle4
+ article: *article3
+ site: *site4
+ quantity: 1000
+
+storedArticles:
+ - *storedArticle1
+ - *storedArticle2
+ - *storedArticle3
+ - *storedArticle4
+
+storedArticlesForArticle1:
+ - *storedArticle1
+ - *storedArticle2
Copied: trunk/magalie-services/src/test/resources/log4j.properties (from rev 23, trunk/magalie-web/src/main/resources/log4j.properties)
===================================================================
--- trunk/magalie-services/src/test/resources/log4j.properties (rev 0)
+++ trunk/magalie-services/src/test/resources/log4j.properties 2013-03-18 17:25:24 UTC (rev 29)
@@ -0,0 +1,8 @@
+log4j.rootCategory=ERROR, console
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d [%p] %c %m%n
+
+log4j.logger.com.franciaflex.magalie=TRACE
+
Modified: trunk/magalie-web/pom.xml
===================================================================
--- trunk/magalie-web/pom.xml 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-web/pom.xml 2013-03-18 17:25:24 UTC (rev 29)
@@ -32,6 +32,12 @@
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>magalie-persistence</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>magalie-services</artifactId>
<version>${project.version}</version>
</dependency>
Modified: trunk/magalie-web/src/main/resources/log4j.properties
===================================================================
--- trunk/magalie-web/src/main/resources/log4j.properties 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/magalie-web/src/main/resources/log4j.properties 2013-03-18 17:25:24 UTC (rev 29)
@@ -26,7 +26,7 @@
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%p] %c %m%n
-# FileAppender : need to have pollen.log.dir in system properties at application startup
+# FileAppender : need to have magalie.log.dir in system properties at application startup
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${magalie.log.dir}/magalie.log
log4j.appender.file.MaxFileSize=10MB
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-03-15 17:34:28 UTC (rev 28)
+++ trunk/pom.xml 2013-03-18 17:25:24 UTC (rev 29)
@@ -262,6 +262,13 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.esotericsoftware.yamlbeans</groupId>
+ <artifactId>yamlbeans</artifactId>
+ <version>1.06</version>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
</dependencyManagement>
1
0
r28 - in trunk/magalie-persistence: . src/main/java/com/franciaflex/magalie/entity src/main/resources src/test/java/com/franciaflex/magalie src/test/resources
by bleny@users.forge.codelutin.com 15 Mar '13
by bleny@users.forge.codelutin.com 15 Mar '13
15 Mar '13
Author: bleny
Date: 2013-03-15 18:34:28 +0100 (Fri, 15 Mar 2013)
New Revision: 28
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
introduce fixtures in Yaml
Added:
trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/MagalieFixtures.java
trunk/magalie-persistence/src/test/resources/fixtures.yaml
Modified:
trunk/magalie-persistence/pom.xml
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java
trunk/magalie-persistence/src/main/resources/magalie.properties
trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java
Modified: trunk/magalie-persistence/pom.xml
===================================================================
--- trunk/magalie-persistence/pom.xml 2013-03-15 15:06:29 UTC (rev 27)
+++ trunk/magalie-persistence/pom.xml 2013-03-15 17:34:28 UTC (rev 28)
@@ -21,6 +21,13 @@
<dependencies>
<dependency>
+ <groupId>com.esotericsoftware.yamlbeans</groupId>
+ <artifactId>yamlbeans</artifactId>
+ <version>1.06</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
</dependency>
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java 2013-03-15 15:06:29 UTC (rev 27)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java 2013-03-15 17:34:28 UTC (rev 28)
@@ -13,10 +13,14 @@
@ManyToOne
protected Site fixedSite;
+ protected String description;
+
protected String code;
- protected String quantityInKanban;
+ protected double quantityInKanban;
+ protected String unit;
+
public String getId() {
return id;
}
@@ -41,11 +45,27 @@
this.code = code;
}
- public String getQuantityInKanban() {
+ public double getQuantityInKanban() {
return quantityInKanban;
}
- public void setQuantityInKanban(String quantityInKanban) {
+ public void setQuantityInKanban(double quantityInKanban) {
this.quantityInKanban = quantityInKanban;
}
+
+ public String getUnit() {
+ return unit;
+ }
+
+ public void setUnit(String unit) {
+ this.unit = unit;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java 2013-03-15 15:06:29 UTC (rev 27)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java 2013-03-15 17:34:28 UTC (rev 28)
@@ -1,6 +1,7 @@
package com.franciaflex.magalie.entity;
import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
@@ -10,6 +11,7 @@
public class SiteError {
@Id
+ @GeneratedValue
protected String id;
@OneToOne
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java 2013-03-15 15:06:29 UTC (rev 27)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java 2013-03-15 17:34:28 UTC (rev 28)
@@ -1,6 +1,7 @@
package com.franciaflex.magalie.entity;
import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import java.util.Date;
@@ -9,6 +10,7 @@
public class StorageMovement {
@Id
+ @GeneratedValue
protected String id;
@ManyToOne
Modified: trunk/magalie-persistence/src/main/resources/magalie.properties
===================================================================
--- trunk/magalie-persistence/src/main/resources/magalie.properties 2013-03-15 15:06:29 UTC (rev 27)
+++ trunk/magalie-persistence/src/main/resources/magalie.properties 2013-03-15 17:34:28 UTC (rev 28)
@@ -7,3 +7,4 @@
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.transaction.flush_before_completion=true
+hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
Added: trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/MagalieFixtures.java
===================================================================
--- trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/MagalieFixtures.java (rev 0)
+++ trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/MagalieFixtures.java 2013-03-15 17:34:28 UTC (rev 28)
@@ -0,0 +1,46 @@
+package com.franciaflex.magalie;
+
+import com.esotericsoftware.yamlbeans.YamlException;
+import com.esotericsoftware.yamlbeans.YamlReader;
+import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.entity.RequestedArticle;
+import com.franciaflex.magalie.entity.Site;
+import com.franciaflex.magalie.entity.StoredArticle;
+import org.apache.commons.io.Charsets;
+import org.apache.commons.io.IOUtils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Map;
+
+public class MagalieFixtures {
+
+ private final Map<String,Object> fixtures;
+
+ public MagalieFixtures(String fixturesName) {
+ String yamlPath = "/" + fixturesName + ".yaml";
+ InputStream inputStream = getClass().getResourceAsStream(yamlPath);
+ String yaml;
+ try {
+ yaml = IOUtils.toString(inputStream, Charsets.UTF_8);
+ } catch (IOException e) {
+ throw new IllegalArgumentException(fixturesName + " is not a valid fixtures set name", e);
+ }
+ YamlReader reader = new YamlReader(yaml);
+ reader.getConfig().setClassTag("article", Article.class);
+ reader.getConfig().setClassTag("stored article", StoredArticle.class);
+ reader.getConfig().setClassTag("user", MagalieUser.class);
+ reader.getConfig().setClassTag("requested article", RequestedArticle.class);
+ reader.getConfig().setClassTag("site", Site.class);
+ try {
+ fixtures = (Map<String, Object>) reader.read();
+ } catch (YamlException e) {
+ throw new MagalieTechnicalException("unable to read yaml file", e);
+ }
+ }
+
+ public <E> E fixture(String id) throws Exception {
+ return (E) fixtures.get(id);
+ }
+}
Modified: trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java
===================================================================
--- trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java 2013-03-15 15:06:29 UTC (rev 27)
+++ trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java 2013-03-15 17:34:28 UTC (rev 28)
@@ -1,18 +1,14 @@
package com.franciaflex.magalie;
import com.franciaflex.magalie.entity.Article;
-import com.franciaflex.magalie.entity.MagalieUser;
-import com.franciaflex.magalie.entity.RequestedArticle;
import com.franciaflex.magalie.entity.Site;
-import com.franciaflex.magalie.entity.SiteError;
-import com.franciaflex.magalie.entity.StorageMovement;
-import com.franciaflex.magalie.entity.StoredArticle;
import org.junit.Ignore;
import org.junit.Test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
+import java.util.List;
import java.util.Map;
public class PersistenceTest {
@@ -21,6 +17,12 @@
@Ignore
public void testName() throws Exception {
+ MagalieFixtures fixtures = new MagalieFixtures("fixtures");
+
+ Article article = fixtures.fixture("article2");
+
+ System.out.println(article);
+
MagalieApplicationConfig applicationConfig = new MagalieApplicationConfig();
Map<String, Object> jpaParameters = applicationConfig.getJpaParameters();
@@ -31,14 +33,23 @@
entityManager.getTransaction().begin();
- entityManager.persist(new MagalieUser());
- entityManager.persist(new Article());
- entityManager.persist(new RequestedArticle());
- entityManager.persist(new Site());
- entityManager.persist(new SiteError());
- entityManager.persist(new StorageMovement());
- entityManager.persist(new StoredArticle());
+// 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<Site> sites = fixtures.fixture("sites");
+
+ for (Site site : sites) {
+
+ entityManager.persist(site);
+
+ }
+
entityManager.getTransaction().commit();
entityManager.close();
Added: trunk/magalie-persistence/src/test/resources/fixtures.yaml
===================================================================
--- trunk/magalie-persistence/src/test/resources/fixtures.yaml (rev 0)
+++ trunk/magalie-persistence/src/test/resources/fixtures.yaml 2013-03-15 17:34:28 UTC (rev 28)
@@ -0,0 +1,72 @@
+site1:
+ &site1 !site
+ id: site1
+ storeCode: UO1
+ locationCode: A1
+ requiredAccreditationLevel: 0
+
+site2:
+ &site2 !site
+ id: site2
+ storeCode: UO1
+ locationCode: B2
+ requiredAccreditationLevel: 9
+
+site3:
+ &site3 !site
+ id: site3
+ storeCode: UO1
+ locationCode: C3
+ requiredAccreditationLevel: 0
+
+site4:
+ &site4 !site
+ id: site4
+ storeCode: UO1
+ locationCode: D4
+ requiredAccreditationLevel: 0
+
+site5:
+ &site5 !site
+ id: site5
+ storeCode: UO2
+ locationCode: A1
+ requiredAccreditationLevel: 0
+
+sites:
+ - *site1
+ - *site2
+ - *site3
+ - *site4
+ - *site5
+
+article1:
+ &article1 !article
+ id: article1
+ fixedSite: *site1
+ code: 111111111
+ quantityInKanban: 10
+ unit: kg
+ description: very big screws
+
+article2:
+ &article2 !article
+ id: article2
+ code: 222222222
+ quantityInKanban: 2
+ unit: box
+ description: little buttons
+
+article3:
+ &article3 !article
+ id: article3
+ fixedSite: *site2
+ code: 333333333
+ quantityInKanban: 50
+ unit: g
+ description: magic powder
+
+articles:
+ - *article1
+ - *article2
+ - *article3
1
0
r27 - in trunk/magalie-persistence/src: main/java/com/franciaflex/magalie/entity test/java/com/franciaflex/magalie
by bleny@users.forge.codelutin.com 15 Mar '13
by bleny@users.forge.codelutin.com 15 Mar '13
15 Mar '13
Author: bleny
Date: 2013-03-15 16:06:29 +0100 (Fri, 15 Mar 2013)
New Revision: 27
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
create entities model
Added:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/RequestedArticle.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Site.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StoredArticle.java
Modified:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java
trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java 2013-03-15 15:06:29 UTC (rev 27)
@@ -0,0 +1,51 @@
+package com.franciaflex.magalie.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
+@Entity
+public class Article {
+
+ @Id
+ protected String id;
+
+ @ManyToOne
+ protected Site fixedSite;
+
+ protected String code;
+
+ protected String quantityInKanban;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public Site getFixedSite() {
+ return fixedSite;
+ }
+
+ public void setFixedSite(Site fixedSite) {
+ this.fixedSite = fixedSite;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getQuantityInKanban() {
+ return quantityInKanban;
+ }
+
+ public void setQuantityInKanban(String quantityInKanban) {
+ this.quantityInKanban = quantityInKanban;
+ }
+}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java 2013-03-15 12:34:08 UTC (rev 26)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java 2013-03-15 15:06:29 UTC (rev 27)
@@ -7,13 +7,47 @@
public class MagalieUser {
@Id
- protected Long id = 1L;
+ protected String id;
- public Long getId() {
+ protected String login;
+
+ protected String name;
+
+ protected int accreditationLevel;
+
+ public String getId() {
return id;
}
- public void setId(Long id) {
+ public void setId(String id) {
this.id = id;
}
+
+ public String getLogin() {
+ return login;
+ }
+
+ public void setLogin(String login) {
+ this.login = login;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getAccreditationLevel() {
+ return accreditationLevel;
+ }
+
+ public void setAccreditationLevel(int accreditationLevel) {
+ this.accreditationLevel = accreditationLevel;
+ }
+
+ public boolean isDriverLicenseOwner() {
+ return accreditationLevel == 9;
+ }
}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/RequestedArticle.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/RequestedArticle.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/RequestedArticle.java 2013-03-15 15:06:29 UTC (rev 27)
@@ -0,0 +1,64 @@
+package com.franciaflex.magalie.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import java.util.Date;
+
+@Entity
+public class RequestedArticle {
+
+ @Id
+ protected String id;
+
+ @ManyToOne
+ protected Article article;
+
+ protected String requestList;
+
+ protected Date requestDate;
+
+ protected boolean urgent;
+
+ protected double quantity;
+
+ public String getRequestList() {
+ return requestList;
+ }
+
+ public void setRequestList(String requestList) {
+ this.requestList = requestList;
+ }
+
+ public Date getRequestDate() {
+ return requestDate;
+ }
+
+ public void setRequestDate(Date requestDate) {
+ this.requestDate = requestDate;
+ }
+
+ public boolean isUrgent() {
+ return urgent;
+ }
+
+ public void setUrgent(boolean urgent) {
+ this.urgent = urgent;
+ }
+
+ public Article getArticle() {
+ return article;
+ }
+
+ public void setArticle(Article article) {
+ this.article = article;
+ }
+
+ public double getQuantity() {
+ return quantity;
+ }
+
+ public void setQuantity(double quantity) {
+ this.quantity = quantity;
+ }
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Site.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Site.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Site.java 2013-03-15 15:06:29 UTC (rev 27)
@@ -0,0 +1,53 @@
+package com.franciaflex.magalie.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+@Entity
+public class Site {
+
+ @Id
+ protected String id;
+
+ protected String storeCode;
+
+ protected String locationCode;
+
+ protected int requiredAccreditationLevel;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public boolean isDriverLicenseRequired() {
+ return requiredAccreditationLevel == 9;
+ }
+
+ public String getStoreCode() {
+ return storeCode;
+ }
+
+ public void setStoreCode(String storeCode) {
+ this.storeCode = storeCode;
+ }
+
+ public String getLocationCode() {
+ return locationCode;
+ }
+
+ public void setLocationCode(String locationCode) {
+ this.locationCode = locationCode;
+ }
+
+ public int getRequiredAccreditationLevel() {
+ return requiredAccreditationLevel;
+ }
+
+ public void setRequiredAccreditationLevel(int requiredAccreditationLevel) {
+ this.requiredAccreditationLevel = requiredAccreditationLevel;
+ }
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java 2013-03-15 15:06:29 UTC (rev 27)
@@ -0,0 +1,54 @@
+package com.franciaflex.magalie.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToOne;
+import java.util.Date;
+
+@Entity
+public class SiteError {
+
+ @Id
+ protected String id;
+
+ @OneToOne
+ protected Site site;
+
+ @ManyToOne
+ protected MagalieUser magalieUser;
+
+ protected Date reportDate;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public Site getSite() {
+ return site;
+ }
+
+ public void setSite(Site site) {
+ this.site = site;
+ }
+
+ public MagalieUser getMagalieUser() {
+ return magalieUser;
+ }
+
+ public void setMagalieUser(MagalieUser magalieUser) {
+ this.magalieUser = magalieUser;
+ }
+
+ public Date getReportDate() {
+ return reportDate;
+ }
+
+ public void setReportDate(Date reportDate) {
+ this.reportDate = reportDate;
+ }
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java 2013-03-15 15:06:29 UTC (rev 27)
@@ -0,0 +1,88 @@
+package com.franciaflex.magalie.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import java.util.Date;
+
+@Entity
+public class StorageMovement {
+
+ @Id
+ protected String id;
+
+ @ManyToOne
+ protected Site site;
+
+ @ManyToOne
+ protected Article article;
+
+ @ManyToOne
+ protected MagalieUser magalieUser;
+
+ protected double quantity;
+
+ protected Date orderDate;
+
+ protected Date confirmDate;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public Site getSite() {
+ return site;
+ }
+
+ public void setSite(Site site) {
+ this.site = site;
+ }
+
+ public Article getArticle() {
+ return article;
+ }
+
+ public void setArticle(Article article) {
+ this.article = article;
+ }
+
+ public MagalieUser getMagalieUser() {
+ return magalieUser;
+ }
+
+ public void setMagalieUser(MagalieUser magalieUser) {
+ this.magalieUser = magalieUser;
+ }
+
+ public double getQuantity() {
+ return quantity;
+ }
+
+ public void setQuantity(double quantity) {
+ this.quantity = quantity;
+ }
+
+ public Date getOrderDate() {
+ return orderDate;
+ }
+
+ public void setOrderDate(Date orderDate) {
+ this.orderDate = orderDate;
+ }
+
+ public Date getConfirmDate() {
+ return confirmDate;
+ }
+
+ public void setConfirmDate(Date confirmDate) {
+ this.confirmDate = confirmDate;
+ }
+
+ public boolean isConfirmed() {
+ return confirmDate != null;
+ }
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StoredArticle.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StoredArticle.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StoredArticle.java 2013-03-15 15:06:29 UTC (rev 27)
@@ -0,0 +1,52 @@
+package com.franciaflex.magalie.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
+@Entity
+public class StoredArticle {
+
+ @Id
+ protected String id;
+
+ @ManyToOne
+ protected Site site;
+
+ @ManyToOne
+ protected Article article;
+
+ protected double quantity;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public Site getSite() {
+ return site;
+ }
+
+ public void setSite(Site site) {
+ this.site = site;
+ }
+
+ public Article getArticle() {
+ return article;
+ }
+
+ public void setArticle(Article article) {
+ this.article = article;
+ }
+
+ public double getQuantity() {
+ return quantity;
+ }
+
+ public void setQuantity(double quantity) {
+ this.quantity = quantity;
+ }
+}
Modified: trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java
===================================================================
--- trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java 2013-03-15 12:34:08 UTC (rev 26)
+++ trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java 2013-03-15 15:06:29 UTC (rev 27)
@@ -1,6 +1,12 @@
package com.franciaflex.magalie;
+import com.franciaflex.magalie.entity.Article;
import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.entity.RequestedArticle;
+import com.franciaflex.magalie.entity.Site;
+import com.franciaflex.magalie.entity.SiteError;
+import com.franciaflex.magalie.entity.StorageMovement;
+import com.franciaflex.magalie.entity.StoredArticle;
import org.junit.Ignore;
import org.junit.Test;
@@ -26,6 +32,12 @@
entityManager.getTransaction().begin();
entityManager.persist(new MagalieUser());
+ entityManager.persist(new Article());
+ entityManager.persist(new RequestedArticle());
+ entityManager.persist(new Site());
+ entityManager.persist(new SiteError());
+ entityManager.persist(new StorageMovement());
+ entityManager.persist(new StoredArticle());
entityManager.getTransaction().commit();
1
0
Author: bleny
Date: 2013-03-15 13:34:08 +0100 (Fri, 15 Mar 2013)
New Revision: 26
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
fix missing version in pom
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-03-15 09:45:38 UTC (rev 25)
+++ trunk/pom.xml 2013-03-15 12:34:08 UTC (rev 26)
@@ -120,15 +120,23 @@
<dependencies>
<dependency>
+ <groupId>org.hibernate.javax.persistence</groupId>
+ <artifactId>hibernate-jpa-2.0-api</artifactId>
+ <version>1.0.1.Final</version>
+ </dependency>
+
+ <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernateVersion}</version>
+ <scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernateVersion}</version>
+ <scope>runtime</scope>
</dependency>
<dependency>
1
0