package org.openlmis.core.model.builder; import org.openlmis.core.exceptions.LMISException; import org.openlmis.core.manager.MovementReasonManager; import org.openlmis.core.model.Product; import org.openlmis.core.model.StockCard; import org.openlmis.core.model.StockMovementItem; import org.openlmis.core.model.repository.StockRepository; import org.openlmis.core.utils.DateUtil; import java.text.ParseException; import java.util.Date; public class StockCardBuilder { private StockCard stockCard; public StockCardBuilder() { stockCard = new StockCard(); } public static StockCard saveStockCardWithOneMovement(StockRepository stockRepository) throws LMISException, ParseException { StockCard stockCard = new StockCard(); stockCard.setStockOnHand(90L); stockRepository.createOrUpdate(stockCard); StockMovementItem stockMovementItem = new StockMovementItem(); stockMovementItem.setStockCard(stockCard); stockMovementItem.setMovementQuantity(10L); stockMovementItem.setStockOnHand(100L); stockMovementItem.setMovementType(MovementReasonManager.MovementType.RECEIVE); stockMovementItem.setDocumentNumber("XXX123456"); stockMovementItem.setReason("some reason"); stockMovementItem.setMovementDate(DateUtil.parseString("2015-11-11", "yyyy-MM-dd")); stockCard.setStockOnHand(stockMovementItem.getStockOnHand()); stockRepository.addStockMovementAndUpdateStockCard(stockMovementItem); stockRepository.refresh(stockCard); return stockCard; } public StockCardBuilder setProduct(Product product) { stockCard.setProduct(product); return this; } public StockCardBuilder setStockOnHand(long stockOnHand) { stockCard.setStockOnHand(stockOnHand); return this; } public StockCard build() { return stockCard; } public static StockCard buildStockCard() { return new StockCardBuilder() .setProduct(ProductBuilder.buildAdultProduct()) .setStockOnHand(200) .build(); } public StockCardBuilder setStockCardId(long stockCardId) { stockCard.setId(stockCardId); return this; } public StockCardBuilder setCreateDate(Date date) { stockCard.setCreatedAt(date); return this; } }