From 19d07cb970dc7bfecb06b9656228e9d6d0681bce Mon Sep 17 00:00:00 2001 From: mille-nium Date: Thu, 5 Dec 2019 21:02:43 +0200 Subject: [PATCH 1/8] feat: implement find all student with rating less than 300 --- src/main/java/com/kpi/fict/DefaultStudentService.java | 3 ++- src/main/java/com/kpi/fict/entities/Student.java | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index 1f47f2d..5d0932f 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -14,7 +14,8 @@ public DefaultStudentService(StudentRepository studentRepository) { @Override public List findAllWithRatingLessThan300() { - throw new UnsupportedOperationException("Need to make implementation"); + return studentRepository.stream() + .filter(s -> s.getExamTotalScore() < 300) } @Override diff --git a/src/main/java/com/kpi/fict/entities/Student.java b/src/main/java/com/kpi/fict/entities/Student.java index dcc0389..a03e54c 100644 --- a/src/main/java/com/kpi/fict/entities/Student.java +++ b/src/main/java/com/kpi/fict/entities/Student.java @@ -61,4 +61,10 @@ public List getExams() { public void setExams(List exams) { this.exams = exams; } + + public int getExamTotalScore() { + return exams.stream() + .map(e -> e.getScore()) + .reduce((left, right) -> left + right); + } } From 961ed72c18bd13b6ae5bddc3ac24329189ab2110 Mon Sep 17 00:00:00 2001 From: mille-nium Date: Thu, 5 Dec 2019 22:10:51 +0200 Subject: [PATCH 2/8] fixup! feat: implement find all student with rating less than 300 --- .../java/com/kpi/fict/DefaultStudentService.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index 5d0932f..e4490cd 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -1,9 +1,11 @@ package com.kpi.fict; +import com.kpi.fict.entities.Exam; import com.kpi.fict.entities.Student; import com.kpi.fict.repositories.StudentRepository; import java.util.List; +import java.util.stream.Collectors; public class DefaultStudentService implements StudentService { private StudentRepository studentRepository; @@ -14,8 +16,15 @@ public DefaultStudentService(StudentRepository studentRepository) { @Override public List findAllWithRatingLessThan300() { - return studentRepository.stream() - .filter(s -> s.getExamTotalScore() < 300) + return studentRepository + .findAll() + .stream() + .filter(s -> s + .getExams() + .stream() + .map(Exam::getScore) + .reduce(0.0, Double::sum) < 300) + .collect(Collectors.toList()); } @Override From 08aed1725673df91d6c74aa96463fc5e3bc3ad62 Mon Sep 17 00:00:00 2001 From: mille-nium Date: Thu, 5 Dec 2019 23:09:00 +0200 Subject: [PATCH 3/8] feat: implement get average math score --- .../java/com/kpi/fict/DefaultStudentService.java | 14 +++++++++++++- src/main/java/com/kpi/fict/entities/Student.java | 6 ------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index e4490cd..224c010 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -4,7 +4,10 @@ import com.kpi.fict.entities.Student; import com.kpi.fict.repositories.StudentRepository; +import java.util.Collection; import java.util.List; +import java.util.Optional; +import java.util.OptionalDouble; import java.util.stream.Collectors; public class DefaultStudentService implements StudentService { @@ -29,7 +32,16 @@ public List findAllWithRatingLessThan300() { @Override public double findAvgRatingOfMathExam() { - throw new UnsupportedOperationException("Need to make implementation"); + OptionalDouble avg = studentRepository + .findAll() + .stream() + .map(Student::getExams) + .flatMap(Collection::stream) + .filter(e -> e.getType() == Exam.Type.MATH) + .mapToDouble(Exam::getScore) + .average(); + + return avg.isPresent() ? avg.getAsDouble() : 0.0; } //Delimiter: ',' diff --git a/src/main/java/com/kpi/fict/entities/Student.java b/src/main/java/com/kpi/fict/entities/Student.java index a03e54c..dcc0389 100644 --- a/src/main/java/com/kpi/fict/entities/Student.java +++ b/src/main/java/com/kpi/fict/entities/Student.java @@ -61,10 +61,4 @@ public List getExams() { public void setExams(List exams) { this.exams = exams; } - - public int getExamTotalScore() { - return exams.stream() - .map(e -> e.getScore()) - .reduce((left, right) -> left + right); - } } From 64cf838b092656b17628ae6005b93069364b4647 Mon Sep 17 00:00:00 2001 From: mille-nium Date: Thu, 5 Dec 2019 23:40:35 +0200 Subject: [PATCH 4/8] feat: implement student's average exams score --- .../com/kpi/fict/DefaultStudentService.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index 224c010..a99feac 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -32,22 +32,30 @@ public List findAllWithRatingLessThan300() { @Override public double findAvgRatingOfMathExam() { - OptionalDouble avg = studentRepository + return studentRepository .findAll() .stream() .map(Student::getExams) .flatMap(Collection::stream) .filter(e -> e.getType() == Exam.Type.MATH) .mapToDouble(Exam::getScore) - .average(); - - return avg.isPresent() ? avg.getAsDouble() : 0.0; + .average() + .orElse(0.0); } //Delimiter: ',' @Override public List calculateAvgRatingForEachStudent() { - throw new UnsupportedOperationException("Need to make implementation"); + return studentRepository + .findAll() + .stream() + .map(s -> s.getName() + "," + s + .getExams() + .stream() + .mapToDouble(Exam::getScore) + .average() + .orElse(0.0)) + .collect(Collectors.toList()); } @Override From 66c9953084f9378d339d599303876e65cfb5991c Mon Sep 17 00:00:00 2001 From: mille-nium Date: Thu, 5 Dec 2019 23:46:59 +0200 Subject: [PATCH 5/8] feat: implement find students with no exams --- src/main/java/com/kpi/fict/DefaultStudentService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index a99feac..aff921f 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -60,7 +60,11 @@ public List calculateAvgRatingForEachStudent() { @Override public List findStudentsWithoutExams() { - throw new UnsupportedOperationException("Need to make implementation"); + return studentRepository + .findAll() + .stream() + .filter(s -> s.getExams().size() == 0) + .collect(Collectors.toList()); } @Override From b02495637a563b44881de292a7fb71ee75bc5ad1 Mon Sep 17 00:00:00 2001 From: mille-nium Date: Fri, 6 Dec 2019 00:16:32 +0200 Subject: [PATCH 6/8] feat: implement find students with rating more than average and math exam --- .../java/com/kpi/fict/DefaultStudentService.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index aff921f..ba71508 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -69,7 +69,19 @@ public List findStudentsWithoutExams() { @Override public List findStudentsWithRatingMoreThanAvgAndTakeMathExam() { - throw new UnsupportedOperationException("Need to make implementation"); + return studentRepository + .findAll() + .stream() + .filter(s -> s + .getExams() + .stream() + .mapToDouble(Exam::getScore) + .average() + .orElse(0.0) > 100.0 && s + .getExams() + .stream() + .anyMatch(e -> e.getType() == Exam.Type.MATH)) + .collect(Collectors.toList()); } public StudentRepository getStudentRepository() { From cde389485ccd126284733dc61eaf2a2cee2343f0 Mon Sep 17 00:00:00 2001 From: mille-nium Date: Fri, 6 Dec 2019 00:33:14 +0200 Subject: [PATCH 7/8] fixup! feat: implement find students with rating more than average and math exam --- src/main/java/com/kpi/fict/DefaultStudentService.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index ba71508..152f268 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -69,6 +69,14 @@ public List findStudentsWithoutExams() { @Override public List findStudentsWithRatingMoreThanAvgAndTakeMathExam() { + double avg = studentRepository + .findAll() + .stream() + .map(Student::getExams) + .flatMap(Collection::stream) + .mapToDouble(Exam::getScore) + .average() + .orElse(0.0); return studentRepository .findAll() .stream() @@ -77,7 +85,7 @@ public List findStudentsWithRatingMoreThanAvgAndTakeMathExam() { .stream() .mapToDouble(Exam::getScore) .average() - .orElse(0.0) > 100.0 && s + .orElse(0.0) > avg && s .getExams() .stream() .anyMatch(e -> e.getType() == Exam.Type.MATH)) From a6a1e94807be102f9bf5e632e7afe58aba54a745 Mon Sep 17 00:00:00 2001 From: mille-nium Date: Fri, 6 Dec 2019 00:57:19 +0200 Subject: [PATCH 8/8] fixup! feat: implement find students with rating more than average and math exam --- .../java/com/kpi/fict/DefaultStudentService.java | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index 152f268..21bfd97 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -6,8 +6,6 @@ import java.util.Collection; import java.util.List; -import java.util.Optional; -import java.util.OptionalDouble; import java.util.stream.Collectors; public class DefaultStudentService implements StudentService { @@ -69,23 +67,17 @@ public List findStudentsWithoutExams() { @Override public List findStudentsWithRatingMoreThanAvgAndTakeMathExam() { - double avg = studentRepository + double avgRating = studentRepository .findAll() .stream() - .map(Student::getExams) - .flatMap(Collection::stream) - .mapToDouble(Exam::getScore) + .mapToDouble(Student::getRating) .average() .orElse(0.0); + return studentRepository .findAll() .stream() - .filter(s -> s - .getExams() - .stream() - .mapToDouble(Exam::getScore) - .average() - .orElse(0.0) > avg && s + .filter(s -> s.getRating() > avgRating && s .getExams() .stream() .anyMatch(e -> e.getType() == Exam.Type.MATH))