source: src/main/java/project/educatum/service/impl/SubjectServiceImpl.java@ d3cf3a1

Last change on this file since d3cf3a1 was d3cf3a1, checked in by Marija Micevska <marija_micevska@…>, 2 years ago

Initial commit

  • Property mode set to 100644
File size: 2.5 KB
Line 
1package project.educatum.service.impl;
2
3import org.springframework.stereotype.Service;
4import project.educatum.model.Admin;
5import project.educatum.model.Subject;
6import project.educatum.model.exceptions.AdminNotFoundException;
7import project.educatum.model.exceptions.SubjectNotFoundException;
8import project.educatum.repository.AdminRepository;
9import project.educatum.repository.SubjectRepository;
10import project.educatum.service.SubjectService;
11
12import java.util.*;
13import java.util.stream.Collectors;
14
15@Service
16public class SubjectServiceImpl implements SubjectService {
17
18 private final SubjectRepository subjectsRepository;
19 private final AdminRepository adminRepository;
20
21 public SubjectServiceImpl(SubjectRepository subjectsRepository, AdminRepository adminRepository) {
22 this.subjectsRepository = subjectsRepository;
23 this.adminRepository = adminRepository;
24 }
25
26 @Override
27 public List<Subject> findAll() {
28 return this.subjectsRepository.findAll()
29 .stream()
30 .sorted(Comparator.comparing(Subject::getName))
31 .collect(Collectors.toList());
32 }
33
34 @Override
35 public List<Subject> findAllByNameLike(String name) {
36 if (name != null) {
37 return this.subjectsRepository.findAllByNameContainingIgnoreCase(name);
38 } else {
39 return this.subjectsRepository.findAll();
40 }
41 }
42
43 @Override
44 public void delete(Integer id) {
45 Subject p = subjectsRepository.findById(id).orElseThrow(SubjectNotFoundException::new);
46 subjectsRepository.delete(p);
47 }
48
49 @Override
50 public Optional<Subject> findById(Integer id) {
51 return subjectsRepository.findById(id);
52 }
53
54 @Override
55 public List<Subject> findAllByNameAndTeacherLike(String name, List<Subject> subjects) {
56 List<Subject> searchedSubjects = subjectsRepository.findAllByNameContainingIgnoreCase(name);
57 Set<Subject> result = new HashSet<>();
58 for (Subject p : searchedSubjects) {
59 for (Subject p2 : subjects)
60 if (p.getId().equals(p2.getId())) result.add(p2);
61 }
62 return new ArrayList<>(result);
63 }
64
65 @Override
66 public Subject create(String ime) {
67 Admin admin = adminRepository.findById(1).orElseThrow(AdminNotFoundException::new);
68 Subject subject = new Subject(ime, admin);
69 return this.subjectsRepository.save(subject);
70 }
71
72 @Override
73 public Subject findByName(String name) {
74 return subjectsRepository.findByName(name);
75 }
76}
Note: See TracBrowser for help on using the repository browser.