From 54fe849eef672e729aeace423d62175a6de0c52d Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Tue, 29 Dec 2020 15:04:18 -0600 Subject: [PATCH] Remove MemoryStreakList.java --- .../uhabits/core/models/StreakList.java | 43 +++++++++-- .../core/models/memory/MemoryModelFactory.kt | 2 +- .../core/models/memory/MemoryStreakList.java | 72 ------------------- .../core/models/sqlite/SQLModelFactory.kt | 3 +- 4 files changed, 39 insertions(+), 81 deletions(-) delete mode 100644 android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/memory/MemoryStreakList.java diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/StreakList.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/StreakList.java index fa8c4b741..66ae0da27 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/StreakList.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/StreakList.java @@ -30,18 +30,24 @@ import java.util.*; *

* This list is populated automatically from the list of repetitions. */ -public abstract class StreakList +public class StreakList { protected Habit habit; protected ModelObservable observable = new ModelObservable(); + ArrayList list = new ArrayList<>(); + public void setHabit(Habit habit) { this.habit = habit; } - public abstract List getAll(); + public List getAll() + { + rebuild(); + return new LinkedList<>(list); + } @NonNull public List getBest(int limit) @@ -54,7 +60,17 @@ public abstract class StreakList } @Nullable - public abstract Streak getNewestComputed(); + public Streak getNewestComputed() + { + Streak newest = null; + + for (Streak s : list) + if (newest == null || s.getEnd().isNewerThan(newest.getEnd())) + newest = s; + + return newest; + + } @NonNull public ModelObservable getObservable() @@ -62,7 +78,11 @@ public abstract class StreakList return observable; } - public abstract void recompute(); + public void recompute() + { + list.clear(); + observable.notifyListeners(); + } public synchronized void rebuild() { @@ -146,7 +166,18 @@ public abstract class StreakList return list; } - protected abstract void add(@NonNull List streaks); + protected void add(@NonNull List streaks) + { + list.addAll(streaks); + Collections.sort(list, (s1, s2) -> s2.compareNewer(s1)); + observable.notifyListeners(); + + } + + protected void removeNewestComputed() + { + Streak newest = getNewestComputed(); + if (newest != null) list.remove(newest); - protected abstract void removeNewestComputed(); + } } diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/memory/MemoryModelFactory.kt b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/memory/MemoryModelFactory.kt index 2bb27c489..f74fa95c9 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/memory/MemoryModelFactory.kt +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/memory/MemoryModelFactory.kt @@ -25,7 +25,7 @@ class MemoryModelFactory : ModelFactory { override fun buildOriginalEntries() = EntryList() override fun buildHabitList() = MemoryHabitList() override fun buildScoreList() = ScoreList() - override fun buildStreakList() = MemoryStreakList() + override fun buildStreakList() = StreakList() override fun buildHabitListRepository() = throw NotImplementedError() override fun buildRepetitionListRepository() = throw NotImplementedError() } \ No newline at end of file diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/memory/MemoryStreakList.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/memory/MemoryStreakList.java deleted file mode 100644 index fc3dede25..000000000 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/memory/MemoryStreakList.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 2016 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.core.models.memory; - -import androidx.annotation.*; - -import org.isoron.uhabits.core.models.*; - -import java.util.*; - -public class MemoryStreakList extends StreakList -{ - ArrayList list = new ArrayList<>(); - - @Override - public Streak getNewestComputed() - { - Streak newest = null; - - for (Streak s : list) - if (newest == null || s.getEnd().isNewerThan(newest.getEnd())) - newest = s; - - return newest; - } - - @Override - public void recompute() - { - list.clear(); - observable.notifyListeners(); - } - - @Override - protected void add(@NonNull List streaks) - { - list.addAll(streaks); - Collections.sort(list, (s1, s2) -> s2.compareNewer(s1)); - observable.notifyListeners(); - } - - @Override - protected void removeNewestComputed() - { - Streak newest = getNewestComputed(); - if (newest != null) list.remove(newest); - } - - @Override - public List getAll() - { - rebuild(); - return new LinkedList<>(list); - } -} diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/sqlite/SQLModelFactory.kt b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/sqlite/SQLModelFactory.kt index 537b6938a..3e8f94a64 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/sqlite/SQLModelFactory.kt +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/sqlite/SQLModelFactory.kt @@ -22,7 +22,6 @@ package org.isoron.uhabits.core.models.sqlite import org.isoron.uhabits.core.database.* import org.isoron.uhabits.core.models.* -import org.isoron.uhabits.core.models.memory.* import org.isoron.uhabits.core.models.sqlite.records.* import javax.inject.* @@ -37,7 +36,7 @@ class SQLModelFactory override fun buildComputedEntries() = EntryList() override fun buildHabitList() = SQLiteHabitList(this) override fun buildScoreList() = ScoreList() - override fun buildStreakList() = MemoryStreakList() + override fun buildStreakList() = StreakList() override fun buildHabitListRepository() = Repository(HabitRecord::class.java, database)