source: src/main/java/it/finki/tinki/service/impl/MatchmakerServiceImpl.java@ 336d09e

Last change on this file since 336d09e was 336d09e, checked in by Vzdra <vladko.zdravkovski@…>, 3 years ago

cleanup

  • Property mode set to 100644
File size: 4.3 KB
Line 
1package it.finki.tinki.service.impl;
2
3import it.finki.tinki.helper.Matchmaker;
4import it.finki.tinki.model.EmbeddedMatchId;
5import it.finki.tinki.model.Jobs.Internship;
6import it.finki.tinki.model.Jobs.Job;
7import it.finki.tinki.model.Jobs.Project;
8import it.finki.tinki.model.Match;
9import it.finki.tinki.model.Skill;
10import it.finki.tinki.model.Users.User;
11import it.finki.tinki.model.enumerator.WorkType;
12import it.finki.tinki.repository.InternshipRepository;
13import it.finki.tinki.repository.JobRepository;
14import it.finki.tinki.repository.MatchRepository;
15import it.finki.tinki.repository.ProjectRepository;
16import it.finki.tinki.service.MatchmakerService;
17import org.springframework.stereotype.Service;
18
19import java.util.ArrayList;
20import java.util.List;
21
22
23@Service
24public class MatchmakerServiceImpl implements MatchmakerService {
25
26 MatchRepository matchRepository;
27 JobRepository jobRepository;
28 InternshipRepository internshipRepository;
29 ProjectRepository projectRepository;
30
31 public MatchmakerServiceImpl(MatchRepository matchRepository,
32 JobRepository jobRepository,
33 InternshipRepository internshipRepository,
34 ProjectRepository projectRepository) {
35 this.matchRepository = matchRepository;
36 this.jobRepository = jobRepository;
37 this.internshipRepository = internshipRepository;
38 this.projectRepository = projectRepository;
39 }
40
41 @Override
42 public List<Internship> getMatchingInternshipsForUser(User user) {
43 List<Match> matches = this.matchRepository.findAllByEmbeddedMatchIdUserAndTypeOrderByCoefficientDesc(user, WorkType.INTERNSHIP);
44
45 List<Internship> internships = new ArrayList<>();
46 if(matches.size()!=0){
47 matches.forEach(match -> {
48 internships.add((Internship) match.getEmbeddedMatchId().getWork());
49 });
50 }
51
52 return internships;
53 }
54
55 @Override
56 public List<Job> getMatchingJobsForUser(User user) {
57 List<Match> matches = this.matchRepository.findAllByEmbeddedMatchIdUserAndTypeOrderByCoefficientDesc(user, WorkType.JOB);
58
59 List<Job> jobs = new ArrayList<>();
60 if(matches.size()!=0) {
61 matches.forEach(match -> {
62 jobs.add((Job) match.getEmbeddedMatchId().getWork());
63 });
64 }
65
66 return jobs;
67 }
68
69 @Override
70 public List<Project> getMatchingProjectsForUser(User user) {
71 List<Match> matches = this.matchRepository.findAllByEmbeddedMatchIdUserAndTypeOrderByCoefficientDesc(user, WorkType.PROJECT);
72
73 List<Project> projects = new ArrayList<>();
74 if(matches.size()!=0) {
75 matches.forEach(match -> {
76 projects.add((Project) match.getEmbeddedMatchId().getWork());
77 });
78 }
79
80 return projects;
81 }
82
83 @Override
84 public void setUpUserJobMatches(Job job, User user) {
85 List<Skill> jobSkill = job.getSkillsRequired();
86 List<Skill> userSkill = user.getRetainedSkills();
87
88 float coef = Matchmaker.match(jobSkill, userSkill);
89
90 if(coef!=0){
91 EmbeddedMatchId embeddedMatchId = new EmbeddedMatchId(job, user);
92 Match m = new Match(embeddedMatchId, coef, WorkType.JOB);
93 this.matchRepository.save(m);
94 }
95 }
96
97 @Override
98 public void setUpUserProjectMatches(Project project, User user) {
99 List<Skill> projectSkills = project.getSkillsRequired();
100 List<Skill> userSkill = user.getRetainedSkills();
101
102 float coef = Matchmaker.match(projectSkills, userSkill);
103
104 if(coef!=0){
105 EmbeddedMatchId embeddedMatchId = new EmbeddedMatchId(project, user);
106 Match m = new Match(embeddedMatchId, coef, WorkType.PROJECT);
107 this.matchRepository.save(m);
108 }
109 }
110
111 @Override
112 public void setUpUserInternshipMatches(Internship internship, User user) {
113 List<Skill> internshipSkills = internship.getSkillsTrained();
114 List<Skill> userSkill = user.getSkillsToLearn();
115
116 float coef = Matchmaker.match(internshipSkills, userSkill);
117
118 if(coef!=0){
119 EmbeddedMatchId embeddedMatchId = new EmbeddedMatchId(internship, user);
120 Match m = new Match(embeddedMatchId, coef, WorkType.PROJECT);
121 this.matchRepository.save(m);
122 }
123 }
124
125
126}
Note: See TracBrowser for help on using the repository browser.