Skip to content
Snippets Groups Projects
Commit 0925673a authored by Axel's avatar Axel
Browse files

feat: phase shift works with condition check. feedback check is the last dummy.

parent 560f7315
No related branches found
No related tags found
No related merge requests found
......@@ -7,8 +7,10 @@ import unipotsdam.gf.core.states.model.ConstraintsMessages;
import unipotsdam.gf.core.states.model.ProjectPhase;
import unipotsdam.gf.interfaces.*;
import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
import unipotsdam.gf.modules.assessment.controller.service.PeerAssessment;
import unipotsdam.gf.modules.assessment.controller.service.PeerAssessmentDummy;
import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
import unipotsdam.gf.modules.journal.service.IJournalImpl;
import unipotsdam.gf.modules.peer2peerfeedback.DummyFeedback;
import unipotsdam.gf.view.Messages;
......@@ -26,13 +28,13 @@ import java.util.Map;
@ManagedBean
public class PhasesImpl implements IPhases {
private IPeerAssessment iPeerAssessment = new PeerAssessmentDummy();
private IPeerAssessment iPeerAssessment = new PeerAssessment();
private Feedback feedback = new DummyFeedback();
private ICommunication iCommunication = new CommunicationDummyService();
private IJournal iJournal;
private IJournal iJournal = new IJournalImpl();
public PhasesImpl() {
}
......@@ -76,7 +78,8 @@ public class PhasesImpl implements IPhases {
@Override
public void endPhase(ProjectPhase currentPhase, Project project) {
ProjectPhase changeToPhase = getNextPhase(currentPhase);
Map<StudentIdentifier, ConstraintsMessages> tasks = new HashMap<>();
Map<StudentIdentifier, ConstraintsMessages> tasks;
if (changeToPhase != null)
switch (changeToPhase) {
case CourseCreation:
// saving the state
......@@ -122,6 +125,7 @@ public class PhasesImpl implements IPhases {
case Projectfinished:
closeProject();
break;
default:{}
}
}
......@@ -129,7 +133,7 @@ public class PhasesImpl implements IPhases {
// TODO implement
}
ProjectPhase getNextPhase(ProjectPhase projectPhase) {
private ProjectPhase getNextPhase(ProjectPhase projectPhase) {
switch (projectPhase) {
case CourseCreation:
return ProjectPhase.GroupFormation;
......
......@@ -2,7 +2,11 @@ package unipotsdam.gf.modules.assessment.controller.service;
import unipotsdam.gf.core.database.mysql.MysqlConnect;
import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
import unipotsdam.gf.modules.assessment.controller.model.*;
import unipotsdam.gf.core.states.model.Constraints;
import unipotsdam.gf.core.states.model.ConstraintsMessages;
import unipotsdam.gf.modules.assessment.controller.model.Categories;
import unipotsdam.gf.modules.assessment.controller.model.Grading;
import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
import javax.annotation.ManagedBean;
import javax.annotation.Resource;
......@@ -36,7 +40,7 @@ class AssessmentDBCommunication {
return result;
}
Boolean getWorkRating(StudentIdentifier student, String fromStudent){
Boolean getWorkRating(StudentIdentifier student, String fromStudent) {
MysqlConnect connect = new MysqlConnect();
connect.connect();
String mysqlRequest = "SELECT * FROM `workrating` WHERE `projectId`=? AND `studentId`=? AND `fromPeer`=?";
......@@ -72,7 +76,7 @@ class AssessmentDBCommunication {
return result;
}
ArrayList<String> getStudentsByGroupAndProject(Integer groupId, String projectId){
ArrayList<String> getStudentsByGroupAndProject(Integer groupId, String projectId) {
ArrayList<String> result = new ArrayList<>();
MysqlConnect connect = new MysqlConnect();
connect.connect();
......@@ -80,7 +84,7 @@ class AssessmentDBCommunication {
VereinfachtesResultSet vereinfachtesResultSet =
connect.issueSelectStatement(mysqlRequest, groupId, projectId);
Boolean next = vereinfachtesResultSet.next();
while (next){
while (next) {
result.add(vereinfachtesResultSet.getString("studentId"));
next = vereinfachtesResultSet.next();
}
......@@ -135,7 +139,7 @@ class AssessmentDBCommunication {
void writeAnsweredQuiz(StudentIdentifier student, Map<String, Boolean> questions) {
MysqlConnect connect = new MysqlConnect();
connect.connect();
for (String question: questions.keySet()){
for (String question : questions.keySet()) {
String mysqlRequest = "INSERT INTO `answeredquiz`(`projectId`, `studentId`, `question`, `correct`) VALUES (?,?,?,?)";
connect.issueInsertOrDeleteStatement(mysqlRequest,
student.getProjectId(),
......@@ -167,13 +171,13 @@ class AssessmentDBCommunication {
connect.close();
}
Integer getWhichGroupToRate(StudentIdentifier student){
Integer getWhichGroupToRate(StudentIdentifier student) {
Integer result;
MysqlConnect connect = new MysqlConnect();
connect.connect();
String mysqlRequest1 = "SELECT groupId FROM `groupuser` WHERE `projectId`=? AND `studentId`=? ";
VereinfachtesResultSet vereinfachtesResultSet1 =
connect.issueSelectStatement(mysqlRequest1, student.getProjectId(),student.getStudentId());
connect.issueSelectStatement(mysqlRequest1, student.getProjectId(), student.getStudentId());
vereinfachtesResultSet1.next();
Integer groupId = vereinfachtesResultSet1.getInt("groupId");
......@@ -182,13 +186,13 @@ class AssessmentDBCommunication {
connect.issueSelectStatement(mysqlRequest2, student.getProjectId());
Boolean next = vereinfachtesResultSet2.next();
result = vereinfachtesResultSet2.getInt("groupId");
while(next){
if (vereinfachtesResultSet2.getInt("groupId") == groupId){
while (next) {
if (vereinfachtesResultSet2.getInt("groupId") == groupId) {
next = vereinfachtesResultSet2.next();
if (next){
if (next) {
result = vereinfachtesResultSet2.getInt("groupId");
}
}else{
} else {
next = vereinfachtesResultSet2.next();
}
......@@ -243,4 +247,60 @@ class AssessmentDBCommunication {
return result;
}
Map<StudentIdentifier, ConstraintsMessages> missingAssessments(String projectId) {
Map<StudentIdentifier, ConstraintsMessages> result = new HashMap<>();
ArrayList<String> studentsInProject = new ArrayList<>(getStudents(projectId));
ArrayList<StudentIdentifier> missingStudentsCauseOfWorkrating = missingWorkRatings(studentsInProject, projectId);
if (missingStudentsCauseOfWorkrating != null)
for (StudentIdentifier missingStudent : missingStudentsCauseOfWorkrating) {
result.put(missingStudent, new ConstraintsMessages(Constraints.AssessmentOpen, missingStudent));
}
// ArrayList<StudentIdentifier> missingStudentsCauseOfQuiz <--- I can't check that atm
ArrayList<StudentIdentifier> missingStudentsCauseOfContribution = missingContribution(studentsInProject, projectId);
if (missingStudentsCauseOfContribution != null)
for (StudentIdentifier missingStudent : missingStudentsCauseOfContribution) {
result.put(missingStudent, new ConstraintsMessages(Constraints.AssessmentOpen, missingStudent));
}
return result;
}
private ArrayList<StudentIdentifier> missingWorkRatings(ArrayList<String> studentsInProject, String projectId) {
MysqlConnect connect = new MysqlConnect();
connect.connect();
ArrayList<StudentIdentifier> result = new ArrayList<>();
String sqlSelectWorkRating = "SELECT DISTINCT fromPeer FROM `workrating` WHERE `projectId`='"+projectId+"' AND `fromPeer`=''";
for (String studentId : studentsInProject) {
sqlSelectWorkRating = sqlSelectWorkRating + " OR `fromPeer`='" + studentId+"'";
}
VereinfachtesResultSet selectWorkRatingResultSet =
connect.issueSelectStatement(sqlSelectWorkRating);
Boolean next = selectWorkRatingResultSet.next();
resultSetToStudentIdentifierList(studentsInProject, projectId, result, selectWorkRatingResultSet, next);
return result;
}
private ArrayList<StudentIdentifier> missingContribution(ArrayList<String> studentsInProject, String projectId) {
MysqlConnect connect = new MysqlConnect();
connect.connect();
ArrayList<StudentIdentifier> result = new ArrayList<>();
String sqlContribution = "SELECT DISTINCT cr.fromPeer FROM groupuser gu " +
"JOIN contributionrating cr ON gu.groupId=cr.groupId WHERE gu.projectId = ?;";
VereinfachtesResultSet selectContributionResultSet =
connect.issueSelectStatement(sqlContribution, projectId);
Boolean next = selectContributionResultSet.next();
resultSetToStudentIdentifierList(studentsInProject, projectId, result, selectContributionResultSet, next);
return result;
}
private void resultSetToStudentIdentifierList(ArrayList<String> studentsInProject, String projectId, ArrayList<StudentIdentifier> result, VereinfachtesResultSet selectWorkRatingResultSet, Boolean next) {
while (next) {
String fromPeer = selectWorkRatingResultSet.getString("fromPeer");
if (!studentsInProject.contains(fromPeer)) {
StudentIdentifier studentIdentifier = new StudentIdentifier(projectId, fromPeer);
result.add(studentIdentifier);
}
next = selectWorkRatingResultSet.next();
}
}
}
......@@ -63,7 +63,9 @@ public class PeerAssessment implements IPeerAssessment {
@Override
public Map<StudentIdentifier, ConstraintsMessages> allAssessmentsDone(String projectId) {
return null;
Map<StudentIdentifier, ConstraintsMessages> result;
result = new AssessmentDBCommunication().missingAssessments(projectId);
return result;
}
@Override
......
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