/*
* The Kuali Financial System, a comprehensive financial management system for higher education.
*
* Copyright 2005-2014 The Kuali Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kuali.kfs.module.tem.businessobject;
import java.sql.Date;
import java.util.LinkedHashMap;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import org.apache.commons.lang.StringUtils;
import org.kuali.kfs.module.tem.TemPropertyConstants;
import org.kuali.rice.core.api.util.type.KualiDecimal;
import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
import org.kuali.rice.krad.util.ObjectUtils;
@Entity
@Table(name="TEM_PER_DIEM_T")
public class PerDiem extends PersistableBusinessObjectBase {
@Id
@GeneratedValue(generator="TEM_PER_DIEM_ID_SEQ")
@SequenceGenerator(name="TEM_PER_DIEM_ID_SEQ",sequenceName="TEM_PER_DIEM_ID_SEQ", allocationSize=5)
@Column(name="id",nullable=false)
protected Integer id;
@JoinColumn(name="PRI_DEST_ID")
@Column(name="PRI_DEST_ID",length=100, nullable=false)
protected PrimaryDestination primaryDestination;
@Column(name="PRI_DEST_ID",length=100, nullable=false)
protected Integer primaryDestinationId;
@Column(name="BKFST",nullable=false)
protected KualiDecimal breakfast = KualiDecimal.ZERO;
@Column(name="LUNCH",nullable=false)
protected KualiDecimal lunch = KualiDecimal.ZERO;
@Column(name="DIN",nullable=false)
protected KualiDecimal dinner = KualiDecimal.ZERO;
@Column(name="lodging",nullable=false)
protected KualiDecimal lodging = KualiDecimal.ZERO;
@Column(name="INC",precision=19,scale=2,nullable=false)
protected KualiDecimal incidentals = KualiDecimal.ZERO;
@Column(name="MEALS_INC",precision=19,scale=2,nullable=false)
protected KualiDecimal mealsAndIncidentals = KualiDecimal.ZERO;
protected String seasonBeginMonthAndDay;
protected Date loadDate;
@Column(name="EFFECT_FROM_DT")
protected Date effectiveFromDate;
protected Date effectiveToDate;
protected String conusIndicator;
protected int lineNumber;
@Id
@GeneratedValue(generator="TEM_PER_DIEM_ID_SEQ")
@SequenceGenerator(name="TEM_PER_DIEM_ID_SEQ",sequenceName="TEM_PER_DIEM_ID_SEQ", allocationSize=5)
@Column(name="id",nullable=false)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
/**
* Gets the primaryDestination attribute.
*
* @return Returns the primaryDestination
*/
public PrimaryDestination getPrimaryDestination() {
return primaryDestination;
}
/**
* Sets the primaryDestination attribute.
*
* @param primaryDestination The primaryDestination to set.
*/
public void setPrimaryDestination(PrimaryDestination primaryDestination) {
this.primaryDestination = primaryDestination;
}
/**
* Gets the primaryDestinationId attribute.
*
* @return Returns the primaryDestinationId
*/
public Integer getPrimaryDestinationId() {
return primaryDestinationId;
}
/**
* Sets the primaryDestinationId attribute.
*
* @param primaryDestinationId The primaryDestinationId to set.
*/
public void setPrimaryDestinationId(Integer primaryDestinationId) {
this.primaryDestinationId = primaryDestinationId;
}
public void setEffectiveFromDate(Date effectiveDate) {
this.effectiveFromDate = effectiveDate;
}
public KualiDecimal getBreakfast() {
return breakfast != null ? breakfast : KualiDecimal.ZERO;
}
public void setBreakfast(KualiDecimal breakfast) {
this.breakfast = breakfast;
}
public KualiDecimal getLunch() {
return lunch != null ? lunch : KualiDecimal.ZERO;
}
public void setLunch(KualiDecimal lunch) {
this.lunch = lunch;
}
public KualiDecimal getDinner() {
return dinner != null ? dinner : KualiDecimal.ZERO;
}
public void setDinner(KualiDecimal dinner) {
this.dinner = dinner;
}
public KualiDecimal getLodging() {
return lodging != null ? lodging : KualiDecimal.ZERO;
}
public void setLodging(KualiDecimal lodging) {
this.lodging = lodging;
}
public KualiDecimal getIncidentals() {
return incidentals != null ? incidentals : KualiDecimal.ZERO;
}
public void setIncidentals(KualiDecimal incidentals) {
this.incidentals = incidentals;
}
public KualiDecimal getMealsAndIncidentals() {
return mealsAndIncidentals != null ? mealsAndIncidentals : KualiDecimal.ZERO;
}
public void setMealsAndIncidentals(KualiDecimal mealsAndIncidentals) {
this.mealsAndIncidentals = mealsAndIncidentals;
}
/**
* Gets the effectiveFromDate attribute.
* @return Returns the effectiveFromDate.
*/
@Column(name="EFFECT_FROM_DT")
public Date getEffectiveFromDate() {
return effectiveFromDate;
}
/**
* Gets the lineNumber attribute.
* @return Returns the lineNumber.
*/
public int getLineNumber() {
return lineNumber;
}
/**
* Sets the lineNumber attribute value.
* @param lineNumber The lineNumber to set.
*/
public void setLineNumber(int lineNumber) {
this.lineNumber = lineNumber;
}
/**
* Gets the conusIndicator attribute.
* @return Returns the conusIndicator.
*/
public String getConusIndicator() {
return conusIndicator;
}
/**
* Sets the conusIndicator attribute value.
* @param conusIndicator The conusIndicator to set.
*/
public void setConusIndicator(String conusIndicator) {
this.conusIndicator = conusIndicator;
}
/**
* Gets the loadDate attribute.
* @return Returns the loadDate.
*/
@Column(name="LOAD_DT")
public Date getLoadDate() {
return loadDate;
}
/**
* Sets the loadDate attribute value.
* @param loadDate The loadDate to set.
*/
public void setLoadDate(Date loadDate) {
this.loadDate = loadDate;
}
/**
* Gets the seasonBeginMonthAndDay attribute.
* @return Returns the seasonBeginMonthAndDay.
*/
@Column(name="SSN_BGN_MONTH_DAY")
public String getSeasonBeginMonthAndDay() {
return seasonBeginMonthAndDay;
}
/**
* Sets the seasonBeginMonthAndDay attribute value.
* @param seasonBeginMonthAndDay The seasonBeginMonthAndDay to set.
*/
public void setSeasonBeginMonthAndDay(String seasonBeginMonthAndDay) {
this.seasonBeginMonthAndDay = seasonBeginMonthAndDay;
}
/**
* Gets the expirationDate attribute.
* @return Returns the expirationDate.
*/
@Column(name="EFFECT_TO_DT")
public Date getEffectiveToDate() {
return effectiveToDate;
}
/**
* Sets the expirationDate attribute value.
* @param expirationDate The expirationDate to set.
*/
public void setEffectiveToDate(Date effectiveToDate) {
this.effectiveToDate = effectiveToDate;
}
@SuppressWarnings("rawtypes")
protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
LinkedHashMap map = new LinkedHashMap();
map.put(TemPropertyConstants.PRIMARY_DESTINATION, this.primaryDestinationId);
map.put(TemPropertyConstants.EFFECTIVE_FROM_DATE, this.effectiveFromDate);
map.put(TemPropertyConstants.EFFECTIVE_TO_DATE, this.effectiveToDate);
map.put(TemPropertyConstants.BREAKFAST, this.breakfast);
map.put(TemPropertyConstants.LUNCH, this.lunch);
map.put(TemPropertyConstants.DINNER, this.dinner);
map.put(TemPropertyConstants.INCIDENTALS, this.incidentals);
map.put(TemPropertyConstants.MEALS_AND_INCIDENTALS, this.getMealsAndIncidentals());
return map;
}
@Override
public boolean equals(Object obj) {
boolean equal = false;
if (obj != null) {
if (obj instanceof PerDiem) {
PerDiem other = (PerDiem) obj;
if (ObjectUtils.isNotNull(this.getPrimaryDestination()) && ObjectUtils.isNotNull(other.getPrimaryDestination()) ) {
if (StringUtils.equals(this.getPrimaryDestination().getPrimaryDestinationName(), other.getPrimaryDestination().getPrimaryDestinationName())) {
if (StringUtils.equals(this.getSeasonBeginMonthAndDay(), other.getSeasonBeginMonthAndDay())) {
if (this.getEffectiveFromDate().equals(other.getEffectiveFromDate())) {
equal = true;
}
}
}
}
}
}
return equal;
}
}