diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java index 4d272a101ef35ae94b8d370d70b94133d2c7f754..e587817757e2ac520295cf8e444ae30e54e58a0f 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java @@ -1,11 +1,10 @@ package unipotsdam.gf.interfaces; -import unipotsdam.gf.assignments.NotImplementedLogger; import unipotsdam.gf.modules.assessment.QuizAnswer; import unipotsdam.gf.modules.assessment.controller.model.*; import java.util.ArrayList; -import java.util.List; +import java.util.Map; /** * Created by dehne on 18.05.2018. @@ -42,7 +41,7 @@ public interface IPeerAssessment { * * @param totalPerformance @return */ - List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance); // calculates marks for every performance and writes it to an array + Map<StudentIdentifier, Double> calculateAssessment(ArrayList<Performance> totalPerformance); // calculates marks for every performance and writes it to an array /** @@ -84,4 +83,6 @@ public interface IPeerAssessment { */ void answerQuiz(StudentAndQuiz studentAndQuiz, QuizAnswer quizAnswer); void deleteQuiz(String quizId); + + Map<String, Double> calculateAssessment(String projectId, String method); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java index 0de6aa34c5c74904885c1c27031cc6d197dd4b54..ca3c82dc4acc198e83d88446f952bd7559a99f2b 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java @@ -4,7 +4,7 @@ import unipotsdam.gf.modules.assessment.QuizAnswer; import unipotsdam.gf.modules.assessment.controller.model.*; import java.util.ArrayList; -import java.util.List; +import java.util.Map; /** * Created by dehne on 18.05.2018. @@ -27,7 +27,7 @@ public class FBAssessement extends AssessmentDAO { } @Override - public List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance) { + public Map<StudentIdentifier, Double> calculateAssessment(ArrayList<Performance> totalPerformance) { return null; } @@ -68,4 +68,9 @@ public class FBAssessement extends AssessmentDAO { public void deleteQuiz(String quizId) { } + + @Override + public Map<String, Double> calculateAssessment(String projectId, String method) { + return null; + } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java index 3fe2ec1467544c2430088961ac16019421a817a1..0abcace8bd73264eae5718f2768651eb0b6cfa73 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java @@ -1,11 +1,9 @@ package unipotsdam.gf.modules.assessment.controller.service; -import sun.misc.Perf; import unipotsdam.gf.interfaces.IPeerAssessment; import unipotsdam.gf.modules.assessment.QuizAnswer; import unipotsdam.gf.modules.assessment.controller.model.*; -import java.lang.reflect.Array; import java.util.*; public class PeerAssessment implements IPeerAssessment { @@ -40,20 +38,27 @@ public class PeerAssessment implements IPeerAssessment { } @Override - public List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance) { - List<Grading> quizMean = quizGrade(totalPerformance); - List<Grading> workRateMean = workRateGrade(totalPerformance); + public Map<StudentIdentifier, Double> calculateAssessment(ArrayList<Performance> totalPerformance) { + Map<StudentIdentifier, Double> quizMean = new HashMap<>(quizGrade(totalPerformance)); + Map<StudentIdentifier, Double> workRateMean = new HashMap<>(workRateGrade(totalPerformance)); + Map<StudentIdentifier, Double> result = new HashMap<>(); Grading[] grading = new Grading[totalPerformance.size()]; - for (int i = 0; i < quizMean.size(); i++) { - double grade = (quizMean.get(i).getGrade() + workRateMean.get(i).getGrade()) / 2.0; - grading[i] = new Grading(totalPerformance.get(i).getStudentIdentifier(), grade); + for (StudentIdentifier student : quizMean.keySet()) { + double grade = (quizMean.get(student) + workRateMean.get(student)) / 2.0; + result.put(student, grade); } - return Arrays.asList(grading); + return result; + } + + @Override + public Map<String, Double> calculateAssessment(String projectId, String method) { + + return null; } - private List<Grading> quizGrade(ArrayList<Performance> totalPerformance) { + private Map<StudentIdentifier, Double> quizGrade(ArrayList<Performance> totalPerformance) { double[] allAssessments = new double[totalPerformance.size()]; - Grading[] grading = new Grading[totalPerformance.size()]; + Map<StudentIdentifier, Double> grading = new HashMap<>(); for (int i = 0; i < totalPerformance.size(); i++) { for (int j = 0; j < totalPerformance.get(i).getQuizAnswer().length; j++) { @@ -62,15 +67,14 @@ public class PeerAssessment implements IPeerAssessment { allAssessments[i] = 6.0 - 5.0 * allAssessments[i] / totalPerformance.get(i).getQuizAnswer().length; } for (int i = 0; i < totalPerformance.size(); i++) { - Grading shuttle = new Grading(totalPerformance.get(i).getStudentIdentifier(), allAssessments[i]); - grading[i] = shuttle; + grading.put(totalPerformance.get(i).getStudentIdentifier(), allAssessments[i]); } - return Arrays.asList(grading); + return grading; } - private List<Grading> workRateGrade(ArrayList<Performance> totalPerformance) { - double[] allGrades = new double[totalPerformance.size()]; - Grading[] grading = new Grading[totalPerformance.size()]; + private Map<StudentIdentifier, Double> workRateGrade(ArrayList<Performance> totalPerformance) { + double[] allAssessments = new double[totalPerformance.size()]; + Map<StudentIdentifier, Double> grading = new HashMap<>(); for (int i = 0; i < totalPerformance.size(); i++) { Map workRating = totalPerformance.get(i).getWorkRating(); Iterator it = workRating.entrySet().iterator(); @@ -78,17 +82,17 @@ public class PeerAssessment implements IPeerAssessment { while (it.hasNext()) { HashMap.Entry pair = (HashMap.Entry) it.next(); Double rating = (Double) pair.getValue(); - allGrades[i] += rating; + allAssessments[i] += rating; it.remove(); // avoids a ConcurrentModificationException size++; } - allGrades[i] = 6 - allGrades[i] / size; + allAssessments[i] = 6 - allAssessments[i] / size; } for (int i = 0; i < totalPerformance.size(); i++) { - Grading shuttle = new Grading(totalPerformance.get(i).getStudentIdentifier(), allGrades[i]); - grading[i] = shuttle; + grading.put(totalPerformance.get(i).getStudentIdentifier(), allAssessments[i]); + } - return Arrays.asList(grading); + return grading; } private Map<String, Double> meanOfWorkRatings(ArrayList<Map<String, Double>> workRatings) { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java index 83542ad1054ebd2f4ad015f77348d4ff30e653fa..7ad879368708fe30d9def371edd2f26babc542a9 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java @@ -75,6 +75,11 @@ public class PeerAssessmentDummy implements IPeerAssessment { } + @Override + public Map<String, Double> calculateAssessment(String projectId, String method) { + return null; + } + @Override public Assessment getAssessmentDataFromDB(StudentIdentifier student) { int[] quizAnswer = {1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1}; @@ -90,21 +95,8 @@ public class PeerAssessmentDummy implements IPeerAssessment { } @Override - public List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance) { - double[] allAssessments = new double[totalPerformance.size()]; - Grading[] grading = new Grading[totalPerformance.size()]; - - for (int i = 0; i < totalPerformance.size(); i++) { - for (int j = totalPerformance.get(i).getQuizAnswer().length; j > 0; j--) { - allAssessments[i] += totalPerformance.get(i).getQuizAnswer()[j]; - } - allAssessments[i] = allAssessments[i] / totalPerformance.get(i).getQuizAnswer().length; - } - for (int i = 0; i < totalPerformance.size(); i++) { - Grading shuttle = new Grading(totalPerformance.get(i).getStudentIdentifier(), allAssessments[i]); - grading[i] = shuttle; - } - return Arrays.asList(grading); + public Map<StudentIdentifier, Double> calculateAssessment(ArrayList<Performance> totalPerformance) { + return null; } @Override diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java index 32d6278b3263ede80ae10d96e315942cdeb13fd6..abe7f48e6c1d4c4e71b250da574a6db7c266b2ba 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java @@ -1,11 +1,9 @@ package unipotsdam.gf.modules.assessment.controller.view; -import sun.misc.Perf; import unipotsdam.gf.interfaces.IPeerAssessment; import unipotsdam.gf.modules.assessment.QuizAnswer; import unipotsdam.gf.modules.assessment.controller.model.*; import unipotsdam.gf.modules.assessment.controller.service.PeerAssessment; -import unipotsdam.gf.modules.assessment.controller.service.PeerAssessmentDummy; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; @@ -67,7 +65,6 @@ public class QuizView implements IPeerAssessment { throw new AssertionError("UTF-8 is unknown"); } } - ////////////////////////////funktioniert//////////////////////////////////////////////////////// @POST @Produces(MediaType.TEXT_PLAIN) @@ -107,11 +104,20 @@ public class QuizView implements IPeerAssessment { @Produces(MediaType.APPLICATION_JSON) @Path("/calculate") @Override - public List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance) { + public Map<StudentIdentifier, Double> calculateAssessment(ArrayList<Performance> totalPerformance) { return peer.calculateAssessment(totalPerformance); } ////////////////////////funktioniert primitiv/////////todo: nicht als jersey zu nutzen/////////////////////////////// + @POST + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + @Path("/calculate/projectId/{projectId}/cheatChecker/{method}") + public Map<String, Double> calculateAssessment(@PathParam("projectId") String projectId, @PathParam("method") String method) { + return peer.calculateAssessment(projectId, method); + } + + @GET @Produces(MediaType.APPLICATION_JSON) @Path("/mean/project/{projectId}")