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 017 package org.kuali.kfs.coa.businessobject; 018 019 import java.sql.Date; 020 import java.util.LinkedHashMap; 021 022 import org.apache.commons.lang.StringUtils; 023 import org.kuali.kfs.sys.KFSPropertyConstants; 024 import org.kuali.kfs.sys.context.SpringContext; 025 import org.kuali.rice.kew.doctype.bo.DocumentTypeEBO; 026 import org.kuali.rice.kew.service.impl.KEWModuleService; 027 import org.kuali.rice.kim.bo.Person; 028 import org.kuali.rice.kim.service.PersonService; 029 import org.kuali.rice.kns.bo.GlobalBusinessObjectDetailBase; 030 import org.kuali.rice.kns.util.KualiDecimal; 031 import org.kuali.rice.kns.util.ObjectUtils; 032 033 /** 034 * 035 */ 036 public class AccountDelegateGlobalDetail extends GlobalBusinessObjectDetailBase { 037 038 private static final long serialVersionUID = -8089154029664644867L; 039 040 private String accountDelegateUniversalId; 041 private String financialDocumentTypeCode; 042 private KualiDecimal approvalFromThisAmount; 043 private KualiDecimal approvalToThisAmount; 044 private boolean accountDelegatePrimaryRoutingIndicator; 045 private Date accountDelegateStartDate; 046 047 private Person accountDelegate; 048 private transient DocumentTypeEBO financialSystemDocumentTypeCode; 049 050 /** 051 * Default constructor. 052 */ 053 public AccountDelegateGlobalDetail() { 054 super(); 055 } 056 057 public AccountDelegateGlobalDetail(AccountDelegateModelDetail model) { 058 accountDelegatePrimaryRoutingIndicator = model.getAccountDelegatePrimaryRoutingIndicator(); 059 accountDelegateStartDate = model.getAccountDelegateStartDate(); 060 accountDelegateUniversalId = model.getAccountDelegateUniversalId(); 061 approvalFromThisAmount = model.getApprovalFromThisAmount(); 062 approvalToThisAmount = model.getApprovalToThisAmount(); 063 financialDocumentTypeCode = model.getFinancialDocumentTypeCode(); 064 } 065 066 /** 067 * Gets the financialSystemDocumentTypeCode attribute. 068 * @return Returns the financialSystemDocumentTypeCode. 069 */ 070 public DocumentTypeEBO getFinancialSystemDocumentTypeCode() { 071 return financialSystemDocumentTypeCode = SpringContext.getBean(KEWModuleService.class).retrieveExternalizableBusinessObjectIfNecessary(this, financialSystemDocumentTypeCode, "financialSystemDocumentTypeCode"); 072 } 073 074 /** 075 * Gets the accountDelegateUniversalId attribute. 076 * 077 * @return Returns the accountDelegateUniversalId 078 */ 079 public String getAccountDelegateUniversalId() { 080 return accountDelegateUniversalId; 081 } 082 083 /** 084 * Sets the accountDelegateUniversalId attribute. 085 * 086 * @param accountDelegateUniversalId The accountDelegateUniversalId to set. 087 */ 088 public void setAccountDelegateUniversalId(String accountDelegateUniversalId) { 089 this.accountDelegateUniversalId = accountDelegateUniversalId; 090 } 091 092 /** 093 * Gets the financialDocumentTypeCode attribute. 094 * 095 * @return Returns the financialDocumentTypeCode 096 */ 097 public String getFinancialDocumentTypeCode() { 098 return financialDocumentTypeCode; 099 } 100 101 /** 102 * Sets the financialDocumentTypeCode attribute. 103 * 104 * @param financialDocumentTypeCode The financialDocumentTypeCode to set. 105 */ 106 public void setFinancialDocumentTypeCode(String financialDocumentTypeCode) { 107 this.financialDocumentTypeCode = financialDocumentTypeCode; 108 } 109 110 111 /** 112 * Gets the approvalFromThisAmount attribute. 113 * 114 * @return Returns the approvalFromThisAmount 115 */ 116 public KualiDecimal getApprovalFromThisAmount() { 117 return approvalFromThisAmount; 118 } 119 120 /** 121 * Sets the approvalFromThisAmount attribute. 122 * 123 * @param approvalFromThisAmount The approvalFromThisAmount to set. 124 */ 125 public void setApprovalFromThisAmount(KualiDecimal approvalFromThisAmount) { 126 this.approvalFromThisAmount = approvalFromThisAmount; 127 } 128 129 130 /** 131 * Gets the approvalToThisAmount attribute. 132 * 133 * @return Returns the approvalToThisAmount 134 */ 135 public KualiDecimal getApprovalToThisAmount() { 136 return approvalToThisAmount; 137 } 138 139 /** 140 * Sets the approvalToThisAmount attribute. 141 * 142 * @param approvalToThisAmount The approvalToThisAmount to set. 143 */ 144 public void setApprovalToThisAmount(KualiDecimal approvalToThisAmount) { 145 this.approvalToThisAmount = approvalToThisAmount; 146 } 147 148 149 /** 150 * Gets the accountDelegatePrimaryRoutingIndicator attribute. 151 * 152 * @return Returns the accountDelegatePrimaryRoutingIndicator 153 */ 154 public boolean getAccountDelegatePrimaryRoutingIndicator() { 155 return accountDelegatePrimaryRoutingIndicator; 156 } 157 158 /** 159 * Sets the accountDelegatePrimaryRoutingIndicator attribute. 160 * 161 * @param accountDelegatePrimaryRoutingIndicator The accountDelegatePrimaryRoutingIndicator to set. 162 * @deprecated 163 */ 164 public void setAccountDelegatePrimaryRoutingIndicator(boolean accountDelegatePrimaryRoutingIndicator) { 165 this.accountDelegatePrimaryRoutingIndicator = accountDelegatePrimaryRoutingIndicator; 166 } 167 168 169 /** 170 * Gets the accountDelegateStartDate attribute. 171 * 172 * @return Returns the accountDelegateStartDate 173 */ 174 public Date getAccountDelegateStartDate() { 175 return accountDelegateStartDate; 176 } 177 178 /** 179 * Sets the accountDelegateStartDate attribute. 180 * 181 * @param accountDelegateStartDate The accountDelegateStartDate to set. 182 */ 183 public void setAccountDelegateStartDate(Date accountDelegateStartDate) { 184 this.accountDelegateStartDate = accountDelegateStartDate; 185 } 186 187 public Person getAccountDelegate() { 188 accountDelegate = SpringContext.getBean(PersonService.class).updatePersonIfNecessary(accountDelegateUniversalId, accountDelegate); 189 return accountDelegate; 190 } 191 192 /** 193 * @param accountDelegate The accountDelegate to set. 194 * @deprecated 195 */ 196 public void setAccountDelegate(Person accountDelegate) { 197 this.accountDelegate = accountDelegate; 198 } 199 200 /** 201 * @see java.lang.Object#equals(java.lang.Object) 202 */ 203 public boolean equals(Object obj) { 204 if (obj != null) { 205 if (this.getClass().equals(obj.getClass())) { 206 AccountDelegateGlobalDetail other = (AccountDelegateGlobalDetail) obj; 207 if (StringUtils.equalsIgnoreCase(getDocumentNumber(), other.getDocumentNumber())) { 208 if (StringUtils.equalsIgnoreCase(this.financialDocumentTypeCode, other.financialDocumentTypeCode)) { 209 if (this.accountDelegatePrimaryRoutingIndicator == other.accountDelegatePrimaryRoutingIndicator) { 210 if (StringUtils.equalsIgnoreCase(this.accountDelegateUniversalId, other.accountDelegateUniversalId)) { 211 return true; 212 } 213 } 214 } 215 } 216 } 217 } 218 return false; 219 } 220 221 /** 222 * @see java.lang.Object#hashCode() 223 */ 224 public int hashCode() { 225 return toStringBuilder(toStringMapper()).hashCode(); 226 } 227 228 /** 229 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 230 */ 231 protected LinkedHashMap toStringMapper() { 232 LinkedHashMap m = new LinkedHashMap(); 233 m.put(KFSPropertyConstants.DOCUMENT_NUMBER, getDocumentNumber()); 234 m.put("accountDelegateUniversalId", this.accountDelegateUniversalId); 235 m.put("financialDocumentTypeCode", this.financialDocumentTypeCode); 236 return m; 237 } 238 } 239