/**
   * @param recurrenceStr
   * @throws EnumException thrown if recurrenceTokens[0] is not a valid ScheduleType String.
   */
  public void inititalizeWithRecurrenceString(String recurrenceStr) throws EnumException {
    String[] recurrenceTokens = recurrenceStr.split("\\s"); // $NON-NLS-1$

    setStartTime(recurrenceTokens[1], recurrenceTokens[2], recurrenceTokens[3]);

    RecurrenceType rt = RecurrenceType.stringToScheduleType(recurrenceTokens[0]);

    switch (rt) {
      case EveryWeekday:
        setEveryWeekdayRecurrence(recurrenceTokens);
        break;
      case WeeklyOn:
        setWeeklyOnRecurrence(recurrenceTokens);
        break;
      case DayNOfMonth:
        setDayNOfMonthRecurrence(recurrenceTokens);
        break;
      case NthDayNameOfMonth:
        setNthDayNameOfMonthRecurrence(recurrenceTokens);
        break;
      case LastDayNameOfMonth:
        setLastDayNameOfMonthRecurrence(recurrenceTokens);
        break;
      case EveryMonthNameN:
        setEveryMonthNameNRecurrence(recurrenceTokens);
        break;
      case NthDayNameOfMonthName:
        setNthDayNameOfMonthNameRecurrence(recurrenceTokens);
        break;
      case LastDayNameOfMonthName:
        setLastDayNameOfMonthNameRecurrence(recurrenceTokens);
        break;
      default:
    }
  }