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