001    /*
002     * Copyright 2011 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     */
016    package org.kuali.kfs.module.purap.document.dataaccess.impl;
017    
018    import java.sql.Date;
019    import java.util.ArrayList;
020    import java.util.Iterator;
021    import java.util.List;
022    
023    import org.apache.ojb.broker.query.Criteria;
024    import org.apache.ojb.broker.query.ReportQueryByCriteria;
025    import org.kuali.kfs.module.purap.PurapPropertyConstants;
026    import org.kuali.kfs.module.purap.document.BulkReceivingDocument;
027    import org.kuali.kfs.module.purap.document.dataaccess.BulkReceivingDao;
028    import org.kuali.kfs.sys.KFSPropertyConstants;
029    import org.kuali.rice.kns.dao.impl.PlatformAwareDaoBaseOjb;
030    
031    public class BulkReceivingDaoOjb  extends PlatformAwareDaoBaseOjb implements BulkReceivingDao {
032        
033        private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(BulkReceivingDaoOjb.class);
034    
035        public List<String> getDocumentNumbersByPurchaseOrderId(Integer id) {        
036    
037            List<String> returnList = new ArrayList<String>();
038            Criteria criteria = new Criteria();
039            criteria.addEqualTo(PurapPropertyConstants.PURCHASE_ORDER_IDENTIFIER, id);        
040            Iterator<Object[]> iter = getDocumentNumbersOfBulkReceivingByCriteria(criteria, false);
041            while (iter.hasNext()) {
042                Object[] cols = (Object[]) iter.next();
043                returnList.add((String) cols[0]);
044            }
045            return returnList;
046    
047        }
048        
049        public List<String> duplicateBillOfLadingNumber(Integer poId, 
050                                                        String billOfLadingNumber) {
051            
052            List<String> returnList = new ArrayList<String>();
053            Criteria criteria = new Criteria();
054            criteria.addEqualTo(PurapPropertyConstants.PURCHASE_ORDER_IDENTIFIER, poId);
055            criteria.addEqualTo(PurapPropertyConstants.SHIPMENT_BILL_OF_LADING_NUMBER, billOfLadingNumber);        
056            Iterator<Object[]> iter = getDocumentNumbersOfBulkReceivingByCriteria(criteria, false);
057    
058            while (iter.hasNext()) {
059                Object[] cols = (Object[]) iter.next();
060                returnList.add((String) cols[0]);
061            }
062            
063            return returnList;
064        }
065    
066        public List<String> duplicatePackingSlipNumber(Integer poId, 
067                                                       String packingSlipNumber) {      
068    
069            List<String> returnList = new ArrayList<String>();
070            Criteria criteria = new Criteria();
071            criteria.addEqualTo(PurapPropertyConstants.PURCHASE_ORDER_IDENTIFIER, poId);
072            criteria.addEqualTo(PurapPropertyConstants.SHIPMENT_PACKING_SLIP_NUMBER, packingSlipNumber);        
073            Iterator<Object[]> iter = getDocumentNumbersOfBulkReceivingByCriteria(criteria, false);
074    
075            while (iter.hasNext()) {
076                Object[] cols = (Object[]) iter.next();
077                returnList.add((String) cols[0]);
078            }
079            
080            return returnList;
081        }
082    
083        public List<String> duplicateVendorDate(Integer poId, 
084                                                Date vendorDate) {
085     
086            List<String> returnList = new ArrayList<String>();
087            Criteria criteria = new Criteria();
088            criteria.addEqualTo(PurapPropertyConstants.PURCHASE_ORDER_IDENTIFIER, poId);
089            criteria.addEqualTo(PurapPropertyConstants.SHIPMENT_RECEIVED_DATE, vendorDate);        
090            Iterator<Object[]> iter = getDocumentNumbersOfBulkReceivingByCriteria(criteria, false);
091    
092            while (iter.hasNext()) {
093                Object[] cols = (Object[]) iter.next();
094                returnList.add((String) cols[0]);
095            }
096            
097            return returnList;
098        }
099        
100        protected Iterator<Object[]> getDocumentNumbersOfBulkReceivingByCriteria(Criteria criteria, 
101                                                                               boolean orderByAscending) {
102            
103            ReportQueryByCriteria rqbc = new ReportQueryByCriteria(BulkReceivingDocument.class, criteria);
104            rqbc.setAttributes(new String[] { KFSPropertyConstants.DOCUMENT_NUMBER });
105            if (orderByAscending) {
106                rqbc.addOrderByAscending(KFSPropertyConstants.DOCUMENT_NUMBER);
107            }else {
108                rqbc.addOrderByDescending(KFSPropertyConstants.DOCUMENT_NUMBER);
109            }
110            return getPersistenceBrokerTemplate().getReportQueryIteratorByQuery(rqbc);
111        }
112        
113    }