PQT_Gestionnaire_vent_stock/Workspace/server/src/main/java/com/pqt/server/module/stock/StockService.java

72 lines
2.1 KiB
Java

package com.pqt.server.module.stock;
import com.pqt.core.entities.product.Product;
import com.pqt.core.entities.product.ProductUpdate;
import com.pqt.server.exception.ServerQueryException;
import com.pqt.server.tools.entities.SaleContent;
import java.util.List;
//TODO ajouter logs
/**
* Cette classe correspond au service de gestion du stock de produits. Il est en charge de la persistance des
* données liées aux produits, de founir un accès centralisé à ces données et se charge également d'appliquer les
* mises à jour de stock (ajout, modif ou suppr de produits) et les ventes de produits issues des commandes
* (modification des quantités).
* <p/>
* <b>Attention : ce service ne se charge pas de valider les commandes, il ne fait que modifier les quantités comme si
* la commande avait été validé</b>
*
* @see Product
* @see ProductUpdate
* @see SaleContent
* @author Guillaume "Cess" Prost
*/
public class StockService {
private IStockDao dao;
public StockService() {
dao = new FileStockDao();
}
public List<Product> getProductList() {
return dao.getProductList();
}
public Product getProduct(long id) {
return dao.getProduct(id);
}
public void applySale(SaleContent saleContent) {
dao.applySale(saleContent);
}
public void applyUpdateList(List<ProductUpdate> updates) throws ServerQueryException{
for(ProductUpdate upd : updates){
if(upd.getOldVersion()==null){
addProduct(upd.getNewVersion());
}else if(upd.getNewVersion()==null){
removeProduct(upd.getOldVersion().getId());
}else if(upd.getOldVersion()!=null && upd.getNewVersion()!=null){
modifyProduct(upd.getOldVersion().getId(), upd.getNewVersion());
}else{
throw new ServerQueryException("Object ProductUpdate invalide : old et new vallent tous les deux null");
}
}
}
private void addProduct(Product product) {
dao.addProduct(product);
}
private void removeProduct(long id) {
dao.removeProduct(id);
}
private void modifyProduct(long id, Product product) {
dao.modifyProduct(id, product);
}
}