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

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

fixed some bugs and finalized user registration

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