001/*
002 * Copyright 2008 The Kuali Foundation
003 * 
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 * 
008 * http://www.opensource.org/licenses/ecl2.php
009 * 
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.ole.module.purap.document.dataaccess.impl;
017
018import org.apache.ojb.broker.query.Criteria;
019import org.apache.ojb.broker.query.ReportQueryByCriteria;
020import org.kuali.ole.module.purap.PurapPropertyConstants;
021import org.kuali.ole.module.purap.document.BulkReceivingDocument;
022import org.kuali.ole.module.purap.document.dataaccess.BulkReceivingDao;
023import org.kuali.ole.sys.OLEPropertyConstants;
024import org.kuali.rice.core.framework.persistence.ojb.dao.PlatformAwareDaoBaseOjb;
025import org.springframework.transaction.annotation.Transactional;
026
027import java.sql.Date;
028import java.util.ArrayList;
029import java.util.List;
030
031@Transactional
032public class BulkReceivingDaoOjb extends PlatformAwareDaoBaseOjb implements BulkReceivingDao {
033
034    private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(BulkReceivingDaoOjb.class);
035
036    public List<String> getDocumentNumbersByPurchaseOrderId(Integer id) {
037
038        List<String> returnList = new ArrayList<String>();
039        Criteria criteria = new Criteria();
040        criteria.addEqualTo(PurapPropertyConstants.PURCHASE_ORDER_IDENTIFIER, id);
041        returnList = getDocumentNumbersOfBulkReceivingByCriteria(criteria, false);
042
043        return returnList;
044    }
045
046    public List<String> duplicateBillOfLadingNumber(Integer poId, String billOfLadingNumber) {
047        List<String> returnList = new ArrayList<String>();
048        Criteria criteria = new Criteria();
049        criteria.addEqualTo(PurapPropertyConstants.PURCHASE_ORDER_IDENTIFIER, poId);
050        criteria.addEqualTo(PurapPropertyConstants.SHIPMENT_BILL_OF_LADING_NUMBER, billOfLadingNumber);
051        returnList = getDocumentNumbersOfBulkReceivingByCriteria(criteria, false);
052
053        return returnList;
054    }
055
056    public List<String> duplicatePackingSlipNumber(Integer poId, String packingSlipNumber) {
057        List<String> returnList = new ArrayList<String>();
058        Criteria criteria = new Criteria();
059        criteria.addEqualTo(PurapPropertyConstants.PURCHASE_ORDER_IDENTIFIER, poId);
060        criteria.addEqualTo(PurapPropertyConstants.SHIPMENT_PACKING_SLIP_NUMBER, packingSlipNumber);
061        returnList = getDocumentNumbersOfBulkReceivingByCriteria(criteria, false);
062
063        return returnList;
064    }
065
066    public List<String> duplicateVendorDate(Integer poId, Date vendorDate) {
067        List<String> returnList = new ArrayList<String>();
068        Criteria criteria = new Criteria();
069        criteria.addEqualTo(PurapPropertyConstants.PURCHASE_ORDER_IDENTIFIER, poId);
070        criteria.addEqualTo(PurapPropertyConstants.SHIPMENT_RECEIVED_DATE, vendorDate);
071        returnList = getDocumentNumbersOfBulkReceivingByCriteria(criteria, false);
072
073        return returnList;
074    }
075
076    protected List<String> getDocumentNumbersOfBulkReceivingByCriteria(Criteria criteria, boolean orderByAscending) {
077        List<String> returnList = new ArrayList<String>();
078
079        ReportQueryByCriteria rqbc = new ReportQueryByCriteria(BulkReceivingDocument.class, criteria);
080        if (orderByAscending) {
081            rqbc.addOrderByAscending(OLEPropertyConstants.DOCUMENT_NUMBER);
082        } else {
083            rqbc.addOrderByDescending(OLEPropertyConstants.DOCUMENT_NUMBER);
084        }
085
086        List<BulkReceivingDocument> bulkReceivingDocs = (List<BulkReceivingDocument>) getPersistenceBrokerTemplate().getCollectionByQuery(rqbc);
087
088        for (BulkReceivingDocument bulkReceivingDoc : bulkReceivingDocs) {
089            returnList.add(bulkReceivingDoc.getDocumentNumber());
090        }
091
092        return returnList;
093    }
094}