diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java index 1750b873a33a184cee3e9a1b911ab48ea53c4762..24c7cd99c37535e026277bf7449ab6c7eb441089 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 50da0c81b96dd2a5501eab940ce84682ac2d72c8..0000000000000000000000000000000000000000 --- 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 f9ff960168c8515ae8c188aa2e3d87bb85d74be6..ef61f37c6af869dbe35ca33d00bdca71152d36cd 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 1c5ce831a639be436e37f2cbc7dce58bd1eebc34..2ae0dff6402db42aa1efd917e2c09f7570dbdf6d 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 3137a9fe0be906f35f38e23115190f14b3a0576a..d4f31bab858c799d258aa77c90894141337f8ad4 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 ec76a9622ddbc43270f0ffefc0016aed8265bd9b..958d41bd8207eaa419142499cd897df6b51dc080 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 15ca144ac8807f6b12522242395d571b0118e99e..f22f951a7b6f95ca3d036c90adcdfe91ba45bf01 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 755b1cf594ca1fb3516d4096567bbc2eba522b8f..be8dc781a90624f648196f0a74a55203ae053215 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 79bf05ed35a80df31fdf7f4c1cb93ad5a16c62c0..41e0d747e2b20e8d026272975b0524c403b8669c 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 77ed95bb2febbf0a04a3cb6399493e657ba68125..b292898b9cacba09aaecfa95517a88f920bd6895 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 2d76e6c454b6c745611742a95b734f9a9d7212a6..fbf6dc1e9ef202d2e9ae12c214b284d472e931f1 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); }