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.endow.dataaccess.impl;
017
018 import java.math.BigDecimal;
019 import java.sql.Date;
020 import java.text.ParseException;
021 import java.util.ArrayList;
022 import java.util.Collection;
023 import java.util.HashMap;
024 import java.util.Iterator;
025 import java.util.List;
026 import java.util.Map;
027
028 import org.apache.commons.lang.StringUtils;
029 import org.apache.ojb.broker.query.Criteria;
030 import org.apache.ojb.broker.query.QueryByCriteria;
031 import org.apache.ojb.broker.query.QueryFactory;
032 import org.apache.ojb.broker.query.ReportQueryByCriteria;
033 import org.kuali.kfs.module.endow.EndowConstants;
034 import org.kuali.kfs.module.endow.EndowPropertyConstants;
035 import org.kuali.kfs.module.endow.businessobject.FeeEndowmentTransactionCode;
036 import org.kuali.kfs.module.endow.businessobject.FeeMethod;
037 import org.kuali.kfs.module.endow.businessobject.FeeTransaction;
038 import org.kuali.kfs.module.endow.businessobject.KEMID;
039 import org.kuali.kfs.module.endow.businessobject.KemidBenefittingOrganization;
040 import org.kuali.kfs.module.endow.businessobject.TransactionArchive;
041 import org.kuali.kfs.module.endow.businessobject.TypeRestrictionCode;
042 import org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao;
043 import org.kuali.kfs.sys.context.SpringContext;
044 import org.kuali.rice.kns.dao.impl.PlatformAwareDaoBaseOjb;
045 import org.kuali.rice.kns.service.DataDictionaryService;
046 import org.kuali.rice.kns.service.DateTimeService;
047
048 public class TransactionArchiveDaoOjb extends PlatformAwareDaoBaseOjb implements TransactionArchiveDao {
049 protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(TransactionArchiveDaoOjb.class);
050
051 /**
052 * @@see {@link org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getAllTransactionArchives(Date)
053 */
054 public Collection<TransactionArchive> getAllTransactionArchives(java.util.Date postedDate) {
055 Collection<TransactionArchive> transactionArchives = new ArrayList();
056
057 Criteria criteria = new Criteria();
058 criteria.addEqualTo(EndowPropertyConstants.TRANSACTION_ARCHIVE_POSTED_DATE, postedDate);
059
060 //sort the data on these columns....
061 QueryByCriteria qbc = QueryFactory.newQuery(TransactionArchive.class, criteria);
062
063 qbc.addOrderByAscending(EndowPropertyConstants.TRANSACTION_ARCHIVE_TYPE_CODE);
064 qbc.addOrderByAscending(EndowPropertyConstants.TRANSACTION_ARCHIVE_SUB_TYPE_CODE);
065 qbc.addOrderByAscending(EndowPropertyConstants.TRANSACTION_ARCHIVE_INCOME_PRINCIPAL_INDICATOR);
066 qbc.addOrderByAscending(EndowPropertyConstants.TRANSACTION_ARCHIVE_KEM_ID);
067 qbc.addOrderByAscending(EndowPropertyConstants.TRANSACTION_ARCHIVE_ETRAN_CODE);
068
069 transactionArchives = getPersistenceBrokerTemplate().getCollectionByQuery(qbc);
070
071 return transactionArchives;
072 }
073
074 /**
075 * @@see {@link org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getAllTransactionArchives()
076 */
077 public Collection<TransactionArchive> getAllTransactionArchives() {
078 Collection<TransactionArchive> transactionArchives = new ArrayList();
079
080 Criteria criteria = new Criteria();
081 criteria.addNotNull(EndowPropertyConstants.DOCUMENT_NUMBER);
082
083 QueryByCriteria query = QueryFactory.newQuery(TransactionArchive.class, criteria);
084 transactionArchives = getPersistenceBrokerTemplate().getCollectionByQuery(query);
085
086 return transactionArchives;
087 }
088
089 /**
090 * @see org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getByPrimaryKey(String, int, String)
091 */
092 public TransactionArchive getByPrimaryKey(String documentNumber, int lineNumber, String lineTypeCode) {
093 TransactionArchive transactionArchive = null;
094
095 Criteria criteria = new Criteria();
096 criteria.addEqualTo(EndowPropertyConstants.TRANSACTION_ARCHIVE_DOCUMENT_NUMBER, documentNumber);
097 criteria.addEqualTo(EndowPropertyConstants.TRANSACTION_ARCHIVE_LINE_NUMBER, lineNumber);
098
099 if (SpringContext.getBean(DataDictionaryService.class).getAttributeForceUppercase(TransactionArchive.class, EndowPropertyConstants.TRANSACTION_ARCHIVE_LINE_TYPE_CODE)) {
100 lineTypeCode = lineTypeCode.toUpperCase();
101 }
102 criteria.addEqualTo(EndowPropertyConstants.TRANSACTION_ARCHIVE_LINE_TYPE_CODE, lineTypeCode);
103
104 QueryByCriteria query = QueryFactory.newQuery(TransactionArchive.class, criteria);
105 transactionArchive = (TransactionArchive) getPersistenceBrokerTemplate().getObjectByQuery(query);
106
107 return transactionArchive;
108 }
109
110 /**
111 * Prepares the criteria to select the records from END_TRAN_ARCHV_T table
112 */
113 protected Collection<TransactionArchive> getTransactionArchivesForTransactions(FeeMethod feeMethod) {
114 Collection<TransactionArchive> transactionArchives = new ArrayList();
115
116 Collection incomePrincipalValues = new ArrayList();
117 incomePrincipalValues.add(EndowConstants.FeeMethod.FEE_BASE_CODE_VALUE_FOR_INCOME);
118 incomePrincipalValues.add(EndowConstants.FeeMethod.FEE_BASE_CODE_VALUE_FOR_PRINCIPAL);
119
120 Criteria criteria = new Criteria();
121
122 if (feeMethod.getFeeBaseCode().equalsIgnoreCase(EndowConstants.FeeMethod.FEE_BASE_CODE_VALUE_FOR_INCOME_AND_PRINCIPAL)) {
123 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_INCOME_PRINCIPAL_INDICATOR, incomePrincipalValues);
124 }
125 else {
126 if (feeMethod.getFeeBaseCode().equalsIgnoreCase(EndowConstants.FeeMethod.FEE_BASE_CODE_VALUE_FOR_INCOME)) {
127 criteria.addEqualTo(EndowPropertyConstants.TRANSACTION_ARCHIVE_INCOME_PRINCIPAL_INDICATOR, EndowConstants.FeeMethod.FEE_BASE_CODE_VALUE_FOR_INCOME);
128
129 }
130 if (feeMethod.getFeeBaseCode().equalsIgnoreCase(EndowConstants.FeeMethod.FEE_BASE_CODE_VALUE_FOR_PRINCIPAL)) {
131 criteria.addEqualTo(EndowPropertyConstants.TRANSACTION_ARCHIVE_INCOME_PRINCIPAL_INDICATOR, EndowConstants.FeeMethod.FEE_BASE_CODE_VALUE_FOR_PRINCIPAL);
132 }
133 }
134
135 if (feeMethod.getFeeByTransactionType() && feeMethod.getFeeByETranCode()) {
136 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_TYPE_CODE, getTypeCodes(feeMethod.getCode()));
137 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_ETRAN_CODE, getETranCodes(feeMethod.getCode()));
138 }
139 else {
140 if (feeMethod.getFeeByTransactionType()) {
141 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_TYPE_CODE, getTypeCodes(feeMethod.getCode()));
142 }
143
144 if (feeMethod.getFeeByETranCode()) {
145 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_ETRAN_CODE, getETranCodes(feeMethod.getCode()));
146 }
147 }
148
149 if (feeMethod.getFeeByTransactionType() || feeMethod.getFeeByETranCode()) {
150 criteria.addGreaterThan(EndowPropertyConstants.TRANSACTION_ARCHIVE_POSTED_DATE,feeMethod.getFeeLastProcessDate());
151 }
152
153 QueryByCriteria query = QueryFactory.newQuery(TransactionArchive.class, criteria);
154
155 transactionArchives = getPersistenceBrokerTemplate().getCollectionByQuery(query);
156
157 return transactionArchives;
158 }
159
160 /**
161 * @see org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getTransactionArchivesCountForTransactions(FeeMethod)
162 */
163 public long getTransactionArchivesCountForTransactions(FeeMethod feeMethod) {
164 long totalTransactionArchives = 0;
165 totalTransactionArchives = getTransactionArchivesForTransactions(feeMethod).size();
166
167 return totalTransactionArchives;
168 }
169
170 /**
171 * @see org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getTransactionArchivesIncomeCashAmountForTransactions(FeeMethod)
172 */
173 public BigDecimal getTransactionArchivesIncomeCashAmountForTransactions(FeeMethod feeMethod) {
174 BigDecimal incomeCashAmount = BigDecimal.ZERO;
175
176 Collection<TransactionArchive> transactionArchives = new ArrayList();
177 transactionArchives = getTransactionArchivesForTransactions(feeMethod);
178 for (TransactionArchive transactionArchive : transactionArchives) {
179 incomeCashAmount = incomeCashAmount.add(transactionArchive.getIncomeCashAmount());
180 }
181
182 return incomeCashAmount;
183 }
184
185 /**
186 * @see org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getTransactionArchivesPrincipalCashAmountForTransactions(FeeMethod)
187 */
188 public BigDecimal getTransactionArchivesPrincipalCashAmountForTransactions(FeeMethod feeMethod) {
189 BigDecimal principalCashAmount = new BigDecimal("0");
190
191 Collection<TransactionArchive> transactionArchives = new ArrayList();
192 transactionArchives = getTransactionArchivesForTransactions(feeMethod);
193 for (TransactionArchive transactionArchive : transactionArchives) {
194 principalCashAmount = principalCashAmount.add(transactionArchive.getPrincipalCashAmount());
195 }
196
197 return principalCashAmount;
198 }
199
200 /**
201 * @see org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getTransactionArchivesIncomeAndPrincipalCashAmountForTransactions(FeeMethod)
202 */
203 public HashMap<String, BigDecimal> getTransactionArchivesIncomeAndPrincipalCashAmountForTransactions(FeeMethod feeMethod) {
204 BigDecimal incomeCashAmount = BigDecimal.ZERO;
205 BigDecimal principalCashAmount = BigDecimal.ZERO;
206
207 HashMap<String, BigDecimal> incomeAndPrincipalCashAmounts = new HashMap();
208
209 incomeAndPrincipalCashAmounts.put(EndowPropertyConstants.TRANSACTION_ARCHIVE_INCOME_CASH_AMOUNT, getTransactionArchivesIncomeCashAmountForTransactions(feeMethod));
210 incomeAndPrincipalCashAmounts.put(EndowPropertyConstants.TRANSACTION_ARCHIVE_PRINCIPAL_CASH_AMOUNT, getTransactionArchivesPrincipalCashAmountForTransactions(feeMethod));
211
212 return incomeAndPrincipalCashAmounts;
213 }
214
215 /**
216 * @see org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getTransactionArchivesCountByDocumentTypeName(String, long)
217 */
218 public long getTransactionArchivesCountByDocumentTypeName(String feeMethodCode, Date transactionPostedDate) {
219 long totalTransactionArchives = 0;
220
221 Criteria criteria = new Criteria();
222 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_TYPE_CODE, getTypeCodes(feeMethodCode));
223 criteria.addGreaterThan(EndowPropertyConstants.TRANSACTION_ARCHIVE_POSTED_DATE, transactionPostedDate);
224 QueryByCriteria query = QueryFactory.newQuery(TransactionArchive.class, criteria);
225
226 totalTransactionArchives = getPersistenceBrokerTemplate().getCollectionByQuery(query).size();
227
228 return totalTransactionArchives;
229 }
230
231 /**
232 * Gets the document Type codes for a given feeMethodCode in END_FEE_TRAN_DOC_TYP_T table
233 * @feeMethodCode FEE_MTH
234 * @return typeCodes
235 */
236 protected Collection getTypeCodes(String feeMethodCode) {
237 Collection typeCodes = new ArrayList();
238 Collection<FeeTransaction> feeTransactions = new ArrayList();
239
240 if (StringUtils.isNotBlank(feeMethodCode)) {
241 Map<String, String> crit = new HashMap<String, String>();
242
243 if (SpringContext.getBean(DataDictionaryService.class).getAttributeForceUppercase(FeeTransaction.class, EndowPropertyConstants.FEE_METHOD_CODE)) {
244 feeMethodCode = feeMethodCode.toUpperCase();
245 }
246
247 Criteria criteria = new Criteria();
248 criteria.addEqualTo(EndowPropertyConstants.FEE_METHOD_CODE, feeMethodCode);
249 criteria.addEqualTo(EndowPropertyConstants.FEE_TRANSACTION_INCLUDE, EndowConstants.YES);
250 QueryByCriteria query = QueryFactory.newQuery(FeeTransaction.class, criteria);
251
252 feeTransactions = getPersistenceBrokerTemplate().getCollectionByQuery(query);
253 for (FeeTransaction feeTransaction : feeTransactions) {
254 typeCodes.add(feeTransaction.getDocumentTypeName());
255 }
256 }
257
258 return typeCodes;
259 }
260
261 /**
262 * @see org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getTransactionArchivesCountByETranCode(String, long)
263 */
264 public long getTransactionArchivesCountByETranCode(String feeMethodCode, Date transactionPostedDate) {
265 long totalTransactionArchives = 0;
266
267 Criteria criteria = new Criteria();
268 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_ETRAN_CODE, getETranCodes(feeMethodCode));
269 criteria.addGreaterThan(EndowPropertyConstants.TRANSACTION_ARCHIVE_POSTED_DATE, transactionPostedDate);
270 QueryByCriteria query = QueryFactory.newQuery(TransactionArchive.class, criteria);
271
272 totalTransactionArchives = getPersistenceBrokerTemplate().getCollectionByQuery(query).size();
273
274 return totalTransactionArchives;
275 }
276
277 /**
278 * Gets the document Type codes for a given feeMethodCode in END_FEE_TRAN_DOC_TYP_T table
279 * @feeMethodCode FEE_MTH
280 * @return typeCodes
281 */
282 protected Collection getETranCodes(String feeMethodCode) {
283 Collection<FeeEndowmentTransactionCode> feeEndowmentTransactions = new ArrayList();
284 Collection etranCodes = new ArrayList();
285
286 if (StringUtils.isNotBlank(feeMethodCode)) {
287 Map<String, String> crit = new HashMap<String, String>();
288
289 if (SpringContext.getBean(DataDictionaryService.class).getAttributeForceUppercase(FeeEndowmentTransactionCode.class, EndowPropertyConstants.FEE_METHOD_CODE)) {
290 feeMethodCode = feeMethodCode.toUpperCase();
291 }
292
293 Criteria criteria = new Criteria();
294 criteria.addEqualTo(EndowPropertyConstants.FEE_METHOD_CODE, feeMethodCode);
295 criteria.addEqualTo(EndowPropertyConstants.FEE_ENDOWMENT_TRANSACTION_INCLUDE, EndowConstants.YES);
296 QueryByCriteria query = QueryFactory.newQuery(FeeEndowmentTransactionCode.class, criteria);
297
298 feeEndowmentTransactions = getPersistenceBrokerTemplate().getCollectionByQuery(query);
299 for (FeeEndowmentTransactionCode feeEndowmentTransaction : feeEndowmentTransactions) {
300 etranCodes.add(feeEndowmentTransaction.getEndowmentTransactionCode());
301 }
302 }
303
304 return etranCodes;
305 }
306
307 /**
308 * @see org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getTransactionArchivesCountByDocumentTypeNameAndETranCode(String, long)
309 */
310 public long getTransactionArchivesCountByDocumentTypeNameAndETranCode(String feeMethodCode, Date transactionPostedDate) {
311 long totalTransactionArchives = 0;
312
313 Criteria criteria = new Criteria();
314 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_TYPE_CODE, getTypeCodes(feeMethodCode));
315 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_ETRAN_CODE, getETranCodes(feeMethodCode));
316 criteria.addGreaterThan(EndowPropertyConstants.TRANSACTION_ARCHIVE_POSTED_DATE, transactionPostedDate);
317 QueryByCriteria query = QueryFactory.newQuery(TransactionArchive.class, criteria);
318
319 totalTransactionArchives = getPersistenceBrokerTemplate().getCollectionByQuery(query).size();
320
321 return totalTransactionArchives;
322 }
323
324 /**
325 * @see org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getTransactionArchivesCountByIncomeOrPrincipal(String)
326 */
327 public long getTransactionArchivesCountByIncomeOrPrincipal(String incomeOrPrincipalIndicator) {
328 long totalTransactionArchives = 0;
329
330 Criteria criteria = new Criteria();
331 criteria.addEqualTo(EndowPropertyConstants.TRANSACTION_ARCHIVE_INCOME_PRINCIPAL_INDICATOR, incomeOrPrincipalIndicator);
332 QueryByCriteria query = QueryFactory.newQuery(TransactionArchive.class, criteria);
333
334 totalTransactionArchives = getPersistenceBrokerTemplate().getCollectionByQuery(query).size();
335
336 return totalTransactionArchives;
337 }
338
339 /**
340 * @see org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getTransactionArchivesCountByBothIncomeAndPrincipal()
341 */
342 public long getTransactionArchivesCountByBothIncomeAndPrincipal(FeeMethod feeMethod) {
343 long totalTransactionArchives = 0;
344
345 Collection incomePrincipalValues = new ArrayList();
346 incomePrincipalValues.add(EndowConstants.FeeMethod.FEE_BASE_CODE_VALUE_FOR_INCOME);
347 incomePrincipalValues.add(EndowConstants.FeeMethod.FEE_BASE_CODE_VALUE_FOR_PRINCIPAL);
348
349 Criteria criteria = new Criteria();
350 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_INCOME_PRINCIPAL_INDICATOR, incomePrincipalValues);
351
352 if (feeMethod.getFeeByTransactionType() && feeMethod.getFeeByETranCode()) {
353 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_TYPE_CODE, getTypeCodes(feeMethod.getCode()));
354 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_ETRAN_CODE, getETranCodes(feeMethod.getCode()));
355 }
356 else {
357 if (feeMethod.getFeeByTransactionType()) {
358 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_TYPE_CODE, getTypeCodes(feeMethod.getCode()));
359 }
360
361 if (feeMethod.getFeeByETranCode()) {
362 criteria.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_ETRAN_CODE, getETranCodes(feeMethod.getCode()));
363 }
364 }
365
366 if (feeMethod.getFeeByTransactionType() || feeMethod.getFeeByETranCode()) {
367 criteria.addGreaterThan(EndowPropertyConstants.TRANSACTION_ARCHIVE_POSTED_DATE,feeMethod.getFeeLastProcessDate());
368 }
369
370 QueryByCriteria query = QueryFactory.newQuery(TransactionArchive.class, criteria);
371
372 totalTransactionArchives = getPersistenceBrokerTemplate().getCollectionByQuery(query).size();
373
374 return totalTransactionArchives;
375 }
376
377 /**
378 * @see org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getTransactionArchivesTotalCashActivity(String)
379 */
380 public BigDecimal getTransactionArchivesTotalCashActivity(String kemid, String securityId) {
381 BigDecimal totalCashActivity = BigDecimal.ZERO;
382
383 Collection<TransactionArchive> transactionArchives = new ArrayList();
384
385 Criteria criteria = new Criteria();
386
387 if (SpringContext.getBean(DataDictionaryService.class).getAttributeForceUppercase(TransactionArchive.class, EndowPropertyConstants.TRANSACTION_ARCHIVE_KEM_ID)) {
388 kemid = kemid.toUpperCase();
389 }
390 criteria.addEqualTo(EndowPropertyConstants.TRANSACTION_ARCHIVE_KEM_ID, kemid);
391
392 QueryByCriteria query = QueryFactory.newQuery(TransactionArchive.class, criteria);
393 transactionArchives = getPersistenceBrokerTemplate().getCollectionByQuery(query);
394
395 for (TransactionArchive transactionArchive : transactionArchives) {
396 if (transactionArchive.getArchiveSecurity().getSecurityId().equals(securityId)) {
397 totalCashActivity = totalCashActivity.add(transactionArchive.getIncomeCashAmount());
398 totalCashActivity = totalCashActivity.add(transactionArchive.getPrincipalCashAmount());
399 }
400 }
401
402 return totalCashActivity;
403 }
404
405 /**
406 *
407 * @see org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getTransactionArchiveByKemidsAndPostedDate(java.lang.String, java.lang.String, java.util.Date, java.util.Date, java.lang.String, java.lang.String)
408 */
409 public List<TransactionArchive> getTransactionArchiveByKemidsAndPostedDate(String kemid, String endowmentOption, java.util.Date beginningDate, java.util.Date endingDate, String closedIndicator, String transactionSubType) {
410
411 Criteria criteria = new Criteria();
412 criteria.addEqualTo(EndowPropertyConstants.TRANSACTION_ARCHIVE_KEM_ID, kemid);
413 criteria.addEqualTo(EndowPropertyConstants.TRANSACTION_ARCHIVE_SUB_TYPE_CODE, transactionSubType);
414 criteria.addGreaterOrEqualThan(EndowPropertyConstants.TRANSACTION_ARCHIVE_POSTED_DATE, beginningDate);
415 criteria.addLessOrEqualThan(EndowPropertyConstants.TRANSACTION_ARCHIVE_POSTED_DATE, endingDate);
416
417 QueryByCriteria qbc = QueryFactory.newQuery(TransactionArchive.class, criteria);
418 qbc.addOrderByAscending(EndowPropertyConstants.TRANSACTION_ARCHIVE_POSTED_DATE);
419
420 return (List<TransactionArchive>) getPersistenceBrokerTemplate().getCollectionByQuery(qbc);
421
422 }
423
424 /**
425 * @see org.kuali.kfs.module.endow.dataaccess.TransactionArchiveDao#getTransactionArchivesByKemid(java.lang.String, java.util.Date, java.util.Date)
426 */
427 public List<TransactionArchive> getTransactionArchivesByKemid(String kemid, java.util.Date beginningDate, java.util.Date endingDate) {
428 Criteria criteria = new Criteria();
429 criteria.addEqualTo(EndowPropertyConstants.TRANSACTION_ARCHIVE_KEM_ID, kemid);
430 criteria.addGreaterOrEqualThan(EndowPropertyConstants.TRANSACTION_ARCHIVE_POSTED_DATE, beginningDate);
431 criteria.addLessOrEqualThan(EndowPropertyConstants.TRANSACTION_ARCHIVE_POSTED_DATE, endingDate);
432
433 List<String> documentTypesAllowed = new ArrayList();
434 documentTypesAllowed.add(EndowConstants.DocumentTypeNames.ENDOWMENT_CASH_INCREASE);
435 documentTypesAllowed.add(EndowConstants.DocumentTypeNames.ENDOWMENT_CASH_DECREASE);
436 documentTypesAllowed.add(EndowConstants.DocumentTypeNames.ENDOWMENT_CASH_TRANSFER);
437 documentTypesAllowed.add(EndowConstants.DocumentTypeNames.ENDOWMENT_SECURITY_TRANSFER);
438
439 Criteria c = new Criteria();
440 c.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_TYPE_CODE, documentTypesAllowed);
441
442 Criteria c1 = new Criteria();
443 documentTypesAllowed.clear();
444 documentTypesAllowed.add(EndowConstants.DocumentTypeNames.ENDOWMENT_ASSET_INCREASE);
445 documentTypesAllowed.add(EndowConstants.DocumentTypeNames.ENDOWMENT_ASSET_DECREASE);
446 documentTypesAllowed.add(EndowConstants.DocumentTypeNames.ENDOWMENT_LIABILITY_DECREASE);
447 c1.addIn(EndowPropertyConstants.TRANSACTION_ARCHIVE_TYPE_CODE, documentTypesAllowed);
448 c1.addEqualTo(EndowPropertyConstants.TRANSACTION_ARCHIVE_SUB_TYPE_CODE, EndowConstants.TransactionSubTypeCode.NON_CASH);
449
450 c.addOrCriteria(c1);
451
452 criteria.addAndCriteria(c);
453
454 QueryByCriteria qbc2 = QueryFactory.newQuery(TransactionArchive.class, criteria);
455 qbc2.addOrderByAscending(EndowPropertyConstants.TRANSACTION_ARCHIVE_KEM_ID);
456 qbc2.addOrderByAscending(EndowPropertyConstants.TRANSACTION_ARCHIVE_ETRAN_CODE);
457
458 return (List<TransactionArchive>) getPersistenceBrokerTemplate().getCollectionByQuery(qbc2);
459 }
460 }