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)