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.Calendar;
021 import java.util.LinkedHashMap;
022
023 import org.kuali.kfs.sys.businessobject.SystemOptions;
024 import org.kuali.kfs.sys.context.SpringContext;
025 import org.kuali.rice.kns.bo.Inactivateable;
026 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
027 import org.kuali.rice.kns.service.DateTimeService;
028
029 /**
030 *
031 */
032 public class AccountingPeriod extends PersistableBusinessObjectBase implements Inactivateable {
033
034 private Integer universityFiscalYear;
035 private String universityFiscalPeriodCode;
036 private String universityFiscalPeriodName;
037 private boolean active;
038 private boolean budgetRolloverIndicator;
039
040 private Date universityFiscalPeriodEndDate;
041 private SystemOptions options;
042
043 /**
044 * Default constructor.
045 */
046 public AccountingPeriod() {
047
048 }
049
050 /**
051 * Gets the universityFiscalYear attribute.
052 *
053 * @return Returns the universityFiscalYear
054 */
055 public Integer getUniversityFiscalYear() {
056 return universityFiscalYear;
057 }
058
059 /**
060 * Sets the universityFiscalYear attribute.
061 *
062 * @param universityFiscalYear The universityFiscalYear to set.
063 */
064 public void setUniversityFiscalYear(Integer universityFiscalYear) {
065 this.universityFiscalYear = universityFiscalYear;
066 }
067
068
069 /**
070 * Gets the universityFiscalPeriodCode attribute.
071 *
072 * @return Returns the universityFiscalPeriodCode
073 */
074 public String getUniversityFiscalPeriodCode() {
075 return universityFiscalPeriodCode;
076 }
077
078 /**
079 * Sets the universityFiscalPeriodCode attribute.
080 *
081 * @param universityFiscalPeriodCode The universityFiscalPeriodCode to set.
082 */
083 public void setUniversityFiscalPeriodCode(String universityFiscalPeriodCode) {
084 this.universityFiscalPeriodCode = universityFiscalPeriodCode;
085 }
086
087
088 /**
089 * Gets the universityFiscalPeriodName attribute.
090 *
091 * @return Returns the universityFiscalPeriodName
092 */
093 public String getUniversityFiscalPeriodName() {
094 return universityFiscalPeriodName;
095 }
096
097 /**
098 * Sets the universityFiscalPeriodName attribute.
099 *
100 * @param universityFiscalPeriodName The universityFiscalPeriodName to set.
101 */
102 public void setUniversityFiscalPeriodName(String universityFiscalPeriodName) {
103 this.universityFiscalPeriodName = universityFiscalPeriodName;
104 }
105
106
107 /**
108 * Gets the active attribute.
109 *
110 * @return Returns the active
111 */
112 public boolean isActive() {
113 return active;
114 }
115
116 /**
117 * Sets the active attribute.
118 *
119 * @param active The active to set.
120 */
121 public void setActive(boolean active) {
122 this.active = active;
123 }
124
125
126 /**
127 * Gets the budgetRolloverIndicator attribute.
128 *
129 * @return Returns the budgetRolloverIndicator
130 */
131 public boolean isBudgetRolloverIndicator() {
132 return budgetRolloverIndicator;
133 }
134
135
136 /**
137 * Sets the budgetRolloverIndicator attribute.
138 *
139 * @param budgetRolloverIndicator The budgetRolloverIndicator to set.
140 */
141 public void setBudgetRolloverIndicator(boolean budgetRolloverIndicator) {
142 this.budgetRolloverIndicator = budgetRolloverIndicator;
143 }
144
145
146 /**
147 * Gets the universityFiscalPeriodEndDate attribute.
148 *
149 * @return Returns the universityFiscalPeriodEndDate
150 */
151 public Date getUniversityFiscalPeriodEndDate() {
152 return universityFiscalPeriodEndDate;
153 }
154
155 /**
156 * Sets the universityFiscalPeriodEndDate attribute.
157 *
158 * @param universityFiscalPeriodEndDate The universityFiscalPeriodEndDate to set.
159 */
160 public void setUniversityFiscalPeriodEndDate(Date universityFiscalPeriodEndDate) {
161 this.universityFiscalPeriodEndDate = universityFiscalPeriodEndDate;
162 }
163
164 /**
165 * Determine if the current account period is open
166 *
167 * @return true if the accounting period is open; otherwise, false
168 */
169 public boolean isOpen() {
170 return this.isActive();
171 }
172
173 /**
174 * @return Returns the options.
175 */
176 public SystemOptions getOptions() {
177 return options;
178 }
179
180 /**
181 * @param options The options to set.
182 * @deprecated
183 */
184 public void setOptions(SystemOptions options) {
185 this.options = options;
186 }
187
188 /**
189 * This method returns the month that this period represents
190 *
191 * @return the actual month (1 - 12) that this period represents
192 */
193 public int getMonth() {
194 DateTimeService dateTimeService = SpringContext.getBean(DateTimeService.class);
195 Calendar cal = dateTimeService.getCalendar(new Date(this.universityFiscalPeriodEndDate.getTime()));
196 return cal.get(Calendar.MONTH) + 1;
197 }
198
199 /**
200 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
201 */
202 protected LinkedHashMap toStringMapper() {
203 LinkedHashMap m = new LinkedHashMap();
204 m.put("universityFiscalYear", "" + this.universityFiscalYear);
205 m.put("universityFiscalPeriodCode", this.universityFiscalPeriodCode);
206 return m;
207 }
208
209 /**
210 * generates a hash code for this accounting period, based on the primary keys of the AccountingPeriod BusinesObject: university
211 * fiscal year and university fiscal period code
212 *
213 * @see java.lang.Object#hashCode()
214 */
215 @Override
216 public int hashCode() {
217 final int PRIME = 31;
218 int result = 1;
219 result = PRIME * result + ((universityFiscalPeriodCode == null) ? 0 : universityFiscalPeriodCode.hashCode());
220 result = PRIME * result + ((universityFiscalYear == null) ? 0 : universityFiscalYear.hashCode());
221 return result;
222 }
223
224 /**
225 * determines if two accounting periods are equal, based on the primary keys of the AccountingPeriod BusinesObject: university
226 * fiscal year and university fiscal period code
227 *
228 * @see java.lang.Object#equals(java.lang.Object)
229 */
230 @Override
231 public boolean equals(Object obj) {
232 // this method was added so that
233 // org.kuali.kfs.fp.document.web.struts.AuxiliaryVoucherForm.populateAccountingPeriodListForRendering works properly
234 if (this == obj)
235 return true;
236 if (obj == null)
237 return false;
238 if (getClass() != obj.getClass())
239 return false;
240 final AccountingPeriod other = (AccountingPeriod) obj;
241 if (universityFiscalPeriodCode == null) {
242 if (other.universityFiscalPeriodCode != null)
243 return false;
244 }
245 else if (!universityFiscalPeriodCode.equals(other.universityFiscalPeriodCode))
246 return false;
247 if (universityFiscalYear == null) {
248 if (other.universityFiscalYear != null)
249 return false;
250 }
251 else if (!universityFiscalYear.equals(other.universityFiscalYear))
252 return false;
253 return true;
254 }
255 }