001    /**
002     * Copyright 2004-2013 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.hr.lm.balancetransfer.dao;
017    
018    import java.sql.Date;
019    import java.util.ArrayList;
020    import java.util.Collection;
021    import java.util.List;
022    
023    import org.apache.log4j.Logger;
024    import org.apache.ojb.broker.query.Criteria;
025    import org.apache.ojb.broker.query.Query;
026    import org.apache.ojb.broker.query.QueryFactory;
027    
028    import org.kuali.hr.core.util.OjbSubQueryUtil;
029    import org.kuali.hr.lm.balancetransfer.BalanceTransfer;
030    import org.kuali.hr.lm.workflow.LeaveCalendarDocumentHeader;
031    import org.kuali.hr.time.util.TkConstants;
032    import org.kuali.rice.core.framework.persistence.ojb.dao.PlatformAwareDaoBaseOjb;
033    
034    public class BalanceTransferDaoSpringOjbImpl extends PlatformAwareDaoBaseOjb implements
035                    BalanceTransferDao {
036            
037            private static final Logger LOG = Logger.getLogger(BalanceTransfer.class);
038    
039            @Override
040            public List<BalanceTransfer> getAllBalanceTransfersForPrincipalId(
041                            String principalId) {
042                    Criteria crit = new Criteria();
043                    List<BalanceTransfer> balanceTransfers = new ArrayList<BalanceTransfer>();
044                    crit.addEqualTo("principalId",principalId);
045                    Query query = QueryFactory.newQuery(BalanceTransfer.class,crit);
046                    
047                    Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
048                    
049                    if(c != null)
050                            balanceTransfers.addAll(c);
051                    
052                    return balanceTransfers;
053            }
054    
055            @Override
056            public List<BalanceTransfer> getAllBalanceTransferForPrincipalIdAsOfDate(
057                            String principalId, Date effectiveDate) {
058                    List<BalanceTransfer> balanceTransfers = new ArrayList<BalanceTransfer>();
059                    Criteria crit = new Criteria();
060                    crit.addEqualTo("principalId",principalId);
061                    Criteria effDate = new Criteria();
062                    effDate.addGreaterOrEqualThan("effectiveDate", effectiveDate);
063                    crit.addAndCriteria(effDate);
064                    Query query = QueryFactory.newQuery(BalanceTransfer.class,crit);
065                    Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
066                    
067                    if(c != null)
068                            balanceTransfers.addAll(c);
069                    
070                    return balanceTransfers;
071            }
072    
073            @Override
074            public List<BalanceTransfer> getAllBalanceTransferByEffectiveDate(
075                            Date effectiveDate) {
076                    List<BalanceTransfer> balanceTransfers = new ArrayList<BalanceTransfer>();
077                    Criteria effDate = new Criteria();
078                    effDate.addGreaterOrEqualThan("effectiveDate", effectiveDate);
079                    Query query = QueryFactory.newQuery(BalanceTransfer.class,effDate);
080                    
081                    Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
082                    
083                    if(c != null)
084                            balanceTransfers.addAll(c);
085                    
086                    return balanceTransfers;
087            }
088    
089            @Override
090            public BalanceTransfer getBalanceTransferById(String balanceTransferId) {
091                    Criteria crit = new Criteria();
092                    crit.addEqualTo("balanceTransferId",balanceTransferId);
093                    Query query = QueryFactory.newQuery(BalanceTransfer.class,crit);
094                    return (BalanceTransfer) this.getPersistenceBrokerTemplate().getObjectByQuery(query);
095            }
096    
097            @Override
098            public List<BalanceTransfer> getAllBalanceTransfersMarkedPayoutForPrincipalId(
099                            String principalId) {
100                    Criteria crit = new Criteria();
101                    List<BalanceTransfer> balanceTransfers = new ArrayList<BalanceTransfer>();
102                    crit.addEqualTo("principalId",principalId);
103                    Criteria payoutCrit = new Criteria();
104                    payoutCrit.addNotNull("earnCode");
105                    crit.addAndCriteria(payoutCrit);
106                    Query query = QueryFactory.newQuery(BalanceTransfer.class,crit);
107                    
108                    Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
109                    
110                    if(c != null)
111                            balanceTransfers.addAll(c);
112                    
113                    return balanceTransfers;
114            }
115    
116            @Override
117            public List<BalanceTransfer> getAllBalanceTransfersForAccrualCategoryRuleByDate(
118                            String accrualRuleId, Date asOfDate) {
119                    Criteria crit = new Criteria();
120                    List<BalanceTransfer> balanceTransfers = new ArrayList<BalanceTransfer>();
121                    crit.addGreaterOrEqualThan("effectiveDate",asOfDate);
122                    Criteria accrualCategory = new Criteria();
123                    accrualCategory.addEqualTo("accrualCategoryRule", accrualRuleId);
124                    crit.addAndCriteria(accrualCategory);
125                    Query query = QueryFactory.newQuery(BalanceTransfer.class,crit);
126                    
127                    Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
128                    
129                    if(c != null)
130                            balanceTransfers.addAll(c);
131                    
132                    return balanceTransfers;
133            }
134    
135            @Override
136            public List<BalanceTransfer> getBalanceTransfers(String viewPrincipal, Date beginPeriodDate, Date endPeriodDate) {
137                    // TODO Auto-generated method stub
138                    List<BalanceTransfer> balanceTransfers = new ArrayList<BalanceTransfer>();
139                    Criteria crit = new Criteria();
140                    crit.addEqualTo("principalId",viewPrincipal);
141                    
142                    Criteria effDate = new Criteria();
143                    effDate.addGreaterOrEqualThan("effectiveDate", beginPeriodDate);
144                    effDate.addLessOrEqualThan("effectiveDate", endPeriodDate);
145                    
146                    crit.addAndCriteria(effDate);
147                    
148                    Query query = QueryFactory.newQuery(BalanceTransfer.class,crit);
149                    
150                    Collection c = this.getPersistenceBrokerTemplate().getCollectionByQuery(query);
151                    
152                    if(c != null)
153                            balanceTransfers.addAll(c);
154                    
155                    return balanceTransfers;
156            }
157    
158        @Override
159        public void saveOrUpdate(BalanceTransfer balanceTransfer) {
160            this.getPersistenceBrokerTemplate().store(balanceTransfer);
161        }
162    }