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.dataaccess.impl;
017    
018    import java.util.ArrayList;
019    import java.util.Collection;
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.QueryByCriteria;
025    import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceLoadSummary;
026    import org.kuali.kfs.module.purap.businessobject.PurchaseOrderSensitiveData;
027    import org.kuali.kfs.module.purap.businessobject.SensitiveData;
028    import org.kuali.kfs.module.purap.businessobject.SensitiveDataAssignment;
029    import org.kuali.kfs.module.purap.businessobject.SensitiveDataAssignmentDetail;
030    import org.kuali.kfs.module.purap.dataaccess.SensitiveDataDao;
031    import org.kuali.kfs.module.purap.document.PaymentRequestDocument;
032    import org.kuali.rice.kns.dao.impl.PlatformAwareDaoBaseOjb;
033    
034    public class SensitiveDataDaoOjb extends PlatformAwareDaoBaseOjb implements SensitiveDataDao {
035    
036        private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(SensitiveDataDaoOjb.class);
037    
038        public SensitiveDataDaoOjb() {
039            super();
040        }
041    
042        /**
043         * @see org.kuali.kfs.integration.service.SensitiveDataDaoe#getSensitiveDatasAssignedByPoId(java.lang.Integer)
044         */
045        public List<SensitiveData> getSensitiveDatasAssignedByPoId(Integer poId) {
046            LOG.debug("getSensitiveDatasAssignedByPoId(Integer) started");
047    
048            Criteria criteria = new Criteria();
049            criteria.addEqualTo("purapDocumentIdentifier", poId);
050            Collection<PurchaseOrderSensitiveData> posdColl = getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(PurchaseOrderSensitiveData.class, criteria));
051            List<SensitiveData> sdList = new ArrayList<SensitiveData>();
052            for (PurchaseOrderSensitiveData posd : posdColl) {
053                sdList.add(posd.getSensitiveData());
054            }
055            
056            return sdList;
057        }
058    
059        /**
060         * @see org.kuali.kfs.integration.service.SensitiveDataDaoe#getSensitiveDatasAssignedByReqId(java.lang.Integer)
061         */
062        public List<SensitiveData> getSensitiveDatasAssignedByReqId(Integer reqId) {
063            LOG.debug("getSensitiveDatasAssignedByReqId(Integer) started");
064    
065            Criteria criteria = new Criteria();
066            criteria.addEqualTo("requisitionIdentifier", reqId);
067            Collection<PurchaseOrderSensitiveData> posdColl = getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(PurchaseOrderSensitiveData.class, criteria));
068            List<SensitiveData> sdList = new ArrayList<SensitiveData>();
069            for (PurchaseOrderSensitiveData posd : posdColl) {
070                sdList.add(posd.getSensitiveData());
071            }
072            
073            return sdList;
074        }    
075    
076        /**
077         * @see org.kuali.kfs.integration.service.SensitiveDataDaoe#deletePurchaseOrderSensitiveDatas(java.lang.Integer)
078         */
079        public void deletePurchaseOrderSensitiveDatas(Integer poId) {
080            LOG.debug("deletePurchaseOrderSensitiveDatas(Integer) started");
081            Criteria criteria = new Criteria();
082            criteria.addEqualTo("purapDocumentIdentifier", poId);
083            getPersistenceBrokerTemplate().deleteByQuery(new QueryByCriteria(PurchaseOrderSensitiveData.class, criteria));
084        }
085        
086        /**
087         * @see org.kuali.kfs.integration.service.SensitiveDataDaoe#savePurchaseOrderSensitiveDatas(List<PurchaseOrderSensitiveData>)
088         */
089        public void savePurchaseOrderSensitiveDatas(List<PurchaseOrderSensitiveData> posds) {
090            LOG.debug("savePurchaseOrderSensitiveDatas(List<PurchaseOrderSensitiveData>) started");
091            if (posds == null)
092                return;
093            for (PurchaseOrderSensitiveData posd : posds) {
094                getPersistenceBrokerTemplate().store(posd);
095            }
096        }
097        
098        /**
099         * @see org.kuali.kfs.integration.service.SensitiveDataDaoe#getLastSensitiveDataAssignment(java.lang.Integer)
100         */
101        public SensitiveDataAssignment getLastSensitiveDataAssignment(Integer poId) {
102            LOG.debug("getLastSensitiveDataAssignment(Integer) started");
103    
104            Criteria criteria = new Criteria();
105            criteria.addEqualTo("purapDocumentIdentifier", poId);
106            Collection<SensitiveDataAssignment> sdaColl = getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(SensitiveDataAssignment.class, criteria));
107            
108            // look for the greatest assignment ID, which will be the latest one for this PO
109            int max = 0;
110            SensitiveDataAssignment lastsda = null;
111            for (SensitiveDataAssignment sda : sdaColl) {
112                if (sda.getSensitiveDataAssignmentIdentifier() >= max) {
113                    max = sda.getSensitiveDataAssignmentIdentifier();
114                    lastsda = sda;
115                }
116            }
117            
118            return lastsda;                
119        }
120    
121        /*
122        public Integer getLastSensitiveDataAssignmentId(Integer poId) {
123            LOG.debug("getLastSensitiveDataAssignmentId(Integer) started");
124    
125            Criteria criteria = new Criteria();
126            criteria.addEqualTo("purapDocumentIdentifier", poId);
127            Collection sdaColl = getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(SensitiveDataAssignment.class, criteria));
128            if (sdaColl == null || sdaColl.isEmpty())
129                return null;
130            else {
131                SensitiveDataAssignment sda = (SensitiveDataAssignment)sdaColl.toArray()[0];        
132                return sda.getSensitiveDataAssignmentIdentifier();
133            }
134        }
135        */
136    
137        /**
138         * @see org.kuali.kfs.integration.service.SensitiveDataDaoe#saveSensitiveDataAssignment(SensitiveDataAssignment)
139         */
140        public void saveSensitiveDataAssignment(SensitiveDataAssignment sda) {
141            LOG.debug("saveSensitiveDataAssignment(SensitiveDataAssignment) started");
142            getPersistenceBrokerTemplate().store(sda);        
143        }
144       
145        /**
146         * @see org.kuali.kfs.integration.service.SensitiveDataDaoe#saveSensitiveDataAssignmentDetails(List<SensitiveDataAssignmentDetail>)
147         */
148        public void saveSensitiveDataAssignmentDetails(List<SensitiveDataAssignmentDetail> sdads) {
149            LOG.debug("saveSensitiveDataAssignmentDetails(List<SensitiveDataAssignmentDetail>) started");
150            if (sdads == null)
151                return;
152            for (SensitiveDataAssignmentDetail sda : sdads) {
153                getPersistenceBrokerTemplate().store(sda);
154            }
155        }
156    
157    }