Changeset 452

Show
Ignore:
Timestamp:
05/05/06 10:00:27
Author:
douglm
Message:

Fix selecting a folder with no valid calendar collections. Just returns empty collection.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/calendar3/calCore/src/org/bedework/calcore/hibernate/Events.java

    r445 r452  
    629629    sb.append(" ("); 
    630630 
     631    CalTerm calTerm = new CalTerm(); 
     632 
    631633    boolean setUser = doCalendarClause(sb, qevName, calendar, 
    632634                                       currentMode, cal.getSuperUser(), 
    633                                        allCalendars); 
     635                                       calTerm, allCalendars); 
     636    if (calTerm.empty) { 
     637      // No valid calendars to search. 
     638      return new TreeSet(); 
     639    } 
    634640 
    635641    sb.append(") "); 
     
    928934    sb.append(" ("); 
    929935 
     936    CalTerm calTerm = new CalTerm(); 
     937 
    930938    boolean setUser = doCalendarClause(sb, qevName + ".master", calendar, 
    931939                                       currentMode, ignoreCreator, 
    932                                        allCalendars); 
     940                                       calTerm, allCalendars); 
     941 
     942    if (calTerm.empty) { 
     943      // This shouldn't happen - we checked previously 
     944      throw new CalFacadeException("No valid calendars."); 
     945    } 
    933946 
    934947    sb.append(") "); 
     
    10001013  } 
    10011014 
     1015  /* Used when building calendar clauses. 
     1016   */ 
    10021017  private class CalTerm { 
     1018    boolean empty = true; 
    10031019    int i = 1; 
    10041020  } 
     
    10081024  private boolean doCalendarClause(StringBuffer sb, String qevName, BwCalendar calendar, 
    10091025                                   int currentMode, boolean ignoreCreator, 
     1026                                   CalTerm calTerm, 
    10101027                                   boolean allCalendars) throws CalFacadeException { 
    10111028    /* if no calendar set 
     
    10161033     */ 
    10171034    if (calendar == null) { 
     1035      // Doesn't count as empty 
     1036      calTerm.empty = false; 
    10181037      return CalintfUtil.appendPublicOrCreatorTerm(sb, qevName, 
    10191038                          currentMode, ignoreCreator); 
     
    10261045      sb.append(".calendar=:calendar"); 
    10271046      sb.append(") "); 
     1047      calTerm.empty = false; 
    10281048      return false; 
    10291049    } 
     
    10311051    // Non leaf - build a query 
    10321052    sb.append("("); 
    1033     appendCalendarClause(sb, qevName, calendar, new CalTerm(), allCalendars); 
     1053    appendCalendarClause(sb, qevName, calendar, calTerm, allCalendars); 
    10341054    sb.append(") "); 
    10351055 
     
    10491069        sb.append(".calendar=:calendar" + calTerm.i); 
    10501070        calTerm.i++; 
     1071        calTerm.empty = false; 
    10511072      } 
    10521073    } else {