Search.java
package edu.rit.coopeval.search;
import edu.rit.coopeval.model.Evaluation;
import edu.rit.coopeval.dao.EvaluationRepository;
import edu.rit.coopeval.viewmodel.search.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* Created by mhickson on 3/12/15.
*/
@Component
public class Search {
@Autowired(required = true)
private EvaluationRepository evalRepo;
private String studentFirstNameCriteria;
private String studentLastNameCriteria;
private String studentIdCriteria;
private String companyNameCriteria;
private String advisorDCECriteria;
private List<String> termCriteria;
private List<String> departmentCriteria;
private List<String> studentEvalStatusCriteria;
private List<String> approvalStatusCriteria;
private List<String> employerEvalStatusCriteria;
public Search(){}
public List<Evaluation> searchEvaluations(SearchCriteriaViewModel searchCriteriaViewModel){
this.studentFirstNameCriteria = this.createStudentFirstNameCriteria(searchCriteriaViewModel.getStudentFirstName());
this.studentLastNameCriteria = this.createStudentLastNameCriteria(searchCriteriaViewModel.getStudentLastName());
this.studentIdCriteria = this.createStudentIdCriteria(searchCriteriaViewModel.getStudentId());
this.companyNameCriteria = this.createCompanyNameCriteria(searchCriteriaViewModel.getCompanyName());
this.advisorDCECriteria = this.createAdvisorDCECriteria(searchCriteriaViewModel.getAdvisorDCE());
this.termCriteria = this.createTermCriteria(searchCriteriaViewModel.getTerms());
this.departmentCriteria = this.createDepartmentCriteria(searchCriteriaViewModel.getDepartments());
this.studentEvalStatusCriteria = this.createEvalStatusCriteria(searchCriteriaViewModel.getStudentEvalStatusList());
this.approvalStatusCriteria = this.createApprovalStatusCriteria(searchCriteriaViewModel.getApprovalStatusList());
this.employerEvalStatusCriteria = this.createEvalStatusCriteria(searchCriteriaViewModel.getEmployerEvalStatusList());
List<Evaluation> searchResults = new ArrayList<Evaluation>();
if(termCriteria.isEmpty() && departmentCriteria.isEmpty()){
searchResults = evalRepo.searchWithoutTermAndDepartment(studentFirstNameCriteria, studentLastNameCriteria,
studentIdCriteria, companyNameCriteria, advisorDCECriteria,
studentEvalStatusCriteria, approvalStatusCriteria, employerEvalStatusCriteria);
}
else if(termCriteria.isEmpty()){
searchResults = evalRepo.searchWithoutTerm(studentFirstNameCriteria, studentLastNameCriteria,
studentIdCriteria, companyNameCriteria, advisorDCECriteria, departmentCriteria,
studentEvalStatusCriteria, approvalStatusCriteria, employerEvalStatusCriteria);
}
else if(departmentCriteria.isEmpty()){
searchResults = evalRepo.searchWithoutDeparment(studentFirstNameCriteria, studentLastNameCriteria,
studentIdCriteria, companyNameCriteria, advisorDCECriteria, termCriteria,
studentEvalStatusCriteria, approvalStatusCriteria, employerEvalStatusCriteria);
}
else{
searchResults = evalRepo.search(studentFirstNameCriteria, studentLastNameCriteria,
studentIdCriteria, companyNameCriteria, advisorDCECriteria, termCriteria, departmentCriteria,
studentEvalStatusCriteria, approvalStatusCriteria, employerEvalStatusCriteria);
}
return searchResults;
}
private String createStudentFirstNameCriteria(String studentFirstName){
return "%" + studentFirstName + "%";
}
private String createStudentLastNameCriteria(String studentLastName){
return "%" + studentLastName + "%";
}
private String createStudentIdCriteria(String studentId){
return "%" + studentId + "%";
}
private String createCompanyNameCriteria(String companyName){
return "%" + companyName + "%";
}
private String createAdvisorDCECriteria(String advisorDCE){
return "%" + advisorDCE + "%";
}
private List<String> createTermCriteria(List<TermCriteriaViewModel> termCriteriaList){
List<String> criteria = new ArrayList<String>();
for(TermCriteriaViewModel termCriteria: termCriteriaList){
criteria.add(termCriteria.getTermCode());
}
return criteria;
}
private List<String> createDepartmentCriteria(List<DepartmentCriteriaViewModel> departmentCriteriaList){
List<String> criteria = new ArrayList<String>();
for(DepartmentCriteriaViewModel departmentCriteria: departmentCriteriaList){
criteria.add(departmentCriteria.getDepartmentCode());
}
return criteria;
}
private List<String> createEvalStatusCriteria(List<EvaluationStatusCriteriaViewModel> evalStatusCriteriaList){
List<String> criteria = new ArrayList<String>();
List<String> allCriteria = new ArrayList<String>();
for(EvaluationStatusCriteriaViewModel evalStatusCriteria: evalStatusCriteriaList){
if(!evalStatusCriteria.isSelected()){
criteria.add(evalStatusCriteria.getEvaluationStatus());
}
allCriteria.add(evalStatusCriteria.getEvaluationStatus());
}
if(criteria.isEmpty()){
criteria = allCriteria;
}
return criteria;
}
private List<String> createApprovalStatusCriteria(List<ApprovalStatusCriteriaViewModel> approvalStatusCriteriaList){
List<String> criteria = new ArrayList<String>();
List<String> allCriteria = new ArrayList<String>();
for(ApprovalStatusCriteriaViewModel approvalStatusCriteria: approvalStatusCriteriaList){
if(!approvalStatusCriteria.isSelected()){
criteria.add(approvalStatusCriteria.getApprovalStatus());
}
allCriteria.add(approvalStatusCriteria.getApprovalStatus());
}
if(criteria.isEmpty()){
criteria = allCriteria;
}
return criteria;
}
}