[2915] Fixed so the checklist overview only takes into account checklists that are attached to the current activity plan.

There are still many orphan checklists in the database and Hibernate can not orphanRemoval them.
This commit is contained in:
Andreas Svanberg 2015-05-28 11:10:26 +02:00
parent c89a1ba931
commit c16042f06b
2 changed files with 19 additions and 10 deletions
core/src/main/java/se/su/dsv/scipro/checklist

@ -29,6 +29,10 @@ public class Checklist extends DomainObject {
@Basic(optional = true)
private String description;
/**
* @deprecated Go via Project->Activity Plan->Activity->Checklist
*/
@Deprecated
@ManyToOne(optional = false)
private Project project;

@ -1,5 +1,7 @@
package se.su.dsv.scipro.checklist;
import se.su.dsv.scipro.activityplan.QActivity;
import se.su.dsv.scipro.activityplan.QActivityPlan;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.AbstractServiceImpl;
@ -15,27 +17,30 @@ public class ChecklistServiceImpl extends AbstractServiceImpl<Checklist, Long> i
@Override
public Long countAnswers(Project project, ChecklistAnswerEnum answer) {
return from(QChecklist.checklist)
.join(QChecklist.checklist.questions, QChecklistQuestion.checklistQuestion)
return from(QActivityPlan.activityPlan)
.join(QActivityPlan.activityPlan.activities, QActivity.activity)
.join(QActivity.activity.checklist.questions, QChecklistQuestion.checklistQuestion)
.join(QChecklistQuestion.checklistQuestion.answers, QChecklistAnswer.checklistAnswer)
.where(
QChecklist.checklist.project.eq(project),
QActivityPlan.activityPlan.project.eq(project),
QChecklistAnswer.checklistAnswer.answer.eq(answer))
.count();
}
@Override
public Long countUnanswered(Project project) {
long questions = from(QChecklist.checklist)
.join(QChecklist.checklist.questions)
.where(QChecklist.checklist.project.eq(project))
long questions = from(QActivityPlan.activityPlan)
.join(QActivityPlan.activityPlan.activities, QActivity.activity)
.join(QActivity.activity.checklist.questions)
.where(QActivityPlan.activityPlan.project.eq(project))
.count();
questions = questions * project.getProjectParticipants().size();
long answers = from(QChecklist.checklist)
.join(QChecklist.checklist.questions, QChecklistQuestion.checklistQuestion)
.join(QChecklistQuestion.checklistQuestion.answers, QChecklistAnswer.checklistAnswer)
.where(QChecklist.checklist.project.eq(project))
long answers = from(QActivityPlan.activityPlan)
.join(QActivityPlan.activityPlan.activities, QActivity.activity)
.join(QActivity.activity.checklist.questions, QChecklistQuestion.checklistQuestion)
.join(QChecklistQuestion.checklistQuestion.answers)
.where(QActivityPlan.activityPlan.project.eq(project))
.count();
return questions - answers;