package scrum.server.issues; import ilarkesto.base.time.DateAndTime; import ilarkesto.fp.Predicate; import java.util.Set; import scrum.server.project.Project; public class IssueDao extends GIssueDao { public Set<Issue> getAcceptedIssues(final Project project) { return getEntities(new Predicate<Issue>() { @Override public boolean test(Issue issue) { if (!issue.isProject(project)) return false; if (issue.isClosed()) return false; return issue.isAccepted(); } }); } public Set<Issue> getClosedIssues(final Project project) { return getEntities(new Predicate<Issue>() { @Override public boolean test(Issue issue) { if (!issue.isProject(project)) return false; return issue.isClosed(); } }); } public Set<Issue> getOpenIssues(final Project project) { return getEntities(new Predicate<Issue>() { @Override public boolean test(Issue issue) { if (!issue.isProject(project)) return false; return issue.isOpen(); } }); } public Set<Issue> getPublishedIssues(final Project project) { return getEntities(new Predicate<Issue>() { @Override public boolean test(Issue issue) { if (!issue.isProject(project)) return false; return issue.isPublished(); } }); } public Set<Issue> getOpenBugs(final Project project) { return getEntities(new Predicate<Issue>() { @Override public boolean test(Issue issue) { if (!issue.isProject(project)) return false; if (issue.isClosed()) return false; return issue.isBug(); } }); } public Set<Issue> getOpenIdeas(final Project project) { return getEntities(new Predicate<Issue>() { @Override public boolean test(Issue issue) { if (!issue.isProject(project)) return false; if (issue.isClosed()) return false; return issue.isIdea(); } }); } public Issue getIssueByNumber(final int number, final Project project) { return getEntity(new Predicate<Issue>() { @Override public boolean test(Issue t) { return t.isNumber(number) && t.isProject(project); } }); } public Issue postIssue(Project project, String label, String text, String issuerName, String issuerEmail, boolean publish) { Issue issue = newEntityInstance(); issue.setProject(project); issue.setLabel(label); issue.setDescription(text); issue.setDate(DateAndTime.now()); issue.setIssuerName(issuerName); issue.setIssuerEmail(issuerEmail); issue.setPublished(publish); issue.updateNumber(); saveEntity(issue); return issue; } public Issue postIssue(Project project, String label) { Issue issue = newEntityInstance(); issue.setProject(project); issue.setLabel(label); saveEntity(issue); return issue; } }