From 8d2d46d45343377ddf9420cc4011f7855e890e74 Mon Sep 17 00:00:00 2001 From: Notmoo Date: Sun, 30 Jul 2017 22:25:40 +0200 Subject: [PATCH] =?UTF-8?q?Module=20Server,=20clss=20FileStockDao=20:=20ce?= =?UTF-8?q?ntralisation=20du=20code=20de=20sauvegarde=20des=20donn=C3=A9es?= =?UTF-8?q?,=20modif=20algo=20m=C3=A9thd=20applySale=20(voir=20desc)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modif de l'algo de la méthode FileStockDao::applySale : L'attribut Product::amountSold n'est modifié que pour les produits directement contenu dans la commande, et n'est donc plus appliqué récursivement aux composants de ces produits. --- .../pqt/server/module/stock/FileStockDao.java | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/stock/FileStockDao.java b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/stock/FileStockDao.java index d4c5f599..5095676c 100644 --- a/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/stock/FileStockDao.java +++ b/Workspace/server/src/main/WEB-INF/classes/com/pqt/server/module/stock/FileStockDao.java @@ -57,7 +57,7 @@ public class FileStockDao implements IStockDao { product.setId(nextProductId); this.products.put(nextProductId, product); generateNextProductId(); - save(this.products); + saveToFile(); } /** @@ -67,7 +67,7 @@ public class FileStockDao implements IStockDao { Product product = getProduct(id); if(product!=null){ this.products.remove(product); - save(this.products); + saveToFile(); } } @@ -78,23 +78,38 @@ public class FileStockDao implements IStockDao { if(this.products.containsKey(id)){ product.setId(id); this.products.put(id, product); + saveToFile(); } } @Override public void applySale(SaleContent saleContent) throws IllegalArgumentException { try { - saleContent.getProductList().forEach(product -> applyRecursiveStockRemoval(product, saleContent.getProductAmount(product))); + saleContent.getProductList().forEach(product -> { + applyRecursiveStockRemoval(product, saleContent.getProductAmount(product)); + applySoldCounterIncrease(product, saleContent.getProductAmount(product)); + }); + saveToFile(); }catch (IllegalStateException e){ loadFromFile(); throw new IllegalArgumentException(e); } } + private void applySoldCounterIncrease(Product product, Integer amount) { + Product correspondingProduct = getProduct(product.getId()); + if(correspondingProduct!=null){ + correspondingProduct.setAmountSold(correspondingProduct.getAmountSold() + amount); + }else{ + StringBuffer sb = new StringBuffer("StockService>StockDao : Un produit vendu ne correspond pas à un produit connu : "); + sb.append(product.getId()).append(" - ").append(product.getName()).append("(").append(product.getCategory()).append(")"); + throw new IllegalStateException(sb.toString()); + } + } + private void applyRecursiveStockRemoval(Product product, int amount)throws IllegalStateException{ Product correspondingProduct = getProduct(product.getId()); if(correspondingProduct!=null) { - correspondingProduct.setAmountSold(correspondingProduct.getAmountSold() + amount); correspondingProduct.setAmountRemaining(correspondingProduct.getAmountRemaining() - amount); correspondingProduct.getComponents().forEach(component -> applyRecursiveStockRemoval(component, amount)); }else{ @@ -142,6 +157,10 @@ public class FileStockDao implements IStockDao { return loadedData; } + private void saveToFile() { + save(this.products); + } + private void save(Map products){ try{ FileUtil.createFileIfNotExist(STOCK_FILE_NAME);