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.coa.dataaccess.impl; 017 018 import org.kuali.kfs.coa.businessobject.Account; 019 import org.kuali.kfs.coa.businessobject.PriorYearAccount; 020 import org.kuali.kfs.coa.dataaccess.PriorYearAccountDaoJdbc; 021 import org.kuali.rice.kns.dao.jdbc.PlatformAwareDaoBaseJdbc; 022 import org.kuali.rice.kns.service.PersistenceStructureService; 023 024 /** 025 * This class performs actions against the database through direct SQL command calls. 026 */ 027 public class PriorYearAccountDaoJdbcImpl extends PlatformAwareDaoBaseJdbc implements PriorYearAccountDaoJdbc { 028 029 /** Constant used to retrieve row counts for tables. Obj_Id value exists in all tables in DB. */ 030 private static final String OBJ_ID = "OBJ_ID"; 031 032 private PersistenceStructureService persistenceStructureService; 033 034 /** 035 * This method purges all records in the Prior Year Account table in the DB. 036 * 037 * @return Number of records that were purged. 038 */ 039 public int purgePriorYearAccounts() { 040 final String priorYrAcctTableName = getPersistenceStructureService().getTableName(PriorYearAccount.class); 041 042 // 1. Count how many rows are currently in the prior year acct table 043 int count = getSimpleJdbcTemplate().queryForInt("SELECT COUNT(1) FROM " + priorYrAcctTableName); 044 045 // 2. Purge all the rows from the prior year acct table 046 getSimpleJdbcTemplate().update("DELETE FROM " + priorYrAcctTableName); 047 048 return count; 049 } 050 051 /** 052 * This method copies all organization records from the current Account table to the Prior Year Account table. 053 * 054 * @return Number of records that were copied. 055 */ 056 public int copyCurrentAccountsToPriorYearTable() { 057 final String priorYrAcctTableName = getPersistenceStructureService().getTableName(PriorYearAccount.class); 058 final String acctTableName = getPersistenceStructureService().getTableName(Account.class); 059 060 // 1. Copy all the rows from the current org table to the prior year acct table 061 getSimpleJdbcTemplate().update( 062 "INSERT INTO " + priorYrAcctTableName + "(FIN_COA_CD, ACCOUNT_NBR, OBJ_ID, VER_NBR, ACCOUNT_NM, ACCT_FSC_OFC_UID, ACCT_SPVSR_UNVL_ID, ACCT_MGR_UNVL_ID, ORG_CD, ACCT_TYP_CD, ACCT_PHYS_CMP_CD, SUB_FUND_GRP_CD, ACCT_FRNG_BNFT_CD, FIN_HGH_ED_FUNC_CD, ACCT_RSTRC_STAT_CD, ACCT_RSTRC_STAT_DT, ACCT_CITY_NM, ACCT_STATE_CD, ACCT_STREET_ADDR, ACCT_ZIP_CD, RPTS_TO_FIN_COA_CD, RPTS_TO_ACCT_NBR, ACCT_CREATE_DT, ACCT_EFFECT_DT, ACCT_EXPIRATION_DT, CONT_FIN_COA_CD, CONT_ACCOUNT_NBR, ENDOW_FIN_COA_CD, ENDOW_ACCOUNT_NBR, CONTR_CTRL_FCOA_CD, CONTR_CTRLACCT_NBR, INCOME_FIN_COA_CD, INCOME_ACCOUNT_NBR, ACCT_ICR_TYP_CD, AC_CSTM_ICREXCL_CD, FIN_SERIES_ID, ICR_FIN_COA_CD, ICR_ACCOUNT_NBR, ACCT_IN_FP_CD, BDGT_REC_LVL_CD, ACCT_SF_CD, ACCT_PND_SF_CD, FIN_EXT_ENC_SF_CD, FIN_INT_ENC_SF_CD, FIN_PRE_ENC_SF_CD, FIN_OBJ_PRSCTRL_CD, CG_CFDA_NBR, ACCT_OFF_CMP_IND, ACCT_CLOSED_IND) " 063 + " SELECT FIN_COA_CD, ACCOUNT_NBR, OBJ_ID, VER_NBR, ACCOUNT_NM, ACCT_FSC_OFC_UID, ACCT_SPVSR_UNVL_ID, ACCT_MGR_UNVL_ID, ORG_CD, ACCT_TYP_CD, ACCT_PHYS_CMP_CD, SUB_FUND_GRP_CD, ACCT_FRNG_BNFT_CD, FIN_HGH_ED_FUNC_CD, ACCT_RSTRC_STAT_CD, ACCT_RSTRC_STAT_DT, ACCT_CITY_NM, ACCT_STATE_CD, ACCT_STREET_ADDR, ACCT_ZIP_CD, RPTS_TO_FIN_COA_CD, RPTS_TO_ACCT_NBR, ACCT_CREATE_DT, ACCT_EFFECT_DT, ACCT_EXPIRATION_DT, CONT_FIN_COA_CD, CONT_ACCOUNT_NBR, ENDOW_FIN_COA_CD, ENDOW_ACCOUNT_NBR, CONTR_CTRL_FCOA_CD, CONTR_CTRLACCT_NBR, INCOME_FIN_COA_CD, INCOME_ACCOUNT_NBR, ACCT_ICR_TYP_CD, AC_CSTM_ICREXCL_CD, FIN_SERIES_ID, ICR_FIN_COA_CD, ICR_ACCOUNT_NBR, ACCT_IN_FP_CD, BDGT_REC_LVL_CD, ACCT_SF_CD, ACCT_PND_SF_CD, FIN_EXT_ENC_SF_CD, FIN_INT_ENC_SF_CD, FIN_PRE_ENC_SF_CD, FIN_OBJ_PRSCTRL_CD, CG_CFDA_NBR, ACCT_OFF_CMP_IND, ACCT_CLOSED_IND " + " FROM " + acctTableName); 064 065 // 2. Count how many rows are currently in the prior year acct table 066 return getSimpleJdbcTemplate().queryForInt("SELECT COUNT(1) FROM " + priorYrAcctTableName); 067 } 068 069 /** 070 * Gets the persistenceStructureService attribute. 071 * 072 * @return Returns the persistenceStructureService. 073 */ 074 public PersistenceStructureService getPersistenceStructureService() { 075 return persistenceStructureService; 076 } 077 078 /** 079 * Sets the persistenceStructureService attribute value. 080 * 081 * @param persistenceStructureService The persistenceStructureService to set. 082 */ 083 public void setPersistenceStructureService(PersistenceStructureService persistenceStructureService) { 084 this.persistenceStructureService = persistenceStructureService; 085 } 086 087 }