diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..5c98b42
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,2 @@
+# Default ignored files
+/workspace.xml
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..907e6e3
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_3.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_3.xml
new file mode 100644
index 0000000..183a430
--- /dev/null
+++ b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_9_3.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_9_3.xml
new file mode 100644
index 0000000..be4d19f
--- /dev/null
+++ b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_9_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_0_0.xml b/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_0_0.xml
new file mode 100644
index 0000000..a82457d
--- /dev/null
+++ b/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_0_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_2_1.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_2_1.xml
new file mode 100644
index 0000000..b170293
--- /dev/null
+++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_2_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_2_1.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_2_1.xml
new file mode 100644
index 0000000..2456ee8
--- /dev/null
+++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_2_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_library_2_1.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_library_2_1.xml
new file mode 100644
index 0000000..3b34e7a
--- /dev/null
+++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_library_2_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_3_2.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_3_2.xml
new file mode 100644
index 0000000..75b2f5e
--- /dev/null
+++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_3_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_3_2.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_3_2.xml
new file mode 100644
index 0000000..c8bdfa0
--- /dev/null
+++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_3_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_3_2.xml b/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_3_2.xml
new file mode 100644
index 0000000..26372d3
--- /dev/null
+++ b/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_3_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_3_2.xml b/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_3_2.xml
new file mode 100644
index 0000000..c5427fe
--- /dev/null
+++ b/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_3_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_mockito_mockito_core_2_23_4.xml b/.idea/libraries/Maven__org_mockito_mockito_core_2_23_4.xml
new file mode 100644
index 0000000..159204f
--- /dev/null
+++ b/.idea/libraries/Maven__org_mockito_mockito_core_2_23_4.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml b/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml
new file mode 100644
index 0000000..af41e3b
--- /dev/null
+++ b/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_opentest4j_opentest4j_1_1_1.xml b/.idea/libraries/Maven__org_opentest4j_opentest4j_1_1_1.xml
new file mode 100644
index 0000000..70277df
--- /dev/null
+++ b/.idea/libraries/Maven__org_opentest4j_opentest4j_1_1_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..972ec8d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..860edc6
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/java-lab01.iml b/java-lab01.iml
new file mode 100644
index 0000000..6f6e55e
--- /dev/null
+++ b/java-lab01.iml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/kpi/fict/DefaultStudentService.java b/src/main/java/com/kpi/fict/DefaultStudentService.java
index aedb111..cd4a875 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.*;
+import java.util.stream.Collectors;
public class DefaultStudentService implements StudentService {
private StudentRepository studentRepository;
@@ -14,28 +16,90 @@ public DefaultStudentService(StudentRepository studentRepository) {
@Override
public Student findFirstWithoutMath() {
- throw new UnsupportedOperationException("Need to make implementation");
+ return studentRepository
+ .findAll()
+ .stream()
+ .filter(student -> student
+ .getExams()
+ .stream()
+ .noneMatch(exam -> exam.getType() == Exam.Type.MATH))
+ .findFirst()
+ .orElseThrow(NoSuchElementException::new);
}
@Override
public List findStudentsWhoTakeEngExamWith11RatingOrMore() {
- throw new UnsupportedOperationException("Need to make implementation");
+ return studentRepository
+ .findAll()
+ .stream()
+ .filter(student -> student
+ .getExams()
+ .stream()
+ .anyMatch(exam -> exam.getType() == Exam.Type.ENGLISH)
+ &&
+ student.getRating() >= 11)
+ .collect(Collectors.toList());
}
@Override
public List findStudentsWithMathRatingMoreThanAvgAndTakeEngExam() {
- throw new UnsupportedOperationException("Need to make implementation");
+ OptionalDouble average = studentRepository
+ .findAll()
+ .stream()
+ .map(Student::getExams)
+ .flatMap(Collection::stream)
+ .filter(exam -> exam.getType() == Exam.Type.MATH)
+ .mapToDouble(Exam::getScore)
+ .average();
+
+ double avg = average.orElseThrow(NoSuchElementException::new);
+
+ return studentRepository
+ .findAll()
+ .stream()
+ .filter(student -> student
+ .getExams()
+ .stream()
+ .anyMatch(exam -> exam.getType() == Exam.Type.ENGLISH)
+ &&
+ student
+ .getExams()
+ .stream()
+ .anyMatch(exam -> exam.getType() == Exam.Type.MATH
+ &&
+ exam.getScore() > avg))
+ .collect(Collectors.toList());
}
@Override
public Student findStudentWithMaxEngRating() {
- throw new UnsupportedOperationException("Need to make implementation");
+ return studentRepository.findAll().stream()
+ .filter(student -> student.getExams().stream().anyMatch(exam -> exam.getType() == Exam.Type.ENGLISH))
+ .max((student, t1) -> {
+ Optional score1 = student.getExams().stream().filter(exam -> exam.getType() == Exam.Type.ENGLISH).findAny();
+ Optional score2 = t1.getExams().stream().filter(exam -> exam.getType() == Exam.Type.ENGLISH).findAny();
+
+ return (int) (score1.get().getScore() - score2.get().getScore());
+ })
+ .orElseThrow(NoSuchElementException::new);
}
//Delimiter: ','
@Override
public List getExamSumAndRatingForEachStudent() {
- throw new UnsupportedOperationException("Need to make implementation");
+ return studentRepository
+ .findAll()
+ .stream()
+ .map(student -> student
+ .getExams()
+ .stream()
+ .mapToDouble(Exam::getScore)
+ .sum()
+ + ","
+ + student.getRating()
+ + ","
+ +student.getName())
+ .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..77e5c70
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..f5c020a
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..a0cd878
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..3bd8fba
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..14eade0
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..8892474
Binary files /dev/null and b/target/classes/com/kpi/fict/repositories/StudentRepository.class differ
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..b07a22e
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,6 @@
+com/kpi/fict/DefaultStudentService.class
+com/kpi/fict/repositories/StudentRepository.class
+com/kpi/fict/entities/Exam$Type.class
+com/kpi/fict/StudentService.class
+com/kpi/fict/entities/Student.class
+com/kpi/fict/entities/Exam.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..45e34ec
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,5 @@
+/home/windows/javaLab/java-lab01/src/main/java/com/kpi/fict/entities/Exam.java
+/home/windows/javaLab/java-lab01/src/main/java/com/kpi/fict/repositories/StudentRepository.java
+/home/windows/javaLab/java-lab01/src/main/java/com/kpi/fict/DefaultStudentService.java
+/home/windows/javaLab/java-lab01/src/main/java/com/kpi/fict/entities/Student.java
+/home/windows/javaLab/java-lab01/src/main/java/com/kpi/fict/StudentService.java