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 }