diff --git a/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiPostItemController.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiPostItemController.java index 27b04efd013377506d67cb3fb3ecb0e96617ebe6..ac529dea69a3d6156ac341f71da64c603830807a 100644 --- a/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiPostItemController.java +++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiPostItemController.java @@ -14,6 +14,11 @@ import org.springframework.web.bind.annotation.RequestBody; import javax.validation.Valid; import static fr.unistra.sil.erp.back.WebMvcConfig.MAPPING_ITEMS; +import fr.unistra.sil.erp.back.model.Stock; +import fr.unistra.sil.erp.back.service.StoreStockService; +import java.sql.SQLException; +import java.util.logging.Level; +import java.util.logging.Logger; /** * REST API to create a new item. @@ -25,13 +30,17 @@ public class ApiPostItemController { * Service for storing POJO items. */ private final StoreItemService service; + + private final StoreStockService stockService; /** * Constructor. * @param service the service to store POJO items with. + * @param stockService */ - public ApiPostItemController(StoreItemService service) { + public ApiPostItemController(StoreItemService service, StoreStockService stockService) { this.service = service; + this.stockService = stockService; } /** @@ -56,6 +65,15 @@ public class ApiPostItemController { } catch (CantStoreItemException e) { throw new ApiServerErrorException(e.getMessage()); } + + Stock s = new Stock(item, 0); + try + { + stockService.store(s); + } catch (SQLException ex) { + Logger.getLogger(ApiPostItemController.class.getName()).log(Level.SEVERE, null, ex); + throw new ApiServerErrorException(ex.getMessage()); + } return new ResponseEntity<>(item, HttpStatus.CREATED); } diff --git a/src/main/java/fr/unistra/sil/erp/back/model/Stock.java b/src/main/java/fr/unistra/sil/erp/back/model/Stock.java index a03795a97560492592cd6398824243d09fbf12a3..46fd493bd6d9346cf46dc2659d029df46fbf67bf 100644 --- a/src/main/java/fr/unistra/sil/erp/back/model/Stock.java +++ b/src/main/java/fr/unistra/sil/erp/back/model/Stock.java @@ -40,6 +40,13 @@ public class Stock { this.quantity = quantity; } + public Stock(Item item, int quantity) + { + this.id = 0; + this.item = item; + this.quantity = quantity; + } + /** * Returns the stock ID. * @return the stock's ID. diff --git a/src/main/java/fr/unistra/sil/erp/back/repository/IStocksRepository.java b/src/main/java/fr/unistra/sil/erp/back/repository/IStocksRepository.java index e89f67a9532dc848f40c810db4fdddae80b588d5..146483191b4177d79847654c40bb2a669c7ca1dd 100644 --- a/src/main/java/fr/unistra/sil/erp/back/repository/IStocksRepository.java +++ b/src/main/java/fr/unistra/sil/erp/back/repository/IStocksRepository.java @@ -1,6 +1,7 @@ package fr.unistra.sil.erp.back.repository; import fr.unistra.sil.erp.back.model.Stock; +import java.sql.SQLException; import java.util.List; @@ -23,6 +24,8 @@ public interface IStocksRepository { * @return the stock line. */ Stock getStockForItem(int itemId); + + public Stock insertStock(Stock s) throws SQLException; /** * Updates the specified stock's quantity. diff --git a/src/main/java/fr/unistra/sil/erp/back/repository/stock/SqliteStocksRepository.java b/src/main/java/fr/unistra/sil/erp/back/repository/stock/SqliteStocksRepository.java index a7648c6fc0e4c081cd5eb71fc3204f6e18603d41..751f6a97e65d5390cb5986c981849d8902e16297 100644 --- a/src/main/java/fr/unistra/sil/erp/back/repository/stock/SqliteStocksRepository.java +++ b/src/main/java/fr/unistra/sil/erp/back/repository/stock/SqliteStocksRepository.java @@ -45,6 +45,8 @@ public class SqliteStocksRepository extends SqliteRepository implements IStocksR private static final String SQL_GETSTOCKFORITEM = SQL_GETSTOCKS + " WHERE item = ?"; private static final String SQL_UPDATESTOCK = "UPDATE stocks SET quantity = ? WHERE item = ?"; + + private static final String SQL_INSERTSTOCK = "INSERT INTO stocks (item, quantity) VALUES (?, ?)"; /** * Class constructor. @@ -130,6 +132,27 @@ public class SqliteStocksRepository extends SqliteRepository implements IStocksR return s; } + + @Override + public Stock insertStock(Stock s) throws SQLException + { + PreparedStatement ps; + try { + ps = this.conn.prepareStatement(SQL_INSERTSTOCK); + ps.setInt(1, s.getItem().getId()); + ps.setInt(2, s.getQuantity()); + } catch (SQLException ex) { + Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Failed to connect to database.", ex); + return null; + } + try { + ps.executeUpdate(); + } catch (SQLException ex) { + Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Failed to create item: " + ex.getMessage()); + return null; + } + return s; + } /** * Updates the specified stock entry with the new quantity. diff --git a/src/main/java/fr/unistra/sil/erp/back/service/StoreStockService.java b/src/main/java/fr/unistra/sil/erp/back/service/StoreStockService.java new file mode 100644 index 0000000000000000000000000000000000000000..c364affb2853890271943dda538cb8b8e803a153 --- /dev/null +++ b/src/main/java/fr/unistra/sil/erp/back/service/StoreStockService.java @@ -0,0 +1,30 @@ +/* + * CONTRAT DE LICENCE DE LOGICIEL LIBRE CECILL-B + * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html + */ +package fr.unistra.sil.erp.back.service; + +import fr.unistra.sil.erp.back.model.Stock; +import fr.unistra.sil.erp.back.repository.IStocksRepository; +import java.sql.SQLException; +import org.springframework.stereotype.Service; + +/** + * + * @author antoine.beauvais + */ +@Service +public class StoreStockService { + private final IStocksRepository repo; + + public StoreStockService(IStocksRepository s) + { + this.repo = s; + } + + public Stock store(Stock s) throws SQLException + { + this.repo.insertStock(s); + return s; + } +}