Skip to content
Snippets Groups Projects
Commit 2924727e authored by Thomas Schnaak's avatar Thomas Schnaak
Browse files

#65 feat: partly implemented getPortfoliosForEvaluationPrepared and assignMissingPortfolioTasks

parent c0be55a0
No related branches found
No related tags found
No related merge requests found
Showing
with 145 additions and 82 deletions
......@@ -19,13 +19,6 @@ import java.util.List;
public interface IJournal {
/**
* Exports the learning journal
* @param student StudentIdentifier
* @return the journal as String (may change)
*/
String exportJournal (StudentIdentifier student) ;
/**
* check if all students have prepared their portfolios to be evaluated
* @return
......
package unipotsdam.gf.modules.journal;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import unipotsdam.gf.core.management.project.Project;
import unipotsdam.gf.core.management.user.User;
import unipotsdam.gf.assignments.Assignee;
import unipotsdam.gf.assignments.NotImplementedLogger;
import unipotsdam.gf.interfaces.IJournal;
import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
import unipotsdam.gf.modules.journal.model.EPorfolio;
import unipotsdam.gf.modules.journal.model.Journal;
import unipotsdam.gf.modules.researchreport.ResearchReport;
import javax.swing.text.html.HTML;
import java.io.File;
import java.util.List;
public class DummyJournalImpl implements IJournal {
private Logger log = LoggerFactory.getLogger(DummyJournalImpl.class);
@Override
public String exportJournal(StudentIdentifier student) {
NotImplementedLogger.logAssignment(Assignee.THOMAS, IJournal.class);
return null;
}
@Override
public Boolean getPortfoliosForEvaluationPrepared(Project project) {
NotImplementedLogger.logAssignment(Assignee.THOMAS, IJournal.class);
return false;
}
@Override
public void assignMissingPortfolioTasks(Project project) {
NotImplementedLogger.logAssignment(Assignee.THOMAS, IJournal.class);
}
@Override
public void uploadJournalEntry(Journal journalEntry, User student) {
NotImplementedLogger.logAssignment(Assignee.THOMAS, IJournal.class);
}
@Override
public void uploadFinalPortfolio(
Project project, List<Journal> journalEntries, ResearchReport finalResearchReport, File presentation,
User user) {
NotImplementedLogger.logAssignment(Assignee.THOMAS, IJournal.class);
}
@Override
public EPorfolio getFinalPortfolioForAssessment(
Project project, User user) {
NotImplementedLogger.logAssignment(Assignee.THOMAS, IJournal.class);
return null;
}
}
package unipotsdam.gf.modules.journal.model.dao;
import unipotsdam.gf.core.management.project.Project;
import unipotsdam.gf.modules.journal.model.Journal;
import unipotsdam.gf.modules.journal.model.JournalFilter;
......@@ -22,4 +23,5 @@ public interface JournalDAO {
void closeJournal(String id);
ArrayList<String> getOpenJournals(Project project);
}
......@@ -2,6 +2,7 @@ package unipotsdam.gf.modules.journal.model.dao;
import unipotsdam.gf.core.database.mysql.MysqlConnect;
import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
import unipotsdam.gf.core.management.project.Project;
import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
import unipotsdam.gf.modules.journal.model.Journal;
import unipotsdam.gf.modules.journal.model.JournalFilter;
......@@ -165,6 +166,29 @@ public class JournalDAOImpl implements JournalDAO {
connection.close();
}
@Override
public ArrayList<String> getOpenJournals(Project project) {
ArrayList<String> userIds = new ArrayList<>();
// establish connection
MysqlConnect connection = new MysqlConnect();
connection.connect();
// build and execute request
String request = "SELECT * FROM journals WHERE project = ? AND open = ?;";
VereinfachtesResultSet rs = connection.issueSelectStatement(request, project, true);
while (rs.next()) {
userIds.add(getJournalFromResultSet(rs).getStudentIdentifier().getStudentId());
}
// close connection
connection.close();
return userIds;
}
/**
* extracts a journal from VereinfachtesResultSet
*
......
package unipotsdam.gf.modules.journal.model.dao;
import unipotsdam.gf.core.management.project.Project;
import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
import unipotsdam.gf.modules.journal.model.ProjectDescription;
import java.util.ArrayList;
import java.util.Collection;
public interface ProjectDescriptionDAO {
void createDescription(ProjectDescription projectDescription);
......@@ -12,4 +16,6 @@ public interface ProjectDescriptionDAO {
ProjectDescription getDescription(String id);
void deleteDescription(StudentIdentifier projectDescription);
void closeDescription(String projectDescriptionId);
ArrayList<String> getOpenDescriptions(Project project);
}
......@@ -4,6 +4,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import unipotsdam.gf.core.database.mysql.MysqlConnect;
import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
import unipotsdam.gf.core.management.project.Project;
import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
import unipotsdam.gf.modules.journal.model.ProjectDescription;
import unipotsdam.gf.modules.journal.util.JournalUtils;
......@@ -137,6 +138,28 @@ public class ProjectDescriptionDAOImpl implements ProjectDescriptionDAO {
connection.close();
}
@Override
public ArrayList<String> getOpenDescriptions(Project project) {
ArrayList<String> userIds = new ArrayList<>();
// establish connection
MysqlConnect connection = new MysqlConnect();
connection.connect();
// build and execute request
String request = "SELECT * FROM projectdescription WHERE project = ? AND open = ?;";
VereinfachtesResultSet rs = connection.issueSelectStatement(request, project, true);
while (rs.next()) {
userIds.add(getDescriptionFromResultSet(rs).getStudent().getStudentId());
}
// close connection
connection.close();
return userIds;
}
private ProjectDescription getDescriptionFromResultSet(VereinfachtesResultSet rs) {
String id = rs.getString("id");
long timestamp = rs.getTimestamp(2).getTime();
......
package unipotsdam.gf.modules.journal.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import unipotsdam.gf.core.management.project.Project;
import unipotsdam.gf.core.management.user.User;
import unipotsdam.gf.interfaces.IJournal;
......@@ -8,50 +10,64 @@ import unipotsdam.gf.modules.journal.model.EPorfolio;
import unipotsdam.gf.modules.journal.model.Journal;
import unipotsdam.gf.modules.researchreport.ResearchReport;
import javax.swing.text.html.HTML;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class IJournalImpl implements IJournal {
private Logger log = LoggerFactory.getLogger(IJournalImpl.class);
JournalService journalService = new JournalServiceImpl();
ProjectDescriptionService descriptionService = new ProjectDescriptionImpl();
@Override
public String exportJournal(StudentIdentifier student) {
return null;
}
@Override
public Boolean getPortfoliosForEvaluationPrepared(Project project) {
//Teilnehmer suchen
//Hat jeder Teilnehmer ein geschlossenenes Portfolio
if(!descriptionService.checkIfAllDescriptionsClosed(project) || !journalService.checkIfAllJournalClosed(project)){
//assignMissingPortfolioTasks()?
return false;
}
//Hat jeder die nötigen Journal
//TODO check Constrains (5? Journals...)...
return null;
return true;
}
@Override
public void assignMissingPortfolioTasks(Project project) {
//Teilnehmer suchen
//Hat jeder Teilnehmer ein geschlossenenes Portfolio
ArrayList<User> descUser = descriptionService.getOpenUserByProject(project);
for(User user : descUser){
log.debug("Send close description message to user {}", user.getId());
//TODO send message when implemented
}
ArrayList<User> journalUser = journalService.getOpenUserByProject(project);
for(User user : journalUser){
log.debug("Send close journal message to user {}", user.getId());
//TODO send message when implemented
}
//Hat jeder die nötigen Journal
}
@Override
public void uploadJournalEntry(Journal journalEntry, User student) {
//TODO
}
@Override
public void uploadFinalPortfolio(Project project, List<Journal> journalEntries, ResearchReport finalResearchReport, File presentation, User user) {
//TODO
}
@Override
......@@ -66,4 +82,6 @@ public class IJournalImpl implements IJournal {
return result;
}
}
package unipotsdam.gf.modules.journal.service;
import unipotsdam.gf.core.management.project.Project;
import unipotsdam.gf.core.management.user.User;
import unipotsdam.gf.modules.journal.model.Journal;
import unipotsdam.gf.modules.journal.model.JournalFilter;
......@@ -54,4 +56,8 @@ public interface JournalService {
void closeJournal(String journal);
boolean checkIfAllJournalClosed(Project project);
ArrayList<User> getOpenUserByProject(Project project);
}
......@@ -2,6 +2,9 @@ package unipotsdam.gf.modules.journal.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import unipotsdam.gf.core.management.ManagementImpl;
import unipotsdam.gf.core.management.project.Project;
import unipotsdam.gf.core.management.user.User;
import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
import unipotsdam.gf.modules.journal.model.Journal;
import unipotsdam.gf.modules.journal.model.JournalFilter;
......@@ -96,6 +99,23 @@ public class JournalServiceImpl implements JournalService {
log.debug("<<< close journal");
}
//TODO Export for assessment
}
@Override
public boolean checkIfAllJournalClosed(Project project) {
return (journalDAO.getOpenJournals(project).size() == 0);
}
@Override
public ArrayList<User> getOpenUserByProject(Project project) {
ManagementImpl management = new ManagementImpl();
ArrayList<String> userId = journalDAO.getOpenJournals(project);
ArrayList<User> users = new ArrayList<>();
for(String id : userId){
users.add(management.getUserByToken(id));
}
return users;
}
}
\ No newline at end of file
package unipotsdam.gf.modules.journal.service;
import unipotsdam.gf.core.management.ManagementImpl;
import unipotsdam.gf.core.management.project.Project;
import unipotsdam.gf.core.management.user.User;
import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
import unipotsdam.gf.modules.journal.model.Link;
import unipotsdam.gf.modules.journal.model.ProjectDescription;
......@@ -8,6 +11,7 @@ import unipotsdam.gf.modules.journal.model.dao.LinkDAOImpl;
import unipotsdam.gf.modules.journal.model.dao.ProjectDescriptionDAO;
import unipotsdam.gf.modules.journal.model.dao.ProjectDescriptionDAOImpl;
import java.util.ArrayList;
import java.util.Date;
public class ProjectDescriptionImpl implements ProjectDescriptionService {
......@@ -61,4 +65,22 @@ public class ProjectDescriptionImpl implements ProjectDescriptionService {
public void closeDescription(String projectDescrID) {
descriptionDAO.closeDescription(projectDescrID);
}
@Override
public boolean checkIfAllDescriptionsClosed(Project project) {
return (descriptionDAO.getOpenDescriptions(project).size() == 0); //TODO Jeder eine desc?
}
@Override
public ArrayList<User> getOpenUserByProject(Project project) {
ManagementImpl management = new ManagementImpl();
ArrayList<String> userId = descriptionDAO.getOpenDescriptions(project);
ArrayList<User> users = new ArrayList<>();
for(String id : userId){
users.add(management.getUserByToken(id));
}
return users;
}
}
package unipotsdam.gf.modules.journal.service;
import unipotsdam.gf.core.management.project.Project;
import unipotsdam.gf.core.management.user.User;
import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
import unipotsdam.gf.modules.journal.model.ProjectDescription;
import java.util.ArrayList;
/**
* Service for learning Journal
*/
......@@ -20,4 +24,8 @@ public interface ProjectDescriptionService {
void deleteLink(String link);
void closeDescription(String projectDescriptionId);
boolean checkIfAllDescriptionsClosed(Project project);
ArrayList<User> getOpenUserByProject(Project project);
}
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