From aaae912c82a19014d1a892bc2263723960ffe256 Mon Sep 17 00:00:00 2001 From: Martin Staehr <software@mstaehr.net> Date: Sun, 9 Sep 2018 21:47:13 +0200 Subject: [PATCH] #40 feat: finish implementation of dummy project creation --- .../gf/core/management/Management.java | 4 ++++ .../gf/core/management/ManagementImpl.java | 17 ++++++++++++++++ .../gf/core/management/group/Group.java | 16 +++++++++++++++ .../service/GroupCreationService.java | 20 +++++++++---------- .../src/scripts/dbschema/fltrail.sql | 2 +- 5 files changed, 48 insertions(+), 11 deletions(-) diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java index 17049249..442f743a 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java @@ -58,6 +58,8 @@ public interface Management { */ void update(User user); + void update(Group group); + /** * Add an entry in the M:N table linking users and projects * @@ -81,6 +83,8 @@ public interface Management { Boolean exists(Project project); + Boolean exists(Group group); + /** * Get all the users linked to a project * diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java index 16cfe59b..5159addd 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java @@ -107,6 +107,16 @@ public class ManagementImpl implements Management { connect.close(); } + @Override + public void update(Group group) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "UPDATE group SET projectId=?,chatRoomid=?"; + connect.issueUpdateStatement(mysqlRequest, group.getProjectId(), group.getChatRoomId()); + + // TODO: implement update of groupuser if needed later (if member list need to be updated) + } + @Override public Boolean exists(User user) { Boolean result; @@ -133,6 +143,12 @@ public class ManagementImpl implements Management { return result; } + @Override + public Boolean exists(Group group) { + List<Group> groups = getGroupsByProjectId(group.getProjectId()); + return groups.contains(group); + } + @Override public List<User> getUsers(Project project) { String query = @@ -341,6 +357,7 @@ public class ManagementImpl implements Management { if (groups.isEmpty()) { return null; } + connect.close(); return groups; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/Group.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/Group.java index d98a0d85..fe513b53 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/Group.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/Group.java @@ -4,6 +4,7 @@ import unipotsdam.gf.core.management.user.User; import java.util.ArrayList; import java.util.List; +import java.util.Objects; public class Group { @@ -36,6 +37,21 @@ public class Group { this.chatRoomId = chatRoomId; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Group group = (Group) o; + return Objects.equals(members, group.members) && + Objects.equals(projectId, group.projectId) && + Objects.equals(chatRoomId, group.chatRoomId); + } + + @Override + public int hashCode() { + return Objects.hash(members, projectId, chatRoomId); + } + public List<User> getMembers() { return members; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java index 09fba126..3e948c29 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java @@ -30,25 +30,25 @@ public class GroupCreationService { public boolean createExampleProject() { User docentUser = getDocentUser(); - Project project = new Project("1", "", true, docentUser.getEmail(), "admin"); + Project project = new Project("1", "password", true, docentUser.getEmail(), "admin"); List<Group> groups = createDummyGroups(project.getId()); if (!management.exists(project)) { management.create(project); } + List<Group> nonCreatedGroups = groups.stream().filter(group -> management.exists(group)).collect(Collectors.toList()); - groups.forEach(group -> management.create(group)); - // TODO: read List<Group> of database to get Id for chatRoomName (Should be ProjectName - GroupId) - // TODO: implement sql service injection for, so connection is only done once in app - - - List<Group> nonEmptyGroups = groups.stream().filter(group -> group.getMembers().isEmpty()) - .collect(Collectors.toList()); - if (nonEmptyGroups.isEmpty()) { - return false; + if (!nonCreatedGroups.isEmpty()) { + nonCreatedGroups.forEach(group -> management.create(group)); } + List<Group> groupsWithId = management.getGroupsByProjectId(project.getId()); + groupsWithId.forEach(group -> { + String chatRoomName = String.join(" - ", project.getId(), String.valueOf(group.getId())); + group.setChatRoomId(communicationService.createChatRoom(chatRoomName, group.getMembers())); + management.update(group); + }); return true; } diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql index 2a353a77..22a07cbc 100644 --- a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql +++ b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql @@ -22,7 +22,7 @@ CREATE TABLE if not exists `projects` ( CREATE TABLE if not exists `groups` ( `id` int NOT NULL AUTO_INCREMENT, `projectId` varchar(400) NOT NULL, - `chatRoomId` varchar(400) NOT NULL, + `chatRoomId` varchar(400), PRIMARY KEY (id) ) ENGINE = InnoDB DEFAULT CHARSET = utf8; -- GitLab