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