Changeset 1277
- Timestamp:
- 02/04/07 22:10:52
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
releases/external/ical4j-1.0-beta1-bedework-3.3/net/fortuna/ical4j/model/Recur.java
r1275 r1277 134 134 private Map experimentalValues = new HashMap(); 135 135 136 // Calendar field we increment based on frequency. 137 private int calIncField; 138 136 139 /** 137 140 * Constructs a new instance from the specified string value. … … 464 467 public final DateList getDates(final Date periodStart, 465 468 final Date periodEnd, final Value value) { 466 return getDates(periodStart, periodStart, periodEnd, value );469 return getDates(periodStart, periodStart, periodEnd, value, -1); 467 470 } 468 471 … … 475 478 public final DateList getDates(final Date seed, final Period period, 476 479 final Value value) { 477 return getDates(seed, period.getStart(), period.getEnd(), value );480 return getDates(seed, period.getStart(), period.getEnd(), value, -1); 478 481 } 479 482 … … 492 495 public final DateList getDates(final Date seed, final Date periodStart, 493 496 final Date periodEnd, final Value value) { 497 return getDates(seed, periodStart, periodEnd, value, -1); 498 } 499 500 /** 501 * Returns a list of start dates in the specified period represented by this recur. This method includes a base date 502 * argument, which indicates the start of the fist occurrence of this recurrence. The base date is used to inject 503 * default values to return a set of dates in the correct format. For example, if the search start date (start) is 504 * Wed, Mar 23, 12:19PM, but the recurrence is Mon - Fri, 9:00AM - 5:00PM, the start dates returned should all be at 505 * 9:00AM, and not 12:19PM. 506 * @return a list of dates represented by this recur instance 507 * @param seed the start date of this Recurrence's first instance 508 * @param periodStart the start of the period 509 * @param periodEnd the end of the period 510 * @param value the type of dates to generate (i.e. date/date-time) 511 * @param maxCount limits the number of instances returned. Up to one years 512 * worth extra may be returned. Less than 0 means no limit 513 */ 514 public final DateList getDates(final Date seed, final Date periodStart, 515 final Date periodEnd, final Value value, 516 final int maxCount) { 494 517 495 518 DateList dates = new DateList(value); … … 517 540 int invalidCandidateCount = 0; 518 541 Date candidate = null; 519 while ( true) {542 while ((maxCount < 0) || (dates.size() < maxCount)) { 520 543 Date candidateSeed = Dates.getInstance(cal.getTime(), value); 521 544 … … 581 604 // initialise interval.. 582 605 int calInterval = (getInterval() >= 1) ? getInterval() : 1; 583 if (SECONDLY.equals(getFrequency())) { 584 cal.add(Calendar.SECOND, calInterval); 585 } 586 else if (MINUTELY.equals(getFrequency())) { 587 cal.add(Calendar.MINUTE, calInterval); 588 } 589 else if (HOURLY.equals(getFrequency())) { 590 cal.add(Calendar.HOUR_OF_DAY, calInterval); 591 } 592 else if (DAILY.equals(getFrequency())) { 593 cal.add(Calendar.DAY_OF_YEAR, calInterval); 594 } 595 else if (WEEKLY.equals(getFrequency())) { 596 cal.add(Calendar.WEEK_OF_YEAR, calInterval); 597 } 598 else if (MONTHLY.equals(getFrequency())) { 599 cal.add(Calendar.MONTH, calInterval); 600 } 601 else if (YEARLY.equals(getFrequency())) { 602 cal.add(Calendar.YEAR, calInterval); 603 } 606 cal.add(calIncField, calInterval); 604 607 } 605 608 … … 1017 1020 "A recurrence rule MUST contain a FREQ rule part."); 1018 1021 } 1019 else if (!frequency.equals(SECONDLY) && !frequency.equals(MINUTELY) 1020 && !frequency.equals(HOURLY) && !frequency.equals(DAILY) 1021 && !frequency.equals(WEEKLY) && !frequency.equals(MONTHLY) 1022 && !frequency.equals(YEARLY)) { 1022 if (SECONDLY.equals(getFrequency())) { 1023 calIncField = Calendar.SECOND; 1024 } 1025 else if (MINUTELY.equals(getFrequency())) { 1026 calIncField = Calendar.MINUTE; 1027 } 1028 else if (HOURLY.equals(getFrequency())) { 1029 calIncField = Calendar.HOUR_OF_DAY; 1030 } 1031 else if (DAILY.equals(getFrequency())) { 1032 calIncField = Calendar.DAY_OF_YEAR; 1033 } 1034 else if (WEEKLY.equals(getFrequency())) { 1035 calIncField = Calendar.WEEK_OF_YEAR; 1036 } 1037 else if (MONTHLY.equals(getFrequency())) { 1038 calIncField = Calendar.MONTH; 1039 } 1040 else if (YEARLY.equals(getFrequency())) { 1041 calIncField = Calendar.YEAR; 1042 } 1043 else { 1023 1044 throw new IllegalArgumentException("Invalid FREQ rule part '" 1024 1045 + frequency + "' in recurrence rule"); releases/external/ical4j-1.0-beta1-bedework-3.3/net/fortuna/ical4j/model/component/Observance.java
r1275 r1277 79 79 private Map onsets = new TreeMap(); 80 80 81 /* If this is set we have rrules. If we get a date after this rebuild onsets */ 82 private Date onsetLimit; 83 81 84 private boolean rdatesCached = false; 82 85 … … 146 149 147 150 long start = System.currentTimeMillis(); 151 152 if ((onsetLimit != null) && (date.after(onsetLimit))) { 153 onsets.clear(); 154 rdatesCached = false; 155 } 148 156 149 157 Date onset = getCachedOnset(date); … … 195 203 Calendar cal = Dates.getCalendarInstance(date); 196 204 cal.setTime(date); 197 cal.add(Calendar.YEAR, 1 );198 Date endRecur= Dates.getInstance(cal.getTime(), dateType);205 cal.add(Calendar.YEAR, 10); 206 onsetLimit = Dates.getInstance(cal.getTime(), dateType); 199 207 DateList recurrenceDates = rrule.getRecur().getDates(onset, 200 endRecur, dateType);208 onsetLimit, dateType); 201 209 for (Iterator j = recurrenceDates.iterator(); j.hasNext();) { 202 210 Date rruleOnset = (Date) j.next();
