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.batch.dataaccess.impl; 017 018 import java.util.Iterator; 019 import java.util.List; 020 import java.util.Map; 021 022 import org.kuali.kfs.gl.batch.dataaccess.LedgerEntryBalanceCachingDao; 023 import org.kuali.kfs.sys.service.UniversityDateService; 024 import org.kuali.rice.kns.dao.jdbc.PlatformAwareDaoBaseJdbc; 025 import org.kuali.rice.kns.service.PersistenceStructureService; 026 027 /** 028 * This class... 029 */ 030 public class LedgerEntryBalanceCachingDaoJdbc extends PlatformAwareDaoBaseJdbc implements LedgerEntryBalanceCachingDao { 031 032 PersistenceStructureService persistenceStructureService; 033 UniversityDateService universityDateService; 034 035 public List compareEntryHistory(Class entryClass, Class historyClass, int pastYears) { 036 List<Map<String, Object>> data = null; 037 038 String entryTable = persistenceStructureService.getTableName(entryClass); 039 String historyTable = persistenceStructureService.getTableName(historyClass); 040 041 //String[] pks = persistenceService.getPrimaryKeys(arg0) 042 int fiscalYear = universityDateService.getCurrentFiscalYear()-pastYears; 043 044 StringBuilder queryBuilder = new StringBuilder(); 045 046 queryBuilder.append("select eh.* "); 047 queryBuilder.append("from "+historyTable+" eh "); 048 queryBuilder.append("left join "); 049 queryBuilder.append("( "); 050 queryBuilder.append("SELECT UNIV_FISCAL_YR, FIN_COA_CD, FIN_OBJECT_CD, FIN_BALANCE_TYP_CD, UNIV_FISCAL_PRD_CD, TRN_DEBIT_CRDT_CD, "); 051 queryBuilder.append("count(*) as entry_row_cnt, sum(TRN_LDGR_ENTR_AMT) as entry_amt "); 052 queryBuilder.append("FROM "+entryTable+" "); 053 queryBuilder.append("GROUP BY UNIV_FISCAL_YR, FIN_COA_CD, FIN_OBJECT_CD, FIN_BALANCE_TYP_CD, UNIV_FISCAL_PRD_CD, TRN_DEBIT_CRDT_CD "); 054 queryBuilder.append(") e "); 055 queryBuilder.append("on eh.univ_fiscal_yr = e.univ_fiscal_yr and eh.fin_coa_cd = e.fin_coa_cd and eh.fin_object_cd = e.fin_object_cd and "); 056 queryBuilder.append("eh.fin_balance_typ_cd = e.fin_balance_typ_cd and eh.univ_fiscal_prd_cd = e.univ_fiscal_prd_cd and eh.trn_debit_crdt_cd = e.trn_debit_crdt_cd "); 057 queryBuilder.append("where e.univ_fiscal_yr >= "+fiscalYear+" and (eh.row_cnt <> e.entry_row_cnt or eh.trn_ldgr_entr_amt <> e.entry_amt or e.entry_row_cnt is null) "); 058 059 data = getSimpleJdbcTemplate().queryForList(queryBuilder.toString()); 060 061 return data; 062 063 } 064 065 public List compareBalanceHistory(Class balanceClass, Class historyClass, int pastYears) { 066 List<Map<String, Object>> data = null; 067 068 String balanceTable = persistenceStructureService.getTableName(balanceClass); 069 String historyTable = persistenceStructureService.getTableName(historyClass); 070 071 072 int fiscalYear = universityDateService.getCurrentFiscalYear()-pastYears; 073 074 StringBuilder queryBuilder = new StringBuilder(); 075 076 077 queryBuilder.append("select bh.* "); 078 queryBuilder.append("from "+historyTable+" bh "); 079 queryBuilder.append("left join ( select "); 080 queryBuilder.append("UNIV_FISCAL_YR, FIN_COA_CD, ACCOUNT_NBR, SUB_ACCT_NBR, FIN_OBJECT_CD, FIN_SUB_OBJ_CD, FIN_BALANCE_TYP_CD, FIN_OBJ_TYP_CD, "); 081 queryBuilder.append("ACLN_ANNL_BAL_AMT, FIN_BEG_BAL_LN_AMT, CONTR_GR_BB_AC_AMT, MO1_ACCT_LN_AMT, MO2_ACCT_LN_AMT, MO3_ACCT_LN_AMT, MO4_ACCT_LN_AMT, MO5_ACCT_LN_AMT, MO6_ACCT_LN_AMT, MO7_ACCT_LN_AMT, MO8_ACCT_LN_AMT, MO9_ACCT_LN_AMT, MO10_ACCT_LN_AMT, MO11_ACCT_LN_AMT, MO12_ACCT_LN_AMT, MO13_ACCT_LN_AMT "); 082 queryBuilder.append("from "+balanceTable+" ) e on "); 083 queryBuilder.append("bh.UNIV_FISCAL_YR = e.UNIV_FISCAL_YR and bh.FIN_COA_CD = e.FIN_COA_CD and bh.FIN_OBJECT_CD = e.FIN_OBJECT_CD and bh.FIN_BALANCE_TYP_CD = e.FIN_BALANCE_TYP_CD and bh.SUB_ACCT_NBR = e.SUB_ACCT_NBR and bh.ACCOUNT_NBR = e.ACCOUNT_NBR and bh.FIN_SUB_OBJ_CD = e.FIN_SUB_OBJ_CD and bh.FIN_OBJ_TYP_CD = e.FIN_OBJ_TYP_CD "); 084 queryBuilder.append(" where e.UNIV_FISCAL_YR >= "+fiscalYear+" "); 085 queryBuilder.append("and (bh.ACLN_ANNL_BAL_AMT <> e.ACLN_ANNL_BAL_AMT or bh.FIN_BEG_BAL_LN_AMT <> e.FIN_BEG_BAL_LN_AMT or bh.CONTR_GR_BB_AC_AMT <> e.CONTR_GR_BB_AC_AMT or "); 086 queryBuilder.append("bh.MO1_ACCT_LN_AMT <> e.MO1_ACCT_LN_AMT or bh.MO2_ACCT_LN_AMT <> e.MO2_ACCT_LN_AMT or bh.MO3_ACCT_LN_AMT <> e.MO3_ACCT_LN_AMT or bh.MO4_ACCT_LN_AMT <> e.MO4_ACCT_LN_AMT or bh.MO5_ACCT_LN_AMT <> e.MO5_ACCT_LN_AMT or bh.MO6_ACCT_LN_AMT <> e.MO6_ACCT_LN_AMT or "); 087 queryBuilder.append("bh.MO7_ACCT_LN_AMT <> e.MO7_ACCT_LN_AMT or bh.MO8_ACCT_LN_AMT <> e.MO8_ACCT_LN_AMT or bh.MO9_ACCT_LN_AMT <> e.MO9_ACCT_LN_AMT or bh.MO10_ACCT_LN_AMT <> e.MO10_ACCT_LN_AMT or bh.MO11_ACCT_LN_AMT <> e.MO11_ACCT_LN_AMT or bh.MO12_ACCT_LN_AMT <> e.MO12_ACCT_LN_AMT or "); 088 queryBuilder.append("bh.MO13_ACCT_LN_AMT <> e.MO13_ACCT_LN_AMT) "); 089 090 091 data = getSimpleJdbcTemplate().queryForList(queryBuilder.toString()); 092 093 return data; 094 095 } 096 097 public List accountBalanceCompareHistory(Class accountBalanceClass, Class historyClass, int pastYears) { 098 List<Map<String, Object>> data = null; 099 100 String accountBalanceTable = persistenceStructureService.getTableName(accountBalanceClass); 101 String historyTable = persistenceStructureService.getTableName(historyClass); 102 103 //String[] pks = persistenceService.getPrimaryKeys(arg0) 104 int fiscalYear = universityDateService.getCurrentFiscalYear()-pastYears; 105 106 StringBuilder queryBuilder = new StringBuilder(); 107 108 queryBuilder.append("select abh.* "); 109 queryBuilder.append("from "+historyTable+" abh "); 110 queryBuilder.append("left join "); 111 queryBuilder.append("(select UNIV_FISCAL_YR, FIN_COA_CD, ACCOUNT_NBR, SUB_ACCT_NBR, FIN_OBJECT_CD, FIN_SUB_OBJ_CD, CURR_BDLN_BAL_AMT, ACLN_ACTLS_BAL_AMT, ACLN_ENCUM_BAL_AMT "); 112 queryBuilder.append("from "+accountBalanceTable+" ) ab on "); 113 queryBuilder.append("abh.UNIV_FISCAL_YR = ab.UNIV_FISCAL_YR and abh.FIN_COA_CD = ab.FIN_COA_CD and abh.ACCOUNT_NBR = ab.ACCOUNT_NBR and abh.SUB_ACCT_NBR = ab.SUB_ACCT_NBR and abh.FIN_OBJECT_CD = ab.FIN_OBJECT_CD and abh.FIN_SUB_OBJ_CD = ab.FIN_SUB_OBJ_CD "); 114 queryBuilder.append("where ab.UNIV_FISCAL_YR >= "+fiscalYear+" "); 115 queryBuilder.append("and (abh.CURR_BDLN_BAL_AMT <> ab.CURR_BDLN_BAL_AMT or abh.ACLN_ACTLS_BAL_AMT <> ab.ACLN_ACTLS_BAL_AMT or abh.ACLN_ENCUM_BAL_AMT <> ab.ACLN_ENCUM_BAL_AMT) "); 116 117 data = getSimpleJdbcTemplate().queryForList(queryBuilder.toString()); 118 119 return data; 120 121 } 122 123 public List encumbranceCompareHistory(Class encumbranceClass, Class historyClass, int pastYears) { 124 List<Map<String, Object>> data = null; 125 126 String encumbranceTable = persistenceStructureService.getTableName(encumbranceClass); 127 String historyTable = persistenceStructureService.getTableName(historyClass); 128 129 //String[] pks = persistenceService.getPrimaryKeys(arg0) 130 int fiscalYear = universityDateService.getCurrentFiscalYear()-pastYears; 131 132 StringBuilder queryBuilder = new StringBuilder(); 133 134 queryBuilder.append("select eh.* "); 135 queryBuilder.append("from "+historyTable+" eh "); 136 queryBuilder.append("left join ( "); 137 queryBuilder.append("select UNIV_FISCAL_YR, FIN_COA_CD, ACCOUNT_NBR, SUB_ACCT_NBR, FIN_OBJECT_CD, FIN_SUB_OBJ_CD, FIN_BALANCE_TYP_CD, FDOC_TYP_CD, FS_ORIGIN_CD, FDOC_NBR, ACLN_ENCUM_AMT, ACLN_ENCUM_CLS_AMT from "+encumbranceTable+" ) e on "); 138 queryBuilder.append("eh.UNIV_FISCAL_YR = e.UNIV_FISCAL_YR and eh.FIN_COA_CD = e.FIN_COA_CD and eh.ACCOUNT_NBR = e.ACCOUNT_NBR and eh.SUB_ACCT_NBR = e.SUB_ACCT_NBR and eh.FIN_OBJECT_CD = e.FIN_OBJECT_CD and eh.FIN_SUB_OBJ_CD = e.FIN_SUB_OBJ_CD and eh.FIN_BALANCE_TYP_CD = e.FIN_BALANCE_TYP_CD and eh.FDOC_TYP_CD = e.FDOC_TYP_CD and eh.FS_ORIGIN_CD = e.FS_ORIGIN_CD and eh.FDOC_NBR = e.FDOC_NBR "); 139 queryBuilder.append("where e.UNIV_FISCAL_YR >= "+fiscalYear+" and (eh.ACLN_ENCUM_AMT <> e.ACLN_ENCUM_AMT or eh.ACLN_ENCUM_CLS_AMT <> e.ACLN_ENCUM_CLS_AMT) "); 140 141 data = getSimpleJdbcTemplate().queryForList(queryBuilder.toString()); 142 143 return data; 144 145 } 146 147 /** 148 * Sets the persistenceStructureService attribute value. 149 * @param persistenceStructureService The persistenceStructureService to set. 150 */ 151 public void setPersistenceStructureService(PersistenceStructureService persistenceStructureService) { 152 this.persistenceStructureService = persistenceStructureService; 153 } 154 155 /** 156 * Sets the universityDateService attribute value. 157 * @param universityDateService The universityDateService to set. 158 */ 159 public void setUniversityDateService(UniversityDateService universityDateService) { 160 this.universityDateService = universityDateService; 161 } 162 163 /** 164 * Gets the persistenceStructureService attribute. 165 * @return Returns the persistenceStructureService. 166 */ 167 public PersistenceStructureService getPersistenceStructureService() { 168 return persistenceStructureService; 169 } 170 171 /** 172 * Gets the universityDateService attribute. 173 * @return Returns the universityDateService. 174 */ 175 public UniversityDateService getUniversityDateService() { 176 return universityDateService; 177 } 178 179 180 }