19 package org.turro.dossier.task;
21 import java.util.ArrayList;
22 import java.util.Collection;
23 import java.util.function.Consumer;
24 import java.util.stream.Collectors;
25 import org.turro.dossier.db.DossierPU;
26 import org.turro.dossier.entity.Dossier;
27 import org.turro.dossier.entity.Issue;
28 import org.turro.dossier.entity.IssuePredecessor;
29 import org.turro.dossier.entity.IssueStatus;
30 import org.turro.elephant.db.WhereClause;
31 import org.turro.jpa.Dao;
39 private final Dao dao;
41 private final boolean onlyOpen;
45 this.dossier = dossier;
46 this.onlyOpen = onlyOpen;
51 wc.
addClause(
"select issue from Issue issue");
52 wc.
addClause(
"where issue.dossier = :dossier");
55 wc.
addClause(
"and issue.status in (:status)");
58 wc.
addClause(
"and issue.sources is empty");
59 return dao.getResultList(
Issue.class, wc).stream().map((issue) -> {
61 }).collect(Collectors.toList());
66 wc.
addClause(
"select predecessor from IssuePredecessor predecessor");
67 wc.
addClause(
"where predecessor.source = :issue");
69 wc.
addClause(
"and predecessor.source.dossier = :dossier");
72 wc.
addClause(
"and predecessor.target.status in (:status)");
75 return dao.getResultList(
IssuePredecessor.class, wc).stream().map((predecessor) -> {
76 return new TaskItem(predecessor.getTarget(), predecessor.getType(), item.
getLevel() + 1);
77 }).collect(Collectors.toList());
80 public Collection<TaskItem>
getFlat(Collection<TaskItem> items) {
81 ArrayList<TaskItem> list =
new ArrayList<>();
82 Consumer<TaskItem> addItem = item -> { list.add(item); item.getSubtasks().forEach((subtask) -> list.add(subtask));};
83 items.forEach((item) -> {
Collection< TaskItem > getFlat(Collection< TaskItem > items)
Collection< TaskItem > getSubtasks(TaskItem item)
TaskModel(Dossier dossier, boolean onlyOpen)
Collection< TaskItem > getRoots()
void addClause(String clause)
void addNamedValue(String name, Object value)
static List< IssueStatus > selectBy(Boolean seen, Boolean working, Boolean standBy, Boolean finished)