Skip to content
Snippets Groups Projects
Commit f2e6f8e6 authored by Martin Stähr's avatar Martin Stähr
Browse files

feat: start implementing groupCreationDummy #40

chore: adding todos
parent 5b5c8dc9
No related branches found
No related tags found
No related merge requests found
...@@ -119,6 +119,6 @@ public interface Management { ...@@ -119,6 +119,6 @@ public interface Management {
void deleteGroupMember(User groupMember, int groupId); void deleteGroupMember(User groupMember, int groupId);
List<Group> getGroups(String projectId); List<Group> getGroupsByProjectId(String projectId);
} }
...@@ -165,6 +165,13 @@ public class ManagementImpl implements Management { ...@@ -165,6 +165,13 @@ public class ManagementImpl implements Management {
return new Project(id, password, active, timestamp, author, adminPassword, token); return new Project(id, password, active, timestamp, author, adminPassword, token);
} }
private Group getGroupFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) {
int id = vereinfachtesResultSet.getInt("id");
String projectId = vereinfachtesResultSet.getString("projectId");
String chatRoomId = vereinfachtesResultSet.getString("chatRoomId");
// TODO: determine how to get all User
return new Group(id, new ArrayList<>(), projectId, chatRoomId);
}
@Override @Override
public String getUserToken(User user) { public String getUserToken(User user) {
MysqlConnect connect = new MysqlConnect(); MysqlConnect connect = new MysqlConnect();
...@@ -227,6 +234,7 @@ public class ManagementImpl implements Management { ...@@ -227,6 +234,7 @@ public class ManagementImpl implements Management {
} }
} }
@Override @Override
public void createGroup(Group group, String projectId) { public void createGroup(Group group, String projectId) {
MysqlConnect connect = new MysqlConnect(); MysqlConnect connect = new MysqlConnect();
...@@ -252,7 +260,23 @@ public class ManagementImpl implements Management { ...@@ -252,7 +260,23 @@ public class ManagementImpl implements Management {
} }
@Override @Override
public List<Group> getGroups(String projectId) { public List<Group> getGroupsByProjectId(String projectId) {
return null; MysqlConnect connect = new MysqlConnect();
connect.connect();
// TODO: implement correct join and finish implementation
String mysqlRequest = "SELECT * FROM groups g " +
"JOIN groupuser gu u ON g.id=gu.groupId " + "JOIN users u ON gu.userEmail=u.email" +
"where g.projectId = ?";
VereinfachtesResultSet vereinfachtesResultSet =
connect.issueSelectStatement(mysqlRequest, projectId);
ArrayList<Group> groups = new ArrayList<>();
while (vereinfachtesResultSet.next()) {
//groups.add()
}
if (groups.isEmpty()) {
return null;
} else {
return groups;
}
} }
} }
...@@ -2,16 +2,35 @@ package unipotsdam.gf.core.management.group; ...@@ -2,16 +2,35 @@ package unipotsdam.gf.core.management.group;
import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.core.management.user.User;
import java.util.*; import java.util.List;
public class Group { public class Group {
private int id; // do not set yourself, autoincrement
private List<User> members;
private String projectId;
private String chatRoomId;
public Group() {
}
public Group(List<User> members, String projectId) {
this.members = members;
this.projectId = projectId;
this.chatRoomId = "";
}
List<User> members; public Group(List<User> members, String projectId, String chatRoomId) {
this.members = members;
this.projectId = projectId;
this.chatRoomId = chatRoomId;
}
public Group(List<User> members) { public Group(int id, List<User> members, String projectId, String chatRoomId) {
this.id = id;
this.members = members; this.members = members;
this.projectId = projectId;
this.chatRoomId = chatRoomId;
} }
public List<User> getMembers() { public List<User> getMembers() {
...@@ -22,5 +41,27 @@ public class Group { ...@@ -22,5 +41,27 @@ public class Group {
this.members = members; this.members = members;
} }
public String getChatRoomId() {
return chatRoomId;
}
public void setChatRoomId(String chatRoomId) {
this.chatRoomId = chatRoomId;
}
public void addMember(User user) {
members.add(user);
}
public String getProjectId() {
return projectId;
}
public void setProjectId(String projectId) {
this.projectId = projectId;
}
public int getId() {
return id;
}
} }
...@@ -20,6 +20,16 @@ public class Project { ...@@ -20,6 +20,16 @@ public class Project {
public Project() { public Project() {
} }
public Project(String id, String password, Boolean active, String author, String adminPassword) {
this.id = id;
this.password = password;
this.active = active;
this.author = author;
this.adminPassword = adminPassword;
this.timecreated = Timestamp.valueOf(LocalDateTime.now(ZoneId.of("UTC")));
}
public Project(String id, String password, Boolean active, String author, String adminPassword, String token) { public Project(String id, String password, Boolean active, String author, String adminPassword, String token) {
this.id = id; this.id = id;
this.password = password; this.password = password;
......
package unipotsdam.gf.modules.groupCreation.service;
import unipotsdam.gf.core.management.Management;
import unipotsdam.gf.core.management.group.Group;
import unipotsdam.gf.core.management.project.Project;
import unipotsdam.gf.core.management.user.User;
import unipotsdam.gf.core.management.user.UserProfile;
import unipotsdam.gf.interfaces.ICommunication;
import javax.annotation.ManagedBean;
import javax.annotation.Resource;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@ManagedBean
@Resource
@Singleton
public class GroupCreationService {
@Inject
private ICommunication communicationService;
@Inject
private Management management;
public boolean createExampleProject() {
User docentUser = getDocentUser();
Project project = new Project("1", "", true, docentUser.getEmail(), "admin");
List<Group> groups = createDummyGroups(project.getId());
if (!management.exists(project)) {
management.create(project);
}
groups.forEach(group -> management.createGroup(group, project.getId()));
// TODO: read List<Group> of database to get Id for chatRoomName (Should be ProjectName - GroupId)
// TODO: add projectName as DatabaseEntry
// 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;
}
return true;
}
private List<Group> createDummyGroups(String projectId) {
Group group1 = new Group(new ArrayList<>(), projectId);
Group group2 = new Group(new ArrayList<>(), projectId);
Group group3 = new Group(new ArrayList<>(), projectId);
Group group4 = new Group(new ArrayList<>(), projectId);
List<Group> groups = Arrays.asList(group1, group2, group3, group4);
String baseUserName = "Name ";
String password = "test123";
String baseEMailFront = "test";
String baseEMailDomain = "@example.com";
boolean isStudentValue = true;
for (int userNumber = 0; userNumber < groups.size() * 5; userNumber++) {
String userName = baseUserName + (userNumber + 1);
String email = baseEMailFront + (userNumber + 1) + baseEMailDomain;
User user = new User(userName, password, email, isStudentValue);
if (!management.exists(user)) {
saveUserToDatabase(user);
int groupPosition = userNumber % groups.size();
groups.get(groupPosition).addMember(user);
}
}
return groups;
}
private User getDocentUser() {
User docent = new User("Julian", "docent", "docent@docent.com", false);
if (!management.exists(docent)) {
saveUserToDatabase(docent);
} else {
docent = management.getUserByEmail(docent.getEmail());
}
return docent;
}
private void saveUserToDatabase(User user) {
communicationService.registerAndLoginUser(user);
management.create(user, new UserProfile());
}
}
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