/* * 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.math.BigDecimal; import java.sql.Date; import java.util.List; import org.apache.commons.lang.StringUtils; import org.kuali.kfs.fp.businessobject.TravelCompanyCode; import org.kuali.kfs.module.tem.TemConstants; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.core.api.util.type.KualiDecimal; import org.kuali.rice.krad.service.BusinessObjectService; import org.kuali.rice.krad.util.ObjectUtils; /** * Wrapper of HistoricalTravelExpense that implements TemExpense */ public class HistoricalExpenseAsTemExpenseWrapper implements TemExpense { protected HistoricalTravelExpense baseExpense; protected BusinessObjectService businessObjectService; protected ExpenseType expenseType; public HistoricalExpenseAsTemExpenseWrapper(HistoricalTravelExpense expense) { this.baseExpense = expense; } /** * @return the id of the base HistoricalTravelExpense */ @Override public Long getId() { return baseExpense.getId(); } /** * All setters are ignored */ @Override public void setId(Long id) {} /** * @return the document number of the base expense */ @Override public String getDocumentNumber() { return baseExpense.getDocumentNumber(); } /** * All setters are ignored */ @Override public void setDocumentNumber(String documentNumber) {} /** * @return null; no equivalent for document line number */ @Override public Integer getDocumentLineNumber() { return null; } /** * All setters are ignored */ @Override public void setDocumentLineNumber(Integer documentLineNumber) {} /** * @return null; no equivalent for parent id */ @Override public Long getExpenseParentId() { return null; } /** * All setters are ignored */ @Override public void setExpenseParentId(Long expenseParentId) {} /** * @return the expense notification date of the HistoricalTravelExpense */ @Override public Date getExpenseDate() { return baseExpense.getExpenseNotificationDate(); } /** * All setters are ignored */ @Override public void setExpenseDate(Date expenseDate) {} /** * @return the opposite of HistoricalTravelExpense#getReimbursable */ @Override public Boolean getNonReimbursable() { return !baseExpense.getReimbursable().booleanValue(); } /** * All setters are ignored */ @Override public void setNonReimbursable(Boolean nonReimbursable) {} /** * @return false, as there is no equivalency */ @Override public Boolean getTaxable() { return Boolean.FALSE; } /** * All setters are ignored */ @Override public void setTaxable(Boolean argTaxable) {} /** * @return missingReciept from the base HistoricalTravelExpense */ @Override public Boolean getMissingReceipt() { return baseExpense.getMissingReceipt(); } /** * All setters are ignored */ @Override public void setMissingReceipt(Boolean argMissingReceipt) {} /** * @return the of the base HistoricalTravelExpense */ @Override public KualiDecimal getExpenseAmount() { return baseExpense.getAmount(); } /** * All setters are ignored */ @Override public void setExpenseAmount(KualiDecimal expenseAmount) {} /** * @return the description of the base HistoricalTravelExpense */ @Override public String getDescription() { return baseExpense.getDescription(); } /** * All setters are ignored */ @Override public void setDescription(String argDescription) {} /** * @return null - no equivalency */ @Override public String getNotes() { return null; } /** * All setters are ignored */ @Override public void setNotes(String argDescription) {} /** * @return the currencyRate of the base HistoricalTravelExpense */ @Override public BigDecimal getCurrencyRate() { return baseExpense.getCurrencyRate(); } /** * All setters are ignored */ @Override public void setCurrencyRate(BigDecimal argCurrencyRate) {} /** * All setters are ignored */ @Override public void setConvertedAmount(KualiDecimal convertedAmount) {} /** * @return the convertedAmount of the base HistoricalTravelExpense */ @Override public KualiDecimal getConvertedAmount() { return baseExpense.getConvertedAmount(); } /** * @return the travel company of the base HistoricalTravelExpense */ @Override public String getTravelCompanyCodeName() { return baseExpense.getTravelCompany(); } /** * All setters are ignored */ @Override public void setTravelCompanyCodeName(String argTravelCompanyCodeName) {} /** * Returns null - no equivalency * @see org.kuali.kfs.module.tem.businessobject.TemExpense#getTravelCompanyCode() */ @Override public TravelCompanyCode getTravelCompanyCode() { return null; } /** * All setters are ignored */ @Override public void setTravelCompanyCode(TravelCompanyCode argTravelCompanyCode) {} /** * Returns null - no equivalencies * @see org.kuali.kfs.module.tem.businessobject.TemExpense#getExpenseDetails() */ @Override public List<? extends TemExpense> getExpenseDetails() { return null; } /** * All setters are ignored */ @Override public void setExpenseDetails(List<TemExpense> expenseDetails) {} /** * Returns null - no equivalencies * @see org.kuali.kfs.module.tem.businessobject.TemExpense#getTotalDetailExpenseAmount() */ @Override public KualiDecimal getTotalDetailExpenseAmount() { return null; } /** * All adds are ignored */ @Override public void addExpenseDetails(TemExpense expense) {} /** * Returns null - no equivalencies * @see org.kuali.kfs.module.tem.businessobject.TemExpense#getSequenceName() */ @Override public String getSequenceName() { return null; } /** * Returns the travelExpenseType of the base HistoricalTravelExpense * @see org.kuali.kfs.module.tem.businessobject.TemExpense#getExpenseLineTypeCode() */ @Override public String getExpenseLineTypeCode() { return baseExpense.getTravelExpenseTypeCode(); } /** * All setters are ignored */ @Override public void setExpenseLineTypeCode(String expenseLineTypeCode) {} /** * returns air ticket class from related agency staging data if possible * @see org.kuali.kfs.module.tem.businessobject.TemExpense#getClassOfServiceCode() */ @Override public String getClassOfServiceCode() { if (!ObjectUtils.isNull(baseExpense.getAgencyStagingData())) { return baseExpense.getAgencyStagingData().getAirTicketClass(); } return null; } /** * Finds the related expense type to determine if this * @see org.kuali.kfs.module.tem.businessobject.TemExpense#isRentalCar() */ @Override public boolean isRentalCar() { if (getExpenseType() != null) { return StringUtils.equals(TemConstants.ExpenseTypeMetaCategory.RENTAL_CAR.getCode(), getExpenseType().getExpenseTypeMetaCategoryCode()); } return false; // no expense type code, so we can't tell... } /** * Always returns false, as it can never be rental car insurance * @see org.kuali.kfs.module.tem.businessobject.TemExpense#getRentalCarInsurance() */ @Override public Boolean getRentalCarInsurance() { return false; } /** * Returns the travelExpenseType of the base HistoricalTravelExpense * @see org.kuali.kfs.module.tem.businessobject.TemExpense#getExpenseTypeCode() */ @Override public String getExpenseTypeCode() { return baseExpense.getTravelExpenseTypeCode(); } /** * Returns null - no easy equivalency */ @Override public Long getExpenseTypeObjectCodeId() { return null; } /** * All setters are ignored */ @Override public void setExpenseTypeObjectCodeId(Long expenseTypeObjectCodeId) {} /** * Returns null - no easy equivalency * @see org.kuali.kfs.module.tem.businessobject.TemExpense#getExpenseTypeObjectCode() */ @Override public ExpenseTypeObjectCode getExpenseTypeObjectCode() { return null; } /** * All setters are ignored */ @Override public void setExpenseTypeObjectCode(ExpenseTypeObjectCode expenseTypeObjectCode) {} public String getCardType() { return baseExpense.getCreditCardAgency().getTravelCardTypeCode(); } /** * Does nothing */ @Override public void refreshExpenseTypeObjectCode(String documentTypeName, String travelerTypeCode, String tripTypeCode) {} public ExpenseType getExpenseType() { if (expenseType == null && !StringUtils.isBlank(getExpenseTypeCode())) { expenseType = getBusinessObjectService().findBySinglePrimaryKey(ExpenseType.class, getExpenseTypeCode()); } return expenseType; } public BusinessObjectService getBusinessObjectService() { if (businessObjectService == null) { businessObjectService = SpringContext.getBean(BusinessObjectService.class); } return businessObjectService; } }