Skip to content
Snippets Groups Projects
Commit 004570ec authored by Julian Dehne's avatar Julian Dehne
Browse files

Merge remote-tracking branch 'gitup/groupfinding_module' into groupfinding_module

# Conflicts:
#	gemeinsamforschen/src/main/java/unipotsdam/gf/modules/group/GroupDAO.java
#	gemeinsamforschen/src/main/java/unipotsdam/gf/modules/group/GroupfindingImpl.java
#	gemeinsamforschen/src/test/java/unipotsdam/gf/process/tasks/GroupPhaseTaskTest.java
#	gemeinsamforschen/src/test/resources/database/fltrail.sql
parents ede92756 43353b87
No related branches found
No related tags found
No related merge requests found
Showing
with 28 additions and 171 deletions
......@@ -208,7 +208,7 @@ public class CommunicationService implements ICommunication {
@Override
public boolean addUserToChatRoom(User user, String roomId)
throws RocketChatDownException, UserDoesNotExistInRocketChatException {
return modifyChatRoom(user, roomId, false);
return modifyChatRoom(user, roomId, true);
}
@Override
......
......@@ -11,6 +11,7 @@ public class Group {
private List<User> members;
private String projectName;
private String chatRoomId;
private String name;
public Group() {
members = new ArrayList<>();
......@@ -68,8 +69,6 @@ public class Group {
members.add(user);
}
public int getId() {
return id;
}
......@@ -88,4 +87,12 @@ public class Group {
public int hashCode() {
return getId();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
......@@ -25,15 +25,15 @@ public class GroupView {
private Management iManagement;
@Inject
ProjectDAO projectDAO;
private ProjectDAO projectDAO;
@Inject
GroupFormationProcess groupFormationProcess;
private GroupFormationProcess groupFormationProcess;
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/all/project/{projectName}")
@Path("/all/projects/{projectName}")
public GroupData getGroups(@PathParam("projectName") String projectName) {
GroupData data = groupFormationProcess.getOrInitializeGroups(new Project(projectName));
return data;
......
......@@ -82,6 +82,8 @@ public class GroupfindingImpl implements IGroupFinding {
//int numberOf4Groups = getNumberOf4Groups(numberOfUsers);
Group group = new Group();
int i = 1;
group.setName(i + "");
for (User user : usersByProjectName) {
if (numberOf3Groups > 0) {
numberOf3Groups--;
......@@ -89,11 +91,15 @@ public class GroupfindingImpl implements IGroupFinding {
if (group.getMembers().size() == 3) {
result.add(group);
group = new Group();
i++;
group.setName(i + "");
}
} else {
if (group.getMembers().size() == 4) {
result.add(group);
group = new Group();
i++;
group.setName(i + "");
}
}
group.addMember(user);
......
/*
package unipotsdam.gf.modules.groupfinding.service;
import org.apache.logging.log4j.util.Strings;
import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
import unipotsdam.gf.modules.group.Group;
import unipotsdam.gf.mysql.MysqlConnect;
import unipotsdam.gf.mysql.VereinfachtesResultSet;
import unipotsdam.gf.util.ResultSetUtil;
import javax.annotation.ManagedBean;
import javax.annotation.Resource;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.*;
@ManagedBean
@Resource
@Singleton
public class GroupDAO {
private MysqlConnect connect;
@Inject
public GroupDAO(MysqlConnect connect) {
this.connect = connect;
}
public ArrayList<String> getStudentsInSameGroupAs(StudentIdentifier student) {
connect.connect();
ArrayList<String> result = new ArrayList<>();
Integer groupId;
String mysqlRequest1 = "SELECT groupId FROM `groupuser` WHERE `projectId`=? AND `studentId`=?";
VereinfachtesResultSet vereinfachtesResultSet1 =
connect.issueSelectStatement(mysqlRequest1, student.getProjectName(), student.getUserEmail());
vereinfachtesResultSet1.next();
groupId = vereinfachtesResultSet1.getInt("groupId");
String mysqlRequest2 = "SELECT * FROM `groupuser` WHERE `groupId`=?";
VereinfachtesResultSet vereinfachtesResultSet2 =
connect.issueSelectStatement(mysqlRequest2, groupId);
boolean next2 = vereinfachtesResultSet2.next();
while (next2) {
String peer = vereinfachtesResultSet2.getString("studentId");
if (!peer.equals(student.getUserEmail()))
result.add(peer);
next2 = vereinfachtesResultSet2.next();
}
connect.close();
return result;
}
public void persist(Group group) {
connect.connect();
List<Group> existingGroups = getExistingEntriesOfGroups(group.get());
if (Objects.isNull(group.getChatRoomId())) {
group.setChatRoomId("");
}
String mysqlRequestGroup = "INSERT INTO groups (`projectId`,`chatRoomId`) values (?,?)";
connect.issueInsertOrDeleteStatement(mysqlRequestGroup, group.getProjectId(), group.getChatRoomId());
List<Group> existingGroupsWithNewEntry = getExistingEntriesOfGroups(group.getProjectId());
existingGroupsWithNewEntry.removeAll(existingGroups);
group.setId(existingGroupsWithNewEntry.get(0).getId());
for (User groupMember : group.getMembers()) {
String mysqlRequest2 = "INSERT INTO groupuser (`studentId`, `projectId`, `groupId`) values (?,?,?)";
connect.issueInsertOrDeleteStatement(mysqlRequest2, groupMember.getEmail(), group.getProjectId(), group.getId());
}
connect.close();
}
public void updateRocketChatUserName(Group group) {
connect.connect();
String mysqlRequest = "UPDATE groups SET projectId = ?, chatRoomId = ? where id = ?";
connect.issueUpdateStatement(mysqlRequest, group.getProjectId(), group.getChatRoomId(), group.getId());
connect.close();
// TODO: implement updateRocketChatUserName of groupuser if needed later (if member list need to be updated)
}
public void clearChatRoomIdOfGroup(String chatRoomId) {
connect.connect();
String mysqlRequest = "updateRocketChatUserName groups SET chatRoomId = ? where chatRoomId = ?";
connect.issueUpdateStatement(mysqlRequest, "", chatRoomId);
connect.close();
}
public Boolean exists(Group group) {
List<Group> existingGroups = getGroupsByProjectId(group.getProjectId());
return existingGroups.contains(group);
}
public void addGroupMember(User groupMember, int groupId) {
// TODO: implement
}
public void deleteGroupMember(User groupMember, int groupId) {
// TODO: implement
}
public List<Group> getGroupsByProjectId(String projectId) {
connect.connect();
String mysqlRequest = "SELECT * FROM groups g " +
"JOIN groupuser gu ON g.id=gu.groupId " + "JOIN users u ON gu.studentId=u.email " +
"where g.projectId = ?";
VereinfachtesResultSet vereinfachtesResultSet =
connect.issueSelectStatement(mysqlRequest, projectId);
if (Objects.isNull(vereinfachtesResultSet)) {
connect.close();
return Collections.emptyList();
}
HashMap<Integer, Group> groupHashMap = new HashMap<>();
while (vereinfachtesResultSet.next()) {
fillGroupFromResultSet(vereinfachtesResultSet, groupHashMap);
}
ArrayList<Group> groups = new ArrayList<>();
groupHashMap.forEach((key, group) -> groups.add(group));
connect.close();
return groups;
}
private void fillGroupFromResultSet(VereinfachtesResultSet vereinfachtesResultSet, HashMap<Integer, Group> existingGroups) {
int id = vereinfachtesResultSet.getInt("id");
if (existingGroups.containsKey(id)) {
existingGroups.get(id).addMember(ResultSetUtil.getUserFromResultSet(vereinfachtesResultSet));
} else {
String projectId = vereinfachtesResultSet.getString("projectId");
User user = ResultSetUtil.getUserFromResultSet(vereinfachtesResultSet);
String chatRoomId = vereinfachtesResultSet.getString("chatRoomId");
ArrayList<User> userList = new ArrayList<>(Collections.singletonList(user));
Group group = new Group(id, userList, projectId, chatRoomId);
existingGroups.put(id, group);
}
}
private List<Group> getExistingEntriesOfGroups(String projectId) {
String mysqlExistingGroup = "SELECT * FROM groups WHERE projectId = ?";
VereinfachtesResultSet resultSet = connect.issueSelectStatement(mysqlExistingGroup, projectId);
ArrayList<Group> existingGroups = new ArrayList<>();
while (resultSet.next()) {
int id = resultSet.getInt("id");
Group existingGroup = new Group(id, projectId);
existingGroups.add(existingGroup);
}
return existingGroups;
}
}
*/
......@@ -84,7 +84,7 @@ public class UserView {
e.printStackTrace();
return registrationError();
}
return redirectToProjectPage(req, user);
return redirectToProjectPage(user);
}
......@@ -114,17 +114,17 @@ public class UserView {
try {
Boolean exists = projectCreationProcess.authenticateUser(user, req);
if (exists) {
redirectToUserExists();
user = fillUserFields(user);
return redirectToProjectPage(user);
} else {
return loginError();
}
} catch (UserDoesNotExistInRocketChatException e) {
loginError();
return loginError();
} catch (RocketChatDownException e) {
return loginError();
}
user = fillUserFields(user);
return redirectToProjectPage(req, user);
}
@POST
......@@ -163,7 +163,7 @@ public class UserView {
* @return
* @throws URISyntaxException
*/
private Response redirectToProjectPage(HttpServletRequest req, User user) throws URISyntaxException {
private Response redirectToProjectPage(User user) throws URISyntaxException {
String successUrl;
if (user.getStudent() != null && user.getStudent()) {
......
......@@ -28,8 +28,6 @@ public class GroupFormationProcess {
@Inject
TaskDAO taskDAO;
@Inject
private DossierCreationProcess dossierCreationProcess;
......@@ -40,9 +38,7 @@ public class GroupFormationProcess {
projectDAO.setGroupFormationMechanism(groupFormationMechanism, project);
}
// taskDAO.persistTeacherTask(project, TaskName.FORM_GROUPS_MANUALLY, Phase.GroupFormation);
/**
* this method can only be called to change the group formation to manual groups or single
* @param groupFormationMechanism
......
......@@ -10,8 +10,6 @@
<head>
<title>Gruppenfindung basierend auf psychometrischen Merkmalen wurde noch nicht implementiert. Klicken sie
auf zurück im browser</title>
<span>@Mirjam: Hier kämen deine Einstellungen für den Dozierenden bezüglich der Gruppenfindung basierend auf
Merkmalen</span>
</head>
<body>
......
......@@ -120,10 +120,10 @@ public class GroupPhaseTaskTest {
GroupData orInitializeGroups = groupFormationProcess.getOrInitializeGroups(project);
assertFalse(orInitializeGroups.getGroups().isEmpty());
groupFormationProcess.finalize(project);
/* groupFormationProcess.finalize(project);*/
ArrayList<Task> tasks = taskDAO.getTasks(teacher, project);
assertTrue(tasks != null && tasks.size() > 0);
/*ArrayList<Task> tasks = taskDAO.getTasks(teacher, project);
assertTrue(tasks != null && tasks.size() > 0);*/
/* for (User student : students) {
projectCreationProcess.deleteUser(student);
......
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