diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..f0257c5 --- /dev/null +++ b/.classpath @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..6fa2daa --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + java-lab01 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..d4313d4 --- /dev/null +++ b/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=false diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..1b6e1ef --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.processAnnotations=disabled +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java index 6b30c98..4145786 100644 --- a/src/main/java/com/kpi/fict/DefaultStudentService.java +++ b/src/main/java/com/kpi/fict/DefaultStudentService.java @@ -1,9 +1,12 @@ 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.Collection; import java.util.List; +import java.util.stream.Collectors; public class DefaultStudentService implements StudentService { private StudentRepository studentRepository; @@ -14,28 +17,72 @@ public DefaultStudentService(StudentRepository studentRepository) { @Override public List findAllWithRatingLessThan300() { - throw new UnsupportedOperationException("Need to make implementation"); + return studentRepository + .findAll() + .stream() + .filter(s -> s + .getExams() + .stream() + .map(Exam::getScore) + .reduce(0.0, Double::sum) < 300) + .collect(Collectors.toList()); } @Override public List findStudentsWhoTakeMathAndOneMoreExam() { - throw new UnsupportedOperationException("Need to make implementation"); + return studentRepository.findAll().stream().filter(student -> + student + .getExams() + .stream() + .anyMatch(exam -> exam.getType() == Exam.Type.MATH) + && + student + .getExams() + .size() == 2 + ).collect(Collectors.toList()); } @Override public List findStudentsWithRatingMoreThanAvgAndTakeMathExam() { - throw new UnsupportedOperationException("Need to make implementation"); + double avgRating = studentRepository + .findAll() + .stream() + .mapToDouble(Student::getRating) + .average() + .orElse(0.0); + +return studentRepository + .findAll() + .stream() + .filter(s -> s.getRating() > avgRating && s + .getExams() + .stream() + .anyMatch(e -> e.getType() == Exam.Type.MATH)) + .collect(Collectors.toList()); } @Override public List findStudentsWithoutExams() { - throw new UnsupportedOperationException("Need to make implementation"); + return studentRepository + .findAll() + .stream() + .filter(s -> s.getExams().size() == 0) + .collect(Collectors.toList()); } //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()); } public StudentRepository getStudentRepository() { diff --git a/target/classes/com/kpi/fict/DefaultStudentService.class b/target/classes/com/kpi/fict/DefaultStudentService.class new file mode 100644 index 0000000..ea362e5 Binary files /dev/null and b/target/classes/com/kpi/fict/DefaultStudentService.class differ diff --git a/target/classes/com/kpi/fict/StudentService.class b/target/classes/com/kpi/fict/StudentService.class new file mode 100644 index 0000000..022d1d6 Binary files /dev/null and b/target/classes/com/kpi/fict/StudentService.class differ diff --git a/target/classes/com/kpi/fict/entities/Exam$Type.class b/target/classes/com/kpi/fict/entities/Exam$Type.class new file mode 100644 index 0000000..755dae7 Binary files /dev/null and b/target/classes/com/kpi/fict/entities/Exam$Type.class differ diff --git a/target/classes/com/kpi/fict/entities/Exam.class b/target/classes/com/kpi/fict/entities/Exam.class new file mode 100644 index 0000000..c8ca938 Binary files /dev/null and b/target/classes/com/kpi/fict/entities/Exam.class differ diff --git a/target/classes/com/kpi/fict/entities/Student.class b/target/classes/com/kpi/fict/entities/Student.class new file mode 100644 index 0000000..959df81 Binary files /dev/null and b/target/classes/com/kpi/fict/entities/Student.class differ diff --git a/target/classes/com/kpi/fict/repositories/StudentRepository.class b/target/classes/com/kpi/fict/repositories/StudentRepository.class new file mode 100644 index 0000000..84bb020 Binary files /dev/null and b/target/classes/com/kpi/fict/repositories/StudentRepository.class differ