From 0eea70f8ba92f988f451a2e408b2796b93621bd7 Mon Sep 17 00:00:00 2001 From: Nikita Machekhin Date: Fri, 13 Dec 2019 03:42:41 +0200 Subject: [PATCH] Attempt#1 --- .classpath | 44 ++++++++++++++ .project | 23 +++++++ .settings/org.eclipse.jdt.apt.core.prefs | 2 + .settings/org.eclipse.jdt.core.prefs | 9 +++ .settings/org.eclipse.m2e.core.prefs | 4 ++ .../com/kpi/fict/DefaultStudentService.java | 57 ++++++++++++++++-- .../com/kpi/fict/DefaultStudentService.class | Bin 0 -> 5820 bytes .../classes/com/kpi/fict/StudentService.class | Bin 0 -> 514 bytes .../com/kpi/fict/entities/Exam$Type.class | Bin 0 -> 1093 bytes .../classes/com/kpi/fict/entities/Exam.class | Bin 0 -> 1435 bytes .../com/kpi/fict/entities/Student.class | Bin 0 -> 2452 bytes .../fict/repositories/StudentRepository.class | Bin 0 -> 1505 bytes 12 files changed, 134 insertions(+), 5 deletions(-) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.apt.core.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 target/classes/com/kpi/fict/DefaultStudentService.class create mode 100644 target/classes/com/kpi/fict/StudentService.class create mode 100644 target/classes/com/kpi/fict/entities/Exam$Type.class create mode 100644 target/classes/com/kpi/fict/entities/Exam.class create mode 100644 target/classes/com/kpi/fict/entities/Student.class create mode 100644 target/classes/com/kpi/fict/repositories/StudentRepository.class 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 0000000000000000000000000000000000000000..ea362e5e760db4bdd280364cf22aa4f8511be630 GIT binary patch literal 5820 zcmb7Id0ZUj8GgRy7}!i;vn7eSLx8}N=*9%25ljOtn6waLK+>euI@ujy!mvYkXQ{FN ztoAsabJD$+Tw47-V+qsmUwukl1jFHq8R0>3nXfs;e)Y9Ye zp~FY?q^+P@U{&CB@R-1otgC0gK5b6TbZnit=L9;wj}`)SQ`kz(^wF90=P)Uc3jMCCS5HKW9K)~>AC2uDDt31 zLgAG`_P~TSqD|_9nmy5-P7S5?K`W#8U8_w+N#Pdi4+t07CZ#0Xx@X3DEU&>m7ebec z%fND4tW8gwN4v8LE9VfuH4tGTr6ZOr(C?wBBknBo;wKwydHWQ=2-R z(wbSi8|KV{l8zWV6vh}P6pWKb0qb)`RT#1d*3fwmmuegg!$evETb*z0xlB@Ffq7D9 zG&83UjR`C*u)@K^<6D#iCL__{+-NC}LXVNwGDnA|Nnf@cr?7G=X7FrskgYM7BnS6+ zaQM4KISS6vRi?MdkdCUj4$ooTrktW5l_5AoF;TrM^9UO^*jNNTUKd1cZqA6&;$d4$ zP7bpE-MN_uXIm6CXpy{nfr=O6Ma-<0KFSuBoR9@n&iCRRh#it6=p`y%ikGqevc`3; zdwZB~?i5;XA-Sbtmpp@TLIs+!~k6d$Vi@KI`sP zEHF#Fh7iWBc#FLDyj4=vcf|WWHd=$X6Yb4X@E#S%@J{lMeM3*DcuOmHqC|-o9$QZs zT~g0`q@H_aE6#UHUu=14Dfm7W@0Z!Au`So1A^;t-ZOsFKtk6!0=?Ofj-~oY^=CHv_W_>k2KBpA&)pIC<$HHuVpI4DY zih`euAm#0SMa50d-j}&I&-p|IU$3vi%}-=7QTAJ&>hGy|1zt&W-z}Q^v5MC^=6>Xu zJ6o}P5k&Aa>HjZPybiZe;V&Y%#o0T7->LY$?0s^;4JUauq@%wreVYo@LZF{`11*9- z7HIe0%y<+cEh$1PT_*n=m;^B>+W+-Nt-KC&F==05%n^-*s>6V_8UWurc;2Nt5l)1=jBEJ%p~S{y-&@<>)j^_;2*JG)o0rmprS zy}D2l)pW83A`+HO-*e<9IxlT@w9i8K%HW6>bKNOSp24%^lU>1LFlTXX1FpaQPAHYf zP+4&=&s8|}xR#p1df@9H^{rq{uB6pf7M-)?Lya&Ku92 z8@v*U`P_M)bl~|R-XQ&AIrXy#K3!DyuiZS*EadbaYHm@l_6 zyxi|gtK$m?l;_JB)yN`h**uGzH{Ny^)^L%}(Q67$&CP{;&jslp#-%KnPTK48*=%v* z59Q-;a%^${dNwcTUkOLF5a}Hyfx0B=^C^u6lNxc9axi*Iuct>+>Gp?k>p?2M?G)a4 z5_d=6Hj8)o^879tlD|95;@z`&Z;_oFoGv}Yez%WVy@I`OKmSiKj7==!t)%`%{98nN zyXzF;<&g3`>GR-?(Cq#9R1)Zq zP=5#?#mD$}nnn5m+)15%~^c|-^90_)pziH{J>fL5I@0Boz>6rEBxA7 z{RV%)pPbcS@K5~PS^Wq9BM{Uqgs2o%&Z=4{qE>`yHA?%ZaY8KGwL++(PDHTc|3J~K ARsaA1 literal 0 HcmV?d00001 diff --git a/target/classes/com/kpi/fict/StudentService.class b/target/classes/com/kpi/fict/StudentService.class new file mode 100644 index 0000000000000000000000000000000000000000..022d1d65ced8fbab6bef774ae96f6e4fc8e7dc1c GIT binary patch literal 514 zcmZvZy-ve06h^NLZD{$cU_pX`1q2JJRJJ0d4DFPv5~qgFJD@ zR$eP-bwyh&zGMV08I{aRirk6oV@KKyDN8p|2weYj&QEC(8dp$xK_}AIFg_B}m2g_^ q`mQiq1PJW7*8ym{>YLDV>^W+{p5u0nJ2l>~@xd=XbeoRKO~+qKwvF)s literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..755dae78ba37be90bfb0961fd519520ea59845f5 GIT binary patch literal 1093 zcma)4-*3`T6#niC6uP=0I_B7PZZZWnsrc&!val>TiNF%eNQh6R-eD&cQpzI#m9mE| z8W*4aqm1WvRfx%gedxL8$M@au+;e{Z`g#fAIiAXxV^}wPUF~Dv(vB_D)wu0iuEhsh z>66h-)<=CVBfzk5Vw@UU$FSR4$sTqYZR~jVF|qvHtmhfEw literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c8ca93882326bf1d2ef8e71944557fdb78e47f2d GIT binary patch literal 1435 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