diff --git a/src/main/java/net/fortuna/ical4j/model/NumberList.java b/src/main/java/net/fortuna/ical4j/model/NumberList.java index 201236a9a..f20284d91 100644 --- a/src/main/java/net/fortuna/ical4j/model/NumberList.java +++ b/src/main/java/net/fortuna/ical4j/model/NumberList.java @@ -66,7 +66,7 @@ public NumberList() { * @param allowsNegativeValues allow negative values, where abs(value) is within the specified range */ public NumberList(ValueRange valueRange, boolean allowsNegativeValues) { - this.valueRange = valueRange; + this.range = valueRange; this.allowsNegativeValues = allowsNegativeValues; } @@ -83,11 +83,6 @@ public NumberList(int minValue, int maxValue, boolean allowsNegativeValues) { this(ValueRange.of(minValue, maxValue), allowsNegativeValues); } - public NumberList(ValueRange range, boolean allowsNegativeValues) { - this.range = range; - this.allowsNegativeValues = allowsNegativeValues; - } - /** * Constructor. * @param aString a string representation of a number list @@ -149,11 +144,11 @@ public boolean addAll(Collection c) { throw new IllegalArgumentException("Negative value not allowed: " + negativeValue.get()); } - Optional invalidValue = c.stream().filter(v -> !valueRange.isValidValue(Math.abs(v))) + Optional invalidValue = c.stream().filter(v -> !range.isValidValue(Math.abs(v))) .findFirst(); if (invalidValue.isPresent()) { throw new IllegalArgumentException( - "Value not in range [" + valueRange + "]: " + invalidValue); + "Value not in range [" + range + "]: " + invalidValue); } return super.addAll(c); } diff --git a/src/main/java/net/fortuna/ical4j/model/Recur.java b/src/main/java/net/fortuna/ical4j/model/Recur.java index f8b6cf72a..e452d1a3d 100644 --- a/src/main/java/net/fortuna/ical4j/model/Recur.java +++ b/src/main/java/net/fortuna/ical4j/model/Recur.java @@ -39,9 +39,8 @@ import java.io.IOException; import java.io.Serializable; -import java.time.chrono.Chronology; -import java.time.temporal.ChronoField; import java.time.LocalDate; +import java.time.chrono.Chronology; import java.time.temporal.*; import java.util.*; @@ -291,23 +290,23 @@ public enum Skip { private Integer interval; - private final List secondList = new NumberList(ChronoField.SECOND_OF_MINUTE.range(), false); + private List secondList = new NumberList(ChronoField.SECOND_OF_MINUTE.range(), false); - private final List minuteList = new NumberList(ChronoField.MINUTE_OF_HOUR.range(), false); + private List minuteList = new NumberList(ChronoField.MINUTE_OF_HOUR.range(), false); - private final List hourList = new NumberList(ChronoField.HOUR_OF_DAY.range(), false); + private List hourList = new NumberList(ChronoField.HOUR_OF_DAY.range(), false); - private final List dayList = new WeekDayList(); + private List dayList = new WeekDayList(); - private final List monthDayList = new NumberList(ChronoField.DAY_OF_MONTH.range(), true); + private List monthDayList = new NumberList(ChronoField.DAY_OF_MONTH.range(), true); - private final List yearDayList = new NumberList(ChronoField.DAY_OF_YEAR.range(), true); + private List yearDayList = new NumberList(ChronoField.DAY_OF_YEAR.range(), true); - private final List weekNoList = new NumberList(WeekFields.ISO.weekOfWeekBasedYear().range(), true); + private List weekNoList = new NumberList(WeekFields.ISO.weekOfWeekBasedYear().range(), true); - private final List monthList = new NumberList(ChronoField.MONTH_OF_YEAR.range(), false); + private List monthList = new MonthList(ChronoField.MONTH_OF_YEAR.range()); - private final List setPosList = new NumberList(1, 366, true); + private List setPosList = new NumberList(ChronoField.DAY_OF_YEAR.range(), true); private WeekDay weekStartDay; @@ -347,30 +346,22 @@ public Recur(final String aValue) { } else if (INTERVAL.equals(token)) { interval = Integer.parseInt(nextToken(tokens, token)); } else if (BYSECOND.equals(token)) { - secondList.addAll(NumberList.parse(nextToken(tokens, token))); secondList = new NumberList(nextToken(tokens, token), chronology.range(ChronoField.SECOND_OF_MINUTE), false); } else if (BYMINUTE.equals(token)) { - minuteList.addAll(NumberList.parse(nextToken(tokens, token))); minuteList = new NumberList(nextToken(tokens, token), chronology.range(ChronoField.MINUTE_OF_HOUR), false); } else if (BYHOUR.equals(token)) { - hourList.addAll(NumberList.parse(nextToken(tokens, token))); hourList = new NumberList(nextToken(tokens, token), chronology.range(ChronoField.HOUR_OF_DAY), false); } else if (BYDAY.equals(token)) { dayList.addAll(new WeekDayList(nextToken(tokens, token))); } else if (BYMONTHDAY.equals(token)) { - monthDayList.addAll(NumberList.parse(nextToken(tokens, token))); monthDayList = new NumberList(nextToken(tokens, token), chronology.range(ChronoField.DAY_OF_MONTH), true); } else if (BYYEARDAY.equals(token)) { - yearDayList.addAll(NumberList.parse(nextToken(tokens, token))); yearDayList = new NumberList(nextToken(tokens, token), chronology.range(ChronoField.DAY_OF_YEAR), true); } else if (BYWEEKNO.equals(token)) { - weekNoList.addAll(NumberList.parse(nextToken(tokens, token))); weekNoList = new NumberList(nextToken(tokens, token), chronology.range(ChronoField.ALIGNED_WEEK_OF_YEAR), true); } else if (BYMONTH.equals(token)) { - monthList.addAll(new MonthList(nextToken(tokens, token), ValueRange.of(1, 12, 13))); monthList = new MonthList(nextToken(tokens, token), chronology.range(ChronoField.MONTH_OF_YEAR)); } else if (BYSETPOS.equals(token)) { - setPosList.addAll(NumberList.parse(nextToken(tokens, token))); setPosList = new NumberList(nextToken(tokens, token), chronology.range(ChronoField.DAY_OF_YEAR), true); } else if (WKST.equals(token)) { weekStartDay = WeekDay.getWeekDay(WeekDay.Day.valueOf(nextToken(tokens, token))); @@ -638,7 +629,7 @@ public final String toString() { b.append(';'); b.append(BYMONTH); b.append('='); - b.append(NumberList.toString(monthList)); + b.append(monthList); } if (!weekNoList.isEmpty()) { b.append(';');