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.util.LinkedHashMap;
019
020 import org.apache.ojb.broker.PersistenceBroker;
021 import org.apache.ojb.broker.PersistenceBrokerException;
022 import org.kuali.kfs.gl.businessobject.SufficientFundRebuild;
023 import org.kuali.kfs.sys.context.SpringContext;
024 import org.kuali.rice.kns.bo.Inactivateable;
025 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
026 import org.kuali.rice.kns.service.BusinessObjectService;
027
028 /**
029 *
030 */
031 public class ObjectLevel extends PersistableBusinessObjectBase implements Inactivateable {
032 private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(ObjectLevel.class);
033
034 private String chartOfAccountsCode;
035 private String financialObjectLevelCode;
036 private String financialObjectLevelName;
037 private String financialObjectLevelShortNm;
038 private boolean active;
039 private String financialReportingSortCode;
040 private String financialConsolidationObjectCode;
041
042 private ObjectConsolidation financialConsolidationObject;
043 private Chart chartOfAccounts;
044
045
046 /**
047 * Constructs a ObjLevel.java.
048 */
049 public ObjectLevel() {
050 super();
051 this.financialConsolidationObject = new ObjectConsolidation();
052 }
053
054 /**
055 * Gets the financialObjectLevelCode attribute.
056 *
057 * @return Returns the financialObjectLevelCode
058 */
059 public String getFinancialObjectLevelCode() {
060 return financialObjectLevelCode;
061 }
062
063 /**
064 * Sets the financialObjectLevelCode attribute.
065 *
066 * @param financialObjectLevelCode The financialObjectLevelCode to set.
067 */
068 public void setFinancialObjectLevelCode(String financialObjectLevelCode) {
069 this.financialObjectLevelCode = financialObjectLevelCode;
070 }
071
072 /**
073 * Gets the financialObjectLevelName attribute.
074 *
075 * @return Returns the financialObjectLevelName
076 */
077 public String getFinancialObjectLevelName() {
078 return financialObjectLevelName;
079 }
080
081 /**
082 * Sets the financialObjectLevelName attribute.
083 *
084 * @param financialObjectLevelName The financialObjectLevelName to set.
085 */
086 public void setFinancialObjectLevelName(String financialObjectLevelName) {
087 this.financialObjectLevelName = financialObjectLevelName;
088 }
089
090 /**
091 * Gets the financialObjectLevelShortNm attribute.
092 *
093 * @return Returns the financialObjectLevelShortNm
094 */
095 public String getFinancialObjectLevelShortNm() {
096 return financialObjectLevelShortNm;
097 }
098
099 /**
100 * Sets the financialObjectLevelShortNm attribute.
101 *
102 * @param financialObjectLevelShortNm The financialObjectLevelShortNm to set.
103 */
104 public void setFinancialObjectLevelShortNm(String financialObjectLevelShortNm) {
105 this.financialObjectLevelShortNm = financialObjectLevelShortNm;
106 }
107
108 /**
109 * Gets the financialObjectLevelActiveIndicator attribute.
110 *
111 * @return Returns the financialObjectLevelActiveIndicator
112 */
113 public boolean isActive() {
114 return active;
115 }
116
117 /**
118 * Sets the financialObjectLevelActiveIndicator attribute.
119 *
120 * @param financialObjectLevelActiveIndicator The financialObjectLevelActiveIndicator to set.
121 */
122 public void setActive(boolean financialObjectLevelActiveIndicator) {
123 this.active = financialObjectLevelActiveIndicator;
124 }
125
126 /**
127 * Gets the financialReportingSortCode attribute.
128 *
129 * @return Returns the financialReportingSortCode
130 */
131 public String getFinancialReportingSortCode() {
132 return financialReportingSortCode;
133 }
134
135 /**
136 * Sets the financialReportingSortCode attribute.
137 *
138 * @param financialReportingSortCode The financialReportingSortCode to set.
139 */
140 public void setFinancialReportingSortCode(String financialReportingSortCode) {
141 this.financialReportingSortCode = financialReportingSortCode;
142 }
143
144
145 public String getConsolidatedObjectCode() {
146 return financialConsolidationObject.getFinancialReportingSortCode();
147 }
148
149 /**
150 * Gets the financialConsolidationObject attribute.
151 *
152 * @return Returns the financialConsolidationObject
153 */
154 public ObjectConsolidation getFinancialConsolidationObject() {
155 return financialConsolidationObject;
156 }
157
158 /**
159 * Sets the financialConsolidationObject attribute.
160 *
161 * @param financialConsolidationObject The financialConsolidationObject to set.
162 */
163 public void setFinancialConsolidationObject(ObjectConsolidation financialConsolidationObject) {
164 this.financialConsolidationObject = financialConsolidationObject;
165 }
166
167 public String getChartOfAccountsCode() {
168 return chartOfAccountsCode;
169 }
170
171 /**
172 * Gets the chartOfAccounts attribute.
173 *
174 * @return Returns the chartOfAccounts
175 */
176 public Chart getChartOfAccounts() {
177 return chartOfAccounts;
178 }
179
180 /**
181 * Sets the chartOfAccounts attribute.
182 *
183 * @param chartOfAccounts The chartOfAccounts to set.
184 * @deprecated
185 */
186 public void setChartOfAccounts(Chart chartOfAccounts) {
187 this.chartOfAccounts = chartOfAccounts;
188 }
189
190
191 /**
192 * @return Returns the financialConsolidationObjectCode.
193 */
194 public String getFinancialConsolidationObjectCode() {
195 return financialConsolidationObjectCode;
196 }
197
198 /**
199 * @param financialConsolidationObjectCode The financialConsolidationObjectCode to set.
200 */
201 public void setFinancialConsolidationObjectCode(String financialConsolidationObjectCode) {
202 this.financialConsolidationObjectCode = financialConsolidationObjectCode;
203 }
204
205 /**
206 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
207 */
208 protected LinkedHashMap toStringMapper() {
209 LinkedHashMap m = new LinkedHashMap();
210
211 m.put("chartOfAccountsCode", this.chartOfAccountsCode);
212 m.put("financialObjectLevelCode", this.financialObjectLevelCode);
213
214 return m;
215 }
216
217 public void setChartOfAccountsCode(String chart) {
218 this.chartOfAccountsCode = chart;
219 }
220
221 @Override
222 public void beforeUpdate(PersistenceBroker persistenceBroker) throws PersistenceBrokerException {
223 super.beforeUpdate(persistenceBroker);
224 try {
225 // KULCOA-549: update the sufficient funds table
226 // get the current data from the database
227 BusinessObjectService boService = SpringContext.getBean(BusinessObjectService.class);
228 ObjectLevel originalObjLevel = (ObjectLevel) boService.retrieve(this);
229
230 if (originalObjLevel != null) {
231 if (!originalObjLevel.getFinancialConsolidationObjectCode().equals(getFinancialConsolidationObjectCode())) {
232 SufficientFundRebuild sfr = new SufficientFundRebuild();
233 sfr.setAccountFinancialObjectTypeCode(SufficientFundRebuild.REBUILD_OBJECT);
234 sfr.setChartOfAccountsCode(originalObjLevel.getChartOfAccountsCode());
235 sfr.setAccountNumberFinancialObjectCode(originalObjLevel.getFinancialConsolidationObjectCode());
236 if (boService.retrieve(sfr) == null) {
237 persistenceBroker.store(sfr);
238 }
239 sfr = new SufficientFundRebuild();
240 sfr.setAccountFinancialObjectTypeCode(SufficientFundRebuild.REBUILD_OBJECT);
241 sfr.setChartOfAccountsCode(getChartOfAccountsCode());
242 sfr.setAccountNumberFinancialObjectCode(getFinancialConsolidationObjectCode());
243 if (boService.retrieve(sfr) == null) {
244 persistenceBroker.store(sfr);
245 }
246 }
247 }
248 }
249 catch (Exception ex) {
250 LOG.error("Problem updating sufficient funds rebuild table: ", ex);
251 }
252 }
253
254 }