prepared service methods

This commit is contained in:
fred-fri 2012-05-30 15:47:08 +09:00
parent 9b03f34c7a
commit 4a432a7d36
2 changed files with 21 additions and 0 deletions
src/main/java/se/su/dsv/scipro/springdata

@ -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)

@ -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);