Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ import at.bitfire.ical4android.Task
import at.bitfire.ical4android.TaskProvider
import at.bitfire.ical4android.UnknownProperty
import at.bitfire.ical4android.impl.TestTaskList
import at.bitfire.ical4android.util.DateUtils.toEpochMilli
import at.bitfire.synctools.storage.tasks.DmfsTaskList
import at.bitfire.synctools.util.AndroidTimeUtils.toTimestamp
import net.fortuna.ical4j.model.DateList
import net.fortuna.ical4j.model.TimeZoneRegistryFactory
import net.fortuna.ical4j.model.parameter.Email
Expand Down Expand Up @@ -440,7 +440,7 @@ class DmfsTaskBuilderTest (
LocalDateTime.of(
LocalDate.of(2020, 7, 3),
LocalTime.of(1, 2, 3)
).toEpochMilli(),
).toTimestamp(),
result.getAsLong(TaskContract.Tasks.DTSTART)
)
assertEquals(
Expand Down Expand Up @@ -476,7 +476,7 @@ class DmfsTaskBuilderTest (
LocalDateTime.of(
LocalDate.of(2020, 7, 3),
LocalTime.of(1, 2, 3)
).toEpochMilli(),
).toTimestamp(),
result.getAsLong(TaskContract.Tasks.DUE)
)
assertEquals(
Expand Down
2 changes: 1 addition & 1 deletion lib/src/main/kotlin/at/bitfire/ical4android/TaskReader.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import at.bitfire.synctools.exception.InvalidICalendarException
import at.bitfire.synctools.icalendar.Css3Color
import at.bitfire.synctools.icalendar.DatePropertyTzMapper.normalizedDate
import at.bitfire.synctools.icalendar.ICalendarParser
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.toTimestamp
import at.bitfire.synctools.util.AndroidTimeUtils.toTimestamp
import net.fortuna.ical4j.model.Component
import net.fortuna.ical4j.model.TemporalAdapter
import net.fortuna.ical4j.model.component.VToDo
Expand Down
2 changes: 1 addition & 1 deletion lib/src/main/kotlin/at/bitfire/ical4android/TaskWriter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import at.bitfire.ical4android.ICalendar.Companion.withUserAgents
import at.bitfire.synctools.icalendar.Css3Color
import at.bitfire.synctools.icalendar.VTimeZoneMinifier
import at.bitfire.synctools.icalendar.plusAssign
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.toTimestamp
import at.bitfire.synctools.util.AndroidTimeUtils.toTimestamp
import net.fortuna.ical4j.data.CalendarOutputter
import net.fortuna.ical4j.model.Calendar
import net.fortuna.ical4j.model.Parameter
Expand Down
44 changes: 0 additions & 44 deletions lib/src/main/kotlin/at/bitfire/ical4android/util/DateUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,6 @@ package at.bitfire.ical4android.util

import net.fortuna.ical4j.model.TemporalAdapter
import net.fortuna.ical4j.model.property.DateProperty
import java.time.Instant
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.OffsetDateTime
import java.time.ZoneId
import java.time.ZoneOffset
import java.time.ZonedDateTime
import java.time.temporal.ChronoField
import java.time.temporal.ChronoUnit
import java.time.temporal.Temporal

/**
Expand Down Expand Up @@ -57,39 +48,4 @@ object DateUtils {
fun isDateTime(date: Temporal?): Boolean =
date != null && TemporalAdapter.isDateTimePrecision(date)

/**
* Converts the given [Instant] by truncating it to days, and converting into [LocalDate] by its
* epoch timestamp.
*/
fun Instant.toLocalDate(): LocalDate {
val epochSeconds = truncatedTo(ChronoUnit.DAYS).epochSecond
return LocalDate.ofEpochDay(epochSeconds / (24 * 60 * 60 /*seconds in a day*/))
}

/**
* Converts the given generic [Temporal] into milliseconds since epoch.
* @param fallbackTimezone Any specific timezone to use as fallback if there's not enough
* information on the [Temporal] type (local types). Defaults to UTC.
* @throws IllegalArgumentException if the [Temporal] is from an unknown time, which also doesn't
* support [ChronoField.INSTANT_SECONDS]
*/
fun Temporal.toEpochMilli(fallbackTimezone: ZoneId? = null): Long {
// If the temporal supports instant seconds, we can compute epoch millis directly from them
if (isSupported(ChronoField.INSTANT_SECONDS)) {
val seconds = getLong(ChronoField.INSTANT_SECONDS)
val nanos = get(ChronoField.NANO_OF_SECOND)
// Convert seconds and nanos to millis
return (seconds * 1000) + (nanos / 1_000_000)
}

return when (this) {
is Instant -> this.toEpochMilli()
is ZonedDateTime -> this.toInstant().toEpochMilli()
is OffsetDateTime -> this.toInstant().toEpochMilli()
is LocalDate -> this.atStartOfDay(fallbackTimezone ?: ZoneOffset.UTC).toInstant().toEpochMilli()
is LocalDateTime -> this.atZone(fallbackTimezone ?: ZoneOffset.UTC).toInstant().toEpochMilli()
else -> throw IllegalArgumentException("${this::class.java.simpleName} cannot be converted to epoch millis.")
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import at.bitfire.synctools.icalendar.AssociatedEvents
import at.bitfire.synctools.icalendar.DatePropertyTzMapper.normalizedDate
import at.bitfire.synctools.icalendar.plusAssign
import at.bitfire.synctools.icalendar.recurrenceId
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.toZonedDateTime
import at.bitfire.synctools.mapping.calendar.handler.AccessLevelHandler
import at.bitfire.synctools.mapping.calendar.handler.AndroidEventFieldHandler
import at.bitfire.synctools.mapping.calendar.handler.AttendeesHandler
Expand All @@ -37,6 +36,7 @@ import at.bitfire.synctools.mapping.calendar.handler.UnknownPropertiesHandler
import at.bitfire.synctools.mapping.calendar.handler.UrlHandler
import at.bitfire.synctools.storage.calendar.EventAndExceptions
import at.bitfire.synctools.storage.calendar.EventsContract
import at.bitfire.synctools.util.AndroidTimeUtils.toZonedDateTime
import net.fortuna.ical4j.model.DateList
import net.fortuna.ical4j.model.ParameterList
import net.fortuna.ical4j.model.Property
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
package at.bitfire.synctools.mapping.calendar.builder

import at.bitfire.ical4android.util.DateUtils
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.toTimestamp
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.toZonedDateTime
import at.bitfire.synctools.util.AndroidTimeUtils.toTimestamp
import at.bitfire.synctools.util.AndroidTimeUtils.toZonedDateTime
import net.fortuna.ical4j.model.Property
import java.time.Instant
import java.time.LocalDate
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import at.bitfire.ical4android.util.TimeApiExtensions.toLocalDate
import at.bitfire.ical4android.util.TimeApiExtensions.toRfc5545Duration
import at.bitfire.synctools.icalendar.DatePropertyTzMapper.normalizedDate
import at.bitfire.synctools.icalendar.requireDtStart
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.toTimestamp
import at.bitfire.synctools.util.AndroidTimeUtils.toTimestamp
import net.fortuna.ical4j.model.Property
import net.fortuna.ical4j.model.component.VEvent
import net.fortuna.ical4j.model.property.RDate
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ import at.bitfire.ical4android.util.DateUtils
import at.bitfire.ical4android.util.TimeApiExtensions.abs
import at.bitfire.synctools.icalendar.DatePropertyTzMapper.normalizedDate
import at.bitfire.synctools.icalendar.requireDtStart
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.androidTimezoneId
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.toTimestamp
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.toZonedDateTime
import at.bitfire.synctools.util.AndroidTimeUtils.androidTimezoneId
import at.bitfire.synctools.util.AndroidTimeUtils.toTimestamp
import at.bitfire.synctools.util.AndroidTimeUtils.toZonedDateTime
import net.fortuna.ical4j.model.Property
import net.fortuna.ical4j.model.component.VEvent
import net.fortuna.ical4j.model.property.RDate
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ import at.bitfire.ical4android.util.DateUtils
import at.bitfire.synctools.icalendar.DatePropertyTzMapper.normalizedDate
import at.bitfire.synctools.icalendar.recurrenceId
import at.bitfire.synctools.icalendar.requireDtStart
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.toTimestamp
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.toZonedDateTime
import at.bitfire.synctools.util.AndroidTimeUtils.toTimestamp
import at.bitfire.synctools.util.AndroidTimeUtils.toZonedDateTime
import net.fortuna.ical4j.model.component.VEvent
import java.time.LocalDate
import java.time.ZonedDateTime
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import android.content.Entity
import android.provider.CalendarContract.Events
import at.bitfire.synctools.icalendar.DatePropertyTzMapper.normalizedDate
import at.bitfire.synctools.icalendar.requireDtStart
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.androidTimezoneId
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.toTimestamp
import at.bitfire.synctools.util.AndroidTimeUtils.androidTimezoneId
import at.bitfire.synctools.util.AndroidTimeUtils.toTimestamp
import net.fortuna.ical4j.model.component.VEvent
import java.time.temporal.Temporal

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import android.content.Entity
import android.provider.CalendarContract.Events
import at.bitfire.ical4android.util.TimeApiExtensions.abs
import at.bitfire.synctools.icalendar.plusAssign
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.toZonedDateTime
import at.bitfire.synctools.util.AndroidTimeUtils
import at.bitfire.synctools.util.AndroidTimeUtils.toZonedDateTime
import net.fortuna.ical4j.model.component.VEvent
import net.fortuna.ical4j.model.property.DtEnd
import java.time.Instant
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ package at.bitfire.synctools.mapping.calendar.handler
import android.content.Entity
import android.provider.CalendarContract.Events
import at.bitfire.ical4android.util.DateUtils
import at.bitfire.ical4android.util.DateUtils.toEpochMilli
import at.bitfire.ical4android.util.TimeApiExtensions.toLocalDate
import at.bitfire.synctools.exception.InvalidLocalResourceException
import at.bitfire.synctools.mapping.calendar.builder.AndroidTemporalMapper.toZonedDateTime
import at.bitfire.synctools.util.AndroidTimeUtils
import at.bitfire.synctools.util.AndroidTimeUtils.toTimestamp
import at.bitfire.synctools.util.AndroidTimeUtils.toZonedDateTime
import net.fortuna.ical4j.model.Recur
import net.fortuna.ical4j.model.component.VEvent
import net.fortuna.ical4j.model.property.ExDate
Expand Down Expand Up @@ -60,7 +60,7 @@ class RecurrenceFieldsHandler: AndroidEventFieldHandler {
rule.recur = alignUntil(rule.recur, startDate)

// skip if UNTIL is before event's DTSTART
val tsUntil = rule.recur.until?.toEpochMilli()
val tsUntil = rule.recur.until?.toTimestamp()
if (tsUntil != null && tsUntil <= tsStart) {
logger.warning("Ignoring $rule because UNTIL ($tsUntil) is not after DTSTART ($tsStart)")
continue
Expand Down Expand Up @@ -96,7 +96,7 @@ class RecurrenceFieldsHandler: AndroidEventFieldHandler {
rule.recur = alignUntil(rule.recur, startDate)

// skip if UNTIL is before event's DTSTART
val tsUntil = rule.recur.until?.toEpochMilli()
val tsUntil = rule.recur.until?.toTimestamp()
if (tsUntil != null && tsUntil <= tsStart) {
logger.warning("Ignoring $rule because UNTIL ($tsUntil) is not after DTSTART ($tsStart)")
continue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ import at.bitfire.ical4android.DmfsTask.Companion.UNKNOWN_PROPERTY_DATA
import at.bitfire.ical4android.ICalendar
import at.bitfire.ical4android.Task
import at.bitfire.ical4android.UnknownProperty
import at.bitfire.ical4android.util.DateUtils.toEpochMilli
import at.bitfire.synctools.icalendar.DatePropertyTzMapper.normalizedDate
import at.bitfire.synctools.storage.BatchOperation.CpoBuilder
import at.bitfire.synctools.storage.tasks.DmfsTaskList
import at.bitfire.synctools.storage.tasks.TasksBatchOperation
import at.bitfire.synctools.util.AndroidTimeUtils
import at.bitfire.synctools.util.AndroidTimeUtils.toTimestamp
import net.fortuna.ical4j.model.Parameter
import net.fortuna.ical4j.model.Property
import net.fortuna.ical4j.model.TimeZone
Expand Down Expand Up @@ -156,8 +156,8 @@ class DmfsTaskBuilder(
.withValue(Tasks.CREATED, task.createdAt)
.withValue(Tasks.LAST_MODIFIED, task.lastModified)

.withValue(Tasks.DTSTART, task.dtStart?.date?.toEpochMilli())
.withValue(Tasks.DUE, task.due?.date?.toEpochMilli())
.withValue(Tasks.DTSTART, task.dtStart?.date?.toTimestamp())
.withValue(Tasks.DUE, task.due?.date?.toTimestamp())
.withValue(Tasks.DURATION, task.duration?.value)

.withValue(Tasks.RDATE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import android.content.ContentValues
import at.bitfire.ical4android.DmfsTask.Companion.UNKNOWN_PROPERTY_DATA
import at.bitfire.ical4android.Task
import at.bitfire.ical4android.UnknownProperty
import at.bitfire.ical4android.util.DateUtils.toLocalDate
import at.bitfire.ical4android.util.TimeApiExtensions.toLocalDate
import at.bitfire.synctools.icalendar.propertyListOf
import at.bitfire.synctools.storage.tasks.DmfsTaskList
import at.bitfire.synctools.util.AndroidTimeUtils
Expand Down
Loading