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.gl.dataaccess;
017    
018    import java.util.Iterator;
019    import java.util.List;
020    import java.util.Map;
021    
022    import org.kuali.kfs.gl.businessobject.AccountBalance;
023    import org.kuali.kfs.gl.businessobject.Transaction;
024    
025    /**
026     * An interface that declares methods needed for AccountBalances to interact with the database
027     */
028    public interface AccountBalanceDao {
029        /**
030         * Given a transaction, finds a matching account balance in the database
031         * 
032         * @param t a transaction to find an appropriate related account balance for
033         * @return an appropriate account balance
034         */
035        public AccountBalance getByTransaction(Transaction t);
036    
037        /**
038         * Saves an account balance to the database
039         * 
040         * @param ab an account balance to save
041         */
042        public void save(AccountBalance ab);
043    
044        /**
045         * This method finds the available account balances according to input fields and values
046         * 
047         * @param fieldValues the input fields and values
048         * @return the summary records of account balance entries
049         */
050        public Iterator findConsolidatedAvailableAccountBalance(Map fieldValues);
051    
052        /**
053         * This method finds the available account balances according to input fields and values
054         * 
055         * @param fieldValues the input fields and values
056         * @return account balance entries
057         */
058        public Iterator findAvailableAccountBalance(Map fieldValues);
059    
060        /**
061         * Get available balances by consolidation for specific object types
062         * 
063         * @param objectTypes the object types that reported account balances must have
064         * @param universityFiscalYear the university fiscal year of account balances to find
065         * @param chartOfAccountsCode the chart of accounts of account balances to find
066         * @param accountNumber the account number of account balances to find
067         * @param isExcludeCostShare whether cost share entries should be excluded from this inquiry
068         * @param isConsolidated whether the results of this should be consolidated or not
069         * @param pendingEntriesCode whether to include no pending entries, approved pending entries, or all pending entries
070         * @return a List of Maps with the appropriate query results
071         */
072        public List findAccountBalanceByConsolidationByObjectTypes(String[] objectTypes, Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, boolean isExcludeCostShare, boolean isConsolidated, int pendingEntriesCode);
073    
074        /**
075         * Get available balances by level
076         * 
077         * @param universityFiscalYear the university fiscal year of account balances to find
078         * @param chartOfAccountsCode the chart of accounts of account balances to find
079         * @param accountNumber the account number of account balances to find
080         * @param financialConsolidationObjectCode the consolidation code of account balances to find
081         * @param isCostShareExcluded whether cost share entries should be excluded from this inquiry
082         * @param isConsolidated whether the results of this should be consolidated or not
083         * @return a List of Mapswith the appropriate query results
084         */
085        public List findAccountBalanceByLevel(Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, String financialConsolidationObjectCode, boolean isCostShareExcluded, boolean isConsolidated, int pendingEntryCode);
086    
087        /**
088         * Get available balances by object
089         * 
090         * @param universityFiscalYear the university fiscal year of account balances to find
091         * @param chartOfAccountsCode the chart of accounts of account balances to find
092         * @param accountNumber the account number of account balances to find
093         * @param financialObjectLevelCode the object level code of account balances to find
094         * @param financialReportingSortCode
095         * @param isCostShareExcluded whether cost share entries should be excluded from this inquiry
096         * @param isConsolidated whether the results of this should be consolidated or not
097         * @return a List of Maps with the appropriate query results
098         */
099        public List findAccountBalanceByObject(Integer universityFiscalYear, String chartOfAccountsCode, String accountNumber, String financialObjectLevelCode, String financialReportingSortCode, boolean isCostShareExcluded, boolean isConsolidated, int pendingEntryCode);
100    
101        /**
102         * Purge an entire fiscal year for a single chart.
103         * 
104         * @param chartOfAccountsCode the chart of accounts code of account balances to purge
105         * @param year the fiscal year of account balances to purge
106         */
107        public void purgeYearByChart(String chartOfAccountscode, int year);
108        
109        /**
110         * @param year the given university fiscal year
111         * @return count of rows for the given fiscal year
112         */
113        public Integer findCountGreaterOrEqualThan(Integer year);
114    }