From 4a432a7d36a80f509d36a6809a2d8aad4c765ffd Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 30 May 2012 15:47:08 +0900
Subject: [PATCH] prepared service methods

---
 .../serviceimpls/ProjectServiceImpl.java       | 18 ++++++++++++++++++
 .../springdata/services/ProjectService.java    |  3 +++
 2 files changed, 21 insertions(+)

diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectServiceImpl.java
index 3af44a6f31..c505635bb1 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectServiceImpl.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectServiceImpl.java
@@ -1,6 +1,7 @@
 package se.su.dsv.scipro.springdata.serviceimpls;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import javax.annotation.Resource;
@@ -57,11 +58,21 @@ public class ProjectServiceImpl extends AbstractQueryService<Project, Long> impl
         return projectRepo.findAll(titleContains(filterString).or(headSupervisorFirstNameContains(filterString).or(headSupervisorLastNameContains(filterString))), pageable);
     }
 
+    @Override
+    public Page<Project> find(Date fromDate, Date toDate, Pageable pageable) {
+        return projectRepo.findAll(projectCreatedAfter(fromDate).and(projectCreatedBefore(toDate)), pageable);
+    }
+
     @Override
     public Long count(String filterString) {
         return projectRepo.count(titleContains(filterString));
     }
 
+    @Override
+    public Long count(Date fromDate, Date toDate) {
+        return projectRepo.count(projectCreatedAfter(fromDate).and(projectCreatedBefore(toDate)));
+    }
+
     @Override
     public List<Project> getProjectsByUser(User user) {
         Student student = studentRepo.findByUser(user);
@@ -137,6 +148,13 @@ public class ProjectServiceImpl extends AbstractQueryService<Project, Long> impl
         return QProject.project.headSupervisor.user.lastName.containsIgnoreCase(searchTerm);
     }
 
+    private BooleanExpression projectCreatedAfter(Date date){
+        return QProject.project.dateCreated.after(date);
+    }
+
+    private BooleanExpression projectCreatedBefore(Date date){
+        return QProject.project.dateCreated.before(date);
+    }
 
     private BooleanExpression hasProjectClass(ProjectClass pc) {
         if (pc != null)
diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/ProjectService.java b/src/main/java/se/su/dsv/scipro/springdata/services/ProjectService.java
index 5d3bc5e882..f7e525f88b 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/services/ProjectService.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/services/ProjectService.java
@@ -1,5 +1,6 @@
 package se.su.dsv.scipro.springdata.services;
 
+import java.util.Date;
 import java.util.List;
 
 import org.springframework.data.domain.Page;
@@ -11,7 +12,9 @@ import se.su.dsv.scipro.data.enums.ProjectTeamMemberRoles;
 public interface ProjectService extends GenericService<Project,Long>, QueryService<Project, Long> {
 
     public Page<Project> find(String filterString, Pageable pageable);
+    public Page<Project> find(Date fromDate, Date toDate, Pageable pageable);
     public Long count(String filterString);
+    public Long count(Date fromDate, Date toDate);
 	public List<Project> getProjectsByUser(User user);
 	public List<Project> getProjectsByUserAndStatus(User author, ProjectStatus status);
 	public List<Project> getSupervisorProjectsForPeer(User supervisor, ProjectClass pc, ProjectStatus status, Student author, String title);