Remove MemoryStreakList.java

pull/699/head
Alinson S. Xavier 5 years ago
parent c023711d16
commit 54fe849eef

@ -30,18 +30,24 @@ import java.util.*;
* <p> * <p>
* This list is populated automatically from the list of repetitions. * This list is populated automatically from the list of repetitions.
*/ */
public abstract class StreakList public class StreakList
{ {
protected Habit habit; protected Habit habit;
protected ModelObservable observable = new ModelObservable(); protected ModelObservable observable = new ModelObservable();
ArrayList<Streak> list = new ArrayList<>();
public void setHabit(Habit habit) public void setHabit(Habit habit)
{ {
this.habit = habit; this.habit = habit;
} }
public abstract List<Streak> getAll(); public List<Streak> getAll()
{
rebuild();
return new LinkedList<>(list);
}
@NonNull @NonNull
public List<Streak> getBest(int limit) public List<Streak> getBest(int limit)
@ -54,7 +60,17 @@ public abstract class StreakList
} }
@Nullable @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 @NonNull
public ModelObservable getObservable() public ModelObservable getObservable()
@ -62,7 +78,11 @@ public abstract class StreakList
return observable; return observable;
} }
public abstract void recompute(); public void recompute()
{
list.clear();
observable.notifyListeners();
}
public synchronized void rebuild() public synchronized void rebuild()
{ {
@ -146,7 +166,18 @@ public abstract class StreakList
return list; return list;
} }
protected abstract void add(@NonNull List<Streak> streaks); protected void add(@NonNull List<Streak> 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(); }
} }

@ -25,7 +25,7 @@ class MemoryModelFactory : ModelFactory {
override fun buildOriginalEntries() = EntryList() override fun buildOriginalEntries() = EntryList()
override fun buildHabitList() = MemoryHabitList() override fun buildHabitList() = MemoryHabitList()
override fun buildScoreList() = ScoreList() override fun buildScoreList() = ScoreList()
override fun buildStreakList() = MemoryStreakList() override fun buildStreakList() = StreakList()
override fun buildHabitListRepository() = throw NotImplementedError() override fun buildHabitListRepository() = throw NotImplementedError()
override fun buildRepetitionListRepository() = throw NotImplementedError() override fun buildRepetitionListRepository() = throw NotImplementedError()
} }

@ -1,72 +0,0 @@
/*
* Copyright (C) 2016 Álinson Santos Xavier <isoron@gmail.com>
*
* 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 <http://www.gnu.org/licenses/>.
*/
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<Streak> 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<Streak> 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<Streak> getAll()
{
rebuild();
return new LinkedList<>(list);
}
}

@ -22,7 +22,6 @@ package org.isoron.uhabits.core.models.sqlite
import org.isoron.uhabits.core.database.* import org.isoron.uhabits.core.database.*
import org.isoron.uhabits.core.models.* import org.isoron.uhabits.core.models.*
import org.isoron.uhabits.core.models.memory.*
import org.isoron.uhabits.core.models.sqlite.records.* import org.isoron.uhabits.core.models.sqlite.records.*
import javax.inject.* import javax.inject.*
@ -37,7 +36,7 @@ class SQLModelFactory
override fun buildComputedEntries() = EntryList() override fun buildComputedEntries() = EntryList()
override fun buildHabitList() = SQLiteHabitList(this) override fun buildHabitList() = SQLiteHabitList(this)
override fun buildScoreList() = ScoreList() override fun buildScoreList() = ScoreList()
override fun buildStreakList() = MemoryStreakList() override fun buildStreakList() = StreakList()
override fun buildHabitListRepository() = override fun buildHabitListRepository() =
Repository(HabitRecord::class.java, database) Repository(HabitRecord::class.java, database)

Loading…
Cancel
Save