1 /*
2 * Copyright 2005-2006 The Kuali Foundation
3 *
4 * Licensed under the Educational Community License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.opensource.org/licenses/ecl2.php
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.kuali.ole.gl.dataaccess;
17
18 import java.util.Collection;
19 import java.util.Iterator;
20 import java.util.Map;
21
22 import org.kuali.ole.gl.businessobject.OriginEntryFull;
23 import org.kuali.ole.gl.businessobject.OriginEntryGroup;
24 import org.kuali.ole.gl.businessobject.OriginEntryInformation;
25 import org.kuali.rice.core.api.util.type.KualiDecimal;
26
27 /**
28 *
29 */
30 public interface OriginEntryDao {
31 /**
32 * Sort origin entries by document id
33 */
34 public static final int SORT_DOCUMENT = 1;
35 /**
36 * Sort origin entries by account number
37 */
38 public static final int SORT_ACCOUNT = 2;
39 /**
40 * Sort origin entries by standard report order (by document type code and system origination code)
41 */
42 public static final int SORT_REPORT = 3;
43 /**
44 * 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)
45 */
46 public static final int SORT_LISTING_REPORT = 4;
47
48 /**
49 * Get the total amount of transactions in a group
50 * @param the id of the origin entry group to total
51 * @param isCredit whether the total should be of credits or not
52 * @return the sum of all queried origin entries
53 */
54 public KualiDecimal getGroupTotal(Integer groupId, boolean isCredit);
55
56 /**
57 * Counts the number of entries in a group
58 * @param the id of an origin entry group
59 * @return the count of the entries in that group
60 */
61 public Integer getGroupCount(Integer groupId);
62
63 /**
64 * Counts of rows of all the origin entry groups
65 *
66 * @return iterator of Object[] {[BigDecimal id,BigDecimal count]}
67 */
68 public Iterator getGroupCounts();
69
70 /**
71 * Delete an entry
72 *
73 * @param oe Entry to delete
74 */
75 public void deleteEntry(OriginEntryInformation oe);
76
77 /**
78 * Return an iterator to all document keys reference by origin entries in a given group
79 *
80 * @param oeg Group the origin entry group to find entries in, by origin entry
81 * @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
82 */
83 public Iterator getDocumentsByGroup(OriginEntryGroup oeg);
84
85 /**
86 * Return an iterator to all the entries in a group
87 *
88 * @param oeg the origin entry group to get entries in
89 * @param sort the Sort Order (one of the Sort Orders defined by the SORT_ constants defined in this class)
90 * @return Iterator of entries in the specified group
91 */
92 public <T> Iterator<T> getEntriesByGroup(OriginEntryGroup oeg, int sort);
93
94 /**
95 * 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
96 *
97 * @param groups a Collection of groups to remove bad entries in
98 * @return an Iterator of no good, won't use, bad balance entries
99 */
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 * Finds an entry for the given entryId, or returns a newly created on
134 *
135 * @param entryId an entry id to find an entry for
136 * @return the entry for the given entry id, or a newly created entry
137 */
138 public OriginEntryFull getExactMatchingEntry(Integer entryId);
139
140 /**
141 * get the summarized information of the entries that belong to the entry groups with the given group ids
142 *
143 * @param groupIdList the ids of origin entry groups
144 * @return a set of summarized information of the entries within the specified groups
145 */
146 public Iterator getSummaryByGroupId(Collection groupIdList);
147
148 /**
149 * This method should only be used in unit tests. It loads all the gl_origin_entry_t rows in memory into a collection. This
150 * won't scale for production.
151 *
152 * @return a Collection with every single origin entry in the database
153 */
154 public Collection testingGetAllEntries();
155
156 /**
157 * get the summarized information of poster input entries that belong to the entry groups with the given group id list
158 *
159 * @param groups the origin entry groups
160 * @return a set of summarized information of poster input entries within the specified groups
161 */
162 public Iterator getPosterOutputSummaryByGroupId(Collection groups);
163
164 }