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.businessobject; 017 018 import java.lang.reflect.InvocationTargetException; 019 import java.util.LinkedHashMap; 020 import java.util.SortedSet; 021 import java.util.TreeSet; 022 023 import org.apache.commons.beanutils.PropertyUtils; 024 import org.apache.commons.lang.StringUtils; 025 import org.kuali.kfs.coa.service.ObjectCodeService; 026 import org.kuali.kfs.sys.KFSConstants; 027 import org.kuali.kfs.sys.KFSPropertyConstants; 028 import org.kuali.kfs.sys.context.SpringContext; 029 import org.kuali.rice.kns.bo.GlobalBusinessObjectDetailBase; 030 031 /** 032 * This is a representation of an Organization Reversion Detail, made specifically for Global Organization Reversions. However, as 033 * OrganizationReversionDetail lists Organization as a primary key and Global Organization Reversions deal with several 034 * Organizations, that class could not be re-used for Globals. 035 */ 036 public class OrganizationReversionGlobalDetail extends GlobalBusinessObjectDetailBase { 037 protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(OrganizationReversionGlobalDetail.class); 038 039 private String documentNumber; 040 private String organizationReversionCategoryCode; 041 private String organizationReversionObjectCode; 042 private String organizationReversionCode; 043 044 private OrganizationReversionCategory organizationReversionCategory; 045 private OrganizationReversionGlobal parentGlobalOrganizationReversion; 046 private ObjectCode organizationReversionObject; 047 048 /** 049 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 050 */ 051 @Override 052 protected LinkedHashMap toStringMapper() { 053 LinkedHashMap stringMapper = new LinkedHashMap(); 054 stringMapper.put(KFSPropertyConstants.DOCUMENT_NUMBER, this.documentNumber); 055 stringMapper.put("OrganizationReversionCategoryCode", this.organizationReversionCategoryCode); 056 return stringMapper; 057 } 058 059 /** 060 * Constructs an OrganizationReversionGlobalDocumentDetail. 061 */ 062 public OrganizationReversionGlobalDetail() { 063 } 064 065 /** 066 * Gets the documentNumber attribute. 067 * 068 * @return Returns the documentNumber. 069 */ 070 public String getDocumentNumber() { 071 return documentNumber; 072 } 073 074 /** 075 * Sets the documentNumber attribute value. 076 * 077 * @param documentNumber The documentNumber to set. 078 */ 079 public void setDocumentNumber(String documentNumber) { 080 this.documentNumber = documentNumber; 081 } 082 083 /** 084 * Gets the organizationReversionCode attribute. 085 * 086 * @return Returns the organizationReversionCode. 087 */ 088 public String getOrganizationReversionCode() { 089 return organizationReversionCode; 090 } 091 092 /** 093 * Sets the organizationReversionCode attribute value. 094 * 095 * @param organizationReversionCode The organizationReversionCode to set. 096 */ 097 public void setOrganizationReversionCode(String organizationReversionCode) { 098 this.organizationReversionCode = organizationReversionCode; 099 } 100 101 /** 102 * Gets the organizationReversionCategory attribute. 103 * 104 * @return Returns the organizationReversionCategory. 105 */ 106 public OrganizationReversionCategory getOrganizationReversionCategory() { 107 return organizationReversionCategory; 108 } 109 110 /** 111 * Sets the organizationReversionCategory attribute value. 112 * 113 * @param organizationReversionCategory The organizationReversionCategory to set. 114 */ 115 public void setOrganizationReversionCategory(OrganizationReversionCategory organizationReversionCategory) { 116 this.organizationReversionCategory = organizationReversionCategory; 117 } 118 119 /** 120 * Gets the organizationReversionCategoryCode attribute. 121 * 122 * @return Returns the organizationReversionCategoryCode. 123 */ 124 public String getOrganizationReversionCategoryCode() { 125 return organizationReversionCategoryCode; 126 } 127 128 /** 129 * Sets the organizationReversionCategoryCode attribute value. 130 * 131 * @param organizationReversionCategoryCode The organizationReversionCategoryCode to set. 132 */ 133 public void setOrganizationReversionCategoryCode(String organizationReversionCategoryCode) { 134 this.organizationReversionCategoryCode = organizationReversionCategoryCode; 135 } 136 137 /** 138 * Gets the organizationReversionObjectCode attribute. 139 * 140 * @return Returns the organizationReversionObjectCode. 141 */ 142 public String getOrganizationReversionObjectCode() { 143 return organizationReversionObjectCode; 144 } 145 146 /** 147 * Sets the organizationReversionObjectCode attribute value. 148 * 149 * @param organizationReversionObjectCode The organizationReversionObjectCode to set. 150 */ 151 public void setOrganizationReversionObjectCode(String organizationReversionObjectCode) { 152 this.organizationReversionObjectCode = organizationReversionObjectCode; 153 } 154 155 /** 156 * Gets the parentGlobalOrganizationReversion attribute. This field does not persist, and is populated by 157 * OrganzationReversionChangeMaintainable. 158 * 159 * @return Returns the parentGlobalOrganizationReversion. 160 */ 161 public OrganizationReversionGlobal getParentGlobalOrganizationReversion() { 162 return parentGlobalOrganizationReversion; 163 } 164 165 /** 166 * Sets the parentGlobalOrganizationReversion attribute value. This field does not persist, and is populated by 167 * OrganizationReversionGlobalMaintainableImpl. 168 * 169 * @param parentGlobalOrganizationReversion The parentGlobalOrganizationReversion to set. 170 */ 171 public void setParentGlobalOrganizationReversion(OrganizationReversionGlobal parentGlobalOrganizationReversion) { 172 this.parentGlobalOrganizationReversion = parentGlobalOrganizationReversion; 173 } 174 175 /** 176 * Gets the organizationReversionObject attribute. 177 * @return Returns the organizationReversionObject. 178 */ 179 public ObjectCode getOrganizationReversionObject() { 180 return organizationReversionObject; 181 } 182 183 /** 184 * Sets the organizationReversionObject attribute value. 185 * @param organizationReversionObject The organizationReversionObject to set. 186 */ 187 public void setOrganizationReversionObject(ObjectCode organizationReversionObject) { 188 this.organizationReversionObject = organizationReversionObject; 189 } 190 191 /** 192 * This utility method converts the name of a property into a string suitable for being part of a locking representation. 193 * 194 * @param keyName the name of the property to convert to a locking representation 195 * @return a part of a locking representation 196 */ 197 private String convertKeyToLockingRepresentation(String keyName) { 198 StringBuffer sb = new StringBuffer(); 199 sb.append(keyName); 200 sb.append(KFSConstants.Maintenance.AFTER_FIELDNAME_DELIM); 201 String keyValue = ""; 202 try { 203 Object keyValueObj = PropertyUtils.getProperty(this, keyName); 204 if (keyValueObj != null) { 205 keyValue = keyValueObj.toString(); 206 } 207 } 208 catch (IllegalAccessException iae) { 209 LOG.info("Illegal access exception while attempting to read property " + keyName, iae); 210 } 211 catch (InvocationTargetException ite) { 212 LOG.info("Illegal Target Exception while attempting to read property " + keyName, ite); 213 } 214 catch (NoSuchMethodException nsme) { 215 LOG.info("There is no such method to read property " + keyName + " in this class.", nsme); 216 } 217 finally { 218 sb.append(keyValue); 219 } 220 sb.append(KFSConstants.Maintenance.AFTER_VALUE_DELIM); 221 return sb.toString(); 222 } 223 224 /** 225 * This returns a string of object code names associated with the object code in this org rev change detail. 226 * 227 * @return String of distinct object code names 228 */ 229 public String getObjectCodeNames() { 230 String objectCodeNames = ""; 231 if (!StringUtils.isBlank(this.getOrganizationReversionObjectCode())) { 232 if (this.getParentGlobalOrganizationReversion().getUniversityFiscalYear() != null && this.getParentGlobalOrganizationReversion().getOrganizationReversionGlobalOrganizations() != null && this.getParentGlobalOrganizationReversion().getOrganizationReversionGlobalOrganizations().size() > 0) { 233 // find distinct chart of account codes 234 SortedSet<String> chartCodes = new TreeSet<String>(); 235 for (OrganizationReversionGlobalOrganization org : this.getParentGlobalOrganizationReversion().getOrganizationReversionGlobalOrganizations()) { 236 chartCodes.add(org.getChartOfAccountsCode()); 237 } 238 String[] chartCodesArray = new String[chartCodes.size()]; 239 int i = 0; 240 for (String chartCode : chartCodes) { 241 chartCodesArray[i] = chartCode; 242 i++; 243 } 244 objectCodeNames = (String) SpringContext.getBean(ObjectCodeService.class).getObjectCodeNamesByCharts(this.getParentGlobalOrganizationReversion().getUniversityFiscalYear(), chartCodesArray, this.getOrganizationReversionObjectCode()); 245 } 246 } 247 return objectCodeNames; 248 } 249 }