/* * * * Copyright © 2013 VillageReach. All Rights Reserved. This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. * * * * If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. * */ package org.openlmis.order.repository; import org.openlmis.core.exception.DataException; import org.openlmis.core.repository.helper.CommaSeparator; import org.openlmis.order.domain.Order; import org.openlmis.order.domain.OrderFileColumn; import org.openlmis.order.domain.OrderStatus; import org.openlmis.order.repository.mapper.OrderMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Repository; import java.util.List; /** * Repository class for Order related database operations. */ @Repository public class OrderRepository { @Autowired private OrderMapper orderMapper; @Autowired CommaSeparator commaSeparator; public void save(Order order) { try { orderMapper.insert(order); } catch (DuplicateKeyException dke) { throw new DataException("msg.rnr.already.converted.to.order"); } } public List<Order> getOrdersForPage(int page, int pageSize, Long userId, String rightName) { return orderMapper.getOrders(pageSize, (page - 1) * pageSize, userId, rightName); } public List<Order> getOrdersForPage(int page, int pageSize, Long userId, String right, Long supplyDepot, Long program, Long period) { return orderMapper.getOrdersByDepot(pageSize, (page - 1) * pageSize, userId, right, supplyDepot, program, period); } public Order getById(Long id) { return orderMapper.getById(id); } public void updateStatusAndShipmentIdForOrder(String orderNumber, OrderStatus status, Long shipmentId) { orderMapper.updateShipmentAndStatus(orderNumber, status, shipmentId); } public List<OrderFileColumn> getOrderFileTemplate() { return orderMapper.getOrderFileColumns(); } //TODO update instead of delete and insert public void saveOrderFileColumns(List<OrderFileColumn> orderFileColumns, Long userId) { orderMapper.deleteOrderFileColumns(); for (OrderFileColumn column : orderFileColumns) { column.setModifiedBy(userId); orderMapper.insertOrderFileColumn(column); } } public void updateOrderStatus(Order order) { orderMapper.updateOrderStatus(order); } public OrderStatus getStatus(String orderNumber) { return orderMapper.getStatus(orderNumber); } public Integer getNumberOfPages(int pageSize) { return orderMapper.getNumberOfPages(pageSize); } public Integer getNumberOfPages(int pageSize, Long supplyDepot, Long program, Long period) { return orderMapper.getNumberOfPagesByDepot(pageSize, supplyDepot, program, period); } public List<Order> searchByWarehousesAndStatuses(List<Long> facilityIds, List<OrderStatus> orderStatuses, Long programId, Long facilityId, String managedFacilities) { if (facilityId != 0 && facilityId != null) { return orderMapper.getByWarehouseIdsAndStatusesByFacility(format(facilityIds.toString()), format(orderStatuses.toString()), programId, facilityId, managedFacilities); } return orderMapper.getByWarehouseIdsAndStatuses(format(facilityIds.toString()), format(orderStatuses.toString()), programId, managedFacilities); } private String format(String listString) { return listString.replace('[', '{').replace(']', '}'); } public Order getByOrderNumber(String orderNumber) { return orderMapper.getByOrderNumber(orderNumber); } }