diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..d6fd6f2
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,2 @@
+# Default ignored files
+/workspace.xml
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..df5f35d
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..77be960
--- /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..56b9ed8
--- /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..2a2e2e3
--- /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..b23047b
--- /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..018848e
--- /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..b6c990b
--- /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..2a8e120
--- /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..015afec
--- /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..61ea5ec
--- /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..d9880a0
--- /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..9b6fa18
--- /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..88a8a0f
--- /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..4679a93
--- /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..0cd9c54
--- /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..2b4cf2b
--- /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..4c771fd
--- /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..c8397c9
--- /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..f50c4f2
--- /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 47c60fc..eaa07f0 100644
--- a/src/main/java/com/kpi/fict/DefaultStudentService.java
+++ b/src/main/java/com/kpi/fict/DefaultStudentService.java
@@ -1,7 +1,14 @@
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.NoSuchElementException;
+import java.util.stream.Collectors;
+
public class DefaultStudentService implements StudentService {
private StudentRepository studentRepository;
@@ -10,35 +17,63 @@ public DefaultStudentService(StudentRepository studentRepository) {
}
@Override
- public void task1() {
- throw new UnsupportedOperationException("Need to make implementation");
+ public Student findFirstWithoutMath() {
+ return studentRepository
+ .findAll()
+ .stream()
+ .filter(student -> student
+ .getExams()
+ .stream()
+ .noneMatch(exam -> exam.getType() == Exam.Type.MATH))
+ .findFirst()
+ .orElseThrow(NoSuchElementException::new);
}
@Override
- public void task2() {
- throw new UnsupportedOperationException("Need to make implementation");
+ public List findStudentsWhoTakeMathAndOneMoreExam() {
+ 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 void task3() {
- throw new UnsupportedOperationException("Need to make implementation");
- }
+ public List findStudentsWithRatingMoreThanAvgAndTakeMathExam() {
+ double avgRating = studentRepository
+ .findAll()
+ .stream()
+ .mapToDouble(Student::getRating)
+ .average()
+ .orElse(0.0);
- @Override
- public void task4() {
- throw new UnsupportedOperationException("Need to make implementation");
+ return studentRepository
+ .findAll()
+ .stream()
+ .filter(s -> s.getRating() > avgRating && s
+ .getExams()
+ .stream()
+ .anyMatch(e -> e.getType() == Exam.Type.MATH))
+ .collect(Collectors.toList());
}
@Override
- public void task5() {
- throw new UnsupportedOperationException("Need to make implementation");
+ public double findAvgRatingOfMathExam() {
+ return studentRepository
+ .findAll()
+ .stream()
+ .map(Student::getExams)
+ .flatMap(Collection::stream)
+ .filter(e -> e.getType() == Exam.Type.MATH)
+ .mapToDouble(Exam::getScore)
+ .average()
+ .orElse(0.0);
}
- public StudentRepository getStudentRepository() {
- return studentRepository;
- }
-
- public void setStudentRepository(StudentRepository studentRepository) {
- this.studentRepository = studentRepository;
- }
+
}
diff --git a/src/main/java/com/kpi/fict/StudentService.java b/src/main/java/com/kpi/fict/StudentService.java
index 61c2f05..fefc0b2 100644
--- a/src/main/java/com/kpi/fict/StudentService.java
+++ b/src/main/java/com/kpi/fict/StudentService.java
@@ -1,13 +1,15 @@
package com.kpi.fict;
-public interface StudentService {
- void task1();
+import com.kpi.fict.entities.Student;
+
+import java.util.List;
- void task2();
+public interface StudentService {
+ Student findFirstWithoutMath();
- void task3();
+ List findStudentsWhoTakeMathAndOneMoreExam();
- void task4();
+ List findStudentsWithRatingMoreThanAvgAndTakeMathExam();
- void task5();
+ double findAvgRatingOfMathExam();
}
diff --git a/target/classes/com/kpi/fict/DefaultStudentService.class b/target/classes/com/kpi/fict/DefaultStudentService.class
new file mode 100644
index 0000000..e7181df
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..e15f9ff
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..f9cf8e1
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..87f2b18
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..49b94b7
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..57983bc
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..e69de29
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..cbff6cf
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,5 @@
+C:\Users\glush\Documents\Study\LISP\sixth-lab\java-lab01\src\main\java\com\kpi\fict\StudentService.java
+C:\Users\glush\Documents\Study\LISP\sixth-lab\java-lab01\src\main\java\com\kpi\fict\repositories\StudentRepository.java
+C:\Users\glush\Documents\Study\LISP\sixth-lab\java-lab01\src\main\java\com\kpi\fict\DefaultStudentService.java
+C:\Users\glush\Documents\Study\LISP\sixth-lab\java-lab01\src\main\java\com\kpi\fict\entities\Exam.java
+C:\Users\glush\Documents\Study\LISP\sixth-lab\java-lab01\src\main\java\com\kpi\fict\entities\Student.java