From 2924727ed358fde906e78ad8bc7fd899e8599f28 Mon Sep 17 00:00:00 2001 From: Thomas Schnaak <schnaak@uni-potsdam.de> Date: Thu, 30 Aug 2018 13:08:49 +0200 Subject: [PATCH] #65 feat: partly implemented getPortfoliosForEvaluationPrepared and assignMissingPortfolioTasks --- .../unipotsdam/gf/interfaces/IJournal.java | 7 --- .../gf/modules/journal/DummyJournalImpl.java | 59 ------------------- .../modules/journal/model/dao/JournalDAO.java | 2 + .../journal/model/dao/JournalDAOImpl.java | 24 ++++++++ .../model/dao/ProjectDescriptionDAO.java | 6 ++ .../model/dao/ProjectDescriptionDAOImpl.java | 23 ++++++++ .../modules/journal/service/IJournalImpl.java | 46 ++++++++++----- .../journal/service/JournalService.java | 6 ++ .../journal/service/JournalServiceImpl.java | 24 +++++++- .../service/ProjectDescriptionImpl.java | 22 +++++++ .../service/ProjectDescriptionService.java | 8 +++ 11 files changed, 145 insertions(+), 82 deletions(-) delete mode 100644 gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/DummyJournalImpl.java diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java index 1750b873..24c7cd99 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java @@ -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 diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/DummyJournalImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/DummyJournalImpl.java deleted file mode 100644 index 50da0c81..00000000 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/DummyJournalImpl.java +++ /dev/null @@ -1,59 +0,0 @@ -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; - } -} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/JournalDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/JournalDAO.java index f9ff9601..ef61f37c 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/JournalDAO.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/JournalDAO.java @@ -1,5 +1,6 @@ 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); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImpl.java index 1c5ce831..2ae0dff6 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImpl.java @@ -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 * diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAO.java index 3137a9fe..d4f31bab 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAO.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAO.java @@ -1,8 +1,12 @@ 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); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAOImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAOImpl.java index ec76a962..958d41bd 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAOImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAOImpl.java @@ -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(); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/IJournalImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/IJournalImpl.java index 15ca144a..f22f951a 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/IJournalImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/IJournalImpl.java @@ -1,5 +1,7 @@ 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; } + + } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalService.java index 755b1cf5..be8dc781 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalService.java @@ -1,5 +1,7 @@ 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); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java index 79bf05ed..41e0d747 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java @@ -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 diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java index 77ed95bb..b292898b 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java @@ -1,5 +1,8 @@ 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; + } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java index 2d76e6c4..fbf6dc1e 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java @@ -1,8 +1,12 @@ 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); } -- GitLab