Skip to content
Snippets Groups Projects
Commit 740f165e authored by Axel's avatar Axel
Browse files

beaut: exchanged List by Map in the return value of calculateAssessment()

parent 7493378c
No related branches found
No related tags found
No related merge requests found
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);
}
......@@ -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;
}
}
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) {
......
......@@ -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
......
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}")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment