/* * 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 static org.kuali.kfs.module.tem.TemPropertyConstants.NEW_ATTENDEE_LINE; import java.util.ArrayList; import java.util.List; import java.util.Observable; import java.util.Observer; import org.kuali.kfs.module.tem.businessobject.Attendee; import org.kuali.kfs.module.tem.document.TravelEntertainmentDocument; import org.kuali.kfs.module.tem.document.service.TravelEntertainmentDocumentService; import org.kuali.kfs.module.tem.document.validation.event.AddAttendeeLineEvent; import org.kuali.kfs.module.tem.document.web.bean.TravelEntertainmentMvcWrapperBean; import org.kuali.rice.krad.service.KualiRuleService; import org.kuali.rice.krad.util.GlobalVariables; public class AddAttendeesEvent implements Observer { private KualiRuleService kualiRuleService; private TravelEntertainmentDocumentService travelEntertainmentDocumentService; @Override public void update(final Observable observable, Object arg) { if (!(arg instanceof TravelEntertainmentMvcWrapperBean)) { return; } final TravelEntertainmentMvcWrapperBean wrapper = (TravelEntertainmentMvcWrapperBean) arg; final TravelEntertainmentDocument document = (TravelEntertainmentDocument)wrapper.getTravelDocument(); final Attendee newAttendeeLine = wrapper.getNewAttendeeLine(); if (newAttendeeLine != null) { newAttendeeLine.refreshReferenceObject("id"); } getTravelEntertainmentDocumentService().handleNewAttendee(newAttendeeLine); int errCount = GlobalVariables.getMessageMap().getErrorCount(); if(errCount > 0) { return; } boolean rulePassed = true; // check any business rules rulePassed &= getRuleService().applyRules(new AddAttendeeLineEvent<Attendee>(NEW_ATTENDEE_LINE, document, newAttendeeLine)); if (rulePassed) { if (newAttendeeLine != null) { document.addAttendee(newAttendeeLine); } Attendee newAttendee = wrapper.getNewAttendeeLine(); List<Attendee> newAttendeeLines = new ArrayList<Attendee>(); List<Attendee> attendeeLines = wrapper.getNewAttendeeLines(); int selectedLine = -1; for (int i = 0; i < attendeeLines.size(); i++) { Attendee attendeeLine = attendeeLines.get(i); if (i == 0 && attendeeLine.equals(newAttendee)) { selectedLine = 0; attendeeLine = new Attendee(); newAttendeeLines.add(attendeeLine); } else { if (attendeeLine.equals(newAttendee)) { Attendee line = new Attendee(); line.setAttendeeType(attendeeLine.getAttendeeType()); line.setCompany(attendeeLine.getCompany()); line.setTitle(attendeeLine.getTitle()); line.setName(attendeeLine.getName()); newAttendeeLines.add(line); } else { newAttendeeLines.add(attendeeLine); } } } if (selectedLine == 0) { Attendee attendee = new Attendee(); attendee.setAttendeeType(newAttendee.getAttendeeType()); attendee.setCompany(newAttendee.getCompany()); attendee.setTitle(newAttendee.getTitle()); attendee.setName(newAttendee.getName()); newAttendeeLines.add(attendee); } wrapper.setNewAttendeeLines(newAttendeeLines); wrapper.setNewAttendeeLine(new Attendee()); document.setAttendeeDetail(null); } } public KualiRuleService getKualiRuleService() { return kualiRuleService; } public void setKualiRuleService(KualiRuleService kualiRuleService) { this.kualiRuleService = kualiRuleService; } public TravelEntertainmentDocumentService getTravelEntertainmentDocumentService() { return travelEntertainmentDocumentService; } public void setTravelEntertainmentDocumentService(TravelEntertainmentDocumentService travelEntertainmentDocumentService) { this.travelEntertainmentDocumentService = travelEntertainmentDocumentService; } /** * Sets the kualiRulesService attribute. * * @return Returns the kualiRuleService. */ public void setRuleService(final KualiRuleService kualiRuleService) { this.kualiRuleService = kualiRuleService; } /** * Gets the kualiRulesService attribute. * * @return Returns the kualiRuleseService. */ protected KualiRuleService getRuleService() { return kualiRuleService; } }