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.Collection; 019 import java.util.Iterator; 020 import java.util.Map; 021 022 import org.kuali.kfs.gl.businessobject.OriginEntryInformation; 023 import org.kuali.kfs.gl.businessobject.OriginEntryFull; 024 import org.kuali.kfs.gl.businessobject.OriginEntryGroup; 025 import org.kuali.rice.kns.util.KualiDecimal; 026 027 /** 028 * 029 */ 030 public interface OriginEntryDao { 031 /** 032 * Sort origin entries by document id 033 */ 034 public static final int SORT_DOCUMENT = 1; 035 /** 036 * Sort origin entries by account number 037 */ 038 public static final int SORT_ACCOUNT = 2; 039 /** 040 * Sort origin entries by standard report order (by document type code and system origination code) 041 */ 042 public static final int SORT_REPORT = 3; 043 /** 044 * Sort origin entries by listing report order (by fiscal year, chart code, account number, etc.: the order you see them in in generated text files) 045 */ 046 public static final int SORT_LISTING_REPORT = 4; 047 048 /** 049 * Get the total amount of transactions in a group 050 * @param the id of the origin entry group to total 051 * @param isCredit whether the total should be of credits or not 052 * @return the sum of all queried origin entries 053 */ 054 public KualiDecimal getGroupTotal(Integer groupId, boolean isCredit); 055 056 /** 057 * Counts the number of entries in a group 058 * @param the id of an origin entry group 059 * @return the count of the entries in that group 060 */ 061 public Integer getGroupCount(Integer groupId); 062 063 /** 064 * Counts of rows of all the origin entry groups 065 * 066 * @return iterator of Object[] {[BigDecimal id,BigDecimal count]} 067 */ 068 public Iterator getGroupCounts(); 069 070 /** 071 * Delete an entry 072 * 073 * @param oe Entry to delete 074 */ 075 public void deleteEntry(OriginEntryInformation oe); 076 077 /** 078 * Return an iterator to all document keys reference by origin entries in a given group 079 * 080 * @param oeg Group the origin entry group to find entries in, by origin entry 081 * @return Iterator of java.lang.Object[] with report data about all of the distinct document numbers/type code/origination code combinations of origin entries in the group 082 */ 083 public Iterator getDocumentsByGroup(OriginEntryGroup oeg); 084 085 /** 086 * Return an iterator to all the entries in a group 087 * 088 * @param oeg the origin entry group to get entries in 089 * @param sort the Sort Order (one of the Sort Orders defined by the SORT_ constants defined in this class) 090 * @return Iterator of entries in the specified group 091 */ 092 public <T> Iterator<T> getEntriesByGroup(OriginEntryGroup oeg, int sort); 093 094 /** 095 * Get bad balance entries; bad because a) they have invalid balance types, and b) because they revert the balances back to their stone age selves 096 * 097 * @param groups a Collection of groups to remove bad entries in 098 * @return an Iterator of no good, won't use, bad balance entries 099 */ 100 public Iterator<OriginEntryFull> getBadBalanceEntries(Collection groups); 101 102 /** 103 * Collection of entries that match criteria 104 * 105 * @param searchCriteria Map of field, value pairs 106 * @return collection of entries 107 */ 108 public Collection<OriginEntryFull> getMatchingEntriesByCollection(Map searchCriteria); 109 110 /** 111 * Iterator of entries that match criteria 112 * 113 * @param searchCriteria Map of field, value pairs 114 * @return collection of entries 115 */ 116 public Iterator getMatchingEntries(Map searchCriteria); 117 118 /** 119 * Delete entries that match criteria 120 * 121 * @param searchCriteria Map of field, value pairs 122 */ 123 public void deleteMatchingEntries(Map searchCriteria); 124 125 /** 126 * Delete all the groups in the list. This will delete the entries. The OriginEntryGroupDao has a method to delete the groups 127 * 128 * @param groups a Collection of Origin Entry Groups to delete entries in 129 */ 130 public void deleteGroups(Collection<OriginEntryGroup> groups); 131 132 /** 133 * Save origin entry 134 * 135 * @param entry entry to save 136 */ 137 public void saveOriginEntry(OriginEntryInformation entry); 138 139 140 /** 141 * Finds an entry for the given entryId, or returns a newly created on 142 * 143 * @param entryId an entry id to find an entry for 144 * @return the entry for the given entry id, or a newly created entry 145 */ 146 public OriginEntryFull getExactMatchingEntry(Integer entryId); 147 148 /** 149 * get the summarized information of the entries that belong to the entry groups with the given group ids 150 * 151 * @param groupIdList the ids of origin entry groups 152 * @return a set of summarized information of the entries within the specified groups 153 */ 154 public Iterator getSummaryByGroupId(Collection groupIdList); 155 156 /** 157 * This method should only be used in unit tests. It loads all the gl_origin_entry_t rows in memory into a collection. This 158 * won't scale for production. 159 * 160 * @return a Collection with every single origin entry in the database 161 */ 162 public Collection testingGetAllEntries(); 163 164 /** 165 * get the summarized information of poster input entries that belong to the entry groups with the given group id list 166 * 167 * @param groups the origin entry groups 168 * @return a set of summarized information of poster input entries within the specified groups 169 */ 170 public Iterator getPosterOutputSummaryByGroupId(Collection groups); 171 172 }