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.fp.document.validation.impl; 017 018 import org.apache.commons.lang.StringUtils; 019 import org.kuali.kfs.sys.KFSKeyConstants; 020 import org.kuali.kfs.sys.KFSPropertyConstants; 021 import org.kuali.kfs.sys.businessobject.AccountingLine; 022 import org.kuali.kfs.sys.document.validation.GenericValidation; 023 import org.kuali.kfs.sys.document.validation.event.AttributedDocumentEvent; 024 import org.kuali.rice.kns.datadictionary.BusinessObjectEntry; 025 import org.kuali.rice.kns.service.DataDictionaryService; 026 import org.kuali.rice.kns.util.GlobalVariables; 027 028 public class PreEncumbranceRequiredReferenceFieldValidation extends GenericValidation { 029 private DataDictionaryService dataDictionaryService; 030 private AccountingLine accountingLineForValidation; 031 032 public boolean validate(AttributedDocumentEvent event) { 033 boolean valid = true; 034 if (this.getAccountingLineForValidation().isTargetAccountingLine()) { 035 final BusinessObjectEntry boe = getDataDictionaryService().getDataDictionary().getBusinessObjectEntry(getAccountingLineForValidation().getClass().getName()); 036 037 if (StringUtils.isEmpty(getAccountingLineForValidation().getReferenceNumber())) { 038 putRequiredPropertyError(boe, KFSPropertyConstants.REFERENCE_NUMBER); 039 valid = false; 040 } 041 } 042 return valid; 043 } 044 045 /** 046 * Adds a global error for a missing required property. This is used for properties, such as reference origin code, which cannot 047 * be required by the DataDictionary validation because not all documents require them. 048 * 049 * @param boe 050 * @param propertyName 051 */ 052 protected void putRequiredPropertyError(BusinessObjectEntry boe, String propertyName) { 053 final String label = boe.getAttributeDefinition(propertyName).getShortLabel(); 054 GlobalVariables.getMessageMap().putError(propertyName, KFSKeyConstants.ERROR_REQUIRED, label); 055 } 056 057 /** 058 * Gets the dataDictionaryService attribute. 059 * @return Returns the dataDictionaryService. 060 */ 061 public DataDictionaryService getDataDictionaryService() { 062 return dataDictionaryService; 063 } 064 065 /** 066 * Sets the dataDictionaryService attribute value. 067 * @param dataDictionaryService The dataDictionaryService to set. 068 */ 069 public void setDataDictionaryService(DataDictionaryService dataDictionaryService) { 070 this.dataDictionaryService = dataDictionaryService; 071 } 072 073 /** 074 * Gets the accountingLineForValidation attribute. 075 * @return Returns the accountingLineForValidation. 076 */ 077 public AccountingLine getAccountingLineForValidation() { 078 return accountingLineForValidation; 079 } 080 081 /** 082 * Sets the accountingLineForValidation attribute value. 083 * @param accountingLineForValidation The accountingLineForValidation to set. 084 */ 085 public void setAccountingLineForValidation(AccountingLine accoutingLineForValidation) { 086 this.accountingLineForValidation = accoutingLineForValidation; 087 } 088 }