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.document.validation.impl;
017
018 import org.apache.commons.lang.StringUtils;
019 import org.kuali.kfs.coa.businessobject.Account;
020 import org.kuali.kfs.coa.businessobject.OrganizationReversionGlobal;
021 import org.kuali.kfs.coa.businessobject.OrganizationReversionGlobalDetail;
022 import org.kuali.kfs.coa.businessobject.OrganizationReversionGlobalOrganization;
023 import org.kuali.rice.kns.document.MaintenanceDocument;
024 import org.kuali.rice.kns.util.ObjectUtils;
025
026 /**
027 *
028 * PreRules checks for the {@link OrganizationReversionGlobal} that needs to occur while still in the Struts processing. This includes defaults
029 */
030 public class OrganizationReversionGlobalPreRules extends MaintenancePreRulesBase {
031 protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(OrganizationReversionGlobalPreRules.class);
032
033 /**
034 * This is the hook method for the {@link MaintenancePreRulesBase} to call. It calls
035 * <ul>
036 * <li>{@link OrganizationReversionGlobalPreRules#checkForContinuationAccounts(OrganizationReversionGlobal)}</li>
037 * <li>{@link OrganizationReversionGlobalPreRules#copyKeyAttributesToCollections(OrganizationReversionGlobal)}</li>
038 * </ul>
039 * @see org.kuali.kfs.coa.document.validation.impl.MaintenancePreRulesBase#doCustomPreRules(org.kuali.rice.kns.document.MaintenanceDocument)
040 */
041 @Override
042 public boolean doCustomPreRules(MaintenanceDocument maintenanceDocument) {
043 OrganizationReversionGlobal globalOrgReversion = (OrganizationReversionGlobal) maintenanceDocument.getNewMaintainableObject().getBusinessObject();
044 checkForContinuationAccounts(globalOrgReversion);
045 copyKeyAttributesToCollections(globalOrgReversion);
046 return true;
047 }
048
049 /**
050 * This method checks to see if the budget reversion or cash reversion accounts have continuation accounts.
051 *
052 * @param globalOrgReversion Global Organization Reversion to check.
053 */
054 public void checkForContinuationAccounts(OrganizationReversionGlobal globalOrgReversion) {
055 if (!StringUtils.isBlank(globalOrgReversion.getBudgetReversionChartOfAccountsCode()) && !StringUtils.isBlank(globalOrgReversion.getBudgetReversionAccountNumber())) {
056 Account account = checkForContinuationAccount("Budget Reversion Account Number", globalOrgReversion.getBudgetReversionChartOfAccountsCode(), globalOrgReversion.getBudgetReversionAccountNumber(), "");
057 if (ObjectUtils.isNotNull(account)) {
058 globalOrgReversion.setBudgetReversionChartOfAccountsCode(account.getChartOfAccountsCode());
059 globalOrgReversion.setBudgetReversionAccountNumber(account.getAccountNumber());
060 }
061 }
062 if (!StringUtils.isBlank(globalOrgReversion.getCashReversionFinancialChartOfAccountsCode()) && !StringUtils.isBlank(globalOrgReversion.getBudgetReversionAccountNumber())) {
063 Account account = checkForContinuationAccount("Cash Reversion Account Number", globalOrgReversion.getCashReversionFinancialChartOfAccountsCode(), globalOrgReversion.getCashReversionAccountNumber(), "");
064 if (ObjectUtils.isNotNull(account)) {
065 globalOrgReversion.setCashReversionFinancialChartOfAccountsCode(account.getChartOfAccountsCode());
066 globalOrgReversion.setCashReversionAccountNumber(account.getAccountNumber());
067 }
068 }
069 }
070
071 /**
072 * This method updates all children of a Global Organization Reversion so that they all are associated with the Global
073 * Organization Reversion document, by upudating their primary keys.
074 *
075 * @param globalOrgRev the global organization reversion document to update.
076 */
077 public void copyKeyAttributesToCollections(OrganizationReversionGlobal globalOrgRev) {
078 for (OrganizationReversionGlobalDetail orgRevDetail : globalOrgRev.getOrganizationReversionGlobalDetails()) {
079 orgRevDetail.setDocumentNumber(globalOrgRev.getDocumentNumber());
080 }
081
082 for (OrganizationReversionGlobalOrganization orgRevOrg : globalOrgRev.getOrganizationReversionGlobalOrganizations()) {
083 orgRevOrg.setDocumentNumber(globalOrgRev.getDocumentNumber());
084 }
085 }
086
087 }