From 7d361b22035deb99cc2145beeb5be34c9acf8ae1 Mon Sep 17 00:00:00 2001 From: Quentin Hibon Date: Thu, 21 Jan 2021 22:47:40 +0100 Subject: [PATCH] Convert Task and TaskRunner --- .../common/views/TaskProgressBar.kt | 4 +-- .../uhabits/tasks/AndroidTaskRunner.java | 12 ++++--- .../core/tasks/SingleThreadTaskRunner.kt | 7 ++-- .../uhabits/core/tasks/{Task.java => Task.kt} | 35 +++++++------------ .../tasks/{TaskRunner.java => TaskRunner.kt} | 32 +++++++---------- .../screens/habits/list/HabitCardListCache.kt | 5 +-- 6 files changed, 40 insertions(+), 55 deletions(-) rename uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/{Task.java => Task.kt} (66%) rename uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/{TaskRunner.java => TaskRunner.kt} (67%) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/TaskProgressBar.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/TaskProgressBar.kt index aa1b74a97..548fdc5f5 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/TaskProgressBar.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/TaskProgressBar.kt @@ -40,8 +40,8 @@ class TaskProgressBar( isIndeterminate = true } - override fun onTaskStarted(task: Task?) = update() - override fun onTaskFinished(task: Task?) = update() + override fun onTaskStarted(task: Task) = update() + override fun onTaskFinished(task: Task) = update() override fun onAttachedToWindow() { super.onAttachedToWindow() diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java b/uhabits-android/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java index f1348cec5..c5bd08d50 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java @@ -23,6 +23,8 @@ import android.os.*; import org.isoron.uhabits.core.*; import org.isoron.uhabits.core.tasks.*; +import org.isoron.uhabits.core.tasks.Task; +import org.jetbrains.annotations.NotNull; import java.util.*; @@ -53,18 +55,19 @@ public class AndroidTaskRunner implements TaskRunner } @Override - public void addListener(Listener listener) + public void addListener(@NotNull Listener listener) { listeners.add(listener); } @Override - public void execute(Task task) + public void execute(@NotNull Task task) { task.onAttached(this); new CustomAsyncTask(task).execute(); } + @Override public int getActiveTaskCount() { @@ -72,7 +75,7 @@ public class AndroidTaskRunner implements TaskRunner } @Override - public void publishProgress(Task task, int progress) + public void publishProgress(@NotNull Task task, int progress) { CustomAsyncTask asyncTask = taskToAsyncTask.get(task); if (asyncTask == null) return; @@ -80,11 +83,12 @@ public class AndroidTaskRunner implements TaskRunner } @Override - public void removeListener(Listener listener) + public void removeListener(@NotNull Listener listener) { listeners.remove(listener); } + private class CustomAsyncTask extends AsyncTask { private final Task task; diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/SingleThreadTaskRunner.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/SingleThreadTaskRunner.kt index c2a151a7b..9f7eaebb9 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/SingleThreadTaskRunner.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/SingleThreadTaskRunner.kt @@ -21,6 +21,9 @@ package org.isoron.uhabits.core.tasks import java.util.LinkedList class SingleThreadTaskRunner : TaskRunner { + override val activeTaskCount: Int + get() = 0 + private val listeners: MutableList = LinkedList() override fun addListener(listener: TaskRunner.Listener) { listeners.add(listener) @@ -37,10 +40,6 @@ class SingleThreadTaskRunner : TaskRunner { for (l in listeners) l.onTaskFinished(task) } - override fun getActiveTaskCount(): Int { - return 0 - } - override fun publishProgress(task: Task, progress: Int) { task.onProgressUpdate(progress) } diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/Task.java b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/Task.kt similarity index 66% rename from uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/Task.java rename to uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/Task.kt index 1283428d8..cc3a82cf0 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/Task.java +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/Task.kt @@ -16,27 +16,16 @@ * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ - -package org.isoron.uhabits.core.tasks; - -import androidx.annotation.*; - -public interface Task -{ - default void cancel() {} - - default boolean isCanceled() - { - return false; - } - - void doInBackground(); - - default void onAttached(@NonNull TaskRunner runner) {} - - default void onPostExecute() {} - - default void onPreExecute() {} - - default void onProgressUpdate(int value) {} +package org.isoron.uhabits.core.tasks + +fun interface Task { + fun cancel() {} + val isCanceled: Boolean + get() = false + + fun doInBackground() + fun onAttached(runner: TaskRunner) {} + fun onPostExecute() {} + fun onPreExecute() {} + fun onProgressUpdate(value: Int) {} } diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/TaskRunner.java b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/TaskRunner.kt similarity index 67% rename from uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/TaskRunner.java rename to uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/TaskRunner.kt index 60837226d..a59ff1d7b 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/TaskRunner.java +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/tasks/TaskRunner.kt @@ -16,25 +16,17 @@ * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ - -package org.isoron.uhabits.core.tasks; - -public interface TaskRunner -{ - void addListener(Listener listener); - - void removeListener(Listener listener); - - void execute(Task task); - - void publishProgress(Task task, int progress); - - int getActiveTaskCount(); - - interface Listener - { - void onTaskStarted(Task task); - - void onTaskFinished(Task task); +package org.isoron.uhabits.core.tasks + +interface TaskRunner { + fun addListener(listener: Listener) + fun removeListener(listener: Listener) + fun execute(task: Task) + fun publishProgress(task: Task, progress: Int) + val activeTaskCount: Int + + interface Listener { + fun onTaskStarted(task: Task) + fun onTaskFinished(task: Task) } } diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt index 26221fd47..e55928f4b 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt @@ -136,8 +136,9 @@ class HabitCardListCache @Inject constructor( @Synchronized fun refreshAllHabits() { if (currentFetchTask != null) currentFetchTask!!.cancel() - currentFetchTask = RefreshTask() - taskRunner.execute(currentFetchTask) + val task = RefreshTask() + currentFetchTask = task + taskRunner.execute(task) } @Synchronized