From 97a61ebaf865cb968a86be8847f07d216f88217c Mon Sep 17 00:00:00 2001 From: kraftwerk28 Date: Fri, 6 Dec 2019 10:44:30 +0200 Subject: [PATCH 01/11] add: impl for 12 var --- .../com/kpi/fict/DefaultStudentService.java | 73 +++++++++++++++++-- 1 file changed, 68 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index 02e85ea..4608748 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,28 +16,89 @@ public DefaultStudentService(StudentRepository studentRepository) { @Override public Student findStudentWithMaxAvgExamRating() { - throw new UnsupportedOperationException("Need to make implementation"); + return studentRepository + .findAll() + .stream() + .min((a, b) -> { + double r1 = a.getRating(); + double r2 = b.getRating(); + return Double.compare(r1, r2); + }) + .get(); } @Override public List findStudentsWithMathRatingMoreThanAvgAndTakeEngExam() { - throw new UnsupportedOperationException("Need to make implementation"); + double avg = studentRepository + .findAll() + .stream() + .map(Student::getRating) + .reduce(Double::sum) + .get() / studentRepository.findAll().size(); + return studentRepository + .findAll() + .stream() + .filter(s -> + s.getRating() > avg && + s.getExams().stream().anyMatch(e -> e.getType() == Exam.Type.ENGLISH)) + .collect(Collectors.toList()); } //Delimiter: ',' @Override public List getExamSumAndRatingForEachStudent() { - throw new UnsupportedOperationException("Need to make implementation"); + return studentRepository + .findAll() + .stream() + .map(s -> { + double sum = s + .getExams() + .stream() + .map(e -> e.getScore()) + .reduce(Double::sum) + .get(); + return sum + "," + s.getRating() + "," + s.getName(); + }) + .collect(Collectors.toList()); } @Override public List findStudentsWhoTakeMathEngExamWith180RatingOrMore() { - throw new UnsupportedOperationException("Need to make implementation"); + return studentRepository + .findAll() + .stream() + .filter(s -> s + .getExams() + .stream() + .filter(e -> e.getType() == Exam.Type.MATH || e.getType() == Exam.Type.ENGLISH) + .allMatch(e -> e.getScore() > 180) + ) + .collect(Collectors.toList()); } @Override public List findTwoStudentsWithMaxEngRating() { - throw new UnsupportedOperationException("Need to make implementation"); + return studentRepository + .findAll() + .stream() + .sorted((a, b) -> { + double aa = a + .getExams() + .stream() + .filter(e -> e.getType() == Exam.Type.ENGLISH) + .findFirst() + .get() + .getScore(); + double bb = b + .getExams() + .stream() + .filter(e -> e.getType() == Exam.Type.ENGLISH) + .findFirst() + .get() + .getScore(); + return Double.compare(aa, bb); + }) + .collect(Collectors.toList()); } public StudentRepository getStudentRepository() { From ed8b92305c24bf07dd95b1a9c68a5b10d9b7a4f2 Mon Sep 17 00:00:00 2001 From: kraftwerk28 Date: Fri, 6 Dec 2019 10:53:05 +0200 Subject: [PATCH 02/11] fix: method --- .../com/kpi/fict/DefaultStudentService.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index 4608748..d76d45a 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -5,6 +5,7 @@ import com.kpi.fict.repositories.StudentRepository; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public class DefaultStudentService implements StudentService { @@ -51,12 +52,12 @@ public List getExamSumAndRatingForEachStudent() { .findAll() .stream() .map(s -> { - double sum = s + Optional sum = s .getExams() .stream() - .map(e -> e.getScore()) - .reduce(Double::sum) - .get(); + .map(Exam::getScore) + .reduce(Double::sum); + double _sum = sum.isPresent() ? sum.get() : 0; return sum + "," + s.getRating() + "," + s.getName(); }) .collect(Collectors.toList()); @@ -82,21 +83,19 @@ public List findTwoStudentsWithMaxEngRating() { .findAll() .stream() .sorted((a, b) -> { - double aa = a + Optional aa = a .getExams() .stream() .filter(e -> e.getType() == Exam.Type.ENGLISH) - .findFirst() - .get() - .getScore(); - double bb = b + .findFirst(); + Optional bb = b .getExams() .stream() .filter(e -> e.getType() == Exam.Type.ENGLISH) - .findFirst() - .get() - .getScore(); - return Double.compare(aa, bb); + .findFirst(); + double _aa = aa.map(Exam::getScore).orElse(0.0); + double _bb = bb.map(Exam::getScore).orElse(0.0); + return Double.compare(_aa, _bb); }) .collect(Collectors.toList()); } From 402bfab3afd3f2ec89bd6641e4b9643f05847e4b Mon Sep 17 00:00:00 2001 From: kraftwerk28 Date: Fri, 6 Dec 2019 11:01:12 +0200 Subject: [PATCH 03/11] fix: impl --- src/main/java/com/kpi/fict/DefaultStudentService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index d76d45a..d858387 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -20,7 +20,7 @@ public Student findStudentWithMaxAvgExamRating() { return studentRepository .findAll() .stream() - .min((a, b) -> { + .max((a, b) -> { double r1 = a.getRating(); double r2 = b.getRating(); return Double.compare(r1, r2); From 037d8c034199aa0679d51b6435f8e52ce0a28671 Mon Sep 17 00:00:00 2001 From: kraftwerk28 Date: Fri, 6 Dec 2019 11:13:15 +0200 Subject: [PATCH 04/11] fix: impl --- src/main/java/com/kpi/fict/DefaultStudentService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index d858387..7b774af 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -58,7 +58,7 @@ public List getExamSumAndRatingForEachStudent() { .map(Exam::getScore) .reduce(Double::sum); double _sum = sum.isPresent() ? sum.get() : 0; - return sum + "," + s.getRating() + "," + s.getName(); + return _sum + "," + s.getRating() + "," + s.getName(); }) .collect(Collectors.toList()); } @@ -97,6 +97,7 @@ public List findTwoStudentsWithMaxEngRating() { double _bb = bb.map(Exam::getScore).orElse(0.0); return Double.compare(_aa, _bb); }) + .limit(2) .collect(Collectors.toList()); } From 53a968b6b41b0e6a400cf8386933e3d9d90d7378 Mon Sep 17 00:00:00 2001 From: kraftwerk28 Date: Fri, 6 Dec 2019 11:19:30 +0200 Subject: [PATCH 05/11] fix: impl --- .../java/com/kpi/fict/DefaultStudentService.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index 7b774af..8a3c8be 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -35,13 +35,21 @@ public List findStudentsWithMathRatingMoreThanAvgAndTakeEngExam() { .stream() .map(Student::getRating) .reduce(Double::sum) - .get() / studentRepository.findAll().size(); + .orElse(0.) / studentRepository.findAll().size(); return studentRepository .findAll() .stream() .filter(s -> s.getRating() > avg && - s.getExams().stream().anyMatch(e -> e.getType() == Exam.Type.ENGLISH)) + s + .getExams() + .stream() + .filter(e -> e.getType() == Exam.Type.MATH) + .allMatch(e -> e.getScore() > avg) && + s + .getExams() + .stream() + .anyMatch(e -> e.getType() == Exam.Type.ENGLISH)) .collect(Collectors.toList()); } From 70a330a7ca99768cebcc91d691e30b939cb7b305 Mon Sep 17 00:00:00 2001 From: kraftwerk28 Date: Fri, 6 Dec 2019 11:20:44 +0200 Subject: [PATCH 06/11] fix: impl --- src/main/java/com/kpi/fict/DefaultStudentService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index 8a3c8be..554cf9f 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -66,7 +66,7 @@ public List getExamSumAndRatingForEachStudent() { .map(Exam::getScore) .reduce(Double::sum); double _sum = sum.isPresent() ? sum.get() : 0; - return _sum + "," + s.getRating() + "," + s.getName(); + return _sum + "," + s.getRating(); }) .collect(Collectors.toList()); } From e07c895ffb10b366572c1c1902b2220f744de86b Mon Sep 17 00:00:00 2001 From: kraftwerk28 Date: Fri, 6 Dec 2019 11:24:05 +0200 Subject: [PATCH 07/11] fix: impl --- .../java/com/kpi/fict/DefaultStudentService.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index 554cf9f..c36f2e7 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -21,8 +21,14 @@ public Student findStudentWithMaxAvgExamRating() { .findAll() .stream() .max((a, b) -> { - double r1 = a.getRating(); - double r2 = b.getRating(); + double r1 = a + .getExams() + .stream() + .map(Exam::getScore).reduce(Double::sum).get() / a.getExams().size(); + double r2 = b + .getExams() + .stream() + .map(Exam::getScore).reduce(Double::sum).get() / b.getExams().size(); return Double.compare(r1, r2); }) .get(); @@ -66,7 +72,7 @@ public List getExamSumAndRatingForEachStudent() { .map(Exam::getScore) .reduce(Double::sum); double _sum = sum.isPresent() ? sum.get() : 0; - return _sum + "," + s.getRating(); + return _sum + "," + s.getRating() + "," + s.getName(); }) .collect(Collectors.toList()); } From c37a14cd0eb2f4e324fe46d01ace148c9126b9a7 Mon Sep 17 00:00:00 2001 From: kraftwerk28 Date: Fri, 6 Dec 2019 11:25:25 +0200 Subject: [PATCH 08/11] fix: impl --- src/main/java/com/kpi/fict/DefaultStudentService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index c36f2e7..5ed9c41 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -46,7 +46,6 @@ public List findStudentsWithMathRatingMoreThanAvgAndTakeEngExam() { .findAll() .stream() .filter(s -> - s.getRating() > avg && s .getExams() .stream() @@ -59,6 +58,7 @@ public List findStudentsWithMathRatingMoreThanAvgAndTakeEngExam() { .collect(Collectors.toList()); } + // c //Delimiter: ',' @Override public List getExamSumAndRatingForEachStudent() { From c5fb42943c001ee14a733cd1af53f954fe29e41e Mon Sep 17 00:00:00 2001 From: kraftwerk28 Date: Fri, 6 Dec 2019 11:32:55 +0200 Subject: [PATCH 09/11] fix: impl --- .../java/com/kpi/fict/DefaultStudentService.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index 5ed9c41..f1a127a 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -24,14 +24,18 @@ public Student findStudentWithMaxAvgExamRating() { double r1 = a .getExams() .stream() - .map(Exam::getScore).reduce(Double::sum).get() / a.getExams().size(); + .mapToDouble(Exam::getScore) + .average() + .orElse(0.); double r2 = b .getExams() .stream() - .map(Exam::getScore).reduce(Double::sum).get() / b.getExams().size(); + .mapToDouble(Exam::getScore) + .average() + .orElse(0.); return Double.compare(r1, r2); }) - .get(); + .orElse(studentRepository.findAll().get(0)); } @Override @@ -39,9 +43,9 @@ public List findStudentsWithMathRatingMoreThanAvgAndTakeEngExam() { double avg = studentRepository .findAll() .stream() - .map(Student::getRating) - .reduce(Double::sum) - .orElse(0.) / studentRepository.findAll().size(); + .mapToDouble(Student::getRating) + .average() + .orElse(0.); return studentRepository .findAll() .stream() From dd09ec66cbb8f79e2e558fc70a02fb3b832bbfe1 Mon Sep 17 00:00:00 2001 From: kraftwerk28 Date: Fri, 6 Dec 2019 11:46:36 +0200 Subject: [PATCH 10/11] fix: impl --- .../com/kpi/fict/DefaultStudentService.java | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index f1a127a..500c697 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -3,7 +3,9 @@ import com.kpi.fict.entities.Exam; import com.kpi.fict.entities.Student; import com.kpi.fict.repositories.StudentRepository; +import org.jcp.xml.dsig.internal.dom.DOMUtils; +import java.util.Comparator; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -43,7 +45,9 @@ public List findStudentsWithMathRatingMoreThanAvgAndTakeEngExam() { double avg = studentRepository .findAll() .stream() - .mapToDouble(Student::getRating) + .flatMap(s -> s.getExams().stream()) + .filter(e -> e.getType() == Exam.Type.MATH) + .mapToDouble(Exam::getScore) .average() .orElse(0.); return studentRepository @@ -54,7 +58,9 @@ public List findStudentsWithMathRatingMoreThanAvgAndTakeEngExam() { .getExams() .stream() .filter(e -> e.getType() == Exam.Type.MATH) - .allMatch(e -> e.getScore() > avg) && + .findFirst() + .orElse(new Exam(Exam.Type.MATH, 0)) + .getScore() > avg && s .getExams() .stream() @@ -86,11 +92,21 @@ public List findStudentsWhoTakeMathEngExamWith180RatingOrMore() { return studentRepository .findAll() .stream() - .filter(s -> s - .getExams() - .stream() - .filter(e -> e.getType() == Exam.Type.MATH || e.getType() == Exam.Type.ENGLISH) - .allMatch(e -> e.getScore() > 180) + .filter(s -> + s + .getExams() + .stream() + .filter(e -> e.getType() == Exam.Type.MATH) + .findFirst() + .orElse(new Exam(Exam.Type.MATH, 0)) + .getScore() > 180 && + s + .getExams() + .stream() + .filter(e -> e.getType() == Exam.Type.ENGLISH) + .findFirst() + .orElse(new Exam(Exam.Type.ENGLISH, 0)) + .getScore() > 180 ) .collect(Collectors.toList()); } @@ -113,9 +129,10 @@ public List findTwoStudentsWithMaxEngRating() { .findFirst(); double _aa = aa.map(Exam::getScore).orElse(0.0); double _bb = bb.map(Exam::getScore).orElse(0.0); - return Double.compare(_aa, _bb); + return Double.compare(_bb, _aa); }) .limit(2) + .sorted(Comparator.comparing(Student::getName)) .collect(Collectors.toList()); } From fff5034a67f0fbfb76cfda1e64336ade531682f7 Mon Sep 17 00:00:00 2001 From: kraftwerk28 Date: Fri, 6 Dec 2019 11:59:18 +0200 Subject: [PATCH 11/11] fix: impl --- src/main/java/com/kpi/fict/DefaultStudentService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index 500c697..7127805 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -3,7 +3,6 @@ import com.kpi.fict.entities.Exam; import com.kpi.fict.entities.Student; import com.kpi.fict.repositories.StudentRepository; -import org.jcp.xml.dsig.internal.dom.DOMUtils; import java.util.Comparator; import java.util.List;