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
r44 - in trunk: magalie-persistence/src/main/java/com/franciaflex/magalie/persistence magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity magalie-services/src/main/java/com/franciaflex/magalie/services/service
by bleny@users.forge.codelutin.com 26 Mar '13
by bleny@users.forge.codelutin.com 26 Mar '13
26 Mar '13
Author: bleny
Date: 2013-03-26 17:39:09 +0100 (Tue, 26 Mar 2013)
New Revision: 44
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
remove extra site if already present in order?\195?\169
Modified:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StorageMovements.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovementOrder.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StorageMovements.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StorageMovements.java 2013-03-26 16:13:29 UTC (rev 43)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StorageMovements.java 2013-03-26 16:39:09 UTC (rev 44)
@@ -1,6 +1,7 @@
package com.franciaflex.magalie.persistence;
import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.Site;
import com.franciaflex.magalie.persistence.entity.StorageMovement;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
@@ -16,6 +17,14 @@
}
}
+ protected static class GetSiteFunction implements Function<StorageMovement, Site> {
+
+ @Override
+ public Site apply(StorageMovement storageMovement) {
+ return storageMovement.getSite();
+ }
+ }
+
protected static class StorageMovementIsConfirmedPredicate implements Predicate<StorageMovement> {
@Override
@@ -28,6 +37,10 @@
return new GetArticleFunction();
}
+ public static Function<StorageMovement, Site> getSiteFunction() {
+ return new GetSiteFunction();
+ }
+
public static Predicate<StorageMovement> storageMovementIsConfirmed() {
return new StorageMovementIsConfirmedPredicate();
}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovementOrder.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovementOrder.java 2013-03-26 16:13:29 UTC (rev 43)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovementOrder.java 2013-03-26 16:39:09 UTC (rev 44)
@@ -62,6 +62,9 @@
this.storageMovements = storageMovements;
}
+ /**
+ * @deprecated use {@link #getStorageMovements()}
+ */
public Set<StorageMovement> getSites() {
return storageMovements;
}
@@ -97,6 +100,18 @@
storageMovements.add(storageMovement);
}
+ // TODO brendan 26/03/13 rename to getSites
+ public Set<Site> getSites2() {
+ Set<Site> sites =
+ Sets.newHashSet(
+ Iterables.transform(
+ getStorageMovements(),
+ StorageMovements.getSiteFunction()
+ )
+ );
+ return sites;
+ }
+
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-03-26 16:13:29 UTC (rev 43)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-03-26 16:39:09 UTC (rev 44)
@@ -141,20 +141,27 @@
Article article = storageMovementOrder.getArticle();
+ Set<Site> sitesInOrder = storageMovementOrder.getSites2();
+
List<StoredArticle> storedArticles = getStoredArticles(article);
for (StoredArticle storedArticle : storedArticles) {
- StorageMovement newStorageMovement = new StorageMovement();
+ Site site = storedArticle.getSite();
- newStorageMovement.setArticle(article);
+ if ( ! sitesInOrder.contains(site)) {
- newStorageMovement.setSite(storedArticle.getSite());
+ StorageMovement newStorageMovement = new StorageMovement();
- newStorageMovement.setQuantity(0.);
+ newStorageMovement.setArticle(article);
- storageMovementTask.addExtraStorageMovement(newStorageMovement);
+ newStorageMovement.setSite(site);
+ newStorageMovement.setQuantity(0.);
+
+ storageMovementTask.addExtraStorageMovement(newStorageMovement);
+
+ }
}
return storageMovementTask;
1
0
r43 - in trunk: magalie-services/src/main/java/com/franciaflex/magalie/services/service magalie-services/src/test/java/com/franciaflex/magalie/services/service magalie-web/src/main/java/com/franciaflex/magalie/web/action magalie-web/src/main/webapp/WEB-INF/content
by bleny@users.forge.codelutin.com 26 Mar '13
by bleny@users.forge.codelutin.com 26 Mar '13
26 Mar '13
Author: bleny
Date: 2013-03-26 17:13:29 +0100 (Tue, 26 Mar 2013)
New Revision: 43
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
refs #2163, make screen fulfilkanban screen works
Modified:
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ArticleStorageServiceTest.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java
trunk/magalie-web/src/main/webapp/WEB-INF/content/fulfil-kanban-input.jsp
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-03-26 16:12:17 UTC (rev 42)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-03-26 16:13:29 UTC (rev 43)
@@ -39,7 +39,7 @@
this.serviceContext = serviceContext;
}
- public StorageMovementTask withdrawArticle(MagalieUser magalieUser, Article article, double requestedQuantity) throws UnavailableArticleException, RequiredDriverLicenceException {
+ public StorageMovementOrder bookArticle(MagalieUser magalieUser, Article article, double requestedQuantity) throws UnavailableArticleException, RequiredDriverLicenceException {
Preconditions.checkNotNull(magalieUser);
@@ -84,8 +84,6 @@
StorageMovementOrder storageMovementOrder = new StorageMovementOrder();
- StorageMovementTask storageMovementTask = new StorageMovementTask(storageMovementOrder);
-
double quantity = 0;
Date orderDate = serviceContext.getNow();
@@ -117,10 +115,6 @@
storageMovementOrder.addStorageMovement(newStorageMovement);
- } else {
-
- storageMovementTask.addExtraStorageMovement(newStorageMovement);
-
}
}
@@ -129,6 +123,40 @@
dao.persist(storageMovementOrder);
+ return storageMovementOrder;
+
+ }
+
+ public StorageMovementTask getStorageMovementTask(String storageMovementOrderId) {
+
+ StorageMovementOrderDao dao = serviceContext.getStorageMovementOrderDao();
+
+ StorageMovementOrder storageMovementOrder = dao.findById(storageMovementOrderId);
+
+ Preconditions.checkArgument(
+ storageMovementOrder != null,
+ "no storage movement order with id " + storageMovementOrderId);
+
+ StorageMovementTask storageMovementTask = new StorageMovementTask(storageMovementOrder);
+
+ Article article = storageMovementOrder.getArticle();
+
+ List<StoredArticle> storedArticles = getStoredArticles(article);
+
+ for (StoredArticle storedArticle : storedArticles) {
+
+ StorageMovement newStorageMovement = new StorageMovement();
+
+ newStorageMovement.setArticle(article);
+
+ newStorageMovement.setSite(storedArticle.getSite());
+
+ newStorageMovement.setQuantity(0.);
+
+ storageMovementTask.addExtraStorageMovement(newStorageMovement);
+
+ }
+
return storageMovementTask;
}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java 2013-03-26 16:12:17 UTC (rev 42)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java 2013-03-26 16:13:29 UTC (rev 43)
@@ -2,9 +2,9 @@
import com.franciaflex.magalie.persistence.entity.Article;
import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.StorageMovementOrder;
import com.franciaflex.magalie.services.MagalieService;
import com.franciaflex.magalie.services.MagalieServiceContext;
-import com.franciaflex.magalie.services.StorageMovementTask;
import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
import com.franciaflex.magalie.services.exception.UnavailableArticleException;
@@ -22,7 +22,7 @@
this.serviceContext = serviceContext;
}
- public StorageMovementTask fulfilKanbanTask(
+ public StorageMovementOrder fulfilKanbanTask(
String articleBarcode,
MagalieUser magalieUser) throws InvalidMagalieBarcodeException,
UnavailableArticleException,
@@ -42,14 +42,13 @@
ArticleStorageService articleStorageService =
serviceContext.newService(ArticleStorageService.class);
-
- StorageMovementTask storageMovementTask =
- articleStorageService.withdrawArticle(
+ StorageMovementOrder storageMovementOrder =
+ articleStorageService.bookArticle(
magalieUser,
article,
quantityInKanban);
- return storageMovementTask;
+ return storageMovementOrder;
}
}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java 2013-03-26 16:12:17 UTC (rev 42)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java 2013-03-26 16:13:29 UTC (rev 43)
@@ -27,9 +27,9 @@
import com.franciaflex.magalie.persistence.dao.MagalieUserDao;
import com.franciaflex.magalie.persistence.entity.Article;
import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.StorageMovementOrder;
import com.franciaflex.magalie.services.MagalieService;
import com.franciaflex.magalie.services.MagalieServiceContext;
-import com.franciaflex.magalie.services.StorageMovementTask;
import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
import com.franciaflex.magalie.services.exception.UnavailableArticleException;
@@ -41,7 +41,7 @@
this.serviceContext = serviceContext;
}
- public StorageMovementTask getWithdrawTask() throws RequiredDriverLicenceException, UnavailableArticleException {
+ public StorageMovementOrder getWithdrawTask() throws RequiredDriverLicenceException, UnavailableArticleException {
ArticleStorageService articleStorageService = serviceContext.newService(ArticleStorageService.class);
@@ -53,14 +53,14 @@
Article article1 = articleDao.findById("article1");
- StorageMovementTask storageMovementTask =
- articleStorageService.withdrawArticle(
+ StorageMovementOrder storageMovementOrder =
+ articleStorageService.bookArticle(
alexandre,
article1,
40.
);
- return storageMovementTask;
+ return storageMovementOrder;
}
}
Modified: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ArticleStorageServiceTest.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ArticleStorageServiceTest.java 2013-03-26 16:12:17 UTC (rev 42)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ArticleStorageServiceTest.java 2013-03-26 16:13:29 UTC (rev 43)
@@ -1,11 +1,11 @@
package com.franciaflex.magalie.services.service;
-import com.franciaflex.magalie.services.AbstractMagalieServiceTest;
import com.franciaflex.magalie.persistence.entity.Article;
import com.franciaflex.magalie.persistence.entity.MagalieUser;
import com.franciaflex.magalie.persistence.entity.Site;
import com.franciaflex.magalie.persistence.entity.StorageMovement;
-import com.franciaflex.magalie.services.StorageMovementTask;
+import com.franciaflex.magalie.persistence.entity.StorageMovementOrder;
+import com.franciaflex.magalie.services.AbstractMagalieServiceTest;
import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
import com.franciaflex.magalie.services.exception.UnavailableArticleException;
import com.google.common.collect.Iterables;
@@ -38,12 +38,12 @@
MagalieUser basile = fixture("basile");
Article article = fixture("article1");
- StorageMovementTask storageMovementTask;
+ StorageMovementOrder storageMovementOrder;
try {
- storageMovementTask = service.withdrawArticle(basile, article, 100.);
+ storageMovementOrder = service.bookArticle(basile, article, 100.);
if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
+ log.debug("storageMovementOrder = " + storageMovementOrder);
}
Assert.fail();
} catch (UnavailableArticleException e) {
@@ -59,12 +59,12 @@
MagalieUser basile = fixture("basile");
Article article = fixture("article1");
- StorageMovementTask storageMovementTask;
+ StorageMovementOrder storageMovementOrder;
try {
- storageMovementTask = service.withdrawArticle(basile, article, 70.);
+ storageMovementOrder = service.bookArticle(basile, article, 70.);
if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
+ log.debug("storageMovementOrder = " + storageMovementOrder);
}
Assert.fail();
} catch (RequiredDriverLicenceException e) {
@@ -80,12 +80,12 @@
MagalieUser basile = fixture("basile");
Article article = fixture("article1");
- StorageMovementTask storageMovementTask = null;
+ StorageMovementOrder storageMovementOrder = null;
try {
- storageMovementTask = service.withdrawArticle(basile, article, 50.);
+ storageMovementOrder = service.bookArticle(basile, article, 50.);
if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
+ log.debug("storageMovementOrder = " + storageMovementOrder);
}
} catch (RequiredDriverLicenceException e) {
if (log.isDebugEnabled()) {
@@ -99,7 +99,7 @@
Assert.fail();
}
- Assert.assertEquals(1, storageMovementTask.getSites().size());
+ Assert.assertEquals(1, storageMovementOrder.getSites().size());
}
@Test
@@ -107,12 +107,12 @@
MagalieUser alexandre = fixture("alexandre");
Article article = fixture("article1");
- StorageMovementTask storageMovementTask = null;
+ StorageMovementOrder storageMovementOrder = null;
try {
- storageMovementTask = service.withdrawArticle(alexandre, article, 50.);
+ storageMovementOrder = service.bookArticle(alexandre, article, 50.);
if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
+ log.debug("storageMovementOrder = " + storageMovementOrder);
}
} catch (RequiredDriverLicenceException e) {
if (log.isDebugEnabled()) {
@@ -126,10 +126,10 @@
Assert.fail();
}
- Assert.assertEquals(2, storageMovementTask.getSites().size());
- StorageMovement site1 = Iterables.get(storageMovementTask.getSites(), 0, null);
+ Assert.assertEquals(2, storageMovementOrder.getSites().size());
+ StorageMovement site1 = Iterables.get(storageMovementOrder.getSites(), 0, null);
Assert.assertEquals(-20., site1.getQuantity(), DELTA);
- StorageMovement site2 = Iterables.get(storageMovementTask.getSites(), 1, null);
+ StorageMovement site2 = Iterables.get(storageMovementOrder.getSites(), 1, null);
Assert.assertEquals(-30., site2.getQuantity(), DELTA);
}
@@ -141,18 +141,18 @@
Article article = fixture("article1");
- StorageMovementTask storageMovementTask = null;
+ StorageMovementOrder storageMovementOrder = null;
try {
- storageMovementTask = service.withdrawArticle(alexandre, article, 30.);
+ storageMovementOrder = service.bookArticle(alexandre, article, 30.);
if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
+ log.debug("storageMovementOrder = " + storageMovementOrder);
}
- Assert.assertEquals(2, storageMovementTask.getSites().size());
- StorageMovement storageMovement1 = Iterables.get(storageMovementTask.getSites(), 0, null);
+ Assert.assertEquals(2, storageMovementOrder.getSites().size());
+ StorageMovement storageMovement1 = Iterables.get(storageMovementOrder.getSites(), 0, null);
Assert.assertEquals(-20., storageMovement1.getQuantity(), DELTA);
Assert.assertEquals("B2", storageMovement1.getSite().getLocationCode());
- StorageMovement storageMovement2 = Iterables.get(storageMovementTask.getSites(), 1, null);
+ StorageMovement storageMovement2 = Iterables.get(storageMovementOrder.getSites(), 1, null);
Assert.assertEquals(-10., storageMovement2.getQuantity(), DELTA);
Assert.assertEquals("A1", storageMovement2.getSite().getLocationCode());
} catch (RequiredDriverLicenceException e) {
@@ -168,12 +168,12 @@
}
try {
- storageMovementTask = service.withdrawArticle(cathy, article, 30.);
+ storageMovementOrder = service.bookArticle(cathy, article, 30.);
if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
+ log.debug("storageMovementOrder = " + storageMovementOrder);
}
- Assert.assertEquals(1, storageMovementTask.getSites().size());
- StorageMovement storageMovement = Iterables.get(storageMovementTask.getSites(), 0, null);
+ Assert.assertEquals(1, storageMovementOrder.getSites().size());
+ StorageMovement storageMovement = Iterables.get(storageMovementOrder.getSites(), 0, null);
Assert.assertEquals(-30., storageMovement.getQuantity(), DELTA);
Assert.assertEquals("A1", storageMovement.getSite().getLocationCode());
} catch (RequiredDriverLicenceException e) {
@@ -203,12 +203,12 @@
siteErrorsService.reportError(site2, alexandre);
try {
- StorageMovementTask storageMovementTask = service.withdrawArticle(cathy, article, 30.);
+ StorageMovementOrder storageMovementOrder = service.bookArticle(cathy, article, 30.);
if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
+ log.debug("storageMovementOrder = " + storageMovementOrder);
}
- Assert.assertEquals(1, storageMovementTask.getSites().size());
- StorageMovement storageMovement = Iterables.get(storageMovementTask.getSites(), 0, null);
+ Assert.assertEquals(1, storageMovementOrder.getSites().size());
+ StorageMovement storageMovement = Iterables.get(storageMovementOrder.getSites(), 0, null);
Assert.assertNotEquals(
"site2 must not be returned because it was reported in error",
site2.getId(),
Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java 2013-03-26 16:12:17 UTC (rev 42)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java 2013-03-26 16:13:29 UTC (rev 43)
@@ -1,11 +1,11 @@
package com.franciaflex.magalie.web.action;
import com.franciaflex.magalie.persistence.entity.MagalieUser;
-import com.franciaflex.magalie.services.service.FulfilKanbanService;
-import com.franciaflex.magalie.services.StorageMovementTask;
+import com.franciaflex.magalie.persistence.entity.StorageMovementOrder;
import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
import com.franciaflex.magalie.services.exception.UnavailableArticleException;
+import com.franciaflex.magalie.services.service.FulfilKanbanService;
import com.franciaflex.magalie.web.MagalieActionSupport;
import com.franciaflex.magalie.web.MagalieSession;
import org.apache.commons.logging.Log;
@@ -15,7 +15,7 @@
@Results({
- @Result(name="success", type="redirect", location="/", params = { "" , "" })
+ @Result(name="success", type="redirectAction", params = { "actionName", "withdraw-item!input", "storageMovementOrderId", "${storageMovementOrderId}" })
})
public class FulfilKanbanAction extends MagalieActionSupport {
@@ -27,7 +27,7 @@
protected String articleBarcode;
- protected StorageMovementTask storageMovementTask;
+ protected StorageMovementOrder storageMovementOrder;
public void setArticleBarcode(String articleBarcode) {
this.articleBarcode = articleBarcode;
@@ -37,6 +37,10 @@
this.service = service;
}
+ public void setSession(MagalieSession session) {
+ this.session = session;
+ }
+
@Override
public String execute() {
@@ -48,7 +52,7 @@
try {
- storageMovementTask = service.fulfilKanbanTask(articleBarcode, magalieUser);
+ storageMovementOrder = service.fulfilKanbanTask(articleBarcode, magalieUser);
} catch (InvalidMagalieBarcodeException e) {
@@ -74,8 +78,7 @@
}
- public StorageMovementTask getStorageMovementTask() {
- return storageMovementTask;
+ public String getStorageMovementOrderId() {
+ return storageMovementOrder.getId();
}
-
}
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-26 16:12:17 UTC (rev 42)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-03-26 16:13:29 UTC (rev 43)
@@ -23,11 +23,12 @@
* #L%
*/
-import com.franciaflex.magalie.services.service.RequestedItemService;
import com.franciaflex.magalie.services.StorageMovementTask;
import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
import com.franciaflex.magalie.services.exception.UnavailableArticleException;
+import com.franciaflex.magalie.services.service.ArticleStorageService;
import com.franciaflex.magalie.web.MagalieActionSupport;
+import com.google.common.base.Preconditions;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.json.JSONException;
@@ -37,20 +38,29 @@
private static final Log log = LogFactory.getLog(WithdrawItemAction.class);
- protected RequestedItemService service;
+ protected ArticleStorageService service;
+ protected String storageMovementOrderId;
+
protected StorageMovementTask storageMovementTask;
- public void setService(RequestedItemService service) {
+ public void setService(ArticleStorageService service) {
this.service = service;
}
- public void setModel(String model) {
+ public void setStorageMovementOrderId(String storageMovementOrderId) {
+ this.storageMovementOrderId = storageMovementOrderId;
+ }
- if (log.isErrorEnabled()) {
- log.error("should deserialize" + model);
- }
+ @Override
+ public String input() throws RequiredDriverLicenceException, UnavailableArticleException {
+ Preconditions.checkNotNull(storageMovementOrderId);
+
+ storageMovementTask = service.getStorageMovementTask(storageMovementOrderId);
+
+ return INPUT;
+
}
public StorageMovementTask getStorageMovementTask() {
@@ -65,13 +75,15 @@
}
- @Override
- public String input() throws RequiredDriverLicenceException, UnavailableArticleException {
- storageMovementTask = service.getWithdrawTask();
- return INPUT;
+ public void setModel(String model) {
+
+ if (log.isErrorEnabled()) {
+ log.error("should deserialize" + model);
+ }
+
}
}
Modified: trunk/magalie-web/src/main/webapp/WEB-INF/content/fulfil-kanban-input.jsp
===================================================================
--- trunk/magalie-web/src/main/webapp/WEB-INF/content/fulfil-kanban-input.jsp 2013-03-26 16:12:17 UTC (rev 42)
+++ trunk/magalie-web/src/main/webapp/WEB-INF/content/fulfil-kanban-input.jsp 2013-03-26 16:13:29 UTC (rev 43)
@@ -5,10 +5,10 @@
<title>Traitement des kanbans</title>
</head>
-<form class="form-horizontal">
+<s:form cssClass="form-horizontal">
<s:textfield name="articleBarcode" label="Article" inputAppendIcon="barcode" cssClass="input-small" />
<div class="btn-group">
<s:submit name="next" value="Suivant" cssClass="btn btn-primary btn-small" />
</div>
-</form>
\ No newline at end of file
+</s:form>
\ No newline at end of file
1
0
r42 - trunk/magalie-web/src/main/webapp/WEB-INF/decorators
by bleny@users.forge.codelutin.com 26 Mar '13
by bleny@users.forge.codelutin.com 26 Mar '13
26 Mar '13
Author: bleny
Date: 2013-03-26 17:12:17 +0100 (Tue, 26 Mar 2013)
New Revision: 42
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
add action errors in layout
Modified:
trunk/magalie-web/src/main/webapp/WEB-INF/decorators/layout.jsp
Modified: trunk/magalie-web/src/main/webapp/WEB-INF/decorators/layout.jsp
===================================================================
--- trunk/magalie-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2013-03-26 16:11:45 UTC (rev 41)
+++ trunk/magalie-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2013-03-26 16:12:17 UTC (rev 42)
@@ -40,6 +40,11 @@
</head>
<body>
<div id="container">
+
+ <s:actionerror theme="bootstrap"/>
+ <s:actionmessage theme="bootstrap"/>
+ <s:fielderror theme="bootstrap"/>
+
<decorator:body />
</div>
</body>
1
0
r41 - trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa
by bleny@users.forge.codelutin.com 26 Mar '13
by bleny@users.forge.codelutin.com 26 Mar '13
26 Mar '13
Author: bleny
Date: 2013-03-26 17:11:45 +0100 (Tue, 26 Mar 2013)
New Revision: 41
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
fix dao implementations
Modified:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/ArticleJpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/MagalieUserJpaDao.java
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/ArticleJpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/ArticleJpaDao.java 2013-03-26 10:18:13 UTC (rev 40)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/ArticleJpaDao.java 2013-03-26 16:11:45 UTC (rev 41)
@@ -20,7 +20,7 @@
@Override
public Article findByCode(String articleCode) {
- Query query = entityManager.createQuery("from article a where a.code = :code");
+ Query query = entityManager.createQuery("from Article a where a.code = :code");
query.setParameter("code", articleCode);
Article article = (Article)
Iterables.getOnlyElement(
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/MagalieUserJpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/MagalieUserJpaDao.java 2013-03-26 10:18:13 UTC (rev 40)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/MagalieUserJpaDao.java 2013-03-26 16:11:45 UTC (rev 41)
@@ -21,7 +21,7 @@
@Override
public MagalieUser findByLogin(String login) {
- Query query = entityManager.createQuery("from magalieUser mu where mu.login = login");
+ Query query = entityManager.createQuery("from MagalieUser mu where mu.login = :login");
query.setParameter("login", login);
List<MagalieUser> resultList = query.getResultList();
MagalieUser onlyElement = Iterables.getOnlyElement(resultList, null);
1
0
26 Mar '13
Author: bleny
Date: 2013-03-26 11:18:13 +0100 (Tue, 26 Mar 2013)
New Revision: 40
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
renaming packages and some classes
Added:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaUtil.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/Sites.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StorageMovements.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/SiteErrorDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementOrderDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/ArticleJpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/MagalieUserJpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedArticleJpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/SiteErrorJpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementJpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementOrderJpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StoredArticleJpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractEntity.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovementOrder.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieBarcodeService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieUsersService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReportService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SiteErrorsService.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/AbstractMagalieServiceTest.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/FakeMagalieServiceContext.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/JpaEntityManagerRule.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/MagalieFixtures.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ArticleStorageServiceTest.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedItemServiceTest.java
Removed:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaArticleDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaMagalieUserDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaRequestedArticleDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaStoredArticleDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractJpaEntity.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.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/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java
Modified:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Article.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/MagalieUser.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/RequestedArticle.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Site.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/SiteError.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StoredArticle.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/StorageMovementTask.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/RequiredDriverLicenceException.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/UnavailableArticleException.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,73 +0,0 @@
-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";
-
- 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);
- }
-
- EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName, allJpaParameters);
-
- return entityManagerFactory;
-
- }
-
-}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,41 +0,0 @@
-package com.franciaflex.magalie;
-
-import com.google.common.collect.Maps;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.config.ApplicationConfig;
-import org.nuiton.util.config.ArgumentsParserException;
-
-import java.util.Map;
-import java.util.Properties;
-
-public class MagalieApplicationConfig {
-
- private static final Log log = LogFactory.getLog(MagalieApplicationConfig.class);
-
- protected ApplicationConfig applicationConfig;
-
- public MagalieApplicationConfig() {
- applicationConfig = new ApplicationConfig();
- applicationConfig.loadDefaultOptions(MagalieConfigOption.values());
- applicationConfig.setConfigFileName("magalie.properties");
- try {
- applicationConfig.parse();
- } catch (ArgumentsParserException e) {
- throw new MagalieTechnicalException(e);
- }
- if (log.isDebugEnabled()) {
- log.debug("parsed options in config file" + applicationConfig.getOptions());
- }
- }
-
- 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");
- jpaParameters.putAll((Map) jpaProperties);
- return jpaParameters;
- }
-
-}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieApplicationConfig.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,41 @@
+package com.franciaflex.magalie;
+
+import com.google.common.collect.Maps;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.config.ApplicationConfig;
+import org.nuiton.util.config.ArgumentsParserException;
+
+import java.util.Map;
+import java.util.Properties;
+
+public class MagalieApplicationConfig {
+
+ private static final Log log = LogFactory.getLog(MagalieApplicationConfig.class);
+
+ protected ApplicationConfig applicationConfig;
+
+ public MagalieApplicationConfig() {
+ applicationConfig = new ApplicationConfig();
+ applicationConfig.loadDefaultOptions(MagalieConfigOption.values());
+ applicationConfig.setConfigFileName("magalie.properties");
+ try {
+ applicationConfig.parse();
+ } catch (ArgumentsParserException e) {
+ throw new MagalieTechnicalException(e);
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("parsed options in config file" + applicationConfig.getOptions());
+ }
+ }
+
+ 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");
+ jpaParameters.putAll((Map) jpaProperties);
+ return jpaParameters;
+ }
+
+}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,90 +0,0 @@
-package com.franciaflex.magalie;
-
-import org.nuiton.util.config.ConfigOptionDef;
-
-/**
- * @author bleny
- */
-public enum MagalieConfigOption implements ConfigOptionDef {
-
- SMTP_HOST(
- "smtp.host",
- "Nom d'hôte du serveur SMTP",
- "", String.class),
-
- SMTP_PORT(
- "smtp.port",
- "Le port du serveur SMTP",
- "25", Integer.class),
-
- SMTP_FROM(
- "smtp.from",
- "L'adresse d'expéditeur pour les mails de notifications",
- "", String.class),
-
- DEV_MODE(
- "devMode",
- "Mode développement, court-circuite l'envoi de mail",
- "true", Boolean.class),
-
- ;
-
- protected final String key;
- protected final String description;
- protected final Class<?> type;
- protected String defaultValue;
-
- private MagalieConfigOption(String key, String description,
- String defaultValue, Class<?> type) {
- this.key = key;
- this.description = description;
- this.defaultValue = defaultValue;
- this.type = type;
- }
-
- @Override
- public String getKey() {
- return key;
- }
-
- @Override
- public Class<?> getType() {
- return type;
- }
-
- @Override
- public String getDescription() {
- return description;
- }
-
- @Override
- public String getDefaultValue() {
- return defaultValue;
- }
-
- @Override
- public boolean isTransient() {
- return false;
- }
-
- @Override
- public boolean isFinal() {
- return false;
- }
-
- @Override
- public void setDefaultValue(String defaultValue) {
- this.defaultValue = defaultValue;
- }
-
- @Override
- public void setTransient(boolean isTransient) {
- // Nothing to do
- }
-
- @Override
- public void setFinal(boolean isFinal) {
- // Nothing to do
- }
-
-}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieConfigOption.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,90 @@
+package com.franciaflex.magalie;
+
+import org.nuiton.util.config.ConfigOptionDef;
+
+/**
+ * @author bleny
+ */
+public enum MagalieConfigOption implements ConfigOptionDef {
+
+ SMTP_HOST(
+ "smtp.host",
+ "Nom d'hôte du serveur SMTP",
+ "", String.class),
+
+ SMTP_PORT(
+ "smtp.port",
+ "Le port du serveur SMTP",
+ "25", Integer.class),
+
+ SMTP_FROM(
+ "smtp.from",
+ "L'adresse d'expéditeur pour les mails de notifications",
+ "", String.class),
+
+ DEV_MODE(
+ "devMode",
+ "Mode développement, court-circuite l'envoi de mail",
+ "true", Boolean.class),
+
+ ;
+
+ protected final String key;
+ protected final String description;
+ protected final Class<?> type;
+ protected String defaultValue;
+
+ private MagalieConfigOption(String key, String description,
+ String defaultValue, Class<?> type) {
+ this.key = key;
+ this.description = description;
+ this.defaultValue = defaultValue;
+ this.type = type;
+ }
+
+ @Override
+ public String getKey() {
+ return key;
+ }
+
+ @Override
+ public Class<?> getType() {
+ return type;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ @Override
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ @Override
+ public boolean isTransient() {
+ return false;
+ }
+
+ @Override
+ public boolean isFinal() {
+ return false;
+ }
+
+ @Override
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ @Override
+ public void setTransient(boolean isTransient) {
+ // Nothing to do
+ }
+
+ @Override
+ public void setFinal(boolean isFinal) {
+ // Nothing to do
+ }
+
+}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,19 +0,0 @@
-package com.franciaflex.magalie;
-
-public class MagalieTechnicalException extends RuntimeException {
-
- public MagalieTechnicalException() {
- }
-
- public MagalieTechnicalException(String message) {
- super(message);
- }
-
- public MagalieTechnicalException(String message, Throwable cause) {
- super(message, cause);
- }
-
- public MagalieTechnicalException(Throwable cause) {
- super(cause);
- }
-}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/MagalieTechnicalException.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,19 @@
+package com.franciaflex.magalie;
+
+public class MagalieTechnicalException extends RuntimeException {
+
+ public MagalieTechnicalException() {
+ }
+
+ public MagalieTechnicalException(String message) {
+ super(message);
+ }
+
+ public MagalieTechnicalException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public MagalieTechnicalException(Throwable cause) {
+ super(cause);
+ }
+}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,69 +0,0 @@
-package com.franciaflex.magalie;
-
-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 {
-
- 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();
- }
-
- public static Predicate<Site> siteIsNotReportedInError(Collection<Site> allSitesInError) {
- return Predicates.not(Predicates.in(allSitesInError));
- }
-}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,38 +0,0 @@
-package com.franciaflex.magalie;
-
-import com.franciaflex.magalie.entity.Article;
-import com.franciaflex.magalie.entity.StorageMovement;
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-
-public class StorageMovements {
-
- protected static class GetArticleFunction implements Function<StorageMovement, Article> {
-
- @Override
- public Article apply(StorageMovement storageMovement) {
- return storageMovement.getArticle();
- }
- }
-
- protected static class StorageMovementIsConfirmedPredicate implements Predicate<StorageMovement> {
-
- @Override
- public boolean apply(StorageMovement storageMovement) {
- return storageMovement.isConfirmed();
- }
- }
-
- public static Function<StorageMovement, Article> getArticleFunction() {
- return new GetArticleFunction();
- }
-
- public static Predicate<StorageMovement> storageMovementIsConfirmed() {
- return new StorageMovementIsConfirmedPredicate();
- }
-
- public static Predicate<StorageMovement> storageMovementIsNotConfirmed() {
- return Predicates.not(storageMovementIsConfirmed());
- }
-}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,125 +0,0 @@
-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.Collection;
-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();
- }
-
- public static Predicate<StoredArticle> articleNotStoredInSiteReportedInError(Collection<Site> allSitesInError) {
- return Predicates.compose(Sites.siteIsNotReportedInError(allSitesInError), getSiteFunction());
- }
-}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaUtil.java (from rev 34, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/JpaUtil.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaUtil.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/JpaUtil.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,73 @@
+package com.franciaflex.magalie.persistence;
+
+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";
+
+ 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);
+ }
+
+ EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName, allJpaParameters);
+
+ return entityManagerFactory;
+
+ }
+
+}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/Sites.java (from rev 34, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/Sites.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/Sites.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/Sites.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,69 @@
+package com.franciaflex.magalie.persistence;
+
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.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 {
+
+ 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();
+ }
+
+ public static Predicate<Site> siteIsNotReportedInError(Collection<Site> allSitesInError) {
+ return Predicates.not(Predicates.in(allSitesInError));
+ }
+}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StorageMovements.java (from rev 38, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StorageMovements.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StorageMovements.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,38 @@
+package com.franciaflex.magalie.persistence;
+
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.StorageMovement;
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+
+public class StorageMovements {
+
+ protected static class GetArticleFunction implements Function<StorageMovement, Article> {
+
+ @Override
+ public Article apply(StorageMovement storageMovement) {
+ return storageMovement.getArticle();
+ }
+ }
+
+ protected static class StorageMovementIsConfirmedPredicate implements Predicate<StorageMovement> {
+
+ @Override
+ public boolean apply(StorageMovement storageMovement) {
+ return storageMovement.isConfirmed();
+ }
+ }
+
+ public static Function<StorageMovement, Article> getArticleFunction() {
+ return new GetArticleFunction();
+ }
+
+ public static Predicate<StorageMovement> storageMovementIsConfirmed() {
+ return new StorageMovementIsConfirmedPredicate();
+ }
+
+ public static Predicate<StorageMovement> storageMovementIsNotConfirmed() {
+ return Predicates.not(storageMovementIsConfirmed());
+ }
+}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java (from rev 34, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StoredArticles.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/StoredArticles.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,125 @@
+package com.franciaflex.magalie.persistence;
+
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.Site;
+import com.franciaflex.magalie.persistence.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.Collection;
+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();
+ }
+
+ public static Predicate<StoredArticle> articleNotStoredInSiteReportedInError(Collection<Site> allSitesInError) {
+ return Predicates.compose(Sites.siteIsNotReportedInError(allSitesInError), getSiteFunction());
+ }
+}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/ArticleDao.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,10 +0,0 @@
-package com.franciaflex.magalie.dao;
-
-import com.franciaflex.magalie.entity.Article;
-
-/**
- * @author bleny
- */
-public interface ArticleDao extends Dao<Article> {
-
-}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java (from rev 36, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/ArticleDao.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/ArticleDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,12 @@
+package com.franciaflex.magalie.persistence.dao;
+
+import com.franciaflex.magalie.persistence.entity.Article;
+
+/**
+ * @author bleny
+ */
+public interface ArticleDao extends Dao<Article> {
+
+ Article findByCode(String articleCode);
+
+}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/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/persistence/dao/Dao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,18 +0,0 @@
-package com.franciaflex.magalie.dao;
-
-import com.franciaflex.magalie.entity.AbstractJpaEntity;
-
-public interface Dao<E extends AbstractJpaEntity> {
-
- E findById(String id);
-
- void persist(E entity);
-
- E merge(E entity);
-
- void remove(E entity);
-
- boolean contains(E entity);
-
- void commit();
-}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java (from rev 32, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/Dao.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/Dao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,17 @@
+package com.franciaflex.magalie.persistence.dao;
+
+import com.franciaflex.magalie.persistence.entity.AbstractEntity;
+
+public interface Dao<E extends AbstractEntity> {
+
+ E findById(String id);
+
+ void persist(E entity);
+
+ E merge(E entity);
+
+ void remove(E entity);
+
+ boolean contains(E entity);
+
+}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,10 +0,0 @@
-package com.franciaflex.magalie.dao;
-
-import com.franciaflex.magalie.entity.MagalieUser;
-
-/**
- * @author bleny
- */
-public interface MagalieUserDao extends Dao<MagalieUser> {
-
-}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java (from rev 37, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/MagalieUserDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,16 @@
+package com.franciaflex.magalie.persistence.dao;
+
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+
+import java.util.List;
+
+/**
+ * @author bleny
+ */
+public interface MagalieUserDao extends Dao<MagalieUser> {
+
+ MagalieUser findByLogin(String login);
+
+ List<MagalieUser> findAll();
+
+}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/RequestedArticleDao.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/RequestedArticleDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,6 +1,6 @@
-package com.franciaflex.magalie.dao;
+package com.franciaflex.magalie.persistence.dao;
-import com.franciaflex.magalie.entity.RequestedArticle;
+import com.franciaflex.magalie.persistence.entity.RequestedArticle;
/**
* @author bleny
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/SiteErrorDao.java (from rev 39, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/SiteErrorDao.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/SiteErrorDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/SiteErrorDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,19 @@
+package com.franciaflex.magalie.persistence.dao;
+
+import com.franciaflex.magalie.persistence.entity.Site;
+import com.franciaflex.magalie.persistence.entity.SiteError;
+
+import java.util.List;
+
+/**
+ * @author bleny
+ */
+public interface SiteErrorDao extends Dao<SiteError> {
+
+ SiteError findBySite(Site site);
+
+ List<Site> getAllSitesInError();
+
+ List<SiteError> findAll();
+
+}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java (from rev 38, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementDao.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,17 @@
+package com.franciaflex.magalie.persistence.dao;
+
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.StorageMovement;
+
+import java.util.List;
+
+/**
+ * @author bleny
+ */
+public interface StorageMovementDao extends Dao<StorageMovement> {
+
+ List<StorageMovement> findAllByArticle(Article article);
+
+ List<StorageMovement> findAll();
+
+}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementOrderDao.java (from rev 36, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementOrderDao.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementOrderDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StorageMovementOrderDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,7 @@
+package com.franciaflex.magalie.persistence.dao;
+
+import com.franciaflex.magalie.persistence.entity.StorageMovementOrder;
+
+public interface StorageMovementOrderDao extends Dao<StorageMovementOrder> {
+
+}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StoredArticleDao.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/StoredArticleDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,10 +1,9 @@
-package com.franciaflex.magalie.dao;
+package com.franciaflex.magalie.persistence.dao;
-import com.franciaflex.magalie.entity.Article;
-import com.franciaflex.magalie.entity.StoredArticle;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.StoredArticle;
import java.util.List;
-import java.util.Set;
public interface StoredArticleDao extends Dao<StoredArticle> {
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/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/persistence/dao/jpa/AbstractJpaDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,48 +0,0 @@
-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;
- }
-
- 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);
- }
-
- @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/persistence/dao/jpa/AbstractJpaDao.java (from rev 34, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/AbstractJpaDao.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/AbstractJpaDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,48 @@
+package com.franciaflex.magalie.persistence.dao.jpa;
+
+import com.franciaflex.magalie.persistence.dao.Dao;
+import com.franciaflex.magalie.persistence.entity.AbstractEntity;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+
+public abstract class AbstractJpaDao<E extends AbstractEntity> implements Dao<E> {
+
+ protected EntityManager entityManager;
+
+ public AbstractJpaDao(EntityManager entityManager) {
+ 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) {
+ EntityTransaction transaction = entityManager.getTransaction();
+ transaction.begin();
+ entityManager.persist(entity);
+ transaction.commit();
+ }
+
+ @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);
+ }
+
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/ArticleJpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/ArticleJpaDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/ArticleJpaDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,32 @@
+package com.franciaflex.magalie.persistence.dao.jpa;
+
+import com.franciaflex.magalie.persistence.dao.ArticleDao;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.google.common.collect.Iterables;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+public class ArticleJpaDao extends AbstractJpaDao<Article> implements ArticleDao {
+
+ public ArticleJpaDao(EntityManager entityManager) {
+ super(entityManager);
+ }
+
+ @Override
+ protected Class<Article> getEntityClass() {
+ return Article.class;
+ }
+
+ @Override
+ public Article findByCode(String articleCode) {
+ Query query = entityManager.createQuery("from article a where a.code = :code");
+ query.setParameter("code", articleCode);
+ Article article = (Article)
+ Iterables.getOnlyElement(
+ query.getResultList(),
+ null
+ );
+ return article;
+ }
+}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaArticleDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaArticleDao.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaArticleDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,18 +0,0 @@
-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;
- }
-}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaMagalieUserDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaMagalieUserDao.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaMagalieUserDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,18 +0,0 @@
-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);
- }
-
- @Override
- protected Class<MagalieUser> getEntityClass() {
- return MagalieUser.class;
- }
-}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaRequestedArticleDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaRequestedArticleDao.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/JpaRequestedArticleDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,18 +0,0 @@
-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;
- }
-}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/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/persistence/dao/jpa/JpaStoredArticleDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,29 +0,0 @@
-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
- 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.setParameter("article", article);
- List resultList = query.getResultList();
- return resultList;
- }
-}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/MagalieUserJpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/MagalieUserJpaDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/MagalieUserJpaDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,37 @@
+package com.franciaflex.magalie.persistence.dao.jpa;
+
+import com.franciaflex.magalie.persistence.dao.MagalieUserDao;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.google.common.collect.Iterables;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class MagalieUserJpaDao extends AbstractJpaDao<MagalieUser> implements MagalieUserDao {
+
+ public MagalieUserJpaDao(EntityManager entityManager) {
+ super(entityManager);
+ }
+
+ @Override
+ protected Class<MagalieUser> getEntityClass() {
+ return MagalieUser.class;
+ }
+
+ @Override
+ public MagalieUser findByLogin(String login) {
+ Query query = entityManager.createQuery("from magalieUser mu where mu.login = login");
+ query.setParameter("login", login);
+ List<MagalieUser> resultList = query.getResultList();
+ MagalieUser onlyElement = Iterables.getOnlyElement(resultList, null);
+ return onlyElement;
+ }
+
+ @Override
+ public List<MagalieUser> findAll() {
+ Query query = entityManager.createQuery("from MagalieUser mu order by mu.login");
+ List<MagalieUser> resultList = query.getResultList();
+ return resultList;
+ }
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedArticleJpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedArticleJpaDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/RequestedArticleJpaDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,18 @@
+package com.franciaflex.magalie.persistence.dao.jpa;
+
+import com.franciaflex.magalie.persistence.dao.RequestedArticleDao;
+import com.franciaflex.magalie.persistence.entity.RequestedArticle;
+
+import javax.persistence.EntityManager;
+
+public class RequestedArticleJpaDao extends AbstractJpaDao<RequestedArticle> implements RequestedArticleDao {
+
+ public RequestedArticleJpaDao(EntityManager entityManager) {
+ super(entityManager);
+ }
+
+ @Override
+ protected Class<RequestedArticle> getEntityClass() {
+ return RequestedArticle.class;
+ }
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/SiteErrorJpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/SiteErrorJpaDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/SiteErrorJpaDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,47 @@
+package com.franciaflex.magalie.persistence.dao.jpa;
+
+import com.franciaflex.magalie.persistence.dao.SiteErrorDao;
+import com.franciaflex.magalie.persistence.entity.Site;
+import com.franciaflex.magalie.persistence.entity.SiteError;
+import com.google.common.collect.Iterables;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class SiteErrorJpaDao extends AbstractJpaDao<SiteError> implements SiteErrorDao {
+
+ public SiteErrorJpaDao(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;
+ }
+
+ @Override
+ public List<SiteError> findAll() {
+ Query query = entityManager.createQuery("from SiteError se order by se.reportDate");
+ List<SiteError> all = query.getResultList();
+ return all;
+ }
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementJpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementJpaDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementJpaDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,34 @@
+package com.franciaflex.magalie.persistence.dao.jpa;
+
+import com.franciaflex.magalie.persistence.dao.StorageMovementDao;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.StorageMovement;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class StorageMovementJpaDao extends AbstractJpaDao<StorageMovement> implements StorageMovementDao {
+
+ public StorageMovementJpaDao(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 List<StorageMovement> findAll() {
+ Query query = entityManager.createQuery("from StorageMovement sm order by sm.orderDate");
+ return query.getResultList();
+ }
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementOrderJpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementOrderJpaDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StorageMovementOrderJpaDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,19 @@
+package com.franciaflex.magalie.persistence.dao.jpa;
+
+import com.franciaflex.magalie.persistence.dao.StorageMovementOrderDao;
+import com.franciaflex.magalie.persistence.entity.StorageMovementOrder;
+
+import javax.persistence.EntityManager;
+
+public class StorageMovementOrderJpaDao extends AbstractJpaDao<StorageMovementOrder> implements StorageMovementOrderDao {
+
+ public StorageMovementOrderJpaDao(EntityManager entityManager) {
+ super(entityManager);
+ }
+
+ @Override
+ protected Class<StorageMovementOrder> getEntityClass() {
+ return StorageMovementOrder.class;
+ }
+
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StoredArticleJpaDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StoredArticleJpaDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/dao/jpa/StoredArticleJpaDao.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,32 @@
+package com.franciaflex.magalie.persistence.dao.jpa;
+
+import com.franciaflex.magalie.persistence.dao.StoredArticleDao;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.StoredArticle;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+public class StoredArticleJpaDao extends AbstractJpaDao<StoredArticle> implements StoredArticleDao {
+
+ public StoredArticleJpaDao(EntityManager entityManager) {
+ super(entityManager);
+ }
+
+ @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.setParameter("article", article);
+ List<StoredArticle> resultList = query.getResultList();
+ for (StoredArticle storedArticle : resultList) {
+ entityManager.detach(storedArticle);
+ }
+ return resultList;
+ }
+}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractEntity.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractEntity.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractEntity.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,30 @@
+package com.franciaflex.magalie.persistence.entity;
+
+import com.google.common.base.Objects;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+public abstract class AbstractEntity {
+
+ public abstract String getId();
+
+ @Override
+ public boolean equals(Object o) {
+ String id = getId();
+ if (this == o) return true;
+ if (!(o instanceof AbstractEntity)) return false;
+ AbstractEntity that = (AbstractEntity) o;
+ if (id == null && that.getId() == null) return false;
+ 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);
+ }
+}
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractJpaEntity.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/AbstractJpaEntity.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/AbstractJpaEntity.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,29 +0,0 @@
-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/persistence/entity/Article.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Article.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Article.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,11 +1,11 @@
-package com.franciaflex.magalie.entity;
+package com.franciaflex.magalie.persistence.entity;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
-public class Article extends AbstractJpaEntity {
+public class Article extends AbstractEntity {
@Id
protected String id;
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/MagalieUser.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/MagalieUser.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/MagalieUser.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,10 +1,10 @@
-package com.franciaflex.magalie.entity;
+package com.franciaflex.magalie.persistence.entity;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
-public class MagalieUser extends AbstractJpaEntity {
+public class MagalieUser extends AbstractEntity {
@Id
protected String id;
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/RequestedArticle.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/RequestedArticle.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/RequestedArticle.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,4 +1,4 @@
-package com.franciaflex.magalie.entity;
+package com.franciaflex.magalie.persistence.entity;
import javax.persistence.Entity;
import javax.persistence.Id;
@@ -6,7 +6,7 @@
import java.util.Date;
@Entity
-public class RequestedArticle extends AbstractJpaEntity {
+public class RequestedArticle extends AbstractEntity {
@Id
protected String id;
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Site.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/Site.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/Site.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,4 +1,4 @@
-package com.franciaflex.magalie.entity;
+package com.franciaflex.magalie.persistence.entity;
import com.google.common.base.Joiner;
@@ -6,7 +6,7 @@
import javax.persistence.Id;
@Entity
-public class Site extends AbstractJpaEntity {
+public class Site extends AbstractEntity {
@Id
protected String id;
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/SiteError.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/SiteError.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/SiteError.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,4 +1,4 @@
-package com.franciaflex.magalie.entity;
+package com.franciaflex.magalie.persistence.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
@@ -8,7 +8,7 @@
import java.util.Date;
@Entity
-public class SiteError extends AbstractJpaEntity {
+public class SiteError extends AbstractEntity {
@Id
@GeneratedValue
Deleted: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,91 +0,0 @@
-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;
-
-@Entity
-public class StorageMovement extends AbstractJpaEntity {
-
- @Id
- @GeneratedValue
- protected String id;
-
- @ManyToOne
- protected Site site;
-
- @ManyToOne
- protected Article article;
-
- @ManyToOne
- protected MagalieUser magalieUser;
-
- protected double quantity;
-
- protected Date orderDate;
-
- protected Date confirmDate;
-
- @Override
- 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;
- }
-}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java (from rev 36, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovement.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,111 @@
+package com.franciaflex.magalie.persistence.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import java.util.Date;
+
+@Entity
+public class StorageMovement extends AbstractEntity {
+
+ @Id
+ @GeneratedValue
+ protected String id;
+
+ @ManyToOne
+ protected Site site;
+
+ @ManyToOne
+ protected Article article;
+
+ @ManyToOne
+ protected MagalieUser magalieUser;
+
+ protected double quantity;
+
+ protected Date orderDate;
+
+ protected Date confirmDate;
+
+ @Override
+ 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;
+ }
+
+ public String getSiteId() {
+ return getSite().getId();
+ }
+
+ public boolean isDriverLicenseRequired() {
+ return getSite().isDriverLicenseRequired();
+ }
+
+ public String getStoreCode() {
+ return getSite().getStoreCode();
+ }
+
+ public String getLocationCode() {
+ return getSite().getLocationCode();
+ }
+
+ public String getSiteBarcode() {
+ return getSite().getBarcode();
+ }
+}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovementOrder.java (from rev 36, trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovementOrder.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovementOrder.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StorageMovementOrder.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,104 @@
+package com.franciaflex.magalie.persistence.entity;
+
+/*
+ * #%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%
+ */
+
+import com.franciaflex.magalie.persistence.StorageMovements;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import java.util.Set;
+
+@Entity
+public class StorageMovementOrder extends AbstractEntity {
+
+ @Id
+ @GeneratedValue
+ protected String id;
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @OneToMany(cascade = CascadeType.ALL)
+ protected Set<StorageMovement> storageMovements;
+
+ public Set<StorageMovement> getStorageMovements() {
+ return storageMovements;
+ }
+
+ public void setStorageMovements(Set<StorageMovement> storageMovements) {
+ this.storageMovements = storageMovements;
+ }
+
+ public Set<StorageMovement> getSites() {
+ return storageMovements;
+ }
+
+ protected Set<Article> getArticles() {
+ Set<Article> articles =
+ Sets.newHashSet(
+ Iterables.transform(
+ getStorageMovements(),
+ StorageMovements.getArticleFunction()
+ )
+ );
+ return articles;
+ }
+
+ public Article getArticle() {
+ Article onlyElement = Iterables.getOnlyElement(getArticles());
+ return onlyElement;
+ }
+
+ public double getQuantity() {
+ double quantity = 0.;
+ for (StorageMovement storageMovement : storageMovements) {
+ quantity += storageMovement.getQuantity();
+ }
+ return quantity;
+ }
+
+ public void addStorageMovement(StorageMovement storageMovement) {
+ if (storageMovements == null) {
+ storageMovements = Sets.newLinkedHashSet();
+ }
+ storageMovements.add(storageMovement);
+ }
+
+ @Override
+ public String toString() {
+ return ToStringBuilder.reflectionToString(this);
+ }
+}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StoredArticle.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StoredArticle.java 2013-03-21 13:55:30 UTC (rev 31)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/persistence/entity/StoredArticle.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,11 +1,11 @@
-package com.franciaflex.magalie.entity;
+package com.franciaflex.magalie.persistence.entity;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
-public class StoredArticle extends AbstractJpaEntity {
+public class StoredArticle extends AbstractEntity {
@Id
protected String id;
Deleted: 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-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,228 +0,0 @@
-package com.franciaflex.magalie.services;
-
-import com.franciaflex.magalie.StoredArticles;
-import com.franciaflex.magalie.dao.StorageMovementDao;
-import com.franciaflex.magalie.dao.StorageMovementOrderDao;
-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.StorageMovementOrder;
-import com.franciaflex.magalie.entity.StoredArticle;
-import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
-import com.franciaflex.magalie.services.exception.UnavailableArticleException;
-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;
-
-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 StorageMovementTask 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)
- )
- );
-
- StorageMovementOrder storageMovementOrder = new StorageMovementOrder();
-
- StorageMovementTask storageMovementTask = new StorageMovementTask(storageMovementOrder);
-
- double quantity = 0;
-
- Date orderDate = serviceContext.getNow();
-
- for (StoredArticle storedArticle : sortedStoredArticles) {
-
- double quantityLeft = requestedQuantity - quantity;
-
- double quantityInSite = storedArticle.getQuantity();
-
- double quantityWithdrawn = Math.min(quantityLeft, quantityInSite);
-
- quantity += 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);
-
- if (quantityWithdrawn > 0.) {
-
- storageMovementOrder.addStorageMovement(newStorageMovement);
-
- } else {
-
- storageMovementTask.addExtraStorageMovement(newStorageMovement);
-
- }
-
- }
-
- StorageMovementOrderDao dao = serviceContext.getStorageMovementOrderDao();
-
- dao.persist(storageMovementOrder);
-
- return storageMovementTask;
-
- }
-
- protected List<StoredArticle> getStoredArticles(Article article) {
-
- StoredArticleDao storedArticleDao = serviceContext.getStoredArticleDao();
-
- List<StoredArticle> storedArticles = 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);
-
- }
-
- }
-
- // exclude storageMovements 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;
-
- }
-
- 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-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -2,20 +2,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.SiteErrorDao;
-import com.franciaflex.magalie.dao.StorageMovementDao;
-import com.franciaflex.magalie.dao.StorageMovementOrderDao;
-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.JpaStorageMovementOrderDao;
-import com.franciaflex.magalie.dao.jpa.JpaStoredArticleDao;
+import com.franciaflex.magalie.persistence.dao.ArticleDao;
+import com.franciaflex.magalie.persistence.dao.MagalieUserDao;
+import com.franciaflex.magalie.persistence.dao.RequestedArticleDao;
+import com.franciaflex.magalie.persistence.dao.SiteErrorDao;
+import com.franciaflex.magalie.persistence.dao.StorageMovementDao;
+import com.franciaflex.magalie.persistence.dao.StorageMovementOrderDao;
+import com.franciaflex.magalie.persistence.dao.StoredArticleDao;
+import com.franciaflex.magalie.persistence.dao.jpa.ArticleJpaDao;
+import com.franciaflex.magalie.persistence.dao.jpa.MagalieUserJpaDao;
+import com.franciaflex.magalie.persistence.dao.jpa.RequestedArticleJpaDao;
+import com.franciaflex.magalie.persistence.dao.jpa.SiteErrorJpaDao;
+import com.franciaflex.magalie.persistence.dao.jpa.StorageMovementJpaDao;
+import com.franciaflex.magalie.persistence.dao.jpa.StorageMovementOrderJpaDao;
+import com.franciaflex.magalie.persistence.dao.jpa.StoredArticleJpaDao;
import javax.persistence.EntityManager;
import java.lang.reflect.Constructor;
@@ -84,36 +84,36 @@
@Override
public MagalieUserDao getMagalieUserDao() {
- return new JpaMagalieUserDao(entityManager);
+ return new MagalieUserJpaDao(entityManager);
}
@Override
public StoredArticleDao getStoredArticleDao() {
- return new JpaStoredArticleDao(entityManager);
+ return new StoredArticleJpaDao(entityManager);
}
@Override
public RequestedArticleDao getRequestedArticleDao() {
- return new JpaRequestedArticleDao(entityManager);
+ return new RequestedArticleJpaDao(entityManager);
}
@Override
public ArticleDao getArticleDao() {
- return new JpaArticleDao(entityManager);
+ return new ArticleJpaDao(entityManager);
}
@Override
public StorageMovementDao getStorageMovementDao() {
- return new JpaStorageMovementDao(entityManager);
+ return new StorageMovementJpaDao(entityManager);
}
@Override
public SiteErrorDao getSiteErrorDao() {
- return new JpaSiteErrorDao(entityManager);
+ return new SiteErrorJpaDao(entityManager);
}
@Override
public StorageMovementOrderDao getStorageMovementOrderDao() {
- return new JpaStorageMovementOrderDao(entityManager);
+ return new StorageMovementOrderJpaDao(entityManager);
}
}
Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,52 +0,0 @@
-package com.franciaflex.magalie.services;
-
-import com.franciaflex.magalie.entity.Article;
-import com.franciaflex.magalie.entity.MagalieUser;
-import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
-import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
-import com.franciaflex.magalie.services.exception.UnavailableArticleException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class FulfilKanbanService implements MagalieService {
-
- private static final Log log = LogFactory.getLog(FulfilKanbanService.class);
-
- protected MagalieServiceContext serviceContext;
-
- @Override
- public void setServiceContext(MagalieServiceContext serviceContext) {
- this.serviceContext = serviceContext;
- }
-
- public StorageMovementTask fulfilKanbanTask(
- String articleBarcode,
- MagalieUser magalieUser) throws InvalidMagalieBarcodeException,
- UnavailableArticleException,
- RequiredDriverLicenceException {
-
- if (log.isInfoEnabled()) {
- log.info(magalieUser + " requested fulfil kanban with barcode " + articleBarcode);
- }
-
- MagalieBarcodeService magalieBarcodeService =
- serviceContext.newService(MagalieBarcodeService.class);
-
- Article article = magalieBarcodeService.getArticle(articleBarcode);
-
- double quantityInKanban = article.getQuantityInKanban();
-
- ArticleStorageService articleStorageService =
- serviceContext.newService(ArticleStorageService.class);
-
-
- StorageMovementTask storageMovementTask =
- articleStorageService.withdrawArticle(
- magalieUser,
- article,
- quantityInKanban);
-
- return storageMovementTask;
-
- }
-}
Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,59 +0,0 @@
-package com.franciaflex.magalie.services;
-
-import com.franciaflex.magalie.dao.ArticleDao;
-import com.franciaflex.magalie.entity.Article;
-import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
-import com.google.common.base.Splitter;
-import com.google.common.collect.Iterables;
-
-public class MagalieBarcodeService implements MagalieService {
-
- protected MagalieServiceContext serviceContext;
-
- protected static final String BARCODE_ELEMENTS_SEPARATOR = "_";
-
- protected static final String ARTICLE_BARCODE_PREFIX = "ART";
-
- @Override
- public void setServiceContext(MagalieServiceContext serviceContext) {
- this.serviceContext = serviceContext;
- }
-
- public Article getArticle(String articleBarcode) throws InvalidMagalieBarcodeException {
-
- Iterable<String> split = Splitter.on(BARCODE_ELEMENTS_SEPARATOR).split(articleBarcode);
-
- if (Iterables.size(split) != 2) {
-
- throw new InvalidMagalieBarcodeException("Unexpected barcode format, 2 parts expected");
-
- }
-
- String prefix = Iterables.get(split, 0);
-
- if ( ! ARTICLE_BARCODE_PREFIX.equals(prefix)) {
-
- throw new InvalidMagalieBarcodeException(
- "not an article barcode. expected prefix '"
- + ARTICLE_BARCODE_PREFIX + ", '" + prefix + "' found.");
-
- }
-
- String articleCode = Iterables.get(split, 1);
-
- ArticleDao articleDao = serviceContext.getArticleDao();
-
- Article article = articleDao.findByCode(articleCode);
-
- if (article == null) {
-
- throw new InvalidMagalieBarcodeException(
- "no article with code " + articleCode);
-
- }
-
- return article;
-
- }
-
-}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,9 +1,9 @@
package com.franciaflex.magalie.services;
-import com.franciaflex.magalie.StorageMovements;
-import com.franciaflex.magalie.entity.MagalieUser;
-import com.franciaflex.magalie.entity.SiteError;
-import com.franciaflex.magalie.entity.StorageMovement;
+import com.franciaflex.magalie.persistence.StorageMovements;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.SiteError;
+import com.franciaflex.magalie.persistence.entity.StorageMovement;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
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-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -24,13 +24,13 @@
*/
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.SiteErrorDao;
-import com.franciaflex.magalie.dao.StorageMovementDao;
-import com.franciaflex.magalie.dao.StorageMovementOrderDao;
-import com.franciaflex.magalie.dao.StoredArticleDao;
+import com.franciaflex.magalie.persistence.dao.ArticleDao;
+import com.franciaflex.magalie.persistence.dao.MagalieUserDao;
+import com.franciaflex.magalie.persistence.dao.RequestedArticleDao;
+import com.franciaflex.magalie.persistence.dao.SiteErrorDao;
+import com.franciaflex.magalie.persistence.dao.StorageMovementDao;
+import com.franciaflex.magalie.persistence.dao.StorageMovementOrderDao;
+import com.franciaflex.magalie.persistence.dao.StoredArticleDao;
import java.util.Date;
Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,39 +0,0 @@
-package com.franciaflex.magalie.services;
-
-import com.franciaflex.magalie.dao.MagalieUserDao;
-import com.franciaflex.magalie.entity.MagalieUser;
-import com.google.common.base.Preconditions;
-
-import java.util.List;
-
-public class MagalieUsersService implements MagalieService {
-
- protected MagalieServiceContext serviceContext;
-
- @Override
- public void setServiceContext(MagalieServiceContext serviceContext) {
- this.serviceContext = serviceContext;
- }
-
- public MagalieUser getMagalieUser(String login) {
-
- MagalieUserDao dao = serviceContext.getMagalieUserDao();
-
- MagalieUser magalieUser = dao.findByLogin(login);
-
- Preconditions.checkArgument(magalieUser != null, "there is no user with login '" + login + "'");
-
- return magalieUser;
-
- }
-
- public List<MagalieUser> getAllMagalieUsers() {
-
- MagalieUserDao dao = serviceContext.getMagalieUserDao();
-
- List<MagalieUser> allMagalieUsers = dao.findAll();
-
- return allMagalieUsers;
-
- }
-}
Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,50 +0,0 @@
-package com.franciaflex.magalie.services;
-
-import com.franciaflex.magalie.dao.StorageMovementDao;
-import com.franciaflex.magalie.entity.MagalieUser;
-import com.franciaflex.magalie.entity.SiteError;
-import com.franciaflex.magalie.entity.StorageMovement;
-
-import java.util.Date;
-import java.util.List;
-
-public class ReportService implements MagalieService {
-
- protected MagalieServiceContext serviceContext;
-
- @Override
- public void setServiceContext(MagalieServiceContext serviceContext) {
- this.serviceContext = serviceContext;
- }
-
- public MagalieReport getReport() {
-
- MagalieReport magalieReport = new MagalieReport();
-
- Date now = serviceContext.getNow();
-
- magalieReport.setReportDate(now);
-
- MagalieUsersService magalieUsersService = serviceContext.newService(MagalieUsersService.class);
-
- List<MagalieUser> allMagalieUsers = magalieUsersService.getAllMagalieUsers();
-
- magalieReport.setAllMagalieUsers(allMagalieUsers);
-
- StorageMovementDao storageMovementDao = serviceContext.getStorageMovementDao();
-
- List<StorageMovement> allStorageMovements = storageMovementDao.findAll();
-
- magalieReport.setAllStorageMovements(allStorageMovements);
-
- SiteErrorsService siteErrorsService = serviceContext.newService(SiteErrorsService.class);
-
- List<SiteError> allSitesInError = siteErrorsService.getAllSiteErrors();
-
- magalieReport.setAllSiteErrors(allSitesInError);
-
- return magalieReport;
-
- }
-
-}
Deleted: 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-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,63 +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%
- */
-
-import com.franciaflex.magalie.dao.ArticleDao;
-import com.franciaflex.magalie.dao.MagalieUserDao;
-import com.franciaflex.magalie.entity.Article;
-import com.franciaflex.magalie.entity.MagalieUser;
-import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
-import com.franciaflex.magalie.services.exception.UnavailableArticleException;
-
-public class RequestedItemService implements MagalieService {
-
- protected MagalieServiceContext serviceContext;
-
- public void setServiceContext(MagalieServiceContext serviceContext) {
- this.serviceContext = serviceContext;
- }
-
- public StorageMovementTask getWithdrawTask() throws RequiredDriverLicenceException, UnavailableArticleException {
-
- ArticleStorageService articleStorageService = serviceContext.newService(ArticleStorageService.class);
-
- ArticleDao articleDao = serviceContext.getArticleDao();
-
- MagalieUserDao magalieUserDao = serviceContext.getMagalieUserDao();
-
- MagalieUser alexandre = magalieUserDao.findById("magalie_user_alexandre");
-
- Article article1 = articleDao.findById("article1");
-
- StorageMovementTask storageMovementTask =
- articleStorageService.withdrawArticle(
- alexandre,
- article1,
- 40.
- );
-
- return storageMovementTask;
-
- }
-}
Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,73 +0,0 @@
-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.getNow();
-
- 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;
-
- }
-
- public List<SiteError> getAllSiteErrors() {
-
- SiteErrorDao siteErrorDao = serviceContext.getSiteErrorDao();
-
- List<SiteError> allSiteErrors = siteErrorDao.findAll();
-
- return allSiteErrors;
-
- }
-}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/StorageMovementTask.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/StorageMovementTask.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/StorageMovementTask.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,8 +1,8 @@
package com.franciaflex.magalie.services;
-import com.franciaflex.magalie.entity.Article;
-import com.franciaflex.magalie.entity.StorageMovement;
-import com.franciaflex.magalie.entity.StorageMovementOrder;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.StorageMovement;
+import com.franciaflex.magalie.persistence.entity.StorageMovementOrder;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
Deleted: 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-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,27 +0,0 @@
-package com.franciaflex.magalie.services;
-
-import com.franciaflex.magalie.entity.StoredArticle;
-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;
- }
-
-
-
- @Override
- public String toString() {
- return ToStringBuilder.reflectionToString(this);
- }
-}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/RequiredDriverLicenceException.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/RequiredDriverLicenceException.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/RequiredDriverLicenceException.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,7 +1,7 @@
package com.franciaflex.magalie.services.exception;
-import com.franciaflex.magalie.entity.Article;
-import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
public class RequiredDriverLicenceException extends MagalieException {
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/UnavailableArticleException.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/UnavailableArticleException.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/UnavailableArticleException.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,6 +1,6 @@
package com.franciaflex.magalie.services.exception;
-import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.persistence.entity.Article;
public class UnavailableArticleException extends MagalieException {
Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java (from rev 37, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java)
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ArticleStorageService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,231 @@
+package com.franciaflex.magalie.services.service;
+
+import com.franciaflex.magalie.persistence.StoredArticles;
+import com.franciaflex.magalie.persistence.dao.StorageMovementDao;
+import com.franciaflex.magalie.persistence.dao.StorageMovementOrderDao;
+import com.franciaflex.magalie.persistence.dao.StoredArticleDao;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.Site;
+import com.franciaflex.magalie.persistence.entity.StorageMovement;
+import com.franciaflex.magalie.persistence.entity.StorageMovementOrder;
+import com.franciaflex.magalie.persistence.entity.StoredArticle;
+import com.franciaflex.magalie.services.MagalieService;
+import com.franciaflex.magalie.services.MagalieServiceContext;
+import com.franciaflex.magalie.services.StorageMovementTask;
+import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
+import com.franciaflex.magalie.services.exception.UnavailableArticleException;
+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;
+
+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 StorageMovementTask 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)
+ )
+ );
+
+ StorageMovementOrder storageMovementOrder = new StorageMovementOrder();
+
+ StorageMovementTask storageMovementTask = new StorageMovementTask(storageMovementOrder);
+
+ double quantity = 0;
+
+ Date orderDate = serviceContext.getNow();
+
+ for (StoredArticle storedArticle : sortedStoredArticles) {
+
+ double quantityLeft = requestedQuantity - quantity;
+
+ double quantityInSite = storedArticle.getQuantity();
+
+ double quantityWithdrawn = Math.min(quantityLeft, quantityInSite);
+
+ quantity += 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);
+
+ if (quantityWithdrawn > 0.) {
+
+ storageMovementOrder.addStorageMovement(newStorageMovement);
+
+ } else {
+
+ storageMovementTask.addExtraStorageMovement(newStorageMovement);
+
+ }
+
+ }
+
+ StorageMovementOrderDao dao = serviceContext.getStorageMovementOrderDao();
+
+ dao.persist(storageMovementOrder);
+
+ return storageMovementTask;
+
+ }
+
+ protected List<StoredArticle> getStoredArticles(Article article) {
+
+ StoredArticleDao storedArticleDao = serviceContext.getStoredArticleDao();
+
+ List<StoredArticle> storedArticles = 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);
+
+ }
+
+ }
+
+ // exclude storageMovements 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;
+
+ }
+
+ 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;
+
+ }
+
+}
Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java (from rev 36, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java)
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/FulfilKanbanService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,55 @@
+package com.franciaflex.magalie.services.service;
+
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.services.MagalieService;
+import com.franciaflex.magalie.services.MagalieServiceContext;
+import com.franciaflex.magalie.services.StorageMovementTask;
+import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
+import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
+import com.franciaflex.magalie.services.exception.UnavailableArticleException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class FulfilKanbanService implements MagalieService {
+
+ private static final Log log = LogFactory.getLog(FulfilKanbanService.class);
+
+ protected MagalieServiceContext serviceContext;
+
+ @Override
+ public void setServiceContext(MagalieServiceContext serviceContext) {
+ this.serviceContext = serviceContext;
+ }
+
+ public StorageMovementTask fulfilKanbanTask(
+ String articleBarcode,
+ MagalieUser magalieUser) throws InvalidMagalieBarcodeException,
+ UnavailableArticleException,
+ RequiredDriverLicenceException {
+
+ if (log.isInfoEnabled()) {
+ log.info(magalieUser + " requested fulfil kanban with barcode " + articleBarcode);
+ }
+
+ MagalieBarcodeService magalieBarcodeService =
+ serviceContext.newService(MagalieBarcodeService.class);
+
+ Article article = magalieBarcodeService.getArticle(articleBarcode);
+
+ double quantityInKanban = article.getQuantityInKanban();
+
+ ArticleStorageService articleStorageService =
+ serviceContext.newService(ArticleStorageService.class);
+
+
+ StorageMovementTask storageMovementTask =
+ articleStorageService.withdrawArticle(
+ magalieUser,
+ article,
+ quantityInKanban);
+
+ return storageMovementTask;
+
+ }
+}
Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieBarcodeService.java (from rev 36, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java)
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieBarcodeService.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieBarcodeService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,61 @@
+package com.franciaflex.magalie.services.service;
+
+import com.franciaflex.magalie.persistence.dao.ArticleDao;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.services.MagalieService;
+import com.franciaflex.magalie.services.MagalieServiceContext;
+import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
+import com.google.common.base.Splitter;
+import com.google.common.collect.Iterables;
+
+public class MagalieBarcodeService implements MagalieService {
+
+ protected MagalieServiceContext serviceContext;
+
+ protected static final String BARCODE_ELEMENTS_SEPARATOR = "_";
+
+ protected static final String ARTICLE_BARCODE_PREFIX = "ART";
+
+ @Override
+ public void setServiceContext(MagalieServiceContext serviceContext) {
+ this.serviceContext = serviceContext;
+ }
+
+ public Article getArticle(String articleBarcode) throws InvalidMagalieBarcodeException {
+
+ Iterable<String> split = Splitter.on(BARCODE_ELEMENTS_SEPARATOR).split(articleBarcode);
+
+ if (Iterables.size(split) != 2) {
+
+ throw new InvalidMagalieBarcodeException("Unexpected barcode format, 2 parts expected");
+
+ }
+
+ String prefix = Iterables.get(split, 0);
+
+ if ( ! ARTICLE_BARCODE_PREFIX.equals(prefix)) {
+
+ throw new InvalidMagalieBarcodeException(
+ "not an article barcode. expected prefix '"
+ + ARTICLE_BARCODE_PREFIX + ", '" + prefix + "' found.");
+
+ }
+
+ String articleCode = Iterables.get(split, 1);
+
+ ArticleDao articleDao = serviceContext.getArticleDao();
+
+ Article article = articleDao.findByCode(articleCode);
+
+ if (article == null) {
+
+ throw new InvalidMagalieBarcodeException(
+ "no article with code " + articleCode);
+
+ }
+
+ return article;
+
+ }
+
+}
Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieUsersService.java (from rev 37, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java)
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieUsersService.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/MagalieUsersService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,41 @@
+package com.franciaflex.magalie.services.service;
+
+import com.franciaflex.magalie.persistence.dao.MagalieUserDao;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.services.MagalieService;
+import com.franciaflex.magalie.services.MagalieServiceContext;
+import com.google.common.base.Preconditions;
+
+import java.util.List;
+
+public class MagalieUsersService implements MagalieService {
+
+ protected MagalieServiceContext serviceContext;
+
+ @Override
+ public void setServiceContext(MagalieServiceContext serviceContext) {
+ this.serviceContext = serviceContext;
+ }
+
+ public MagalieUser getMagalieUser(String login) {
+
+ MagalieUserDao dao = serviceContext.getMagalieUserDao();
+
+ MagalieUser magalieUser = dao.findByLogin(login);
+
+ Preconditions.checkArgument(magalieUser != null, "there is no user with login '" + login + "'");
+
+ return magalieUser;
+
+ }
+
+ public List<MagalieUser> getAllMagalieUsers() {
+
+ MagalieUserDao dao = serviceContext.getMagalieUserDao();
+
+ List<MagalieUser> allMagalieUsers = dao.findAll();
+
+ return allMagalieUsers;
+
+ }
+}
Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReportService.java (from rev 39, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java)
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReportService.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/ReportService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,53 @@
+package com.franciaflex.magalie.services.service;
+
+import com.franciaflex.magalie.persistence.dao.StorageMovementDao;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.SiteError;
+import com.franciaflex.magalie.persistence.entity.StorageMovement;
+import com.franciaflex.magalie.services.MagalieReport;
+import com.franciaflex.magalie.services.MagalieService;
+import com.franciaflex.magalie.services.MagalieServiceContext;
+
+import java.util.Date;
+import java.util.List;
+
+public class ReportService implements MagalieService {
+
+ protected MagalieServiceContext serviceContext;
+
+ @Override
+ public void setServiceContext(MagalieServiceContext serviceContext) {
+ this.serviceContext = serviceContext;
+ }
+
+ public MagalieReport getReport() {
+
+ MagalieReport magalieReport = new MagalieReport();
+
+ Date now = serviceContext.getNow();
+
+ magalieReport.setReportDate(now);
+
+ MagalieUsersService magalieUsersService = serviceContext.newService(MagalieUsersService.class);
+
+ List<MagalieUser> allMagalieUsers = magalieUsersService.getAllMagalieUsers();
+
+ magalieReport.setAllMagalieUsers(allMagalieUsers);
+
+ StorageMovementDao storageMovementDao = serviceContext.getStorageMovementDao();
+
+ List<StorageMovement> allStorageMovements = storageMovementDao.findAll();
+
+ magalieReport.setAllStorageMovements(allStorageMovements);
+
+ SiteErrorsService siteErrorsService = serviceContext.newService(SiteErrorsService.class);
+
+ List<SiteError> allSitesInError = siteErrorsService.getAllSiteErrors();
+
+ magalieReport.setAllSiteErrors(allSitesInError);
+
+ return magalieReport;
+
+ }
+
+}
Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java (from rev 36, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java)
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/RequestedItemService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,66 @@
+package com.franciaflex.magalie.services.service;
+
+/*
+ * #%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%
+ */
+
+import com.franciaflex.magalie.persistence.dao.ArticleDao;
+import com.franciaflex.magalie.persistence.dao.MagalieUserDao;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.services.MagalieService;
+import com.franciaflex.magalie.services.MagalieServiceContext;
+import com.franciaflex.magalie.services.StorageMovementTask;
+import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
+import com.franciaflex.magalie.services.exception.UnavailableArticleException;
+
+public class RequestedItemService implements MagalieService {
+
+ protected MagalieServiceContext serviceContext;
+
+ public void setServiceContext(MagalieServiceContext serviceContext) {
+ this.serviceContext = serviceContext;
+ }
+
+ public StorageMovementTask getWithdrawTask() throws RequiredDriverLicenceException, UnavailableArticleException {
+
+ ArticleStorageService articleStorageService = serviceContext.newService(ArticleStorageService.class);
+
+ ArticleDao articleDao = serviceContext.getArticleDao();
+
+ MagalieUserDao magalieUserDao = serviceContext.getMagalieUserDao();
+
+ MagalieUser alexandre = magalieUserDao.findById("magalie_user_alexandre");
+
+ Article article1 = articleDao.findById("article1");
+
+ StorageMovementTask storageMovementTask =
+ articleStorageService.withdrawArticle(
+ alexandre,
+ article1,
+ 40.
+ );
+
+ return storageMovementTask;
+
+ }
+}
Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SiteErrorsService.java (from rev 39, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java)
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SiteErrorsService.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/service/SiteErrorsService.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,75 @@
+package com.franciaflex.magalie.services.service;
+
+import com.franciaflex.magalie.persistence.dao.SiteErrorDao;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.Site;
+import com.franciaflex.magalie.persistence.entity.SiteError;
+import com.franciaflex.magalie.services.MagalieService;
+import com.franciaflex.magalie.services.MagalieServiceContext;
+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.getNow();
+
+ 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;
+
+ }
+
+ public List<SiteError> getAllSiteErrors() {
+
+ SiteErrorDao siteErrorDao = serviceContext.getSiteErrorDao();
+
+ List<SiteError> allSiteErrors = siteErrorDao.findAll();
+
+ return allSiteErrors;
+
+ }
+}
Deleted: trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,118 +0,0 @@
-package com.franciaflex.magalie;
-
-import com.franciaflex.magalie.entity.AbstractJpaEntity;
-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;
-
-public abstract class AbstractMagalieServiceTest {
-
- protected static final double DELTA = 0.0001;
-
- protected static MagalieFixtures fixtures;
-
- protected static MagalieApplicationConfig magalieApplicationConfig;
-
- protected JpaEntityManagerRule jpaEntityManagerRule;
-
- protected FakeMagalieServiceContext 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) {
-
- FakeMagalieServiceContext serviceContext = new FakeMagalieServiceContext();
-
- 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"));
-
- EntityTransaction transaction = entityManager.getTransaction();
-
- transaction.begin();
-
- for (AbstractJpaEntity entity : toPersist) {
-
- entityManager.persist(entity);
-
- }
-
- transaction.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;
-
- }
-
-}
Deleted: trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,29 +0,0 @@
-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 getNow() {
- 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;
- }
-
-}
Deleted: trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,98 +0,0 @@
-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);
- }
-
- 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();
-
- }
-
-}
Deleted: trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -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 {
-
- protected Map<String, Object> fixtures;
-
- public MagalieFixtures(String fixturesName) {
- String yamlPath = "/" + fixturesName + ".yaml";
- InputStream inputStream = MagalieFixtures.class.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);
- }
-}
Copied: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/AbstractMagalieServiceTest.java (from rev 32, trunk/magalie-services/src/test/java/com/franciaflex/magalie/AbstractMagalieServiceTest.java)
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/AbstractMagalieServiceTest.java (rev 0)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/AbstractMagalieServiceTest.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,117 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.MagalieApplicationConfig;
+import com.franciaflex.magalie.persistence.entity.AbstractEntity;
+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;
+
+public abstract class AbstractMagalieServiceTest {
+
+ protected static final double DELTA = 0.0001;
+
+ protected static MagalieFixtures fixtures;
+
+ protected static MagalieApplicationConfig magalieApplicationConfig;
+
+ protected JpaEntityManagerRule jpaEntityManagerRule;
+
+ protected FakeMagalieServiceContext 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) {
+
+ FakeMagalieServiceContext serviceContext = new FakeMagalieServiceContext();
+
+ serviceContext.setMagalieApplicationConfig(getMagalieApplicationConfig());
+
+ EntityManager entityManager = getJpaEntityManagerRule().getEntityManager();
+
+ serviceContext.setEntityManager(entityManager);
+
+ MagalieFixtures fixtures = getFixtures();
+
+ List<AbstractEntity> toPersist = Lists.newArrayList();
+
+ toPersist.addAll(fixtures.<Collection<? extends AbstractEntity>>fixture("users"));
+ toPersist.addAll(fixtures.<Collection<? extends AbstractEntity>>fixture("sites"));
+ toPersist.addAll(fixtures.<Collection<? extends AbstractEntity>>fixture("articles"));
+ toPersist.addAll(fixtures.<Collection<? extends AbstractEntity>>fixture("storedArticles"));
+
+ EntityTransaction transaction = entityManager.getTransaction();
+
+ transaction.begin();
+
+ for (AbstractEntity entity : toPersist) {
+
+ entityManager.persist(entity);
+
+ }
+
+ transaction.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;
+
+ }
+
+}
Deleted: 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-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,229 +0,0 @@
-package com.franciaflex.magalie.services;
-
-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.franciaflex.magalie.entity.StorageMovement;
-import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
-import com.franciaflex.magalie.services.exception.UnavailableArticleException;
-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 java.text.ParseException;
-import java.util.Date;
-
-public class ArticleStorageServiceTest extends AbstractMagalieServiceTest {
-
- private static final Log log = LogFactory.getLog(ArticleStorageServiceTest.class);
-
- protected ArticleStorageService service;
-
- @Before
- public void setUp() throws ParseException {
-
- service = newService(ArticleStorageService.class);
-
- serviceContext.setDate(new Date(1363948427576l));
-
- }
-
- @Test
- public void testThrowUnavailableArticle() throws Exception {
-
- MagalieUser basile = fixture("basile");
- Article article = fixture("article1");
- StorageMovementTask storageMovementTask;
-
- try {
- storageMovementTask = service.withdrawArticle(basile, article, 100.);
- if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
- }
- 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 = fixture("basile");
- Article article = fixture("article1");
- StorageMovementTask storageMovementTask;
-
- try {
- storageMovementTask = service.withdrawArticle(basile, article, 70.);
- if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
- }
- 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 = fixture("basile");
- Article article = fixture("article1");
- StorageMovementTask storageMovementTask = null;
-
- try {
- storageMovementTask = service.withdrawArticle(basile, article, 50.);
- if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
- }
- } 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, storageMovementTask.getSites().size());
- }
-
- @Test
- public void testWithdrawArticleWithDriverLicense() throws Exception {
-
- MagalieUser alexandre = fixture("alexandre");
- Article article = fixture("article1");
- StorageMovementTask storageMovementTask = null;
-
- try {
- storageMovementTask = service.withdrawArticle(alexandre, article, 50.);
- if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
- }
- } 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, storageMovementTask.getSites().size());
- StorageMovement site1 = Iterables.get(storageMovementTask.getSites(), 0, null);
- Assert.assertEquals(-20., site1.getQuantity(), DELTA);
- StorageMovement site2 = Iterables.get(storageMovementTask.getSites(), 1, null);
- Assert.assertEquals(-30., site2.getQuantity(), DELTA);
- }
-
- @Test
- public void testWithdrawArticleConsiderAlreadyRemovedItem() throws Exception {
-
- MagalieUser alexandre = fixture("alexandre");
- MagalieUser cathy = fixture("cathy");
-
- Article article = fixture("article1");
-
- StorageMovementTask storageMovementTask = null;
-
- try {
- storageMovementTask = service.withdrawArticle(alexandre, article, 30.);
- if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
- }
- Assert.assertEquals(2, storageMovementTask.getSites().size());
- StorageMovement storageMovement1 = Iterables.get(storageMovementTask.getSites(), 0, null);
- Assert.assertEquals(-20., storageMovement1.getQuantity(), DELTA);
- Assert.assertEquals("B2", storageMovement1.getSite().getLocationCode());
- StorageMovement storageMovement2 = Iterables.get(storageMovementTask.getSites(), 1, null);
- Assert.assertEquals(-10., storageMovement2.getQuantity(), DELTA);
- Assert.assertEquals("A1", storageMovement2.getSite().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 {
- storageMovementTask = service.withdrawArticle(cathy, article, 30.);
- if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
- }
- Assert.assertEquals(1, storageMovementTask.getSites().size());
- StorageMovement storageMovement = Iterables.get(storageMovementTask.getSites(), 0, null);
- Assert.assertEquals(-30., storageMovement.getQuantity(), DELTA);
- Assert.assertEquals("A1", storageMovement.getSite().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();
- }
- }
-
- @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 {
- StorageMovementTask storageMovementTask = service.withdrawArticle(cathy, article, 30.);
- if (log.isDebugEnabled()) {
- log.debug("storageMovementTask = " + storageMovementTask);
- }
- Assert.assertEquals(1, storageMovementTask.getSites().size());
- StorageMovement storageMovement = Iterables.get(storageMovementTask.getSites(), 0, null);
- Assert.assertNotEquals(
- "site2 must not be returned because it was reported in error",
- site2.getId(),
- storageMovement.getSite().getId());
- } 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();
- }
- }
-
-
-}
Copied: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/FakeMagalieServiceContext.java (from rev 37, trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java)
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/FakeMagalieServiceContext.java (rev 0)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/FakeMagalieServiceContext.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,28 @@
+package com.franciaflex.magalie.services;
+
+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 getNow() {
+ 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;
+ }
+
+}
Copied: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/JpaEntityManagerRule.java (from rev 32, trunk/magalie-services/src/test/java/com/franciaflex/magalie/JpaEntityManagerRule.java)
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/JpaEntityManagerRule.java (rev 0)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/JpaEntityManagerRule.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,99 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.persistence.JpaUtil;
+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);
+ }
+
+ 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();
+
+ }
+
+}
Copied: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/MagalieFixtures.java (from rev 31, trunk/magalie-services/src/test/java/com/franciaflex/magalie/MagalieFixtures.java)
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/MagalieFixtures.java (rev 0)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/MagalieFixtures.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,47 @@
+package com.franciaflex.magalie.services;
+
+import com.esotericsoftware.yamlbeans.YamlException;
+import com.esotericsoftware.yamlbeans.YamlReader;
+import com.franciaflex.magalie.MagalieTechnicalException;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.RequestedArticle;
+import com.franciaflex.magalie.persistence.entity.Site;
+import com.franciaflex.magalie.persistence.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 = MagalieFixtures.class.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);
+ }
+}
Deleted: 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-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,32 +0,0 @@
-package com.franciaflex.magalie.services;
-
-import com.franciaflex.magalie.AbstractMagalieServiceTest;
-import com.google.common.collect.Sets;
-import org.junit.Test;
-
-import java.util.Comparator;
-import java.util.Set;
-
-public class RequestedItemServiceTest extends AbstractMagalieServiceTest {
-
- @Test
- public void testGetWithdrawTask() throws Exception {
-
- getServiceContext();
-
- 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/java/com/franciaflex/magalie/services/service/ArticleStorageServiceTest.java (from rev 36, trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java)
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ArticleStorageServiceTest.java (rev 0)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/ArticleStorageServiceTest.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,230 @@
+package com.franciaflex.magalie.services.service;
+
+import com.franciaflex.magalie.services.AbstractMagalieServiceTest;
+import com.franciaflex.magalie.persistence.entity.Article;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.Site;
+import com.franciaflex.magalie.persistence.entity.StorageMovement;
+import com.franciaflex.magalie.services.StorageMovementTask;
+import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
+import com.franciaflex.magalie.services.exception.UnavailableArticleException;
+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 java.text.ParseException;
+import java.util.Date;
+
+public class ArticleStorageServiceTest extends AbstractMagalieServiceTest {
+
+ private static final Log log = LogFactory.getLog(ArticleStorageServiceTest.class);
+
+ protected ArticleStorageService service;
+
+ @Before
+ public void setUp() throws ParseException {
+
+ service = newService(ArticleStorageService.class);
+
+ serviceContext.setDate(new Date(1363948427576l));
+
+ }
+
+ @Test
+ public void testThrowUnavailableArticle() throws Exception {
+
+ MagalieUser basile = fixture("basile");
+ Article article = fixture("article1");
+ StorageMovementTask storageMovementTask;
+
+ try {
+ storageMovementTask = service.withdrawArticle(basile, article, 100.);
+ if (log.isDebugEnabled()) {
+ log.debug("storageMovementTask = " + storageMovementTask);
+ }
+ 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 = fixture("basile");
+ Article article = fixture("article1");
+ StorageMovementTask storageMovementTask;
+
+ try {
+ storageMovementTask = service.withdrawArticle(basile, article, 70.);
+ if (log.isDebugEnabled()) {
+ log.debug("storageMovementTask = " + storageMovementTask);
+ }
+ 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 = fixture("basile");
+ Article article = fixture("article1");
+ StorageMovementTask storageMovementTask = null;
+
+ try {
+ storageMovementTask = service.withdrawArticle(basile, article, 50.);
+ if (log.isDebugEnabled()) {
+ log.debug("storageMovementTask = " + storageMovementTask);
+ }
+ } 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, storageMovementTask.getSites().size());
+ }
+
+ @Test
+ public void testWithdrawArticleWithDriverLicense() throws Exception {
+
+ MagalieUser alexandre = fixture("alexandre");
+ Article article = fixture("article1");
+ StorageMovementTask storageMovementTask = null;
+
+ try {
+ storageMovementTask = service.withdrawArticle(alexandre, article, 50.);
+ if (log.isDebugEnabled()) {
+ log.debug("storageMovementTask = " + storageMovementTask);
+ }
+ } 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, storageMovementTask.getSites().size());
+ StorageMovement site1 = Iterables.get(storageMovementTask.getSites(), 0, null);
+ Assert.assertEquals(-20., site1.getQuantity(), DELTA);
+ StorageMovement site2 = Iterables.get(storageMovementTask.getSites(), 1, null);
+ Assert.assertEquals(-30., site2.getQuantity(), DELTA);
+ }
+
+ @Test
+ public void testWithdrawArticleConsiderAlreadyRemovedItem() throws Exception {
+
+ MagalieUser alexandre = fixture("alexandre");
+ MagalieUser cathy = fixture("cathy");
+
+ Article article = fixture("article1");
+
+ StorageMovementTask storageMovementTask = null;
+
+ try {
+ storageMovementTask = service.withdrawArticle(alexandre, article, 30.);
+ if (log.isDebugEnabled()) {
+ log.debug("storageMovementTask = " + storageMovementTask);
+ }
+ Assert.assertEquals(2, storageMovementTask.getSites().size());
+ StorageMovement storageMovement1 = Iterables.get(storageMovementTask.getSites(), 0, null);
+ Assert.assertEquals(-20., storageMovement1.getQuantity(), DELTA);
+ Assert.assertEquals("B2", storageMovement1.getSite().getLocationCode());
+ StorageMovement storageMovement2 = Iterables.get(storageMovementTask.getSites(), 1, null);
+ Assert.assertEquals(-10., storageMovement2.getQuantity(), DELTA);
+ Assert.assertEquals("A1", storageMovement2.getSite().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 {
+ storageMovementTask = service.withdrawArticle(cathy, article, 30.);
+ if (log.isDebugEnabled()) {
+ log.debug("storageMovementTask = " + storageMovementTask);
+ }
+ Assert.assertEquals(1, storageMovementTask.getSites().size());
+ StorageMovement storageMovement = Iterables.get(storageMovementTask.getSites(), 0, null);
+ Assert.assertEquals(-30., storageMovement.getQuantity(), DELTA);
+ Assert.assertEquals("A1", storageMovement.getSite().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();
+ }
+ }
+
+ @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 {
+ StorageMovementTask storageMovementTask = service.withdrawArticle(cathy, article, 30.);
+ if (log.isDebugEnabled()) {
+ log.debug("storageMovementTask = " + storageMovementTask);
+ }
+ Assert.assertEquals(1, storageMovementTask.getSites().size());
+ StorageMovement storageMovement = Iterables.get(storageMovementTask.getSites(), 0, null);
+ Assert.assertNotEquals(
+ "site2 must not be returned because it was reported in error",
+ site2.getId(),
+ storageMovement.getSite().getId());
+ } 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();
+ }
+ }
+
+
+}
Copied: trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedItemServiceTest.java (from rev 36, trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java)
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedItemServiceTest.java (rev 0)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/service/RequestedItemServiceTest.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -0,0 +1,32 @@
+package com.franciaflex.magalie.services.service;
+
+import com.franciaflex.magalie.services.AbstractMagalieServiceTest;
+import com.google.common.collect.Sets;
+import org.junit.Test;
+
+import java.util.Comparator;
+import java.util.Set;
+
+public class RequestedItemServiceTest extends AbstractMagalieServiceTest {
+
+ @Test
+ public void testGetWithdrawTask() throws Exception {
+
+ getServiceContext();
+
+ 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);
+ }
+}
Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -24,11 +24,11 @@
*/
import com.franciaflex.magalie.MagalieApplicationConfig;
-import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
import com.franciaflex.magalie.services.DefaultMagalieServiceContext;
import com.franciaflex.magalie.services.MagalieService;
import com.franciaflex.magalie.services.MagalieServiceContext;
-import com.franciaflex.magalie.services.MagalieUsersService;
+import com.franciaflex.magalie.services.service.MagalieUsersService;
import com.google.common.base.Preconditions;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,6 +1,6 @@
package com.franciaflex.magalie.web;
-import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
import java.io.Serializable;
Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,7 +1,7 @@
package com.franciaflex.magalie.web.action;
-import com.franciaflex.magalie.entity.MagalieUser;
-import com.franciaflex.magalie.services.FulfilKanbanService;
+import com.franciaflex.magalie.persistence.entity.MagalieUser;
+import com.franciaflex.magalie.services.service.FulfilKanbanService;
import com.franciaflex.magalie.services.StorageMovementTask;
import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java 2013-03-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -1,7 +1,7 @@
package com.franciaflex.magalie.web.action;
import com.franciaflex.magalie.services.MagalieReport;
-import com.franciaflex.magalie.services.ReportService;
+import com.franciaflex.magalie.services.service.ReportService;
import com.franciaflex.magalie.web.MagalieActionSupport;
public class ReportAction extends MagalieActionSupport {
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-25 17:06:46 UTC (rev 39)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-03-26 10:18:13 UTC (rev 40)
@@ -23,7 +23,7 @@
* #L%
*/
-import com.franciaflex.magalie.services.RequestedItemService;
+import com.franciaflex.magalie.services.service.RequestedItemService;
import com.franciaflex.magalie.services.StorageMovementTask;
import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
import com.franciaflex.magalie.services.exception.UnavailableArticleException;
1
0
r39 - 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-web/src/main/webapp/WEB-INF/content
by bleny@users.forge.codelutin.com 25 Mar '13
by bleny@users.forge.codelutin.com 25 Mar '13
25 Mar '13
Author: bleny
Date: 2013-03-25 18:06:46 +0100 (Mon, 25 Mar 2013)
New Revision: 39
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
refs #2204: show sites in error
Modified:
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/MagalieReport.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java
trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/SiteErrorDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/SiteErrorDao.java 2013-03-25 15:47:59 UTC (rev 38)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/SiteErrorDao.java 2013-03-25 17:06:46 UTC (rev 39)
@@ -14,4 +14,6 @@
List<Site> getAllSitesInError();
+ List<SiteError> findAll();
+
}
Modified: 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 2013-03-25 15:47:59 UTC (rev 38)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaSiteErrorDao.java 2013-03-25 17:06:46 UTC (rev 39)
@@ -37,4 +37,11 @@
List<Site> allSitesInError = query.getResultList();
return allSitesInError;
}
+
+ @Override
+ public List<SiteError> findAll() {
+ Query query = entityManager.createQuery("from SiteError se order by se.reportDate");
+ List<SiteError> all = query.getResultList();
+ return all;
+ }
}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java 2013-03-25 15:47:59 UTC (rev 38)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java 2013-03-25 17:06:46 UTC (rev 39)
@@ -2,6 +2,7 @@
import com.franciaflex.magalie.StorageMovements;
import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.entity.SiteError;
import com.franciaflex.magalie.entity.StorageMovement;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
@@ -17,6 +18,8 @@
protected List<StorageMovement> allStorageMovements;
+ protected List<SiteError> allSiteErrors;
+
public void setReportDate(Date reportDate) {
this.reportDate = reportDate;
}
@@ -58,4 +61,12 @@
);
return confirmedStorageMovements;
}
+
+ public List<SiteError> getAllSiteErrors() {
+ return allSiteErrors;
+ }
+
+ public void setAllSiteErrors(List<SiteError> allSiteErrors) {
+ this.allSiteErrors = allSiteErrors;
+ }
}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java 2013-03-25 15:47:59 UTC (rev 38)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java 2013-03-25 17:06:46 UTC (rev 39)
@@ -2,6 +2,7 @@
import com.franciaflex.magalie.dao.StorageMovementDao;
import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.entity.SiteError;
import com.franciaflex.magalie.entity.StorageMovement;
import java.util.Date;
@@ -36,6 +37,12 @@
magalieReport.setAllStorageMovements(allStorageMovements);
+ SiteErrorsService siteErrorsService = serviceContext.newService(SiteErrorsService.class);
+
+ List<SiteError> allSitesInError = siteErrorsService.getAllSiteErrors();
+
+ magalieReport.setAllSiteErrors(allSitesInError);
+
return magalieReport;
}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java 2013-03-25 15:47:59 UTC (rev 38)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java 2013-03-25 17:06:46 UTC (rev 39)
@@ -60,4 +60,14 @@
return allSitesInError;
}
+
+ public List<SiteError> getAllSiteErrors() {
+
+ SiteErrorDao siteErrorDao = serviceContext.getSiteErrorDao();
+
+ List<SiteError> allSiteErrors = siteErrorDao.findAll();
+
+ return allSiteErrors;
+
+ }
}
Modified: trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp
===================================================================
--- trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp 2013-03-25 15:47:59 UTC (rev 38)
+++ trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp 2013-03-25 17:06:46 UTC (rev 39)
@@ -138,6 +138,55 @@
</section>
<section>
+ <h2>Emplacements en erreur</h2>
+
+ <table class="table">
+ <thead>
+ <tr>
+ <th>
+ Id
+ </th>
+ <th>
+ Magasin
+ </th>
+ <th>
+ Emplacement
+ </th>
+ <th>
+ Rapporteur
+ </th>
+ <th>
+ Date
+ </th>
+ </tr>
+ </thead>
+
+ <tbody>
+ <s:iterator value="report.allSiteErrors">
+ <tr>
+ <td>
+ <s:property value="id" />
+ </td>
+ <td>
+ <s:property value="site.storeCode" />
+ </td>
+ <td>
+ <s:property value="site.locationCode" />
+ </td>
+ <td>
+ <s:property value="magalieUser.name" />
+ </td>
+ <td>
+ <s:property value="reportDate" />
+ </td>
+ </tr>
+ </s:iterator>
+ </tbody>
+
+ </table>
+</section>
+
+<section>
<h2>Utilisateurs connus</h2>
<table class="table">
1
0
r38 - 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-services/src/main/java/com/franciaflex/magalie/services magalie-web/src/main/webapp/WEB-INF/content
by bleny@users.forge.codelutin.com 25 Mar '13
by bleny@users.forge.codelutin.com 25 Mar '13
25 Mar '13
Author: bleny
Date: 2013-03-25 16:47:59 +0100 (Mon, 25 Mar 2013)
New Revision: 38
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
refs #2204: show storage movements
Modified:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java
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/main/java/com/franciaflex/magalie/services/MagalieReport.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java
trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java 2013-03-25 15:13:20 UTC (rev 37)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java 2013-03-25 15:47:59 UTC (rev 38)
@@ -3,6 +3,8 @@
import com.franciaflex.magalie.entity.Article;
import com.franciaflex.magalie.entity.StorageMovement;
import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
public class StorageMovements {
@@ -14,7 +16,23 @@
}
}
+ protected static class StorageMovementIsConfirmedPredicate implements Predicate<StorageMovement> {
+
+ @Override
+ public boolean apply(StorageMovement storageMovement) {
+ return storageMovement.isConfirmed();
+ }
+ }
+
public static Function<StorageMovement, Article> getArticleFunction() {
return new GetArticleFunction();
}
+
+ public static Predicate<StorageMovement> storageMovementIsConfirmed() {
+ return new StorageMovementIsConfirmedPredicate();
+ }
+
+ public static Predicate<StorageMovement> storageMovementIsNotConfirmed() {
+ return Predicates.not(storageMovementIsConfirmed());
+ }
}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementDao.java 2013-03-25 15:13:20 UTC (rev 37)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementDao.java 2013-03-25 15:47:59 UTC (rev 38)
@@ -12,4 +12,6 @@
List<StorageMovement> findAllByArticle(Article article);
+ List<StorageMovement> findAll();
+
}
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-25 15:13:20 UTC (rev 37)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementDao.java 2013-03-25 15:47:59 UTC (rev 38)
@@ -26,4 +26,9 @@
return query.getResultList();
}
+ @Override
+ public List<StorageMovement> findAll() {
+ Query query = entityManager.createQuery("from StorageMovement sm order by sm.orderDate");
+ return query.getResultList();
+ }
}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java 2013-03-25 15:13:20 UTC (rev 37)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java 2013-03-25 15:47:59 UTC (rev 38)
@@ -1,6 +1,10 @@
package com.franciaflex.magalie.services;
+import com.franciaflex.magalie.StorageMovements;
import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.entity.StorageMovement;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
import java.util.Date;
import java.util.List;
@@ -8,12 +12,19 @@
public class MagalieReport {
protected Date reportDate;
- private List<MagalieUser> allMagalieUsers;
+ protected List<MagalieUser> allMagalieUsers;
+
+ protected List<StorageMovement> allStorageMovements;
+
public void setReportDate(Date reportDate) {
this.reportDate = reportDate;
}
+ public Date getReportDate() {
+ return reportDate;
+ }
+
public void setAllMagalieUsers(List<MagalieUser> allMagalieUsers) {
this.allMagalieUsers = allMagalieUsers;
}
@@ -21,4 +32,30 @@
public List<MagalieUser> getAllMagalieUsers() {
return allMagalieUsers;
}
+
+ public void setAllStorageMovements(List<StorageMovement> allStorageMovements) {
+ this.allStorageMovements = allStorageMovements;
+ }
+
+ public List<StorageMovement> getConfirmedStorageMovements() {
+ ImmutableList<StorageMovement> confirmedStorageMovements =
+ ImmutableList.copyOf(
+ Iterables.filter(
+ allStorageMovements,
+ StorageMovements.storageMovementIsConfirmed()
+ )
+ );
+ return confirmedStorageMovements;
+ }
+
+ public List<StorageMovement> getNotConfirmedStorageMovements() {
+ ImmutableList<StorageMovement> confirmedStorageMovements =
+ ImmutableList.copyOf(
+ Iterables.filter(
+ allStorageMovements,
+ StorageMovements.storageMovementIsNotConfirmed()
+ )
+ );
+ return confirmedStorageMovements;
+ }
}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java 2013-03-25 15:13:20 UTC (rev 37)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java 2013-03-25 15:47:59 UTC (rev 38)
@@ -1,6 +1,8 @@
package com.franciaflex.magalie.services;
+import com.franciaflex.magalie.dao.StorageMovementDao;
import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.entity.StorageMovement;
import java.util.Date;
import java.util.List;
@@ -28,6 +30,12 @@
magalieReport.setAllMagalieUsers(allMagalieUsers);
+ StorageMovementDao storageMovementDao = serviceContext.getStorageMovementDao();
+
+ List<StorageMovement> allStorageMovements = storageMovementDao.findAll();
+
+ magalieReport.setAllStorageMovements(allStorageMovements);
+
return magalieReport;
}
Modified: trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp
===================================================================
--- trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp 2013-03-25 15:13:20 UTC (rev 37)
+++ trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp 2013-03-25 15:47:59 UTC (rev 38)
@@ -7,7 +7,137 @@
<h1>Rapport MagaLiE</h1>
+<p>
+ <s:property value="report.reportDate" />
+</p>
+
<section>
+ <h2>Mouvements de stocks prévus (non confirmés)</h2>
+
+ <table class="table">
+ <thead>
+ <tr>
+ <th>
+ Id
+ </th>
+ <th>
+ Magasin
+ </th>
+ <th>
+ Emplacement
+ </th>
+ <th>
+ Article
+ </th>
+ <th>
+ Quantité
+ </th>
+ <th>
+ Utilisateur
+ </th>
+ <th>
+ Date ordre
+ </th>
+ </tr>
+ </thead>
+
+ <tbody>
+ <s:iterator value="report.notConfirmedStorageMovements">
+ <tr>
+ <td>
+ <s:property value="id" />
+ </td>
+ <td>
+ <s:property value="site.storeCode" />
+ </td>
+ <td>
+ <s:property value="site.locationCode" />
+ </td>
+ <td>
+ <s:property value="article.code" />
+ </td>
+ <td>
+ <s:property value="quantity" /> <s:property value="article.unit" />
+ </td>
+ <td>
+ <a href="#<s:property value="magalieUser.id" />"><s:property value="magalieUser.login" /></a>
+ </td>
+ <td>
+ <s:property value="orderDate" />
+ </td>
+ </tr>
+ </s:iterator>
+ </tbody>
+ </table>
+</section>
+
+<section>
+ <h2>Mouvements de stocks confirmés</h2>
+
+ <table class="table">
+ <thead>
+ <tr>
+ <th>
+ Id
+ </th>
+ <th>
+ Magasin
+ </th>
+ <th>
+ Emplacement
+ </th>
+ <th>
+ Article
+ </th>
+ <th>
+ Quantité
+ </th>
+ <th>
+ Utilisateur
+ </th>
+ <th>
+ Date ordre
+ </th>
+ <th>
+ Date confirmation
+ </th>
+ </tr>
+ </thead>
+
+ <tbody>
+ <s:iterator value="report.confirmedStorageMovements">
+ <tr>
+ <td>
+ <s:property value="id" />
+ </td>
+ <td>
+ <s:property value="site.storeCode" />
+ </td>
+ <td>
+ <s:property value="site.locationCode" />
+ </td>
+ <td>
+ <s:property value="article.code" />
+ </td>
+ <td>
+ <s:property value="quantity" /> <s:property value="article.unit" />
+ </td>
+ <td>
+ <a href="#<s:property value="magalieUser.id" />"><s:property value="magalieUser.login" /></a>
+ </td>
+ <td>
+ <s:property value="orderDate" />
+ </td>
+ <td>
+ <s:property value="confirmDate" />
+ </td>
+ </tr>
+ </s:iterator>
+ </tbody>
+ </table>
+</section>
+
+<section>
<h2>Utilisateurs connus</h2>
<table class="table">
@@ -29,10 +159,10 @@
</thead>
<tbody>
- <s:iterator value="report.allMagalieUsers" var="magalieUser">
+ <s:iterator value="report.allMagalieUsers">
<tr>
<td>
- <s:property value="id" />
+ <a name="<s:property value="id" />"><s:property value="id" /></a>
</td>
<td>
<s:property value="login" />
1
0
r37 - 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-web/src/main/java/com/franciaflex/magalie/web/action magalie-web/src/main/webapp/WEB-INF/content
by bleny@users.forge.codelutin.com 25 Mar '13
by bleny@users.forge.codelutin.com 25 Mar '13
25 Mar '13
Author: bleny
Date: 2013-03-25 16:13:20 +0100 (Mon, 25 Mar 2013)
New Revision: 37
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
refs #2204: Page de rapport Magalie, start
Added:
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java
trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp
Modified:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaMagalieUserDao.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/main/java/com/franciaflex/magalie/services/MagalieUsersService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java
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-25 14:46:07 UTC (rev 36)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java 2013-03-25 15:13:20 UTC (rev 37)
@@ -2,6 +2,8 @@
import com.franciaflex.magalie.entity.MagalieUser;
+import java.util.List;
+
/**
* @author bleny
*/
@@ -9,4 +11,6 @@
MagalieUser findByLogin(String login);
+ List<MagalieUser> findAll();
+
}
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-25 14:46:07 UTC (rev 36)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaMagalieUserDao.java 2013-03-25 15:13:20 UTC (rev 37)
@@ -27,4 +27,11 @@
MagalieUser onlyElement = Iterables.getOnlyElement(resultList, null);
return onlyElement;
}
+
+ @Override
+ public List<MagalieUser> findAll() {
+ Query query = entityManager.createQuery("from MagalieUser mu order by mu.login");
+ List<MagalieUser> resultList = query.getResultList();
+ 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-25 14:46:07 UTC (rev 36)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java 2013-03-25 15:13:20 UTC (rev 37)
@@ -85,7 +85,7 @@
double quantity = 0;
- Date orderDate = serviceContext.getDate();
+ Date orderDate = serviceContext.getNow();
for (StoredArticle storedArticle : sortedStoredArticles) {
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-25 14:46:07 UTC (rev 36)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-03-25 15:13:20 UTC (rev 37)
@@ -77,7 +77,7 @@
}
@Override
- public Date getDate() {
+ public Date getNow() {
Date now = new Date();
return now;
}
Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieReport.java 2013-03-25 15:13:20 UTC (rev 37)
@@ -0,0 +1,24 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.entity.MagalieUser;
+
+import java.util.Date;
+import java.util.List;
+
+public class MagalieReport {
+
+ protected Date reportDate;
+ private List<MagalieUser> allMagalieUsers;
+
+ public void setReportDate(Date reportDate) {
+ this.reportDate = reportDate;
+ }
+
+ public void setAllMagalieUsers(List<MagalieUser> allMagalieUsers) {
+ this.allMagalieUsers = allMagalieUsers;
+ }
+
+ public List<MagalieUser> getAllMagalieUsers() {
+ return allMagalieUsers;
+ }
+}
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-25 14:46:07 UTC (rev 36)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-03-25 15:13:20 UTC (rev 37)
@@ -39,7 +39,7 @@
*/
public interface MagalieServiceContext {
- Date getDate();
+ Date getNow();
<E extends MagalieService> E newService(Class<E> serviceClass);
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java 2013-03-25 14:46:07 UTC (rev 36)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java 2013-03-25 15:13:20 UTC (rev 37)
@@ -4,6 +4,8 @@
import com.franciaflex.magalie.entity.MagalieUser;
import com.google.common.base.Preconditions;
+import java.util.List;
+
public class MagalieUsersService implements MagalieService {
protected MagalieServiceContext serviceContext;
@@ -25,4 +27,13 @@
}
+ public List<MagalieUser> getAllMagalieUsers() {
+
+ MagalieUserDao dao = serviceContext.getMagalieUserDao();
+
+ List<MagalieUser> allMagalieUsers = dao.findAll();
+
+ return allMagalieUsers;
+
+ }
}
Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ReportService.java 2013-03-25 15:13:20 UTC (rev 37)
@@ -0,0 +1,35 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.entity.MagalieUser;
+
+import java.util.Date;
+import java.util.List;
+
+public class ReportService implements MagalieService {
+
+ protected MagalieServiceContext serviceContext;
+
+ @Override
+ public void setServiceContext(MagalieServiceContext serviceContext) {
+ this.serviceContext = serviceContext;
+ }
+
+ public MagalieReport getReport() {
+
+ MagalieReport magalieReport = new MagalieReport();
+
+ Date now = serviceContext.getNow();
+
+ magalieReport.setReportDate(now);
+
+ MagalieUsersService magalieUsersService = serviceContext.newService(MagalieUsersService.class);
+
+ List<MagalieUser> allMagalieUsers = magalieUsersService.getAllMagalieUsers();
+
+ magalieReport.setAllMagalieUsers(allMagalieUsers);
+
+ return magalieReport;
+
+ }
+
+}
Modified: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java 2013-03-25 14:46:07 UTC (rev 36)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/SiteErrorsService.java 2013-03-25 15:13:20 UTC (rev 37)
@@ -35,7 +35,7 @@
newSiteError.setSite(site);
- Date reportDate = serviceContext.getDate();
+ Date reportDate = serviceContext.getNow();
newSiteError.setReportDate(reportDate);
Modified: trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java
===================================================================
--- trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java 2013-03-25 14:46:07 UTC (rev 36)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/FakeMagalieServiceContext.java 2013-03-25 15:13:20 UTC (rev 37)
@@ -14,7 +14,7 @@
protected Date date;
@Override
- public Date getDate() {
+ public Date getNow() {
Preconditions.checkState(date != null, "you must provide a date before running service test");
if (log.isTraceEnabled()) {
log.trace("injecting fake date in service: " + date);
Added: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java (rev 0)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/ReportAction.java 2013-03-25 15:13:20 UTC (rev 37)
@@ -0,0 +1,29 @@
+package com.franciaflex.magalie.web.action;
+
+import com.franciaflex.magalie.services.MagalieReport;
+import com.franciaflex.magalie.services.ReportService;
+import com.franciaflex.magalie.web.MagalieActionSupport;
+
+public class ReportAction extends MagalieActionSupport {
+
+ protected ReportService service;
+
+ protected MagalieReport report;
+
+ public void setService(ReportService service) {
+ this.service = service;
+ }
+
+ @Override
+ public String execute() {
+
+ report = service.getReport();
+
+ return SUCCESS;
+
+ }
+
+ public MagalieReport getReport() {
+ return report;
+ }
+}
Added: trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp
===================================================================
--- trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp (rev 0)
+++ trunk/magalie-web/src/main/webapp/WEB-INF/content/report.jsp 2013-03-25 15:13:20 UTC (rev 37)
@@ -0,0 +1,51 @@
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<head>
+ <title>Rapport MagaLiE</title>
+</head>
+
+<h1>Rapport MagaLiE</h1>
+
+<section>
+ <h2>Utilisateurs connus</h2>
+
+ <table class="table">
+ <thead>
+ <tr>
+ <th>
+ Id
+ </th>
+ <th>
+ login
+ </th>
+ <th>
+ nom
+ </th>
+ <th>
+ permis ?
+ </th>
+ </tr>
+ </thead>
+
+ <tbody>
+ <s:iterator value="report.allMagalieUsers" var="magalieUser">
+ <tr>
+ <td>
+ <s:property value="id" />
+ </td>
+ <td>
+ <s:property value="login" />
+ </td>
+ <td>
+ <s:property value="name" />
+ </td>
+ <td>
+ <s:property value="driverLicenseOwner" />
+ </td>
+ </tr>
+ </s:iterator>
+ </tbody>
+
+ </table>
+</section>
\ No newline at end of file
1
0
25 Mar '13
Author: bleny
Date: 2013-03-25 15:46:07 +0100 (Mon, 25 Mar 2013)
New Revision: 36
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
introduce services and view for fulfil kanaban
Added:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementOrderDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementOrderDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovementOrder.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/StorageMovementTask.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/InvalidMagalieBarcodeException.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/MagalieException.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/RequiredDriverLicenceException.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/UnavailableArticleException.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java
trunk/magalie-web/src/main/webapp/WEB-INF/content/fulfil-kanban-input.jsp
Removed:
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/WithdrawTask.java
Modified:
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/ArticleDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementDao.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/JpaMagalieUserDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementDao.java
trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/AbstractJpaEntity.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
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/main/java/com/franciaflex/magalie/services/RequestedItemService.java
trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java
trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java
trunk/magalie-web/src/main/webapp/WEB-INF/content/index.jsp
trunk/magalie-web/src/main/webapp/WEB-INF/content/withdraw-item-input.jsp
trunk/pom.xml
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/StorageMovements.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,20 @@
+package com.franciaflex.magalie;
+
+import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.entity.StorageMovement;
+import com.google.common.base.Function;
+
+public class StorageMovements {
+
+ protected static class GetArticleFunction implements Function<StorageMovement, Article> {
+
+ @Override
+ public Article apply(StorageMovement storageMovement) {
+ return storageMovement.getArticle();
+ }
+ }
+
+ public static Function<StorageMovement, Article> getArticleFunction() {
+ return new GetArticleFunction();
+ }
+}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/ArticleDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/ArticleDao.java 2013-03-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/ArticleDao.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -7,4 +7,6 @@
*/
public interface ArticleDao extends Dao<Article> {
+ Article findByCode(String articleCode);
+
}
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-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/MagalieUserDao.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -7,4 +7,6 @@
*/
public interface MagalieUserDao extends Dao<MagalieUser> {
+ MagalieUser findByLogin(String login);
+
}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementDao.java 2013-03-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementDao.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -12,6 +12,4 @@
List<StorageMovement> findAllByArticle(Article article);
- void persistAll(Iterable<StorageMovement> storageMovements);
-
}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementOrderDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementOrderDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/StorageMovementOrderDao.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,7 @@
+package com.franciaflex.magalie.dao;
+
+import com.franciaflex.magalie.entity.StorageMovementOrder;
+
+public interface StorageMovementOrderDao extends Dao<StorageMovementOrder> {
+
+}
Modified: 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 2013-03-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaArticleDao.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -2,8 +2,10 @@
import com.franciaflex.magalie.dao.ArticleDao;
import com.franciaflex.magalie.entity.Article;
+import com.google.common.collect.Iterables;
import javax.persistence.EntityManager;
+import javax.persistence.Query;
public class JpaArticleDao extends AbstractJpaDao<Article> implements ArticleDao {
@@ -15,4 +17,16 @@
protected Class<Article> getEntityClass() {
return Article.class;
}
+
+ @Override
+ public Article findByCode(String articleCode) {
+ Query query = entityManager.createQuery("from article a where a.code = :code");
+ query.setParameter("code", articleCode);
+ Article article = (Article)
+ Iterables.getOnlyElement(
+ query.getResultList(),
+ null
+ );
+ return article;
+ }
}
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-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaMagalieUserDao.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -2,8 +2,11 @@
import com.franciaflex.magalie.dao.MagalieUserDao;
import com.franciaflex.magalie.entity.MagalieUser;
+import com.google.common.collect.Iterables;
import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
public class JpaMagalieUserDao extends AbstractJpaDao<MagalieUser> implements MagalieUserDao {
@@ -15,4 +18,13 @@
protected Class<MagalieUser> getEntityClass() {
return MagalieUser.class;
}
+
+ @Override
+ public MagalieUser findByLogin(String login) {
+ Query query = entityManager.createQuery("from magalieUser mu where mu.login = login");
+ query.setParameter("login", login);
+ List<MagalieUser> resultList = query.getResultList();
+ MagalieUser onlyElement = Iterables.getOnlyElement(resultList, null);
+ return onlyElement;
+ }
}
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 16:03:14 UTC (rev 35)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementDao.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -26,13 +26,4 @@
return query.getResultList();
}
- @Override
- public void persistAll(Iterable<StorageMovement> storageMovements) {
- // EntityTransaction transaction = entityManager.getTransaction();
- // transaction.begin();
- for (StorageMovement storageMovement : storageMovements) {
- persist(storageMovement);
- }
- // transaction.commit();
- }
}
Added: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementOrderDao.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementOrderDao.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/dao/jpa/JpaStorageMovementOrderDao.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,19 @@
+package com.franciaflex.magalie.dao.jpa;
+
+import com.franciaflex.magalie.dao.StorageMovementOrderDao;
+import com.franciaflex.magalie.entity.StorageMovementOrder;
+
+import javax.persistence.EntityManager;
+
+public class JpaStorageMovementOrderDao extends AbstractJpaDao<StorageMovementOrder> implements StorageMovementOrderDao {
+
+ public JpaStorageMovementOrderDao(EntityManager entityManager) {
+ super(entityManager);
+ }
+
+ @Override
+ protected Class<StorageMovementOrder> getEntityClass() {
+ return StorageMovementOrder.class;
+ }
+
+}
Modified: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/AbstractJpaEntity.java
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/AbstractJpaEntity.java 2013-03-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/AbstractJpaEntity.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -13,6 +13,7 @@
if (this == o) return true;
if (!(o instanceof AbstractJpaEntity)) return false;
AbstractJpaEntity that = (AbstractJpaEntity) o;
+ if (id == null && that.getId() == null) return false;
if (!id.equals(that.getId())) return false;
return Objects.equal(id, that.getId());
}
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-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovement.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -88,4 +88,24 @@
public boolean isConfirmed() {
return confirmDate != null;
}
+
+ public String getSiteId() {
+ return getSite().getId();
+ }
+
+ public boolean isDriverLicenseRequired() {
+ return getSite().isDriverLicenseRequired();
+ }
+
+ public String getStoreCode() {
+ return getSite().getStoreCode();
+ }
+
+ public String getLocationCode() {
+ return getSite().getLocationCode();
+ }
+
+ public String getSiteBarcode() {
+ return getSite().getBarcode();
+ }
}
Copied: trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovementOrder.java (from rev 31, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawTask.java)
===================================================================
--- trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovementOrder.java (rev 0)
+++ trunk/magalie-persistence/src/main/java/com/franciaflex/magalie/entity/StorageMovementOrder.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,104 @@
+package com.franciaflex.magalie.entity;
+
+/*
+ * #%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%
+ */
+
+import com.franciaflex.magalie.StorageMovements;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import java.util.Set;
+
+@Entity
+public class StorageMovementOrder extends AbstractJpaEntity {
+
+ @Id
+ @GeneratedValue
+ protected String id;
+
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @OneToMany(cascade = CascadeType.ALL)
+ protected Set<StorageMovement> storageMovements;
+
+ public Set<StorageMovement> getStorageMovements() {
+ return storageMovements;
+ }
+
+ public void setStorageMovements(Set<StorageMovement> storageMovements) {
+ this.storageMovements = storageMovements;
+ }
+
+ public Set<StorageMovement> getSites() {
+ return storageMovements;
+ }
+
+ protected Set<Article> getArticles() {
+ Set<Article> articles =
+ Sets.newHashSet(
+ Iterables.transform(
+ getStorageMovements(),
+ StorageMovements.getArticleFunction()
+ )
+ );
+ return articles;
+ }
+
+ public Article getArticle() {
+ Article onlyElement = Iterables.getOnlyElement(getArticles());
+ return onlyElement;
+ }
+
+ public double getQuantity() {
+ double quantity = 0.;
+ for (StorageMovement storageMovement : storageMovements) {
+ quantity += storageMovement.getQuantity();
+ }
+ return quantity;
+ }
+
+ public void addStorageMovement(StorageMovement storageMovement) {
+ if (storageMovements == null) {
+ storageMovements = Sets.newLinkedHashSet();
+ }
+ storageMovements.add(storageMovement);
+ }
+
+ @Override
+ public String toString() {
+ return ToStringBuilder.reflectionToString(this);
+ }
+}
Modified: trunk/magalie-persistence/src/main/resources/magalie.properties
===================================================================
--- trunk/magalie-persistence/src/main/resources/magalie.properties 2013-03-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-persistence/src/main/resources/magalie.properties 2013-03-25 14:46:07 UTC (rev 36)
@@ -1,9 +1,9 @@
javax.persistence.jdbc.driver=org.h2.Driver
-javax.persistence.jdbc.url=jdbc:h2:file:/tmp/magalie/h2data
+javax.persistence.jdbc.url=jdbc:h2:file:/tmp/magalie/h2data;DB_CLOSE_ON_EXIT=FALSE
javax.persistence.jdbc.user=sa
javax.persistence.jdbc.password=
hibernate.dialect=org.hibernate.dialect.H2Dialect
-hibernate.hbm2ddl.auto=create-drop
+hibernate.hbm2ddl.auto=validate
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
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-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-persistence/src/test/java/com/franciaflex/magalie/PersistenceTest.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -32,9 +32,9 @@
//// entityManager.persist(new SiteError());
//// entityManager.persist(new StorageMovement());
//
-// List<Site> sites = fixtures.fixture("sites");
+// List<Site> storageMovements = fixtures.fixture("storageMovements");
//
-// for (Site site : sites) {
+// for (Site site : storageMovements) {
//
// entityManager.persist(site);
//
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 16:03:14 UTC (rev 35)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/ArticleStorageService.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -2,12 +2,16 @@
import com.franciaflex.magalie.StoredArticles;
import com.franciaflex.magalie.dao.StorageMovementDao;
+import com.franciaflex.magalie.dao.StorageMovementOrderDao;
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.StorageMovementOrder;
import com.franciaflex.magalie.entity.StoredArticle;
+import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
+import com.franciaflex.magalie.services.exception.UnavailableArticleException;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
@@ -32,7 +36,7 @@
this.serviceContext = serviceContext;
}
- public WithdrawTask withdrawArticle(MagalieUser magalieUser, Article article, double requestedQuantity) throws UnavailableArticleException, RequiredDriverLicenceException {
+ public StorageMovementTask withdrawArticle(MagalieUser magalieUser, Article article, double requestedQuantity) throws UnavailableArticleException, RequiredDriverLicenceException {
Preconditions.checkNotNull(magalieUser);
@@ -75,12 +79,12 @@
)
);
- WithdrawTask withdrawTask = new WithdrawTask(article, requestedQuantity);
+ StorageMovementOrder storageMovementOrder = new StorageMovementOrder();
+ StorageMovementTask storageMovementTask = new StorageMovementTask(storageMovementOrder);
+
double quantity = 0;
- List<StorageMovement> newStorageMovements = Lists.newLinkedList();
-
Date orderDate = serviceContext.getDate();
for (StoredArticle storedArticle : sortedStoredArticles) {
@@ -91,38 +95,38 @@
double quantityWithdrawn = Math.min(quantityLeft, quantityInSite);
- if (quantityWithdrawn > 0.) {
+ quantity += quantityWithdrawn;
- quantity += quantityWithdrawn;
+ StorageMovement newStorageMovement = new StorageMovement();
- StorageMovement newStorageMovement = new StorageMovement();
+ newStorageMovement.setArticle(article);
- newStorageMovement.setArticle(article);
+ newStorageMovement.setOrderDate(orderDate);
- newStorageMovement.setOrderDate(orderDate);
+ newStorageMovement.setMagalieUser(magalieUser);
- newStorageMovement.setMagalieUser(magalieUser);
+ newStorageMovement.setSite(storedArticle.getSite());
- newStorageMovement.setSite(storedArticle.getSite());
+ // we remove from the stock so negative number
+ newStorageMovement.setQuantity( -1. * quantityWithdrawn);
- // we remove from the stock so negative number
- newStorageMovement.setQuantity( -1. * quantityWithdrawn);
+ if (quantityWithdrawn > 0.) {
- newStorageMovements.add(newStorageMovement);
+ storageMovementOrder.addStorageMovement(newStorageMovement);
- }
+ } else {
- WithdrawArticleFromSiteTask withdrawArticleFromSiteTask = new WithdrawArticleFromSiteTask(storedArticle, quantityWithdrawn);
+ storageMovementTask.addExtraStorageMovement(newStorageMovement);
- withdrawTask.addWithdrawArticleFromSiteTask(withdrawArticleFromSiteTask);
+ }
}
- StorageMovementDao storageMovementDao = serviceContext.getStorageMovementDao();
+ StorageMovementOrderDao dao = serviceContext.getStorageMovementOrderDao();
- storageMovementDao.persistAll(newStorageMovements);
+ dao.persist(storageMovementOrder);
- return withdrawTask;
+ return storageMovementTask;
}
@@ -165,7 +169,7 @@
}
- // exclude sites reported in error
+ // exclude storageMovements reported in error
SiteErrorsService siteErrorsService = serviceContext.newService(SiteErrorsService.class);
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 16:03:14 UTC (rev 35)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/DefaultMagalieServiceContext.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -7,12 +7,14 @@
import com.franciaflex.magalie.dao.RequestedArticleDao;
import com.franciaflex.magalie.dao.SiteErrorDao;
import com.franciaflex.magalie.dao.StorageMovementDao;
+import com.franciaflex.magalie.dao.StorageMovementOrderDao;
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.JpaStorageMovementOrderDao;
import com.franciaflex.magalie.dao.jpa.JpaStoredArticleDao;
import javax.persistence.EntityManager;
@@ -109,4 +111,9 @@
public SiteErrorDao getSiteErrorDao() {
return new JpaSiteErrorDao(entityManager);
}
+
+ @Override
+ public StorageMovementOrderDao getStorageMovementOrderDao() {
+ return new JpaStorageMovementOrderDao(entityManager);
+ }
}
Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/FulfilKanbanService.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,52 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
+import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
+import com.franciaflex.magalie.services.exception.UnavailableArticleException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class FulfilKanbanService implements MagalieService {
+
+ private static final Log log = LogFactory.getLog(FulfilKanbanService.class);
+
+ protected MagalieServiceContext serviceContext;
+
+ @Override
+ public void setServiceContext(MagalieServiceContext serviceContext) {
+ this.serviceContext = serviceContext;
+ }
+
+ public StorageMovementTask fulfilKanbanTask(
+ String articleBarcode,
+ MagalieUser magalieUser) throws InvalidMagalieBarcodeException,
+ UnavailableArticleException,
+ RequiredDriverLicenceException {
+
+ if (log.isInfoEnabled()) {
+ log.info(magalieUser + " requested fulfil kanban with barcode " + articleBarcode);
+ }
+
+ MagalieBarcodeService magalieBarcodeService =
+ serviceContext.newService(MagalieBarcodeService.class);
+
+ Article article = magalieBarcodeService.getArticle(articleBarcode);
+
+ double quantityInKanban = article.getQuantityInKanban();
+
+ ArticleStorageService articleStorageService =
+ serviceContext.newService(ArticleStorageService.class);
+
+
+ StorageMovementTask storageMovementTask =
+ articleStorageService.withdrawArticle(
+ magalieUser,
+ article,
+ quantityInKanban);
+
+ return storageMovementTask;
+
+ }
+}
Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieBarcodeService.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,59 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.dao.ArticleDao;
+import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
+import com.google.common.base.Splitter;
+import com.google.common.collect.Iterables;
+
+public class MagalieBarcodeService implements MagalieService {
+
+ protected MagalieServiceContext serviceContext;
+
+ protected static final String BARCODE_ELEMENTS_SEPARATOR = "_";
+
+ protected static final String ARTICLE_BARCODE_PREFIX = "ART";
+
+ @Override
+ public void setServiceContext(MagalieServiceContext serviceContext) {
+ this.serviceContext = serviceContext;
+ }
+
+ public Article getArticle(String articleBarcode) throws InvalidMagalieBarcodeException {
+
+ Iterable<String> split = Splitter.on(BARCODE_ELEMENTS_SEPARATOR).split(articleBarcode);
+
+ if (Iterables.size(split) != 2) {
+
+ throw new InvalidMagalieBarcodeException("Unexpected barcode format, 2 parts expected");
+
+ }
+
+ String prefix = Iterables.get(split, 0);
+
+ if ( ! ARTICLE_BARCODE_PREFIX.equals(prefix)) {
+
+ throw new InvalidMagalieBarcodeException(
+ "not an article barcode. expected prefix '"
+ + ARTICLE_BARCODE_PREFIX + ", '" + prefix + "' found.");
+
+ }
+
+ String articleCode = Iterables.get(split, 1);
+
+ ArticleDao articleDao = serviceContext.getArticleDao();
+
+ Article article = articleDao.findByCode(articleCode);
+
+ if (article == null) {
+
+ throw new InvalidMagalieBarcodeException(
+ "no article with code " + articleCode);
+
+ }
+
+ return article;
+
+ }
+
+}
Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieException.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieException.java 2013-03-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieException.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -1,20 +0,0 @@
-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-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieServiceContext.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -29,6 +29,7 @@
import com.franciaflex.magalie.dao.RequestedArticleDao;
import com.franciaflex.magalie.dao.SiteErrorDao;
import com.franciaflex.magalie.dao.StorageMovementDao;
+import com.franciaflex.magalie.dao.StorageMovementOrderDao;
import com.franciaflex.magalie.dao.StoredArticleDao;
import java.util.Date;
@@ -56,4 +57,5 @@
SiteErrorDao getSiteErrorDao();
+ StorageMovementOrderDao getStorageMovementOrderDao();
}
Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieUsersService.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,28 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.dao.MagalieUserDao;
+import com.franciaflex.magalie.entity.MagalieUser;
+import com.google.common.base.Preconditions;
+
+public class MagalieUsersService implements MagalieService {
+
+ protected MagalieServiceContext serviceContext;
+
+ @Override
+ public void setServiceContext(MagalieServiceContext serviceContext) {
+ this.serviceContext = serviceContext;
+ }
+
+ public MagalieUser getMagalieUser(String login) {
+
+ MagalieUserDao dao = serviceContext.getMagalieUserDao();
+
+ MagalieUser magalieUser = dao.findByLogin(login);
+
+ Preconditions.checkArgument(magalieUser != null, "there is no user with login '" + login + "'");
+
+ return magalieUser;
+
+ }
+
+}
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-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequestedItemService.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -27,6 +27,8 @@
import com.franciaflex.magalie.dao.MagalieUserDao;
import com.franciaflex.magalie.entity.Article;
import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
+import com.franciaflex.magalie.services.exception.UnavailableArticleException;
public class RequestedItemService implements MagalieService {
@@ -36,7 +38,7 @@
this.serviceContext = serviceContext;
}
- public WithdrawTask getWithdrawTask() throws RequiredDriverLicenceException, UnavailableArticleException {
+ public StorageMovementTask getWithdrawTask() throws RequiredDriverLicenceException, UnavailableArticleException {
ArticleStorageService articleStorageService = serviceContext.newService(ArticleStorageService.class);
@@ -48,13 +50,14 @@
Article article1 = articleDao.findById("article1");
- WithdrawTask withdrawTask = articleStorageService.withdrawArticle(
- alexandre,
- article1,
- 40.
- );
+ StorageMovementTask storageMovementTask =
+ articleStorageService.withdrawArticle(
+ alexandre,
+ article1,
+ 40.
+ );
- return withdrawTask;
+ return storageMovementTask;
}
}
Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequiredDriverLicenceException.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequiredDriverLicenceException.java 2013-03-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequiredDriverLicenceException.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -1,58 +0,0 @@
-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/StorageMovementTask.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/StorageMovementTask.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/StorageMovementTask.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,49 @@
+package com.franciaflex.magalie.services;
+
+import com.franciaflex.magalie.entity.Article;
+import com.franciaflex.magalie.entity.StorageMovement;
+import com.franciaflex.magalie.entity.StorageMovementOrder;
+import com.google.common.collect.Lists;
+import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+
+import java.util.List;
+
+public class StorageMovementTask {
+
+ protected StorageMovementOrder storageMovementOrder;
+
+ protected List<StorageMovement> extraStorageMovements = Lists.newLinkedList();
+
+ public StorageMovementTask(StorageMovementOrder storageMovementOrder) {
+ this.storageMovementOrder = storageMovementOrder;
+ }
+
+ public double getQuantity() {
+ return storageMovementOrder.getQuantity();
+ }
+
+ public Article getArticle() {
+ return storageMovementOrder.getArticle();
+ }
+
+ public List<StorageMovement> getSites() {
+
+ List<StorageMovement> sites = Lists.newLinkedList();
+
+ sites.addAll(storageMovementOrder.getStorageMovements());
+
+ sites.addAll(extraStorageMovements);
+
+ return sites;
+
+ }
+
+ public void addExtraStorageMovement(StorageMovement extraStorageMovement) {
+ extraStorageMovements.add(extraStorageMovement);
+ }
+
+ @Override
+ public String toString() {
+ return ReflectionToStringBuilder.toString(this);
+ }
+}
Deleted: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/UnavailableArticleException.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/UnavailableArticleException.java 2013-03-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/UnavailableArticleException.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -1,49 +0,0 @@
-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;
- }
-}
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-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawArticleFromSiteTask.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -18,26 +18,8 @@
return quantity;
}
- 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);
Deleted: 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-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/WithdrawTask.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -1,80 +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%
- */
-
-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<WithdrawArticleFromSiteTask> sites;
-
- protected Article article;
-
- protected double quantity;
-
- public WithdrawTask(Article article, double quantity) {
- this.article = article;
- this.quantity = quantity;
- }
-
- public Set<WithdrawArticleFromSiteTask> getSites() {
- return sites;
- }
-
- public void setSites(Set<WithdrawArticleFromSiteTask> sites) {
- this.sites = sites;
- }
-
- 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;
- }
-
- public void addWithdrawArticleFromSiteTask(WithdrawArticleFromSiteTask withdrawArticleFromSiteTask) {
- if (sites == null) {
- sites = Sets.newLinkedHashSet();
- }
- sites.add(withdrawArticleFromSiteTask);
- }
-
- @Override
- public String toString() {
- return ToStringBuilder.reflectionToString(this);
- }
-}
Added: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/InvalidMagalieBarcodeException.java
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/InvalidMagalieBarcodeException.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/InvalidMagalieBarcodeException.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,8 @@
+package com.franciaflex.magalie.services.exception;
+
+public class InvalidMagalieBarcodeException extends MagalieException {
+
+ public InvalidMagalieBarcodeException(String message) {
+ super(message);
+ }
+}
Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/MagalieException.java (from rev 31, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/MagalieException.java)
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/MagalieException.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/MagalieException.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,20 @@
+package com.franciaflex.magalie.services.exception;
+
+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);
+ }
+
+}
Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/RequiredDriverLicenceException.java (from rev 31, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/RequiredDriverLicenceException.java)
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/RequiredDriverLicenceException.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/RequiredDriverLicenceException.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,58 @@
+package com.franciaflex.magalie.services.exception;
+
+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;
+ }
+}
Copied: trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/UnavailableArticleException.java (from rev 31, trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/UnavailableArticleException.java)
===================================================================
--- trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/UnavailableArticleException.java (rev 0)
+++ trunk/magalie-services/src/main/java/com/franciaflex/magalie/services/exception/UnavailableArticleException.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,49 @@
+package com.franciaflex.magalie.services.exception;
+
+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;
+ }
+}
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 16:03:14 UTC (rev 35)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/ArticleStorageServiceTest.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -4,6 +4,9 @@
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.services.exception.RequiredDriverLicenceException;
+import com.franciaflex.magalie.services.exception.UnavailableArticleException;
import com.google.common.collect.Iterables;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -34,12 +37,12 @@
MagalieUser basile = fixture("basile");
Article article = fixture("article1");
- WithdrawTask withdrawTask;
+ StorageMovementTask storageMovementTask;
try {
- withdrawTask = service.withdrawArticle(basile, article, 100.);
+ storageMovementTask = service.withdrawArticle(basile, article, 100.);
if (log.isDebugEnabled()) {
- log.debug("withdrawTask = " + withdrawTask);
+ log.debug("storageMovementTask = " + storageMovementTask);
}
Assert.fail();
} catch (UnavailableArticleException e) {
@@ -55,12 +58,12 @@
MagalieUser basile = fixture("basile");
Article article = fixture("article1");
- WithdrawTask withdrawTask;
+ StorageMovementTask storageMovementTask;
try {
- withdrawTask = service.withdrawArticle(basile, article, 70.);
+ storageMovementTask = service.withdrawArticle(basile, article, 70.);
if (log.isDebugEnabled()) {
- log.debug("withdrawTask = " + withdrawTask);
+ log.debug("storageMovementTask = " + storageMovementTask);
}
Assert.fail();
} catch (RequiredDriverLicenceException e) {
@@ -76,12 +79,12 @@
MagalieUser basile = fixture("basile");
Article article = fixture("article1");
- WithdrawTask withdrawTask = null;
+ StorageMovementTask storageMovementTask = null;
try {
- withdrawTask = service.withdrawArticle(basile, article, 50.);
+ storageMovementTask = service.withdrawArticle(basile, article, 50.);
if (log.isDebugEnabled()) {
- log.debug("withdrawTask = " + withdrawTask);
+ log.debug("storageMovementTask = " + storageMovementTask);
}
} catch (RequiredDriverLicenceException e) {
if (log.isDebugEnabled()) {
@@ -95,7 +98,7 @@
Assert.fail();
}
- Assert.assertEquals(1, withdrawTask.getSites().size());
+ Assert.assertEquals(1, storageMovementTask.getSites().size());
}
@Test
@@ -103,12 +106,12 @@
MagalieUser alexandre = fixture("alexandre");
Article article = fixture("article1");
- WithdrawTask withdrawTask = null;
+ StorageMovementTask storageMovementTask = null;
try {
- withdrawTask = service.withdrawArticle(alexandre, article, 50.);
+ storageMovementTask = service.withdrawArticle(alexandre, article, 50.);
if (log.isDebugEnabled()) {
- log.debug("withdrawTask = " + withdrawTask);
+ log.debug("storageMovementTask = " + storageMovementTask);
}
} catch (RequiredDriverLicenceException e) {
if (log.isDebugEnabled()) {
@@ -122,11 +125,11 @@
Assert.fail();
}
- 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.getSites(), 1, null);
- Assert.assertEquals(30., site2.getQuantity(), DELTA);
+ Assert.assertEquals(2, storageMovementTask.getSites().size());
+ StorageMovement site1 = Iterables.get(storageMovementTask.getSites(), 0, null);
+ Assert.assertEquals(-20., site1.getQuantity(), DELTA);
+ StorageMovement site2 = Iterables.get(storageMovementTask.getSites(), 1, null);
+ Assert.assertEquals(-30., site2.getQuantity(), DELTA);
}
@Test
@@ -137,20 +140,20 @@
Article article = fixture("article1");
- WithdrawTask withdrawTask = null;
+ StorageMovementTask storageMovementTask = null;
try {
- withdrawTask = service.withdrawArticle(alexandre, article, 30.);
+ storageMovementTask = service.withdrawArticle(alexandre, article, 30.);
if (log.isDebugEnabled()) {
- log.debug("withdrawTask = " + withdrawTask);
+ log.debug("storageMovementTask = " + storageMovementTask);
}
- 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());
+ Assert.assertEquals(2, storageMovementTask.getSites().size());
+ StorageMovement storageMovement1 = Iterables.get(storageMovementTask.getSites(), 0, null);
+ Assert.assertEquals(-20., storageMovement1.getQuantity(), DELTA);
+ Assert.assertEquals("B2", storageMovement1.getSite().getLocationCode());
+ StorageMovement storageMovement2 = Iterables.get(storageMovementTask.getSites(), 1, null);
+ Assert.assertEquals(-10., storageMovement2.getQuantity(), DELTA);
+ Assert.assertEquals("A1", storageMovement2.getSite().getLocationCode());
} catch (RequiredDriverLicenceException e) {
if (log.isDebugEnabled()) {
log.debug("exception raised = " + e);
@@ -164,14 +167,14 @@
}
try {
- withdrawTask = service.withdrawArticle(cathy, article, 30.);
+ storageMovementTask = service.withdrawArticle(cathy, article, 30.);
if (log.isDebugEnabled()) {
- log.debug("withdrawTask = " + withdrawTask);
+ log.debug("storageMovementTask = " + storageMovementTask);
}
- 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());
+ Assert.assertEquals(1, storageMovementTask.getSites().size());
+ StorageMovement storageMovement = Iterables.get(storageMovementTask.getSites(), 0, null);
+ Assert.assertEquals(-30., storageMovement.getQuantity(), DELTA);
+ Assert.assertEquals("A1", storageMovement.getSite().getLocationCode());
} catch (RequiredDriverLicenceException e) {
if (log.isDebugEnabled()) {
log.debug("exception raised = " + e);
@@ -199,16 +202,16 @@
siteErrorsService.reportError(site2, alexandre);
try {
- WithdrawTask withdrawTask = service.withdrawArticle(cathy, article, 30.);
+ StorageMovementTask storageMovementTask = service.withdrawArticle(cathy, article, 30.);
if (log.isDebugEnabled()) {
- log.debug("withdrawTask = " + withdrawTask);
+ log.debug("storageMovementTask = " + storageMovementTask);
}
- Assert.assertEquals(1, withdrawTask.getSites().size());
- WithdrawArticleFromSiteTask site = Iterables.get(withdrawTask.getSites(), 0, null);
+ Assert.assertEquals(1, storageMovementTask.getSites().size());
+ StorageMovement storageMovement = Iterables.get(storageMovementTask.getSites(), 0, null);
Assert.assertNotEquals(
"site2 must not be returned because it was reported in error",
site2.getId(),
- site.getSiteId());
+ storageMovement.getSite().getId());
} catch (RequiredDriverLicenceException e) {
if (log.isDebugEnabled()) {
log.debug("exception raised = " + e);
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-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-services/src/test/java/com/franciaflex/magalie/services/RequestedItemServiceTest.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -1,16 +1,19 @@
package com.franciaflex.magalie.services;
+import com.franciaflex.magalie.AbstractMagalieServiceTest;
import com.google.common.collect.Sets;
import org.junit.Test;
import java.util.Comparator;
import java.util.Set;
-public class RequestedItemServiceTest {
+public class RequestedItemServiceTest extends AbstractMagalieServiceTest {
@Test
public void testGetWithdrawTask() throws Exception {
+ getServiceContext();
+
Set<Double> doubles = Sets.newTreeSet(new Comparator<Double>() {
@Override
public int compare(Double o1, Double o2) {
Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java 2013-03-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieInterceptor.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -24,9 +24,11 @@
*/
import com.franciaflex.magalie.MagalieApplicationConfig;
+import com.franciaflex.magalie.entity.MagalieUser;
import com.franciaflex.magalie.services.DefaultMagalieServiceContext;
import com.franciaflex.magalie.services.MagalieService;
import com.franciaflex.magalie.services.MagalieServiceContext;
+import com.franciaflex.magalie.services.MagalieUsersService;
import com.google.common.base.Preconditions;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
@@ -82,7 +84,7 @@
} else if (MagalieSession.class.isAssignableFrom(propertyType)) {
- toInject = getMagalieSession(invocation);
+ toInject = getMagalieSession(invocation, serviceContext);
} else if (MagalieApplicationConfig.class.isAssignableFrom(propertyType)) {
@@ -113,7 +115,7 @@
}
- protected MagalieSession getMagalieSession(ActionInvocation invocation) {
+ protected MagalieSession getMagalieSession(ActionInvocation invocation, MagalieServiceContext serviceContext) {
MagalieSession session = (MagalieSession) invocation.getInvocationContext().getSession().get(MagalieSession.SESSION_PARAMETER);
@@ -121,6 +123,12 @@
session = new MagalieSession();
+ MagalieUsersService magalieUsersService = serviceContext.newService(MagalieUsersService.class);
+
+ MagalieUser magalieUser = magalieUsersService.getMagalieUser("ale");
+
+ session.setMagalieUser(magalieUser);
+
invocation.getInvocationContext().getSession().put(MagalieSession.SESSION_PARAMETER, session);
}
Modified: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java 2013-03-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieSession.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -1,5 +1,7 @@
package com.franciaflex.magalie.web;
+import com.franciaflex.magalie.entity.MagalieUser;
+
import java.io.Serializable;
/**
@@ -14,5 +16,13 @@
*/
public static final String SESSION_PARAMETER = "magalieSession";
+ protected MagalieUser magalieUser;
+ public MagalieUser getMagalieUser() {
+ return magalieUser;
+ }
+
+ public void setMagalieUser(MagalieUser magalieUser) {
+ this.magalieUser = magalieUser;
+ }
}
Added: trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java
===================================================================
--- trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java (rev 0)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/FulfilKanbanAction.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,81 @@
+package com.franciaflex.magalie.web.action;
+
+import com.franciaflex.magalie.entity.MagalieUser;
+import com.franciaflex.magalie.services.FulfilKanbanService;
+import com.franciaflex.magalie.services.StorageMovementTask;
+import com.franciaflex.magalie.services.exception.InvalidMagalieBarcodeException;
+import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
+import com.franciaflex.magalie.services.exception.UnavailableArticleException;
+import com.franciaflex.magalie.web.MagalieActionSupport;
+import com.franciaflex.magalie.web.MagalieSession;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.struts2.convention.annotation.Result;
+import org.apache.struts2.convention.annotation.Results;
+
+
+@Results({
+ @Result(name="success", type="redirect", location="/", params = { "" , "" })
+})
+public class FulfilKanbanAction extends MagalieActionSupport {
+
+ private static final Log log = LogFactory.getLog(FulfilKanbanAction.class);
+
+ protected MagalieSession session;
+
+ protected FulfilKanbanService service;
+
+ protected String articleBarcode;
+
+ protected StorageMovementTask storageMovementTask;
+
+ public void setArticleBarcode(String articleBarcode) {
+ this.articleBarcode = articleBarcode;
+ }
+
+ public void setService(FulfilKanbanService service) {
+ this.service = service;
+ }
+
+ @Override
+ public String execute() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("article barcode is " + articleBarcode);
+ }
+
+ MagalieUser magalieUser = session.getMagalieUser();
+
+ try {
+
+ storageMovementTask = service.fulfilKanbanTask(articleBarcode, magalieUser);
+
+ } catch (InvalidMagalieBarcodeException e) {
+
+ addFieldError("articleBarcode", "Le code barre n'est pas un code valide");
+
+ return INPUT;
+
+ } catch (UnavailableArticleException e) {
+
+ addActionError("Cet article n'est pas disponible");
+
+ return INPUT;
+
+ } catch (RequiredDriverLicenceException e) {
+
+ addActionError("Un permis est nécessaire pour obtenir cet article");
+
+ return INPUT;
+
+ }
+
+ return SUCCESS;
+
+ }
+
+ public StorageMovementTask getStorageMovementTask() {
+ return storageMovementTask;
+ }
+
+}
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-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/action/WithdrawItemAction.java 2013-03-25 14:46:07 UTC (rev 36)
@@ -24,9 +24,9 @@
*/
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.services.StorageMovementTask;
+import com.franciaflex.magalie.services.exception.RequiredDriverLicenceException;
+import com.franciaflex.magalie.services.exception.UnavailableArticleException;
import com.franciaflex.magalie.web.MagalieActionSupport;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -39,7 +39,7 @@
protected RequestedItemService service;
- protected WithdrawTask withdrawTask;
+ protected StorageMovementTask storageMovementTask;
public void setService(RequestedItemService service) {
this.service = service;
@@ -53,13 +53,13 @@
}
- public WithdrawTask getWithdrawTask() {
- return withdrawTask;
+ public StorageMovementTask getStorageMovementTask() {
+ return storageMovementTask;
}
public String getModelAsJson() throws JSONException {
- String json = JSONUtil.serialize(getWithdrawTask());
+ String json = JSONUtil.serialize(getStorageMovementTask());
return json;
@@ -68,7 +68,7 @@
@Override
public String input() throws RequiredDriverLicenceException, UnavailableArticleException {
- withdrawTask = service.getWithdrawTask();
+ storageMovementTask = service.getWithdrawTask();
return INPUT;
Added: trunk/magalie-web/src/main/webapp/WEB-INF/content/fulfil-kanban-input.jsp
===================================================================
--- trunk/magalie-web/src/main/webapp/WEB-INF/content/fulfil-kanban-input.jsp (rev 0)
+++ trunk/magalie-web/src/main/webapp/WEB-INF/content/fulfil-kanban-input.jsp 2013-03-25 14:46:07 UTC (rev 36)
@@ -0,0 +1,14 @@
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<head>
+ <title>Traitement des kanbans</title>
+</head>
+
+<form class="form-horizontal">
+ <s:textfield name="articleBarcode" label="Article" inputAppendIcon="barcode" cssClass="input-small" />
+
+ <div class="btn-group">
+ <s:submit name="next" value="Suivant" cssClass="btn btn-primary btn-small" />
+ </div>
+</form>
\ No newline at end of file
Modified: trunk/magalie-web/src/main/webapp/WEB-INF/content/index.jsp
===================================================================
--- trunk/magalie-web/src/main/webapp/WEB-INF/content/index.jsp 2013-03-22 16:03:14 UTC (rev 35)
+++ trunk/magalie-web/src/main/webapp/WEB-INF/content/index.jsp 2013-03-25 14:46:07 UTC (rev 36)
@@ -27,6 +27,7 @@
<%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
<s:url namespace="/" action="withdraw-item!input" id="withdrawItemUrl"/>
+<s:url namespace="/" action="fulfil-kanban!input" id="fulfilKanbanUrl"/>
<header>
<dl class="dl-horizontal">
@@ -38,5 +39,5 @@
</header>
<s:a href="%{withdrawItemUrl}" cssClass="btn btn-block">Traiter listes à servir</s:a>
-<s:a href="" cssClass="btn btn-block">Traiter kanbans</s:a>
+<s:a href="%{fulfilKanbanUrl}" cssClass="btn btn-block">Traiter kanbans</s:a>
<s:a href="" cssClass="btn btn-block">Traiter les réceptions fournisseurs</s:a>
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 16:03:14 UTC (rev 35)
+++ trunk/magalie-web/src/main/webapp/WEB-INF/content/withdraw-item-input.jsp 2013-03-25 14:46:07 UTC (rev 36)
@@ -34,20 +34,20 @@
<header>
<dl class="dl-horizontal">
<dt>Réf.</dt>
- <dd><s:property value="withdrawTask.article.code" /></dd>
+ <dd><s:property value="storageMovementTask.article.code" /></dd>
<dt>Desc.</dt>
- <dd><s:property value="withdrawTask.article.description" /></dd>
+ <dd><s:property value="storageMovementTask.article.description" /></dd>
<dt>LàS</dt>
<dd>123456789</dd>
<dt>Prélev.</dt>
- <dd><span id="withdrawn">0</span> / <s:property value="withdrawTask.quantity" /> <s:property value="withdrawTask.article.unit" /></dd>
+ <dd><span id="withdrawn">0</span> / <s:property value="storageMovementTask.quantity" /> <s:property value="storageMovementTask.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="%{withdrawTask.article.description}" cssClass="input-mini" />
+ <s:textfield name="quantity" label="Qté" inputAppend="%{storageMovementTask.article.unit}" 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> <s:property value="withdrawTask.article.description" /></dd>
+ <dd><span data="withdrawn">0</span> / <span data="quantity"></span> <s:property value="storageMovementTask.article.unit" /></dd>
</dl>
</div>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-03-22 16:03:14 UTC (rev 35)
+++ trunk/pom.xml 2013-03-25 14:46:07 UTC (rev 36)
@@ -209,7 +209,7 @@
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>${struts2Version}</version>
- <scope>runtime</scope>
+ <scope>compile</scope>
</dependency>
<dependency>
1
0
r35 - trunk/magalie-web/src/main/java/com/franciaflex/magalie/web
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 17:03:14 +0100 (Fri, 22 Mar 2013)
New Revision: 35
Url: http://forge.codelutin.com/projects/franciaflex-magalie/repository/revision…
Log:
close EntityManagerFactory
Modified:
trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieJpaTransactionFilter.java
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-22 15:46:02 UTC (rev 34)
+++ trunk/magalie-web/src/main/java/com/franciaflex/magalie/web/MagalieJpaTransactionFilter.java 2013-03-22 16:03:14 UTC (rev 35)
@@ -13,7 +13,7 @@
public class MagalieJpaTransactionFilter extends JpaTransactionFilter {
- private EntityManagerFactory entityManagerFactory;
+ protected EntityManagerFactory entityManagerFactory;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
@@ -36,4 +36,11 @@
return entityManager;
}
+
+ @Override
+ public void destroy() {
+
+ entityManagerFactory.close();
+
+ }
}
1
0