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.module.endow.businessobject;
017    
018    import java.math.BigDecimal;
019    import java.sql.Date;
020    import java.util.LinkedHashMap;
021    
022    import org.kuali.kfs.module.endow.EndowPropertyConstants;
023    import org.kuali.kfs.module.endow.document.service.KEMService;
024    import org.kuali.kfs.sys.context.SpringContext;
025    import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
026    import org.kuali.rice.kns.util.KualiInteger;
027    
028    /**
029     * Business Object for Holding Tax Lot table
030     */
031    public class HoldingTaxLot extends PersistableBusinessObjectBase {
032    
033        private String kemid;
034        private String securityId;
035        private String registrationCode;
036        private KualiInteger lotNumber;
037        private String incomePrincipalIndicator;
038        private Date acquiredDate;
039        private BigDecimal units = BigDecimal.ZERO;
040        private BigDecimal cost = BigDecimal.ZERO;
041        private BigDecimal currentAccrual = BigDecimal.ZERO;
042        private BigDecimal priorAccrual = BigDecimal.ZERO;
043        private Date lastTransactionDate;
044    
045        private KEMID kemidObj;
046        private Security security;
047        private IncomePrincipalIndicator incomePrincipal;
048        private RegistrationCode registration;
049    
050        /**
051         * Constructs a HoldingTaxLot.java.
052         */
053        public HoldingTaxLot() {
054            super();
055        }
056    
057        /**
058         * Gets the incomePrincipal.
059         * 
060         * @return incomePrincipal
061         */
062        public IncomePrincipalIndicator getIncomePrincipal() {
063            return incomePrincipal;
064        }
065    
066        /**
067         * Sets the incomePrincipal.
068         * 
069         * @param incomePrincipal
070         */
071        public void setIncomePrincipal(IncomePrincipalIndicator incomePrincipal) {
072            this.incomePrincipal = incomePrincipal;
073        }
074    
075        /**
076         * Gets the security
077         * 
078         * @return security
079         */
080        public Security getSecurity() {
081            return security;
082        }
083    
084        /**
085         * Sets the security.
086         * 
087         * @param security
088         */
089        public void setSecurity(Security security) {
090            this.security = security;
091        }
092    
093        /**
094         * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
095         */
096        @Override
097        protected LinkedHashMap toStringMapper() {
098            LinkedHashMap m = new LinkedHashMap();
099            m.put(EndowPropertyConstants.HOLDING_TAX_LOT_KEMID, this.kemid);
100            m.put(EndowPropertyConstants.HOLDING_TAX_LOT_SECURITY_ID, this.securityId);
101            m.put(EndowPropertyConstants.HOLDING_TAX_LOT_REGISTRATION_CODE, this.registrationCode);
102            m.put(EndowPropertyConstants.HOLDING_TAX_LOT_INCOME_PRINCIPAL_INDICATOR, this.incomePrincipalIndicator);
103            return m;
104        }
105    
106        /**
107         * Gets the acquiredDate.
108         * 
109         * @return acquiredDate
110         */
111        public Date getAcquiredDate() {
112            return acquiredDate;
113        }
114    
115        /**
116         * Sets the acquiredDate.
117         * 
118         * @param acquiredDate
119         */
120        public void setAcquiredDate(Date acquiredDate) {
121            this.acquiredDate = acquiredDate;
122        }
123    
124        /**
125         * Gets the cost.
126         * 
127         * @return cost
128         */
129        public BigDecimal getCost() {
130            return cost;
131        }
132    
133        /**
134         * Sets the cost.
135         * 
136         * @param cost
137         */
138        public void setCost(BigDecimal cost) {
139            this.cost = cost;
140        }
141    
142        /**
143         * Gets the currentAccrual.
144         * 
145         * @return currentAccrual
146         */
147        public BigDecimal getCurrentAccrual() {
148            return currentAccrual;
149        }
150    
151        /**
152         * Sets the currentAccrual.
153         * 
154         * @param currentAccrual
155         */
156        public void setCurrentAccrual(BigDecimal currentAccrual) {
157            this.currentAccrual = currentAccrual;
158        }
159    
160        /**
161         * Gets the incomePrincipalIndicator.
162         * 
163         * @return incomePrincipalIndicator
164         */
165        public String getIncomePrincipalIndicator() {
166            return incomePrincipalIndicator;
167        }
168    
169        /**
170         * Sets the incomePrincipalIndicator.
171         * 
172         * @param incomePrincipalIndicator
173         */
174        public void setIncomePrincipalIndicator(String incomePrincipalIndicator) {
175            this.incomePrincipalIndicator = incomePrincipalIndicator;
176        }
177    
178        /**
179         * Gets the kemid.
180         * 
181         * @return kemid
182         */
183        public String getKemid() {
184            return kemid;
185        }
186    
187        /**
188         * Sets the kemid.
189         * 
190         * @param kemid
191         */
192        public void setKemid(String kemid) {
193            this.kemid = kemid;
194        }
195    
196        /**
197         * Gets the lastTransactionDate.
198         * 
199         * @return lastTransactionDate
200         */
201        public Date getLastTransactionDate() {
202            return lastTransactionDate;
203        }
204    
205        /**
206         * Sets the lastTransactionDate.
207         * 
208         * @param lastTransactionDate
209         */
210        public void setLastTransactionDate(Date lastTransactionDate) {
211            this.lastTransactionDate = lastTransactionDate;
212        }
213    
214        /**
215         * Gets the lotNumber.
216         * 
217         * @return lotNumber
218         */
219        public KualiInteger getLotNumber() {
220            return lotNumber;
221        }
222    
223        /**
224         * Sets the lotNumber.
225         * 
226         * @param lotNumber
227         */
228        public void setLotNumber(KualiInteger lotNumber) {
229            this.lotNumber = lotNumber;
230        }
231    
232        /**
233         * Gets the priorAccrual.
234         * 
235         * @return priorAccrual
236         */
237        public BigDecimal getPriorAccrual() {
238            return priorAccrual;
239        }
240    
241        /**
242         * Sets the priorAccrual.
243         * 
244         * @param priorAccrual
245         */
246        public void setPriorAccrual(BigDecimal priorAccrual) {
247            this.priorAccrual = priorAccrual;
248        }
249    
250        /**
251         * Gets the registrationCode.
252         * 
253         * @return registrationCode
254         */
255        public String getRegistrationCode() {
256            return registrationCode;
257        }
258    
259        /**
260         * Sets the registrationCode.
261         * 
262         * @param registrationCode
263         */
264        public void setRegistrationCode(String registrationCode) {
265            this.registrationCode = registrationCode;
266        }
267    
268        /**
269         * Gets the securityId.
270         * 
271         * @return securityId
272         */
273        public String getSecurityId() {
274            return securityId;
275        }
276    
277        /**
278         * Sets the securityId.
279         * 
280         * @param securityId
281         */
282        public void setSecurityId(String securityId) {
283            this.securityId = securityId;
284        }
285    
286        /**
287         * Gets the units.
288         * 
289         * @return units
290         */
291        public BigDecimal getUnits() {
292            return units;
293        }
294    
295        /**
296         * Sets the units.
297         * 
298         * @param units
299         */
300        public void setUnits(BigDecimal units) {
301            this.units = units;
302        }
303    
304        /**
305         * Gets the market value.
306         * 
307         * @return the market value
308         */
309        public BigDecimal getMarketValue() {
310    
311            KEMService kemService = SpringContext.getBean(KEMService.class);
312            BigDecimal marketValue = kemService.getMarketValue(this.getKemid(), this.getSecurityId(), this.getRegistrationCode(), this.getLotNumber(), this.getIncomePrincipalIndicator());
313    
314            return marketValue;
315        }
316    
317        /**
318         * Gets the Balance Date which is the Current System/Process date
319         * 
320         * @return the Balance Date
321         */
322        public Date getBalanceDate() {
323    
324            return SpringContext.getBean(KEMService.class).getCurrentDate();
325        }
326    
327        /**
328         * Gets the registration.
329         * 
330         * @return registration
331         */
332        public RegistrationCode getRegistration() {
333            return registration;
334        }
335    
336        /**
337         * Sets the registration
338         * 
339         * @param registration
340         */
341        public void setRegistration(RegistrationCode registration) {
342            this.registration = registration;
343        }
344    
345        /**
346         * Gets the kemidObj.
347         * 
348         * @return kemidObj
349         */
350        public KEMID getKemidObj() {
351            return kemidObj;
352        }
353    
354        /**
355         * Sets the kemidObj.
356         * 
357         * @param kemidObj
358         */
359        @Deprecated
360        public void setKemidObj(KEMID kemidObj) {
361            this.kemidObj = kemidObj;
362        }
363    
364        /**
365         * @see java.lang.Object#hashCode()
366         */
367        @Override
368        public int hashCode() {
369            final int prime = 31;
370            int result = 1;
371            result = prime * result + ((incomePrincipalIndicator == null) ? 0 : incomePrincipalIndicator.hashCode());
372            result = prime * result + ((kemid == null) ? 0 : kemid.hashCode());
373            result = prime * result + ((lotNumber == null) ? 0 : lotNumber.hashCode());
374            result = prime * result + ((registrationCode == null) ? 0 : registrationCode.hashCode());
375            result = prime * result + ((securityId == null) ? 0 : securityId.hashCode());
376            return result;
377        }
378    
379        /**
380         * @see java.lang.Object#equals(java.lang.Object)
381         */
382        @Override
383        public boolean equals(Object obj) {
384            if (this == obj)
385                return true;
386            if (obj == null)
387                return false;
388            if (getClass() != obj.getClass())
389                return false;
390            HoldingTaxLot other = (HoldingTaxLot) obj;
391            if (incomePrincipalIndicator == null) {
392                if (other.incomePrincipalIndicator != null)
393                    return false;
394            }
395            else if (!incomePrincipalIndicator.equals(other.incomePrincipalIndicator))
396                return false;
397            if (kemid == null) {
398                if (other.kemid != null)
399                    return false;
400            }
401            else if (!kemid.equals(other.kemid))
402                return false;
403            if (lotNumber == null) {
404                if (other.lotNumber != null)
405                    return false;
406            }
407            else if (!lotNumber.equals(other.lotNumber))
408                return false;
409            if (registrationCode == null) {
410                if (other.registrationCode != null)
411                    return false;
412            }
413            else if (!registrationCode.equals(other.registrationCode))
414                return false;
415            if (securityId == null) {
416                if (other.securityId != null)
417                    return false;
418            }
419            else if (!securityId.equals(other.securityId))
420                return false;
421            return true;
422        }
423    
424    }