1 128 package com.ivata.groupware.business.calendar.struts; 129 130 import java.text.ParseException ; 131 import java.util.Arrays ; 132 import java.util.GregorianCalendar ; 133 import java.util.Locale ; 134 135 import javax.naming.OperationNotSupportedException ; 136 import javax.servlet.http.HttpServletRequest ; 137 import javax.servlet.http.HttpSession ; 138 139 import org.apache.struts.Globals; 140 import org.apache.struts.action.ActionMapping; 141 142 import com.ivata.groupware.admin.security.server.SecuritySession; 143 import com.ivata.groupware.business.calendar.Calendar; 144 import com.ivata.groupware.business.calendar.event.EventDO; 145 import com.ivata.groupware.business.calendar.event.meeting.MeetingDO; 146 import com.ivata.groupware.business.calendar.event.publicholiday.PublicHolidayDO; 147 import com.ivata.groupware.util.SettingDateFormatter; 148 import com.ivata.mask.Mask; 149 import com.ivata.mask.MaskFactory; 150 import com.ivata.mask.util.StringHandling; 151 import com.ivata.mask.util.SystemException; 152 import com.ivata.mask.validation.ValidationError; 153 import com.ivata.mask.validation.ValidationErrors; 154 import com.ivata.mask.web.format.DateFormatterConstants; 155 import com.ivata.mask.web.format.DateFormatterException; 156 import com.ivata.mask.web.struts.DialogForm; 157 158 159 169 public class EventForm extends DialogForm { 170 174 private String addCategory = ""; 175 179 private String attendees = ""; 180 private Calendar calendar; 181 private SettingDateFormatter dateFormatter; 182 186 private EventDO event; 187 190 private Integer eventTab_activeTab = new Integer (0); 191 194 private String finishDate = ""; 195 198 private String finishTime = ""; 199 202 private String startDate = ""; 203 206 private String startTime = ""; 207 210 private String tabPage = "/calendar/eventDetails.jsp"; 211 214 private String titleKey = "event.title.new"; 215 220 private Class baseClass; 221 226 private Mask mask; 227 232 public EventForm(final Calendar calendar, 233 final SettingDateFormatter dateFormatter, 234 MaskFactory maskFactory) { 235 this.calendar = calendar; 236 this.dateFormatter = dateFormatter; 237 mask = maskFactory.getMask(EventDO.class); 238 } 239 240 247 protected void clear() throws OperationNotSupportedException { 248 super.clear(); 249 addCategory = ""; 250 attendees = ""; 251 event = new EventDO(); 252 eventTab_activeTab = new Integer (0); 253 finishDate = ""; 254 finishTime = ""; 255 startDate = ""; 256 startTime = ""; 257 tabPage = "/calendar/eventDetails.jsp"; 258 titleKey = "event.title.new"; 259 } 260 261 267 public final String getAddCategory() { 268 return addCategory; 269 } 270 271 277 public final String getAttendees() { 278 return attendees; 279 } 280 281 289 public final EventDO getEvent() { 290 return event; 291 } 292 293 298 public final Integer getEventTab_activeTab() { 299 return eventTab_activeTab; 300 } 301 302 307 public final String getFinishDate() { 308 return finishDate; 309 } 310 311 316 public final String getFinishTime() { 317 return finishTime; 318 } 319 320 325 public final String getStartDate() { 326 return startDate; 327 } 328 329 334 public final String getStartTime() { 335 return startTime; 336 } 337 338 343 public final String getTabPage() { 344 return tabPage; 345 } 346 347 352 public final String getTitleKey() { 353 return titleKey; 354 } 355 356 362 public boolean isMeeting() { 363 return event instanceof MeetingDO; 364 } 365 366 372 public boolean isPlainEvent() { 373 return !((event instanceof MeetingDO) || (event instanceof PublicHolidayDO)); 374 } 375 376 382 public boolean isPublicHoliday() { 383 return event instanceof PublicHolidayDO; 384 } 385 386 387 398 public void reset(final ActionMapping mapping, 399 final HttpServletRequest request) { 400 if (event == null) { 402 return; 403 } 404 405 MeetingDO meeting = null; 406 if (event instanceof MeetingDO) { 407 meeting = (MeetingDO) event; 408 } 409 410 if (tabPage.equals("/calendar/meetingPeople.jsp")) { 413 attendees = ""; 414 meeting.setChairPerson(null); 415 416 } else if (tabPage.equals("/calendar/meetingAgenda.jsp")) { 418 420 } else { 422 event.setSubject(""); 423 startDate = ""; 424 startTime = ""; 425 finishDate = ""; 426 finishTime = ""; 427 event.setAllDayEvent(false); 428 event.setDescription(""); 429 if (meeting != null) { 430 meeting.setLocation(""); 431 } 432 } 433 434 } 435 436 442 public final void setAddCategory(final String addCategory) { 443 this.addCategory = addCategory; 444 } 445 446 452 public final void setAttendees(final String attendees) { 453 this.attendees = attendees; 454 } 455 456 468 private ValidationError setDateTime( 469 final SettingDateFormatter dateFormatter, 470 final String dateParam, 471 final String timeParam, 472 final GregorianCalendar calendar) { 473 ValidationError error = null; 474 475 try { 476 if (!StringHandling.isNullOrEmpty(dateParam)) { 477 String date = StringHandling.getNotNull(dateParam, ""); 478 String time = StringHandling.getNotNull(timeParam, ""); 479 try { 480 calendar.setTime(dateFormatter.parse(date 481 + " " 482 + time)); 483 } catch (ParseException e) { 484 try { 486 dateFormatter.setDateTimeText("{0}"); 487 dateFormatter.parse(dateParam); 488 String [] parameters = {time}; 489 490 error = new ValidationError( 491 "event", 492 Calendar.BUNDLE_PATH, 493 mask.getField("time"), 494 "errors.time", 495 Arrays.asList(parameters)); 496 } catch (ParseException e2) { 497 String [] parameters = {date}; 498 499 error = new ValidationError( 500 "event", 501 Calendar.BUNDLE_PATH, 502 mask.getField("date"), 503 "errors.date", 504 Arrays.asList(parameters)); 505 } 506 } 507 } 508 } catch (DateFormatterException e) { 509 throw new RuntimeException (e); 510 } 511 return error; 512 } 513 514 522 public final void setEvent(final EventDO event) { 523 this.event = event; 524 } 525 526 531 public final void setEventTab_activeTab(final Integer eventTab_activeTab) { 532 this.eventTab_activeTab = eventTab_activeTab; 533 } 534 535 540 public final void setFinishDate(final String finishDate) { 541 this.finishDate = finishDate; 542 } 543 544 549 public final void setFinishTime(final String finishTime) { 550 this.finishTime = finishTime; 551 } 552 553 558 public final void setStartDate(final String startDate) { 559 this.startDate = startDate; 560 } 561 562 567 public final void setStartTime(final String startTime) { 568 this.startTime = startTime; 569 } 570 571 576 public final void setTabPage(final String tabPage) { 577 this.tabPage = tabPage; 578 } 579 580 585 public final void setTitleKey(final String titleKey) { 586 this.titleKey = titleKey; 587 } 588 589 602 public ValidationErrors validate(final HttpServletRequest request, 603 final HttpSession session) { 604 ValidationError startDateError = null; 605 ValidationError finishDateError = null; 606 SecuritySession securitySession = (SecuritySession) 607 session.getAttribute("securitySession"); 608 Locale locale = (Locale ) session.getAttribute(Globals.LOCALE_KEY); 609 610 try { 611 dateFormatter.setDateFormat(DateFormatterConstants.DATE_INPUT); 612 dateFormatter.setTimeFormat(DateFormatterConstants.TIME_INPUT); 613 } catch (DateFormatterException e) { 614 throw new RuntimeException (e); 615 } 616 617 GregorianCalendar start = new GregorianCalendar (); 618 619 if (StringHandling.isNullOrEmpty(startDate)) { 620 event.setStart(null); 621 } else { 622 if (StringHandling.isNullOrEmpty(startTime)) { 623 try { 624 dateFormatter.setDateTimeText("{0}"); 625 } catch (DateFormatterException e1) { 626 throw new RuntimeException (e1); 627 } 628 } else { 629 try { 630 dateFormatter.setDateTimeText("{0} {1}"); 631 } catch (DateFormatterException e1) { 632 throw new RuntimeException (e1); 633 } 634 } 635 startDateError = setDateTime(dateFormatter, startDate, startTime, start); 636 if (startDateError == null) { 637 event.setStart(start); 638 if (StringHandling.isNullOrEmpty(startTime)) { 640 event.setAllDayEvent(true); 641 } 642 } 643 } 644 645 GregorianCalendar finish = new GregorianCalendar (); 646 if (StringHandling.isNullOrEmpty(finishDate)) { 647 event.setFinish(null); 648 } else { 649 if (StringHandling.isNullOrEmpty(finishTime)) { 650 try { 651 dateFormatter.setDateTimeText("{0}"); 652 } catch (DateFormatterException e1) { 653 throw new RuntimeException (e1); 654 } 655 } else { 656 try { 657 dateFormatter.setDateTimeText("{0} {1}"); 658 } catch (DateFormatterException e1) { 659 throw new RuntimeException (e1); 660 } 661 } 662 finishDateError = setDateTime(dateFormatter, finishDate, finishTime, finish); 663 if (finishDateError == null && finish.after(start)) { 666 if (StringHandling.isNullOrEmpty(finishTime)) { 667 finish.add(GregorianCalendar.MINUTE, 24*60 - 1); 668 } 669 event.setFinish(finish); 670 } 671 } 672 673 ValidationErrors validationErrors = null; 675 try { 676 validationErrors = calendar.validate(securitySession, event); 677 } catch (SystemException e) { 678 throw new RuntimeException (e); 679 } 680 681 if (((startDateError != null) 684 || (finishDateError != null)) 685 && (validationErrors == null)) { 686 validationErrors = new ValidationErrors(); 687 } 688 if (startDateError != null) { 689 validationErrors.add(startDateError); 690 } 691 if (finishDateError != null) { 692 validationErrors.add(finishDateError); 693 } 694 return validationErrors; 695 } 696 697 704 public final Class getBaseClass() { 705 return baseClass; 706 } 707 708 715 public final Mask getMask() { 716 return mask; 717 } 718 } 719 | Popular Tags |