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 }