1 138 package com.ivata.groupware.business.calendar.struts; 139 140 import org.apache.log4j.Logger; 141 142 import java.util.HashSet ; 143 import java.util.Iterator ; 144 import java.util.List ; 145 import java.util.Locale ; 146 import java.util.Set ; 147 import java.util.Vector ; 148 149 import javax.naming.OperationNotSupportedException ; 150 import javax.servlet.http.HttpServletRequest ; 151 import javax.servlet.http.HttpServletResponse ; 152 import javax.servlet.http.HttpSession ; 153 154 import org.apache.struts.Globals; 155 import org.apache.struts.action.ActionErrors; 156 import org.apache.struts.action.ActionForm; 157 import org.apache.struts.action.ActionMapping; 158 import org.apache.struts.util.MessageResources; 159 import org.picocontainer.PicoContainer; 160 161 import com.ivata.groupware.admin.security.server.SecuritySession; 162 import com.ivata.groupware.admin.security.user.UserDO; 163 import com.ivata.groupware.business.addressbook.AddressBook; 164 import com.ivata.groupware.business.addressbook.person.PersonDO; 165 import com.ivata.groupware.business.calendar.Calendar; 166 import com.ivata.groupware.business.calendar.event.EventDO; 167 import com.ivata.groupware.business.calendar.event.meeting.MeetingDO; 168 import com.ivata.groupware.business.calendar.event.meeting.category.MeetingCategoryDO; 169 import com.ivata.groupware.business.calendar.event.publicholiday.PublicHolidayDO; 170 import com.ivata.mask.MaskFactory; 171 import com.ivata.mask.util.CollectionHandling; 172 import com.ivata.mask.util.StringHandling; 173 import com.ivata.mask.util.SystemException; 174 import com.ivata.mask.web.struts.MaskAction; 175 import com.ivata.mask.web.struts.MaskAuthenticator; 176 177 178 187 public class EventAction extends MaskAction { 188 191 private static final Logger logger = Logger.getLogger(EventAction.class); 192 193 211 public static void removeEmptyMeetingCategories(MeetingDO meeting, MessageResources messages, Locale locale) { 212 int count = 1; 213 Set categories = meeting.getCategories(); 214 Iterator categoryIterator = categories.iterator(); 215 List toRemove = new Vector (); 216 while (categoryIterator.hasNext()) { 217 MeetingCategoryDO category = (MeetingCategoryDO) categoryIterator.next(); 218 219 String defaultName = messages.getMessage(locale, "default.category", new Integer (count++)); 221 222 if (StringHandling.isNullOrEmpty(category.getName())) { 223 Set agendaPoints = category.getAgendaPoints(); 225 if ((agendaPoints == null) 226 || (agendaPoints.size() == 0)) { 227 toRemove.add(category); 228 } else { 229 category.setName(defaultName); 231 } 232 } 233 } 234 categoryIterator = toRemove.iterator(); 236 while(categoryIterator.hasNext()) { 237 categories.remove(categoryIterator.next()); 238 } 239 } 240 private AddressBook addressBook; 241 private Calendar calendar; 242 252 public EventAction(Calendar calendar, AddressBook addressBook, 253 MaskFactory maskFactory, MaskAuthenticator authenticator) { 254 super(maskFactory, authenticator); 255 this.calendar = calendar; 256 this.addressBook = addressBook; 257 } 258 259 280 public void clear(final ActionMapping mapping, 281 final ActionErrors errors, 282 final ActionForm form, 283 final HttpServletRequest request, 284 final HttpServletResponse response, 285 final HttpSession session) throws SystemException { 286 session.removeAttribute("eventTab_activeTab"); 288 EventForm eventForm = (EventForm)form; 289 try { 290 eventForm.clear(); 291 } catch (OperationNotSupportedException e) { 292 throw new RuntimeException (e); 293 } 294 } 295 296 320 public String execute(final ActionMapping mapping, 321 final ActionErrors errors, 322 final ActionForm form, 323 final HttpServletRequest request, 324 final HttpServletResponse response, 325 final HttpSession session) throws SystemException { 326 SecuritySession securitySession = (SecuritySession) session.getAttribute("securitySession"); 327 UserDO user = securitySession.getUser(); 328 PicoContainer container = securitySession.getContainer(); 329 MessageResources messages = getResources(request, "calendar"); 330 Locale locale = (Locale ) session.getAttribute(Globals.LOCALE_KEY); 331 332 String type = request.getParameter("type"); 334 EventForm eventForm = (EventForm) form; 335 if (type != null) { 336 if ("meeting".equals(type)) { 337 MeetingDO meeting = new MeetingDO(); 338 eventForm.setEvent(meeting); 339 eventForm.setTitleKey("event.title.new.meeting"); 340 eventForm.setHelpKey("calendar.meeting.event"); 341 342 Set meetingCategories = meeting.getCategories(); 344 if (meetingCategories == null) { 345 meetingCategories = new HashSet (); 346 meeting.setCategories(meetingCategories); 347 } 348 if (meetingCategories.size() == 0) { 349 MeetingCategoryDO newCategory = new MeetingCategoryDO(); 350 newCategory.setMeeting(meeting); 351 newCategory.setName(messages.getMessage(locale, "default.category", "1")); 352 meetingCategories.add(newCategory); 353 } 354 PersonDO person; 355 person = addressBook.findPersonByUserName(securitySession, 356 user.getName()); 357 meeting.setChairPerson(person); 358 359 } else if ("publicHoliday".equals(type)) { 360 eventForm.setEvent(new PublicHolidayDO()); 361 eventForm.setTitleKey("event.title.new.publicHoliday"); 362 eventForm.setHelpKey("calendar.publicHoliday"); 363 } else { 364 eventForm.setEvent(new EventDO()); 365 eventForm.setTitleKey("event.title.new"); 366 eventForm.setHelpKey("calendar.event"); 367 } 368 return null; 369 } 370 371 Integer tab = eventForm.getEventTab_activeTab(); 374 Integer requestTab = StringHandling.integerValue(request.getParameter("eventTab_activeTab")); 375 if (requestTab != null) { 376 eventForm.setEventTab_activeTab(tab = requestTab); 377 } 378 EventDO event = eventForm.getEvent(); 379 380 if (tab.equals(new Integer (1))) { 382 eventForm.setTabPage("/calendar/meetingPeople.jsp"); 383 eventForm.setHelpKey("calendar.meeting.people"); 384 } else if (tab.equals(new Integer (2))) { 385 eventForm.setTabPage("/calendar/meetingAgenda.jsp"); 386 eventForm.setHelpKey("calendar.meeting.agenda"); 387 } else { 388 eventForm.setTabPage("/calendar/eventDetails.jsp"); 389 if (event instanceof PublicHolidayDO) { 390 eventForm.setHelpKey("calendar.publicHoliday"); 391 } else if (event instanceof MeetingDO) { 392 eventForm.setHelpKey("calendar.meeting.event"); 393 } else { 394 eventForm.setHelpKey("calendar.event"); 395 } 396 } 397 398 if (event instanceof MeetingDO) { 400 MeetingDO meeting = (MeetingDO) event; 401 removeEmptyMeetingCategories(meeting, messages, locale); 403 Set categories = meeting.getCategories(); 405 if (categories == null) { 406 meeting.setCategories(categories = new HashSet ()); 407 } 408 409 int size = categories.size(); 412 if (!StringHandling.isNullOrEmpty(eventForm.getAddCategory()) 413 || (size == 0)) { 414 MeetingCategoryDO category = new MeetingCategoryDO(); 415 category.setName(messages.getMessage(locale, "default.category", 416 new Integer (size + 1))); 417 category.setMeeting(meeting); 418 categories.add(category); 419 } 420 } 421 422 return null; 423 } 424 425 449 public String onConfirm(final ActionMapping mapping, 450 final ActionErrors errors, 451 final ActionForm form, 452 final HttpServletRequest request, 453 final HttpServletResponse response, 454 final HttpSession session, 455 final String defaultForward) throws SystemException { 456 SecuritySession securitySession = (SecuritySession) session.getAttribute("securitySession"); 457 UserDO user = securitySession.getUser(); 458 EventForm eventForm = (EventForm) form; 459 EventDO event = eventForm.getEvent(); 460 461 if (event instanceof MeetingDO) { 463 MeetingDO meeting = (MeetingDO) event; 464 465 List attendeeIdStrings = new Vector (CollectionHandling.convertFromLines(eventForm.getAttendees(), ";")); 467 Set attendees = new HashSet (); 469 for (Iterator i = attendeeIdStrings.iterator(); i.hasNext(); ) { 470 String attendeeId = (String ) i.next(); 471 PersonDO attendee = addressBook.findPersonByPrimaryKey( 472 securitySession, attendeeId); 473 attendees.add(attendee); 474 } 475 meeting.setAttendees(attendees); 476 477 removeEmptyMeetingCategories(meeting, 479 getResources(request, "calendar"), getLocale(request)); 480 481 PersonDO chairPerson = meeting.getChairPerson(); 483 if (chairPerson == null) { 484 chairPerson = addressBook.findPersonByUserName(securitySession, 485 user.getName()); 486 } 487 } 488 if (event.getId() == null) { 490 event = calendar.addEvent(securitySession, event); 491 } else { 492 event = calendar.amendEvent(securitySession, event); 494 } 495 eventForm.setEvent(event); 496 497 request.setAttribute("openerPage", "/calendar/index.action"); 498 499 return defaultForward; 500 } 501 502 525 public String onDelete(final ActionMapping mapping, 526 final ActionErrors errors, 527 final ActionForm form, 528 final HttpServletRequest request, 529 final HttpServletResponse response, 530 final HttpSession session, final String defaultForward) throws SystemException { 531 SecuritySession securitySession = (SecuritySession) session.getAttribute("securitySession"); 532 EventForm eventForm = (EventForm) form; 533 EventDO event = eventForm.getEvent(); 534 calendar.removeEvent(securitySession, event); 535 request.setAttribute("openerPage", "/calendar/index.action"); 536 return defaultForward; 537 } 538 } 539 | Popular Tags |