Skip to content

Commit

Permalink
Provide abstraction for check of date-time values
Browse files Browse the repository at this point in the history
  • Loading branch information
benfortuna committed Mar 24, 2023
1 parent 8fd6dec commit 0e6b4f1
Show file tree
Hide file tree
Showing 6 changed files with 9 additions and 12 deletions.
Expand Up @@ -313,9 +313,9 @@ public static CalendarDateFormat from(List<? extends Temporal> list) {
* @return a date format instance applicable to the given temporal value
*/
public static CalendarDateFormat from(Temporal temporal) {
if (temporal instanceof Instant) {
if (TemporalAdapter.isUtc(temporal)) {
return UTC_DATE_TIME_FORMAT;
} else if (temporal instanceof LocalDate) {
} else if (!TemporalAdapter.isDateTimePrecision(temporal)) {
return DATE_FORMAT;
} else {
return FLOATING_DATE_TIME_FORMAT;
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/net/fortuna/ical4j/model/Period.java
Expand Up @@ -358,7 +358,7 @@ public final Period<T> add(final Period<T> period) {
public final PeriodList<T> subtract(final Period<T> period) {
if (period.equals(this)) {
return new PeriodList<>(dateFormat);
} else if (!period.intersects(this) || start instanceof LocalDate) {
} else if (!period.intersects(this) || !TemporalAdapter.isDateTimePrecision(start)) {
return new PeriodList<>(Collections.singletonList(this), dateFormat);
}
return subtractInterval(period);
Expand Down Expand Up @@ -405,7 +405,7 @@ private PeriodList<T> subtractInterval(Period<T> period) {
* @return true if this period consumes no time, otherwise false
*/
public final boolean isEmpty() {
if (start instanceof LocalDate) {
if (!TemporalAdapter.isDateTimePrecision(start)) {
return start.equals(end);
}
return toInterval().isEmpty();
Expand Down
5 changes: 2 additions & 3 deletions src/main/java/net/fortuna/ical4j/model/PeriodList.java
Expand Up @@ -34,7 +34,6 @@
import org.threeten.extra.Interval;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.Temporal;
import java.util.*;
Expand Down Expand Up @@ -164,7 +163,7 @@ public final PeriodList<T> normalise() {
boolean normalised = false;
for (Period<T> period1 : periods) {
period = period1;
if (period.getStart() instanceof LocalDate) {
if (!TemporalAdapter.isDateTimePrecision(period.getStart())) {
continue;
}
if (period.isEmpty()) {
Expand Down Expand Up @@ -244,7 +243,7 @@ public final PeriodList<T> subtract(final PeriodList<T> subtractions) {
PeriodList<T> tmpResult = new PeriodList<>(dateFormat);

for (final Period<T> subtraction : subtractions.getPeriods()) {
if (subtraction.getStart() instanceof LocalDate) {
if (!TemporalAdapter.isDateTimePrecision(subtraction.getStart())) {
tmpResult = tmpResult.addAll(result.getPeriods().stream()
.filter(p -> !p.equals(subtraction)).collect(Collectors.toList()));
} else {
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/net/fortuna/ical4j/model/Recur.java
Expand Up @@ -39,7 +39,6 @@

import java.io.IOException;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.chrono.Chronology;
import java.time.temporal.*;
import java.util.*;
Expand Down Expand Up @@ -760,7 +759,7 @@ public final List<T> getDates(final T seed, final T periodStart, final T periodE
final List<T> dates = getDatesAsStream(seed, periodStart, periodEnd, maxCount).collect(Collectors.toList());

// sort final list..
if (seed instanceof LocalDate) {
if (!TemporalAdapter.isDateTimePrecision(seed)) {
dates.sort(new TemporalComparator(ChronoUnit.DAYS));
} else {
dates.sort(CANDIDATE_SORTER);
Expand Down
Expand Up @@ -137,7 +137,7 @@ public ValidationResult validate(final boolean recurse) throws ValidationExcepti
* specified date
*/
public final OffsetDateTime getLatestOnset(final Temporal date) {
if (date instanceof LocalDate) {
if (!TemporalAdapter.isDateTimePrecision(date)) {
throw new UnsupportedOperationException("Unable to get timezone observance for date-only temporal.");
}

Expand Down
Expand Up @@ -41,7 +41,6 @@
import net.fortuna.ical4j.validate.property.DatePropertyValidator;
import org.slf4j.LoggerFactory;

import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeParseException;
Expand Down Expand Up @@ -149,7 +148,7 @@ public T getDate() {
public void setDate(T date) {
if (date != null) {
this.date = new TemporalAdapter<>(date, timeZoneRegistry);
if (date instanceof LocalDate) {
if (!TemporalAdapter.isDateTimePrecision(date)) {
replace(Value.DATE);
removeAll(Parameter.TZID);
} else if (date instanceof ZonedDateTime) {
Expand Down

0 comments on commit 0e6b4f1

Please sign in to comment.