Skip to content

Commit

Permalink
feat: Increase performance by loading identifiers first
Browse files Browse the repository at this point in the history
  • Loading branch information
iamareebjamal committed Sep 14, 2017
1 parent c2b6f77 commit 3ad1ea5
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,24 @@

import in.ac.amu.zhcet.data.model.Student;
import org.springframework.data.jpa.datatables.repository.DataTablesRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

public interface StudentRepository extends DataTablesRepository<Student, Long> {

interface Identifier {
String getFacultyNumber();
String getEnrolmentNumber();
}

Student getByEnrolmentNumber(String enrolmentNumber);

Student getByFacultyNumber(String facultyNumber);

List<Student> getByEnrolmentNumberIn(List<String> ids);

List<Student> findAll();
@Query(value = "SELECT enrolment_number, faculty_number FROM student", nativeQuery = true)
List<Identifier> findAllIdentifiers();

}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ public Student getByEnrolmentNumber(String userId) {
return studentRepository.getByEnrolmentNumber(userId);
}

public List<StudentRepository.Identifier> getAllIdentifiers() {
return studentRepository.findAllIdentifiers();
}

public List<Student> getByIds(List<String> studentIds) {
return studentRepository.getByEnrolmentNumberIn(studentIds);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
import in.ac.amu.zhcet.data.model.Student;
import in.ac.amu.zhcet.data.model.dto.StudentUpload;
import in.ac.amu.zhcet.data.repository.DepartmentRepository;
import in.ac.amu.zhcet.data.repository.StudentRepository;
import in.ac.amu.zhcet.service.core.StudentService;
import in.ac.amu.zhcet.service.core.upload.base.Confirmation;
import in.ac.amu.zhcet.service.core.upload.base.AbstractUploadService;
import in.ac.amu.zhcet.service.core.upload.base.Confirmation;
import in.ac.amu.zhcet.service.core.upload.base.UploadResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -58,7 +59,7 @@ private static Student fromStudentUpload(StudentUpload studentUpload) {
return student;
}

private String getMappedValue(Student student, List<Department> departments) {
private String getMappedValue(Student student, List<Department> departments, List<StudentRepository.Identifier> identifiers) {
String departmentName = student.getUser().getDepartment().getName();

Optional<Department> optional = departments.stream()
Expand All @@ -68,10 +69,10 @@ private String getMappedValue(Student student, List<Department> departments) {
if (!optional.isPresent()) {
invalidDepartment = true;
return "No such department: " + departmentName;
} else if (studentService.getByEnrolmentNumber(student.getEnrolmentNumber()) != null) {
} else if (identifiers.parallelStream().anyMatch(identifier -> identifier.getEnrolmentNumber().equals(student.getEnrolmentNumber()))) {
duplicateEnrolmentNo = true;
return "Duplicate enrolment number";
} else if (studentService.getByFacultyNumber(student.getFacultyNumber()) != null) {
} else if (identifiers.parallelStream().anyMatch(identifier -> identifier.getFacultyNumber().equals(student.getFacultyNumber()))) {
duplicateFacultyNo = true;
return "Duplicate faculty number";
} else if (student.getHallCode().length() > 2) {
Expand All @@ -90,11 +91,12 @@ public Confirmation<Student, String> confirmUpload(UploadResult<StudentUpload> u
invalidHallCode = false;

List<Department> departments = departmentRepository.findAll();
List<StudentRepository.Identifier> identifiers = studentService.getAllIdentifiers();

Confirmation<Student, String> studentConfirmation = uploadService.confirmUpload(
uploadResult,
StudentUploadService::fromStudentUpload,
student -> getMappedValue(student, departments)
student -> getMappedValue(student, departments, identifiers)
);

if (invalidDepartment)
Expand Down

0 comments on commit 3ad1ea5

Please sign in to comment.