/* * 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.document.web.struts; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.struts.upload.FormFile; import org.kuali.kfs.module.tem.TemConstants; import org.kuali.kfs.module.tem.businessobject.Attendee; import org.kuali.kfs.module.tem.document.TravelEntertainmentDocument; import org.kuali.kfs.module.tem.document.service.TravelDocumentService; import org.kuali.kfs.module.tem.document.web.bean.TravelEntertainmentMvcWrapperBean; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.kns.web.ui.ExtraButton; public class TravelEntertainmentForm extends TravelFormBase implements TravelEntertainmentMvcWrapperBean { public static Logger LOG = Logger.getLogger(TravelEntertainmentForm.class); private Date startDate; private Date endDate; private boolean canPrintHostCertification; private boolean canUnmask = false; private Attendee newAttendeeLine; private List<Attendee> newAttendeeLines; private FormFile attendeesImportFile; private String attendesTagGroupLabelName = TemConstants.Attendee.ATTENDEES_GROUP_LABEL_NAME; private String travelDocumentIdentifier; private String fromDocumentNumber; public TravelEntertainmentForm() { super(); setNewAttendeeLine(new Attendee()); List<Attendee> attendee = new ArrayList<Attendee>(); attendee.add(new Attendee()); setNewAttendeeLines(attendee); } @Override public void populate(final HttpServletRequest request) { super.populate(request); } public Date getStartDate() { return startDate; } public void setStartDate(Date startDate) { this.startDate = startDate; } public Date getEndDate() { return endDate; } public void setEndDate(Date endDate) { this.endDate = endDate; } public TravelEntertainmentDocument getEntertainmentDocument() { return (TravelEntertainmentDocument) getDocument(); } @Override protected String getDocumentIdentifierFieldName() { return "travelDocumentIdentifier"; } @Override protected String getDefaultDocumentTypeName() { return "ENT"; } public String getAttendesTagGroupLabelName() { return attendesTagGroupLabelName; } public void setAttendesTagGroupLabelName(String attendesTagGroupLabelName) { this.attendesTagGroupLabelName = attendesTagGroupLabelName; } protected Map<String, ExtraButton> createButtonsMap() { final HashMap<String, ExtraButton> result = new HashMap<String, ExtraButton>(); // New Entertainment button ExtraButton newEntertainmentButton = new ExtraButton(); newEntertainmentButton.setExtraButtonProperty("methodToCall.newEntertainment"); newEntertainmentButton.setExtraButtonSource("${" + KFSConstants.EXTERNALIZABLE_IMAGES_URL_KEY + "}buttonsmall_newentertainment.png"); newEntertainmentButton.setExtraButtonAltText("New Entertainment"); result.put(newEntertainmentButton.getExtraButtonProperty(), newEntertainmentButton); result.putAll(createPaymentExtraButtonMap()); return result; } @Override public boolean isDefaultOpenPaymentInfoTab() { if(TemConstants.EntertainmentStatusCodeKeys.AWAIT_ENT_MANAGER.equals(getDocument().getDocumentHeader().getWorkflowDocument().getApplicationDocumentStatus())) { return true; } return super.isDefaultOpenPaymentInfoTab(); } @Override public List<ExtraButton> getExtraButtons() { super.getExtraButtons(); final Map<String, ExtraButton> buttonsMap = createButtonsMap(); LOG.debug("Creating button map"); if (!SpringContext.getBean(TravelDocumentService.class).isUnsuccessful(this.getTravelDocument())) { if (getEntertainmentDocument().canPayDVToVendor()) { extraButtons.add(buttonsMap.get("methodToCall.payDVToVendor")); } } if (getDocumentActions().keySet().contains(TemConstants.TravelAuthorizationActions.CAN_NEW_ENTERTAINMENT)) { extraButtons.add(buttonsMap.get("methodToCall.newEntertainment")); } return extraButtons; } public boolean isCanUnmask() { return canUnmask; } public void setCanUnmask(boolean canUnmask) { this.canUnmask = canUnmask; } @Override public Attendee getNewAttendeeLine() { return newAttendeeLine; } @Override public void setNewAttendeeLine(Attendee newAttendeeLine) { this.newAttendeeLine = newAttendeeLine; } @Override public List<Attendee> getNewAttendeeLines() { return newAttendeeLines; } @Override public void setNewAttendeeLines(List<Attendee> newAttendeeLines) { this.newAttendeeLines = newAttendeeLines; } public FormFile getAttendeesImportFile() { return attendeesImportFile; } public void setAttendeesImportFile(FormFile attendeesImportFile) { this.attendeesImportFile = attendeesImportFile; } public boolean isCanPrintHostCertification() { return getEntertainmentDocument().canShowHostCertification(); } public void setCanPrintHostCertification(boolean canPrintHostCertification) { this.canPrintHostCertification = canPrintHostCertification; } public boolean isEventHostandEventNameReadonly() { return !StringUtils.isBlank(getTravelDocumentIdentifier()) && !StringUtils.isBlank(getFromDocumentNumber()) ? true : false; } /** * @see org.kuali.kfs.module.tem.document.web.struts.TravelFormBase#getTravelPaymentFormAction() */ @Override public String getTravelPaymentFormAction() { return TemConstants.ENTERTAINMENT_ACTION_NAME; } /** * @return the travel document identifier if it has been set */ public String getTravelDocumentIdentifier() { return travelDocumentIdentifier; } /** * Sets the travel document identifier to populate from * @param travelDocumentIdentifier the travel document identifier to populate from */ public void setTravelDocumentIdentifier(String travelDocumentIdentifier) { this.travelDocumentIdentifier = travelDocumentIdentifier; } /** * @return the document number this entertainment reimbursement should be built from */ public String getFromDocumentNumber() { return fromDocumentNumber; } /** * Sets the document number this entertainment reimbursement should be built from * @param fromDocumentNumber the document number this entertainment reimbursement should be built from */ public void setFromDocumentNumber(String fromDocumentNumber) { this.fromDocumentNumber = fromDocumentNumber; } }