Remove MemoryStreakList.java

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

@ -30,18 +30,24 @@ import java.util.*;
* <p>
* 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<Streak> list = new ArrayList<>();
public void setHabit(Habit habit)
{
this.habit = habit;
}
public abstract List<Streak> getAll();
public List<Streak> getAll()
{
rebuild();
return new LinkedList<>(list);
}
@NonNull
public List<Streak> 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<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 buildHabitList() = MemoryHabitList()
override fun buildScoreList() = ScoreList()
override fun buildStreakList() = MemoryStreakList()
override fun buildStreakList() = StreakList()
override fun buildHabitListRepository() = 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.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)

Loading…
Cancel
Save