|
|
|
|
@ -33,15 +33,19 @@ object SessionSetManager { |
|
|
|
|
|
|
|
|
|
fun startChanged(session: Session, date: Date?) { |
|
|
|
|
this.start = min(this.start, date) |
|
|
|
|
this.end = max(this.end, session.endDate) |
|
|
|
|
this.sessionIdsToProcess.add(session.id) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun endChanged(session: Session, date: Date?) { |
|
|
|
|
this.end = max(this.end, date) |
|
|
|
|
this.start = min(this.start, session.startDate) |
|
|
|
|
this.sessionIdsToProcess.add(session.id) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun sessionDateChanged(session: Session) { |
|
|
|
|
this.start = min(this.start, session.startDate) |
|
|
|
|
this.end = max(this.end, session.endDate) |
|
|
|
|
this.sessionIdsToProcess.add(session.id) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -91,9 +95,12 @@ object SessionSetManager { |
|
|
|
|
|
|
|
|
|
// FlatTimeIntervals |
|
|
|
|
if (start != null && end != null) { |
|
|
|
|
processFlatTimeInterval(realm, start, end) |
|
|
|
|
processFlatTimeInterval(realm, sessions.toSet(), start, end) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
val ftis = realm.where(FlatTimeInterval::class.java).findAll() |
|
|
|
|
Timber.d("*** FTIs count = ${ftis.size}") |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -297,10 +304,13 @@ object SessionSetManager { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private fun processFlatTimeInterval(realm: Realm, start: Date, end: Date) { |
|
|
|
|
private fun processFlatTimeInterval(realm: Realm, changedSessions: Set<Session>, start: Date, end: Date) { |
|
|
|
|
|
|
|
|
|
Timber.d("*** processFlatTimeInterval, from: $start, to $end") |
|
|
|
|
|
|
|
|
|
val sessions = matchingData<Session>(realm, start, end) |
|
|
|
|
val intervalsStore = IntervalsStore(sessions.toSet()) |
|
|
|
|
intervalsStore.processSessions(changedSessions) |
|
|
|
|
|
|
|
|
|
intervalsStore.intervals.forEach { it.deleteFromRealm() } |
|
|
|
|
|
|
|
|
|
@ -335,7 +345,7 @@ object SessionSetManager { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
class IntervalsStore(sessions: Set<Session>) { |
|
|
|
|
class IntervalsStore(sessionSet: Set<Session>) { |
|
|
|
|
|
|
|
|
|
var start: Date = Date() |
|
|
|
|
var end: Date = Date(0L) |
|
|
|
|
@ -347,10 +357,10 @@ class IntervalsStore(sessions: Set<Session>) { |
|
|
|
|
private val sessionIds: MutableSet<String> = mutableSetOf() |
|
|
|
|
|
|
|
|
|
init { |
|
|
|
|
processSessions(sessions) |
|
|
|
|
processSessions(sessionSet) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private fun processSessions(sessions: Set<Session>) { |
|
|
|
|
fun processSessions(sessions: Set<Session>) { |
|
|
|
|
this.sessions.addAll(sessions) |
|
|
|
|
for (session in sessions) { |
|
|
|
|
loadIntervals(session) |
|
|
|
|
@ -426,7 +436,8 @@ class SessionInterval(session: Session) { |
|
|
|
|
var currentInterval = SessionInterval(firstSession) |
|
|
|
|
intervals.add(currentInterval) |
|
|
|
|
|
|
|
|
|
for (session in sessions.drop(1)) { |
|
|
|
|
val remainingSessions = sessions.drop(1).sortedBy { it.startDate } |
|
|
|
|
for (session in remainingSessions) { |
|
|
|
|
val start = session.startDate!! |
|
|
|
|
val currentEnd = currentInterval.end |
|
|
|
|
if (currentEnd != null && start > currentEnd) { |
|
|
|
|
|