From a8dbb0a675b9cad09996b7f49e0a09e7fa9ae82b Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Fri, 11 May 2012 13:37:43 +0900
Subject: [PATCH] moved new checklist template stuff into service method

---
 .../checklist/CheckListTemplateDataPanel.java |  8 +------
 .../ChecklistTemplateServiceImpl.java         | 22 +++++++++++++++++++
 .../services/ChecklistTemplateService.java    |  1 +
 3 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
index f30ede3cc3..728af96614 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
@@ -53,13 +53,7 @@ public abstract class CheckListTemplateDataPanel extends Panel {
         newLink = new AjaxLink<Void>("newLink") {
             @Override
             public void onClick(AjaxRequestTarget target) {
-                CheckListTemplate clt = new CheckListTemplate("New checklist template (change this to real name)", SciProSession.get().getUser());
-                clt.setCategories(new ArrayList<ChecklistCategory>());
-                ArrayList<String> questionList = new ArrayList<String>();
-                questionList.add(new String("Example question (remove this and add relevant questions)"));
-                clt.setQuestions(questionList);
-                clt.setTemplateNumber(safeLongToInt(checklistTemplateService.count() + 1));
-                cltdp.onClick(new Model<CheckListTemplate>(clt), target);
+                cltdp.onClick(new Model<CheckListTemplate>(checklistTemplateService.prepareNewTemplate()), target);
             }
         };
         newLink.setVisible(adminPrivileges);
diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
index fb42b2cebd..646171725c 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
@@ -7,13 +7,16 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import se.su.dsv.scipro.SciProSession;
 import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+import se.su.dsv.scipro.data.dataobjects.ChecklistCategory;
 import se.su.dsv.scipro.data.dataobjects.QCheckListTemplate;
 import se.su.dsv.scipro.springdata.repos.ChecklistTemplateRepo;
 import se.su.dsv.scipro.springdata.services.ChecklistTemplateService;
 
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 
 /**
  * @author: fred-fri
@@ -93,6 +96,17 @@ public class ChecklistTemplateServiceImpl extends AbstractQueryService<CheckList
         }
     }
 
+    @Override
+    public CheckListTemplate prepareNewTemplate() {
+        CheckListTemplate clt = new CheckListTemplate("New checklist template (change this to real name)", SciProSession.get().getUser());
+        clt.setCategories(new ArrayList<ChecklistCategory>());
+        ArrayList<String> questionList = new ArrayList<String>();
+        questionList.add(new String("Example question (remove this and add relevant questions)"));
+        clt.setQuestions(questionList);
+        clt.setTemplateNumber(safeLongToInt(checklistTemplateRepo.count() + 1));
+        return clt;
+    }
+
     private BooleanExpression filterStringIsCreatorName(String filterString){
         return QCheckListTemplate.checkListTemplate.creator.firstName.contains(filterString).or(QCheckListTemplate.checkListTemplate.creator.lastName.contains(filterString));
     }
@@ -100,4 +114,12 @@ public class ChecklistTemplateServiceImpl extends AbstractQueryService<CheckList
     private BooleanExpression filterStringIsChecklistTemplateName(String filterString){
         return QCheckListTemplate.checkListTemplate.name.contains(filterString);
     }
+
+    public static int safeLongToInt(long l) {
+        if (l < Integer.MIN_VALUE || l > Integer.MAX_VALUE) {
+            throw new IllegalArgumentException
+                    (l + " cannot be cast to int without changing its value.");
+        }
+        return (int) l;
+    }
 }
diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
index 91b506aee9..e8c4562b68 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
@@ -15,4 +15,5 @@ public interface ChecklistTemplateService extends CrudService<CheckListTemplate,
     Long count(String filterString);
     void upChecklistTemplate(CheckListTemplate checkListTemplate);
     void downChecklistTemplate(CheckListTemplate checkListTemplate);
+    CheckListTemplate prepareNewTemplate();
 }