package cz.cuni.mff.d3s.been.web.pages.task; import cz.cuni.mff.d3s.been.api.BeenApiException; import cz.cuni.mff.d3s.been.core.benchmark.BenchmarkEntry; import cz.cuni.mff.d3s.been.core.task.StateChangeEntry; import cz.cuni.mff.d3s.been.core.task.TaskContextEntry; import cz.cuni.mff.d3s.been.core.task.TaskEntry; import cz.cuni.mff.d3s.been.web.components.Layout; import cz.cuni.mff.d3s.been.web.pages.Page; import org.apache.tapestry5.annotations.Property; import java.util.*; /** * @author Kuba Brecka */ @Page.Navigation(section = Layout.Section.TASK_TASKS) public class List extends Page { @Property private TaskEntry task; @Property private ArrayList<TaskEntry> context; @Property private int taskIndex; public ArrayList<ArrayList<TaskEntry>> getContexts() throws BeenApiException { Collection<TaskEntry> allTasks = this.api.getApi().getTasks(); ArrayList<TaskEntry> taskEntries = new ArrayList<>(allTasks); Collections.sort(taskEntries, new Comparator<TaskEntry>() { @Override public int compare(TaskEntry o1, TaskEntry o2) { int order = o1.getTaskContextId().compareTo(o2.getTaskContextId()); if (order == 0) order = o1.getId().compareTo(o2.getId()); return order; } }); Map<String, ArrayList<TaskEntry>> tasksByContexts = new LinkedHashMap<>(); for (TaskEntry taskEntry : taskEntries) { String contextId = taskEntry.getTaskContextId(); if (!tasksByContexts.containsKey(contextId)) tasksByContexts.put(contextId, new ArrayList<TaskEntry>()); tasksByContexts.get(contextId).add(taskEntry); } return new ArrayList<>(tasksByContexts.values()); } public boolean isFirstInContext() { return taskIndex == 0; } }