package com.venky.swf.plugins.background.core; import java.util.Arrays; import java.util.Collection; import com.venky.extension.Extension; import com.venky.extension.Registry; import com.venky.swf.plugins.background.core.Task.Priority; import com.venky.swf.plugins.background.db.model.DelayedTask; import com.venky.swf.routing.Config; public class TaskManager{ static { Registry.instance().registerExtension("com.venky.swf.routing.Router.shutdown",new Extension(){ @Override public void invoke(Object... context) { Config.instance().getLogger(TaskManager.class.getName()).info("Shutdown Task manager"); _instance.shutdown(); } }); } private static TaskManager _instance = new TaskManager(); public static TaskManager instance(){ return _instance; } public void execute(Task task){ task.execute(); } @Deprecated public void executeDelayed(Task task) { executeAsync(task); } public void executeAsync(Task task){ executeAsync(Arrays.asList(task)); } public void executeAsync(Collection<Task> tasks){ executeAsync(tasks, Priority.DEFAULT); } public void executeAsync(Task task,Priority priority){ executeAsync(Arrays.asList(task), priority); } public void executeAsync(Collection<Task> tasks,Priority priority){ executeAsync(tasks, priority, true); } public void executeAsync(Task task,boolean persistTaskQueue){ executeAsync(Arrays.asList(task),persistTaskQueue); } public void executeAsync(Collection<Task> tasks,boolean persistTaskQueue){ executeAsync(tasks, Priority.DEFAULT,persistTaskQueue); } public void executeAsync(Task task,Priority priority, boolean persistTaskQueue){ executeAsync(Arrays.asList(task), priority,persistTaskQueue); } public void executeAsync(Collection<Task> tasks,Priority priority,boolean persistTaskQueue){ if (persistTaskQueue){ AsyncTaskManager.getInstance(DelayedTask.class).execute(tasks, priority); }else { AsyncTaskManager.getInstance(TaskHolder.class).execute(tasks, priority); } } public void shutdown(){ AsyncTaskManager.shutdownAll(); } public void wakeUp(){ AsyncTaskManager.wakeUpAll(); } }