From ce82fe1bb9423aaf262868db36f8d90a3f6ab719 Mon Sep 17 00:00:00 2001
From: Fredrik Friis <fred-fri@dsv.su.se>
Date: Fri, 13 Apr 2012 18:45:05 +0900
Subject: [PATCH] indication is removed if the user is the one who makes a
 change in the checklist

---
 .../checklists/panels/AnswerDialogPanel.java  | 30 ++++++++++++-------
 .../checklists/panels/ViewCheckListPanel.java |  4 ++-
 2 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/checklists/panels/AnswerDialogPanel.java b/src/main/java/se/su/dsv/scipro/checklists/panels/AnswerDialogPanel.java
index 4c16810918..f90f0114c8 100644
--- a/src/main/java/se/su/dsv/scipro/checklists/panels/AnswerDialogPanel.java
+++ b/src/main/java/se/su/dsv/scipro/checklists/panels/AnswerDialogPanel.java
@@ -7,23 +7,23 @@ import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.odlabs.wiquery.ui.dialog.Dialog;
-
-import se.su.dsv.scipro.checklists.panels.AnswerDialogPanel.AnswerDialog;
+import se.su.dsv.scipro.SciProSession;
 import se.su.dsv.scipro.data.dao.interfaces.CheckListAnswerDao;
 import se.su.dsv.scipro.data.dao.interfaces.CheckListQuestionDao;
 import se.su.dsv.scipro.data.dataobjects.CheckListAnswer;
 import se.su.dsv.scipro.data.dataobjects.CheckListQuestion;
 import se.su.dsv.scipro.data.dataobjects.User;
 import se.su.dsv.scipro.data.enums.CheckListQuestionAnswer;
+import se.su.dsv.scipro.springdata.services.ChecklistService;
 
 public class AnswerDialogPanel extends Panel {
 
     private static final long serialVersionUID = 1L;
     private AnswerDialog dialog;
 
-    public AnswerDialogPanel(String id, User currentUser) {
+    public AnswerDialogPanel(String id, User currentUser, Long checklistId) {
         super(id);
-        dialog = new AnswerDialog("answerDialog", currentUser);
+        dialog = new AnswerDialog("answerDialog", currentUser, checklistId);
         add(dialog);       
     }
 
@@ -32,35 +32,42 @@ public class AnswerDialogPanel extends Panel {
         private static final long serialVersionUID = 1L;
         @SpringBean
         private CheckListAnswerDao checkListAnswerDao;
-
+        private Long checklistId;
+        
+        
         @SpringBean
         private CheckListQuestionDao checkListQuestionDao;
         private final User currentUser;
       
-        public AnswerDialog(String id, User currentUser) {
+        public AnswerDialog(String id, User currentUser, Long checklistId) {
             super(id);
+            this.checklistId = checklistId;
             this.currentUser = currentUser;
             setModal(true);
             setAutoOpen(false);
             setWidth(400);
             setHeight(400);
-            add(new AnswerForm("answerForm"));
+            add(new AnswerForm("answerForm", checklistId));
         }
      
         public void dialogContent(CheckListQuestion clq) { 
             setTitle(clq.getQuestion());
-            replace(new AnswerForm("answerForm", clq));
+            replace(new AnswerForm("answerForm", clq, checklistId));
         }
 
         private class AnswerForm extends Form<Void> {
+            
+            @SpringBean
+            private ChecklistService checklistService;
+            
             private static final long serialVersionUID = 1L;
             private TrafficLightPanel trafficLights;
             private CheckListQuestion clq;
             private CheckListAnswer answer;
             private TextArea<String> commentArea;
             private String comment;
-
-            public AnswerForm(String id, CheckListQuestion clq) {
+            
+            public AnswerForm(String id, CheckListQuestion clq, Long checklistId) {
                 super(id);
                 setMultiPart(true);
                 answer = clq.getAnswerFromUser(currentUser);
@@ -81,7 +88,7 @@ public class AnswerDialogPanel extends Panel {
                 add(commentArea);
             }
 
-            public AnswerForm(String id) {
+            public AnswerForm(String id, Long checklistId) {
                 super(id);
                 add(new TrafficLightPanel("trafficLights"));
                 add(new TextArea<String>("commentArea"));
@@ -96,6 +103,7 @@ public class AnswerDialogPanel extends Panel {
                 clq = checkListQuestionDao.reLoad(clq);
                 clq.addAnswer(checkListAnswerDao.save(clAnswer));
                 clq = checkListQuestionDao.save(clq);
+                checklistService.updateUserLastOpenDate(checklistService.findOne(checklistId), SciProSession.get().getUser());
                 setResponsePage(getPage());            
             }
         }
diff --git a/src/main/java/se/su/dsv/scipro/checklists/panels/ViewCheckListPanel.java b/src/main/java/se/su/dsv/scipro/checklists/panels/ViewCheckListPanel.java
index 94ad3841b0..0abbe7aa96 100644
--- a/src/main/java/se/su/dsv/scipro/checklists/panels/ViewCheckListPanel.java
+++ b/src/main/java/se/su/dsv/scipro/checklists/panels/ViewCheckListPanel.java
@@ -37,6 +37,7 @@ public class ViewCheckListPanel extends Panel {
     private static final long serialVersionUID = 1L;
 
     private AnswerDialogPanel answerDialog;
+    private Long checklistId;
 
     @SpringBean
     private CheckListDao checkListDao;
@@ -55,6 +56,7 @@ public class ViewCheckListPanel extends Panel {
 
     public ViewCheckListPanel(final String id, final Long checkListId) {
         super(id);
+        this.checklistId = checkListId;
         checklistService.updateUserLastOpenDate(checklistService.findOne(checkListId), SciProSession.get().getUser());
         LoadableDetachableModel<CheckListModel> checkListModel =
             new LoadableDetachableModel<CheckListModel>() {
@@ -82,7 +84,7 @@ public class ViewCheckListPanel extends Panel {
     }
 
     private void initComponents(final IModel<CheckListModel> checkListModel) {
-        answerDialog = new AnswerDialogPanel("answerDialog", getCurrentUser());
+        answerDialog = new AnswerDialogPanel("answerDialog", getCurrentUser(), checklistId);
         add(answerDialog);
 
         ListView<CheckListQuestion> checkListQuestions =