diff --git a/.gitignore.orig b/.gitignore.orig deleted file mode 100644 index 6edc488f16834fb336f66f6e7d6739d059a799fa..0000000000000000000000000000000000000000 --- a/.gitignore.orig +++ /dev/null @@ -1,26 +0,0 @@ -/.idea/.name -/.idea/compiler.xml -/.idea/copyright/profiles_settings.xml -/.idea/dataSources.ids -/.idea/dataSources.local.xml -/.idea/dataSources.xml -/.idea/deployment.xml -/.idea/encodings.xml -/.idea/misc.xml -/.idea/modules.xml -/.idea/sqldialects.xml -**/*.iml -**/workspace.xml -/gemeinsamforschen/**/.idea/* -/gemeinsamforschen/**/out -/gemeinsamforschen/**/target -/gemeinsamforschen/**/.settings -**/.project -**/.classpath -/.idea/vcs.xml -/.idea/workspace.xml -<<<<<<< HEAD -**/.idea -======= -/.idea/workspace.xml ->>>>>>> PeerAssessmentAxel diff --git a/gemeinsamforschen/pom.xml b/gemeinsamforschen/pom.xml index e48430b778b36e25c491b631959126d4b1fbd1bf..4941332d713933926882edf406d6139722a8ee21 100644 --- a/gemeinsamforschen/pom.xml +++ b/gemeinsamforschen/pom.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://maven.apache.org/POM/4.0.0" +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> @@ -52,7 +52,7 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> - <version>1.6.2</version> + <version>1.7.25</version> </dependency> <dependency> @@ -163,6 +163,12 @@ <groupId>io.dropwizard</groupId> <artifactId>dropwizard-core</artifactId> <version>1.3.4</version> + <exclusions> + <exclusion> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + </exclusion> + </exclusions> </dependency> <!-- websocket api --> @@ -207,6 +213,20 @@ <version>7.1.1.RELEASE</version> </dependency> + <!-- Documentation: https://github.com/vorburger/MariaDB4j --> + <dependency> + <groupId>ch.vorburger.mariaDB4j</groupId> + <artifactId>mariaDB4j</artifactId> + <version>2.3.0</version> + </dependency> + + + <dependency> + <groupId>commons-dbutils</groupId> + <artifactId>commons-dbutils</artifactId> + <version>1.7</version> + </dependency> + <dependency> <groupId>eu.de-swaef.pdf</groupId> <artifactId>Markdown2Pdf</artifactId> diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java index e81dba7f42a13d78c672f2bf4fc73faa327ec64c..a3c341336acee63aa72be2c060e97ad9584e9a91 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java @@ -1,15 +1,25 @@ package unipotsdam.gf.config; import org.glassfish.hk2.utilities.binding.AbstractBinder; +import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.management.Management; import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.management.project.ProjectDAO; +import unipotsdam.gf.core.management.user.UserDAO; import unipotsdam.gf.core.states.PhasesImpl; import unipotsdam.gf.core.testsandbox.TestList; import unipotsdam.gf.core.testsandbox.TestListInterface; -import unipotsdam.gf.interfaces.*; +import unipotsdam.gf.interfaces.Feedback; +import unipotsdam.gf.interfaces.ICommunication; +import unipotsdam.gf.interfaces.IGroupFinding; +import unipotsdam.gf.interfaces.IPeerAssessment; +import unipotsdam.gf.interfaces.IPhases; import unipotsdam.gf.modules.assessment.controller.service.PeerAssessmentDummy; import unipotsdam.gf.modules.communication.service.CommunicationDummyService; import unipotsdam.gf.modules.groupfinding.DummyGroupfinding; +import unipotsdam.gf.modules.groupfinding.GroupfindingImpl; +import unipotsdam.gf.modules.groupfinding.dummy.service.DummyProjectCreationService; +import unipotsdam.gf.modules.groupfinding.service.GroupDAO; import unipotsdam.gf.modules.peer2peerfeedback.DummyFeedback; import unipotsdam.gf.modules.researchreport.DummyResearchReportManagement; import unipotsdam.gf.modules.researchreport.ResearchReportManagement; @@ -30,6 +40,11 @@ public class GFApplicationBinder extends AbstractBinder { bind(DummyResearchReportManagement.class).to(ResearchReportManagement.class); bind(TestList.class).to(TestListInterface.class); bind(DummyGroupfinding.class).to(IGroupFinding.class); - + bind(DummyProjectCreationService.class).to(DummyProjectCreationService.class); + bind(UserDAO.class).to(UserDAO.class); + bind(ProjectDAO.class).to(ProjectDAO.class); + bind(GroupDAO.class).to(GroupDAO.class); + bind(MysqlConnect.class).to(MysqlConnect.class); + bind(GroupfindingImpl.class).to(IGroupFinding.class); } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/MysqlConnect.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/MysqlConnect.java index d5c42e2cceb64410da5b040a276c63c10083d4ee..09a128224173a6dcf257bdcf8f0edcf92458ccd5 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/MysqlConnect.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/MysqlConnect.java @@ -3,152 +3,161 @@ package unipotsdam.gf.core.database.mysql; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import unipotsdam.gf.config.GFDatabaseConfig; -import unipotsdam.gf.modules.communication.view.CommunicationView; -import java.sql.*; +import javax.annotation.ManagedBean; +import javax.annotation.Resource; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Types; import java.util.Date; +@ManagedBean +@Resource public class MysqlConnect { - private static final Logger log = LoggerFactory.getLogger(MysqlConnect.class); - - public Connection conn = null; - - private static String createConnectionString() { - - String connString = "jdbc:mysql://" + "localhost" + - "/" + GFDatabaseConfig.DB_NAME + - "?user=" + GFDatabaseConfig.USER + - "&password=" + GFDatabaseConfig.PASS; - return String.format(connString, GFDatabaseConfig.DB_NAME); - } - - public void connect() { - try { - try { - Class.forName("com.mysql.jdbc.Driver"); - } catch (ClassNotFoundException ex) { - System.out.println(ex); //logger? - } - conn = DriverManager.getConnection(createConnectionString()); - } catch (SQLException ex) { - System.out.println("SQLException: " + ex.getMessage()); - System.out.println("SQLState: " + ex.getSQLState()); - System.out.println("VendorError: " + ex.getErrorCode()); - throw new Error("could not connect to mysql"); - } - } - - - public void close() { - try { - if (conn != null) { - conn.close(); - } - } catch (final SQLException e) { - log.error(e.toString()); - throw new Error("could not close mysql"); - } - } - - private PreparedStatement addParameters(final String statement, final Object[] args) { - try { - final PreparedStatement ps = conn.prepareStatement(statement); - if (args != null) { - for (int i = 0; i < args.length; i++) { - final Object arg = args[i]; - setParam(ps, arg, i + 1); - } - } - return ps; - } catch (SQLException ex) { - log.error(ex.toString()); - System.out.println(ex); - } - return null; - } - - - public VereinfachtesResultSet issueSelectStatement(final String statement, final Object... args) { - try { - PreparedStatement ps = addParameters(statement, args); - ResultSet queryResult = ps.executeQuery(); - return new VereinfachtesResultSet(queryResult); - } catch (SQLException ex) { - log.error(ex.toString()); - System.out.println(ex); - } - return null; - } - - - public void otherStatements(final String statement) { - try { - this.conn.createStatement().execute(statement); - } catch (SQLException ex) { - log.error(ex.toString()); - System.out.println(ex); - } - } - - - public Integer issueUpdateStatement(final String statement, final Object... args) { - PreparedStatement ps = addParameters(statement, args); - try { - return ps.executeUpdate(); - } catch (SQLException ex) { - log.error(ex.toString()); - System.out.println(ex); - } - return null; - } - - - public void issueInsertOrDeleteStatement(final String statement, final Object... args) { - PreparedStatement ps = addParameters(statement, args); - try { - ps.execute(); - } catch (SQLException ex) { - - log.error(ex.toString()); - System.out.println(ex); - } - } - - private void setParam(final PreparedStatement ps, final Object arg, final int i) throws SQLException { - if (arg instanceof String) { - ps.setString(i, (String) arg); - } else if (arg instanceof Integer) { - ps.setInt(i, (Integer) arg); - } else if (arg instanceof Double) { - ps.setDouble(i, (Double) arg); - } else if (arg instanceof Boolean) { - ps.setBoolean(i, (Boolean) arg); - } else if (arg instanceof Float) { - ps.setFloat(i, (Float) arg); - } else if (arg instanceof Short) { - ps.setShort(i, (Short) arg); - } else if (arg instanceof Long) { - ps.setLong(i, (Long) arg); - } else if (arg instanceof Byte) { - ps.setByte(i, (Byte) arg); - } else if (arg instanceof Character) { - ps.setString(i, arg.toString()); - } else if (arg instanceof Date) { - final java.sql.Date d = new java.sql.Date(((Date) arg).getTime()); - ps.setDate(i, d); - } else if (arg == null) { - ps.setNull(i, Types.NULL); - } else { - ps.setString(i, arg.toString()); - } - } - - public Connection getConnection() { - return conn; - } - - public void setConnection(Connection conn) { - this.conn = conn; - } + private static final Logger log = LoggerFactory.getLogger(MysqlConnect.class); + + public Connection conn = null; + + private static String createConnectionString() { + + String connString = "jdbc:mysql://" + "localhost" + + "/" + GFDatabaseConfig.DB_NAME + + "?user=" + GFDatabaseConfig.USER + + "&password=" + GFDatabaseConfig.PASS; + return String.format(connString, GFDatabaseConfig.DB_NAME); + } + + public void connect() { + try { + try { + Class.forName("com.mysql.jdbc.Driver"); + } catch (ClassNotFoundException ex) { + System.out.println(ex); //logger? + } + conn = DriverManager.getConnection(createConnectionString()); + + } catch (SQLException ex) { + System.out.println("SQLException: " + ex.getMessage()); + System.out.println("SQLState: " + ex.getSQLState()); + System.out.println("VendorError: " + ex.getErrorCode()); + throw new Error("could not connect to mysql"); + } + } + + + public void close() { + try { + if (conn != null) { + conn.close(); + } + } catch (final SQLException e) { + log.error(e.toString()); + throw new Error("could not close mysql"); + } + } + + private PreparedStatement addParameters(final String statement, final Object[] args) { + try { + final PreparedStatement ps = conn.prepareStatement(statement); + if (args != null) { + for (int i = 0; i < args.length; i++) { + final Object arg = args[i]; + setParam(ps, arg, i + 1); + } + } + return ps; + } catch (SQLException ex) { + log.error(ex.toString()); + System.out.println(ex); + } + return null; + } + + + public VereinfachtesResultSet issueSelectStatement(final String statement, final Object... args) { + try { + PreparedStatement ps = addParameters(statement, args); + ResultSet queryResult = ps.executeQuery(); + return new VereinfachtesResultSet(queryResult); + } catch (SQLException ex) { + log.error(ex.toString()); + System.out.println(ex); + } + return null; + } + + + public void otherStatements(final String statement) { + try { + this.conn.createStatement().execute(statement); + } catch (SQLException ex) { + log.error(ex.toString()); + System.out.println(ex); + } + } + + + public Integer issueUpdateStatement(final String statement, final Object... args) { + PreparedStatement ps = addParameters(statement, args); + try { + return ps.executeUpdate(); + } catch (SQLException ex) { + log.error(ex.toString()); + System.out.println(ex); + } + return null; + } + + + public void issueInsertOrDeleteStatement(final String statement, final Object... args) { + PreparedStatement ps = addParameters(statement, args); + try { + ps.execute(); + } catch (SQLException ex) { + + log.error(ex.toString()); + System.out.println(ex); + } + } + + private void setParam(final PreparedStatement ps, final Object arg, final int i) throws SQLException { + if (arg instanceof String) { + ps.setString(i, (String) arg); + } else if (arg instanceof Integer) { + ps.setInt(i, (Integer) arg); + } else if (arg instanceof Double) { + ps.setDouble(i, (Double) arg); + } else if (arg instanceof Boolean) { + ps.setBoolean(i, (Boolean) arg); + } else if (arg instanceof Float) { + ps.setFloat(i, (Float) arg); + } else if (arg instanceof Short) { + ps.setShort(i, (Short) arg); + } else if (arg instanceof Long) { + ps.setLong(i, (Long) arg); + } else if (arg instanceof Byte) { + ps.setByte(i, (Byte) arg); + } else if (arg instanceof Character) { + ps.setString(i, arg.toString()); + } else if (arg instanceof Date) { + final java.sql.Date d = new java.sql.Date(((Date) arg).getTime()); + ps.setDate(i, d); + } else if (arg == null) { + ps.setNull(i, Types.NULL); + } else { + ps.setString(i, arg.toString()); + } + } + + public Connection getConnection() { + return conn; + } + + public void setConnection(Connection conn) { + this.conn = conn; + } } 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 17049249f83b82a452f31e805723a65bf11f7678..b864695f8dc6a8fa47e96d8c3faf84dd270a6ee2 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java @@ -6,9 +6,8 @@ import unipotsdam.gf.core.management.project.ProjectConfiguration; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.core.management.user.UserInterests; import unipotsdam.gf.core.management.user.UserProfile; -import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; -import java.util.List; +import java.io.FileInputStream; /** * Created by dehne on 31.05.2018. @@ -18,9 +17,9 @@ public interface Management { /** * delete a User in the database * - * @param identifier + * @param user */ - void delete(StudentIdentifier identifier); + void delete(User user); /** * create a User in the database @@ -58,6 +57,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,54 +82,12 @@ public interface Management { Boolean exists(Project project); - /** - * Get all the users linked to a project - * - * @param project - * @return - */ - List<User> getUsers(Project project); - - /** - * get the token for the user - * - * @param user - * @return - */ - String getUserToken(User user); - - /** - * get the user given his http token - * - * @param token - * @return - */ - User getUserByToken(String token); - - /** - * get user by its email address - * - * @param email - * @return - */ - User getUserByEmail(String email); - - /** - * get project by its id - * - * @param id - * @return - */ - Project getProjectById(String id); - - void addGroupMember(User groupMember, int groupId); - - void deleteGroupMember(User groupMember, int groupId); - - List<Group> getGroupsByProjectId(String projectId); + Boolean exists(Group group); void create(ProjectConfiguration projectConfiguration, Project project); ProjectConfiguration getProjectConfiguration(Project project); + + String saveProfilePicture(FileInputStream image, String studentId); } 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 c7aaeea34b0374b61d517cded8ef6aecda4d287d..9b15f63b4eb55301c37e67de7dfc4247198d29cf 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java @@ -1,28 +1,23 @@ package unipotsdam.gf.core.management; import unipotsdam.gf.core.database.mysql.MysqlConnect; -import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; import unipotsdam.gf.core.management.group.Group; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.project.ProjectConfiguration; import unipotsdam.gf.core.management.project.ProjectConfigurationDAO; +import unipotsdam.gf.core.management.project.ProjectDAO; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.management.user.UserDAO; import unipotsdam.gf.core.management.user.UserInterests; import unipotsdam.gf.core.management.user.UserProfile; -import unipotsdam.gf.core.states.model.ProjectPhase; -import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; +import unipotsdam.gf.modules.groupfinding.service.GroupDAO; import javax.annotation.ManagedBean; import javax.annotation.Resource; +import javax.inject.Inject; import javax.inject.Singleton; import java.io.FileInputStream; import java.sql.Blob; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.UUID; /** * Created by dehne on 31.05.2018. @@ -31,293 +26,76 @@ import java.util.UUID; @Resource @Singleton public class ManagementImpl implements Management { - @Override - public void delete(StudentIdentifier identifier) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "DELETE FROM users where email = (?)"; - connect.issueInsertOrDeleteStatement(mysqlRequest, identifier.getStudentId()); - connect.close(); - } - - @Override - public void create(User user, UserProfile profile) { - UUID uuid = UUID.randomUUID(); - String token = uuid.toString(); - - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "INSERT INTO users (`name`, `password`, `email`, `token`,`isStudent`," + - "`rocketChatId`,`rocketChatAuthToken`) values (?,?,?,?,?,?,?)"; - connect.issueInsertOrDeleteStatement(mysqlRequest, user.getName(), user.getPassword(), user.getEmail(), - token, user.getStudent(), user.getRocketChatId(), user.getRocketChatAuthToken()); - connect.close(); - - // TODO implmement UserProfile @Mar - } - - @Override - public void create(Project project) { - UUID uuid = UUID.randomUUID(); - String token = uuid.toString(); - - - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = - "INSERT INTO projects (`id`, `password`, `active`, `timecreated`, `author`, " - + "`adminPassword`, `token`, `phase`) values (?,?,?,?,?,?,?,?)"; - connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), project.getPassword(), project.isActive(), - project.getTimecreated(), project.getAuthor(), project.getAdminPassword(), token, project.getPhase() - == null ? ProjectPhase.CourseCreation : project.getPhase()); - connect.close(); - } - @Override - public void delete(Project project) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "DELETE FROM projects where id = (?)"; - connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId()); + private UserDAO userDAO; + private GroupDAO groupDAO; + private ProjectDAO projectDAO; - // TODO: delete all groups of project? + private MysqlConnect connect; - connect.close(); + @Inject + public ManagementImpl(UserDAO userDAO, GroupDAO groupDAO, ProjectDAO projectDAO, MysqlConnect connect) { + this.userDAO = userDAO; + this.groupDAO = groupDAO; + this.projectDAO = projectDAO; + this.connect = connect; } @Override public void register(User user, Project project, UserInterests interests) { - MysqlConnect connect = new MysqlConnect(); connect.connect(); String mysqlRequest = "INSERT INTO projectuser (`projectId`, `userId`) values (?,?)"; connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), user.getId()); connect.close(); } - @Override - public void update(User user) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "UPDATE `users` SET `name`=?,`password`=?,`email`=?,`token`=?,`isStudent`=?," + - "`rocketChatId`=?,`rocketChatAuthToken`=? WHERE email=? LIMIT 1"; - //TODO: maybe add handling if a line is actually updated - //TODO: if user is updated, it also must update all other tables which includes some information about the user, for example project user - - connect.issueUpdateStatement(mysqlRequest, user.getName(), user.getPassword(), user.getEmail(), - user.getToken(), user.getStudent(), user.getRocketChatId(), user.getRocketChatAuthToken(), user.getEmail()); - connect.close(); - } - - @Override - public Boolean exists(User user) { - Boolean result; - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM users where email = ? and password = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, user.getEmail(), user.getPassword()); - result = vereinfachtesResultSet.next(); - connect.close(); - return result; + public void delete(User user) { + userDAO.delete(user); } @Override - public Boolean exists(Project project) { - Boolean result; - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM projects where id = ? and adminPassword = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, project.getId(), project.getAdminPassword()); - result = vereinfachtesResultSet.next(); - connect.close(); - return result; + public void create(User user, UserProfile profile) { + userDAO.persist(user, profile); } @Override - public List<User> getUsers(Project project) { - String query = - "SELECT * FROM users u " - + " JOIN projectuser pu ON u.email=pu.userId" - + " JOIN projects p ON pu.projectId = p.id" - + " WHERE pu.projectId = ?"; - - ArrayList<User> result = new ArrayList<>(); - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(query, project.getId()); - while (!vereinfachtesResultSet.isLast()) { - Boolean next = vereinfachtesResultSet.next(); - if (next) { - User user = getUserFromResultSet(vereinfachtesResultSet); - String token = vereinfachtesResultSet.getString("token"); - user.setToken(token); - result.add(user); - } else { - break; - } - } - connect.close(); - return result; - } - - private User getUserFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) { - String name = vereinfachtesResultSet.getString("name"); - String password = vereinfachtesResultSet.getString("password"); - String email = vereinfachtesResultSet.getString("email"); - String token = vereinfachtesResultSet.getString("token"); - String rocketChatId = vereinfachtesResultSet.getString("rocketChatId"); - String rocketChatAuthToken = vereinfachtesResultSet.getString("rocketChatAuthToken"); - Boolean isStudent = vereinfachtesResultSet.getBoolean("isStudent"); - return new User(name, password, email, token, rocketChatId, rocketChatAuthToken, isStudent); - } - - private Project getProjectFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) { - String id = vereinfachtesResultSet.getString("id"); - String password = vereinfachtesResultSet.getString("password"); - boolean active = vereinfachtesResultSet.getBoolean("active"); - Timestamp timestamp = vereinfachtesResultSet.getTimestamp("timecreated"); - String author = vereinfachtesResultSet.getString("author"); - String adminPassword = vereinfachtesResultSet.getString("adminpassword"); - String token = vereinfachtesResultSet.getString("token"); - String phase = vereinfachtesResultSet.getString("phase"); - Project project = new Project(id, password, active, timestamp, author, adminPassword, token, ProjectPhase.valueOf(phase)); - ProjectPhase projectPhase = ProjectPhase.valueOf(phase); - project.setPhase(projectPhase); - return project; - } - - private void fillGroupFromResultSet(VereinfachtesResultSet vereinfachtesResultSet, HashMap<Integer, Group> existingGroups) { - int id = vereinfachtesResultSet.getInt("id"); - if (existingGroups.containsKey(id)) { - existingGroups.get(id).addMember(getUserFromResultSet(vereinfachtesResultSet)); - } else { - String projectId = vereinfachtesResultSet.getString("projectId"); - User user = getUserFromResultSet(vereinfachtesResultSet); - String chatRoomId = vereinfachtesResultSet.getString("chatRoomId"); - ArrayList<User> userList = new ArrayList<>(Collections.singletonList(user)); - Group group = new Group(userList, projectId, chatRoomId); - existingGroups.put(id, group); - } + public void update(User user) { + userDAO.update(user); } @Override - public String getUserToken(User user) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM users where email = ? and password = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, user.getEmail(), user.getPassword()); - boolean next = vereinfachtesResultSet.next(); - if (!next) { - connect.close(); - return null; - } - String token = vereinfachtesResultSet.getString("token"); - connect.close(); - return token; + public Boolean exists(User user) { + return userDAO.exists(user); } @Override - public User getUserByToken(String token) { - return getUserByField("token", token); + public void create(Project project) { + projectDAO.persist(project); } @Override - public User getUserByEmail(String email) { - return getUserByField("email", email); - } - - - /** - * - * - * @param value - * @return - */ - private User getUserByField(String field, String value) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM users where " + field + " = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, value); - boolean next = vereinfachtesResultSet.next(); - if (next) { - User user = getUserFromResultSet(vereinfachtesResultSet); - connect.close(); - return user; - } else { - connect.close(); - return null; - } + public void delete(Project project) { + projectDAO.delete(project); } @Override - public Project getProjectById(String id) { - if (id == null){ - return null; - } - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM projects where id = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, id); - boolean next = vereinfachtesResultSet.next(); - if (next) { - Project project = getProjectFromResultSet(vereinfachtesResultSet); - connect.close(); - return project; - } else { - connect.close(); - return null; - } + public Boolean exists(Project project) { + return projectDAO.exists(project); } @Override public void create(Group group) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - - String mysqlRequestGroup = "INSERT INTO groups (`projectId`,`chatRoomId`) values (?,?)"; - connect.issueInsertOrDeleteStatement(mysqlRequestGroup, group.getProjectId(), group.getChatRoomId()); - - for (User groupMember : group.getMembers()) { - String mysqlRequest2 = "INSERT INTO groupuser (`userEmail`, `groupId`) values (?,?)"; - connect.issueInsertOrDeleteStatement(mysqlRequest2, groupMember.getEmail(), group.getProjectId()); - } - connect.close(); - } - - @Override - public void addGroupMember(User groupMember, int groupId) { - // TODO: implement + groupDAO.persist(group); } @Override - public void deleteGroupMember(User groupMember, int groupId) { - // TODO: implement + public void update(Group group) { + groupDAO.update(group); } @Override - public List<Group> getGroupsByProjectId(String projectId) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM groups g " + - "JOIN groupuser gu ON g.id=gu.groupId " + "JOIN users u ON gu.userEmail=u.email" + - "where g.projectId = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, projectId); - HashMap<Integer, Group> groupHashMap = new HashMap<>(); - while (vereinfachtesResultSet.next()) { - fillGroupFromResultSet(vereinfachtesResultSet, groupHashMap); - } - ArrayList<Group> groups = new ArrayList<>(); - groupHashMap.forEach((key, group) -> groups.add(group)); - if (groups.isEmpty()) { - return null; - } - - return groups; + public Boolean exists(Group group) { + return groupDAO.exists(group); } @Override @@ -332,10 +110,10 @@ public class ManagementImpl implements Management { return projectConfigurationDAO.loadProjectConfiguration(project); } - public String saveProfilePicture(FileInputStream image, String studentId){ + public String saveProfilePicture(FileInputStream image, String studentId) { MysqlConnect connect = new MysqlConnect(); connect.connect(); - Blob blobbedImage= (Blob) image; + Blob blobbedImage = (Blob) image; String mysqlRequest = "INSERT INTO `profilepicture`(`studentId`, `image`) VALUES (?,?)"; connect.issueInsertOrDeleteStatement(mysqlRequest, studentId, blobbedImage); return "success"; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig deleted file mode 100644 index a9f8cae5c49aad332febf4bce32f0458125eb4a8..0000000000000000000000000000000000000000 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig +++ /dev/null @@ -1,389 +0,0 @@ -package unipotsdam.gf.core.management; - -import sun.misc.IOUtils; -import unipotsdam.gf.core.database.mysql.MysqlConnect; -import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; -import unipotsdam.gf.core.management.group.Group; -import unipotsdam.gf.core.management.project.Project; -import unipotsdam.gf.core.management.project.ProjectConfiguration; -import unipotsdam.gf.core.management.project.ProjectConfigurationDAO; -import unipotsdam.gf.core.management.user.User; -import unipotsdam.gf.core.management.user.UserInterests; -import unipotsdam.gf.core.management.user.UserProfile; -import unipotsdam.gf.core.states.model.ProjectPhase; -import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; - -import javax.annotation.ManagedBean; -import javax.annotation.Resource; -import javax.inject.Singleton; -import java.io.File; -import java.io.FileInputStream; -import java.sql.Blob; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.UUID; - -/** - * Created by dehne on 31.05.2018. - */ -@ManagedBean -@Resource -@Singleton -public class ManagementImpl implements Management { - @Override - public void delete(StudentIdentifier identifier) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "DELETE FROM users where email = (?)"; - connect.issueInsertOrDeleteStatement(mysqlRequest, identifier.getStudentId()); - connect.close(); - } - - @Override - public void create(User user, UserProfile profile) { - UUID uuid = UUID.randomUUID(); - String token = uuid.toString(); - - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "INSERT INTO users (`name`, `password`, `email`, `token`,`isStudent`," + - "`rocketChatId`,`rocketChatAuthToken`) values (?,?,?,?,?,?,?)"; - connect.issueInsertOrDeleteStatement(mysqlRequest, user.getName(), user.getPassword(), user.getEmail(), - token, user.getStudent(), user.getRocketChatId(), user.getRocketChatAuthToken()); - connect.close(); - - // TODO implmement UserProfile @Mar - } - - @Override - public void create(Project project) { - UUID uuid = UUID.randomUUID(); - String token = uuid.toString(); - - - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = - "INSERT INTO projects (`id`, `password`, `active`, `timecreated`, `author`, " - + "`adminPassword`, `token`, `phase`) values (?,?,?,?,?,?,?,?)"; - connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), project.getPassword(), project.isActive(), - project.getTimecreated(), project.getAuthor(), project.getAdminPassword(), token, project.getPhase() - == null ? ProjectPhase.CourseCreation : project.getPhase()); - connect.close(); - } - - @Override - public void delete(Project project) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "DELETE FROM projects where id = (?)"; - connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId()); - - // TODO: delete all groups of project? - - connect.close(); - } - - @Override - public void register(User user, Project project, UserInterests interests) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "INSERT INTO projectuser (`projectId`, `userId`) values (?,?)"; - connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), user.getId()); - connect.close(); - } - - @Override - public void update(User user) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "UPDATE `users` SET `name`=?,`password`=?,`email`=?,`token`=?,`isStudent`=?," + - "`rocketChatId`=?,`rocketChatAuthToken`=? WHERE email=? LIMIT 1"; - //TODO: maybe add handling if a line is actually updated - //TODO: if user is updated, it also must update all other tables which includes some information about the user, for example project user - - connect.issueUpdateStatement(mysqlRequest, user.getName(), user.getPassword(), user.getEmail(), - user.getToken(), user.getStudent(), user.getRocketChatId(), user.getRocketChatAuthToken(), user.getEmail()); - connect.close(); - } - - @Override - public Boolean exists(User user) { - Boolean result; - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM users where email = ? and password = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, user.getEmail(), user.getPassword()); - result = vereinfachtesResultSet.next(); - connect.close(); - return result; - } - - @Override - public Boolean exists(Project project) { - Boolean result; - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM projects where id = ? and adminPassword = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, project.getId(), project.getAdminPassword()); - result = vereinfachtesResultSet.next(); - connect.close(); - return result; - } - - @Override - public List<User> getUsers(Project project) { - String query = - "SELECT * FROM users u " - + " JOIN projectuser pu ON u.email=pu.userId" - + " JOIN projects p ON pu.projectId = p.id" - + " WHERE pu.projectId = ?"; - - ArrayList<User> result = new ArrayList<>(); - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(query, project.getId()); - while (!vereinfachtesResultSet.isLast()) { - Boolean next = vereinfachtesResultSet.next(); - if (next) { - User user = getUserFromResultSet(vereinfachtesResultSet); - String token = vereinfachtesResultSet.getString("token"); - user.setToken(token); - result.add(user); - } else { - break; - } - } - connect.close(); - return result; - } - - private User getUserFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) { - String name = vereinfachtesResultSet.getString("name"); - String password = vereinfachtesResultSet.getString("password"); - String email = vereinfachtesResultSet.getString("email"); - String token = vereinfachtesResultSet.getString("token"); - String rocketChatId = vereinfachtesResultSet.getString("rocketChatId"); - String rocketChatAuthToken = vereinfachtesResultSet.getString("rocketChatAuthToken"); - Boolean isStudent = vereinfachtesResultSet.getBoolean("isStudent"); - return new User(name, password, email, token, rocketChatId, rocketChatAuthToken, isStudent); - } - - private Project getProjectFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) { - String id = vereinfachtesResultSet.getString("id"); - String password = vereinfachtesResultSet.getString("password"); - boolean active = vereinfachtesResultSet.getBoolean("active"); - Timestamp timestamp = vereinfachtesResultSet.getTimestamp("timecreated"); - String author = vereinfachtesResultSet.getString("author"); - String adminPassword = vereinfachtesResultSet.getString("adminpassword"); - String token = vereinfachtesResultSet.getString("token"); - String phase = vereinfachtesResultSet.getString("phase"); -<<<<<<< HEAD - Project project = new Project(id, password, active, timestamp, author, adminPassword, token); - ProjectPhase projectPhase = ProjectPhase.valueOf(phase); - project.setPhase(projectPhase); - return project; -======= - - return new Project(id, password, active, timestamp, author, adminPassword, token, phase); ->>>>>>> origin/#40_dummyProjectCreation - } - - private void fillGroupFromResultSet(VereinfachtesResultSet vereinfachtesResultSet, HashMap<Integer, Group> existingGroups) { - int id = vereinfachtesResultSet.getInt("id"); - if (existingGroups.containsKey(id)) { - existingGroups.get(id).addMember(getUserFromResultSet(vereinfachtesResultSet)); - } else { - String projectId = vereinfachtesResultSet.getString("projectId"); - User user = getUserFromResultSet(vereinfachtesResultSet); - String chatRoomId = vereinfachtesResultSet.getString("chatRoomId"); - ArrayList<User> userList = new ArrayList<>(Collections.singletonList(user)); - Group group = new Group(userList, projectId, chatRoomId); - existingGroups.put(id, group); - } - } - - @Override - public String getUserToken(User user) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM users where email = ? and password = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, user.getEmail(), user.getPassword()); - boolean next = vereinfachtesResultSet.next(); - if (!next) { - connect.close(); - return null; - } - String token = vereinfachtesResultSet.getString("token"); - connect.close(); - return token; - } - - @Override - public User getUserByToken(String token) { - return getUserByField("token", token); - } - - @Override - public User getUserByEmail(String email) { - return getUserByField("email", email); - } - - - /** -<<<<<<< HEAD - * - * @param field - * @param value - * @return - */ -======= - * TODO @Axel bitte in modules/asessment verschieben - * - * @param projectId - * @param quizId - * @return - */ - public Quiz getQuizByProjectGroupId(String projectId, String quizId) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM quiz where projectId=" + projectId + " , question=" + quizId; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, ""); - boolean next = vereinfachtesResultSet.next(); - String question = ""; - ArrayList<String> correctAnswers = new ArrayList<String>(); - ArrayList<String> incorrectAnswers = new ArrayList<String>(); - String answer = ""; - Boolean correct = false; - String mcType = ""; - while (next) { - mcType = vereinfachtesResultSet.getString("mcType"); - question = vereinfachtesResultSet.getString("question"); - answer = vereinfachtesResultSet.getString("answer"); - correct = vereinfachtesResultSet.getBoolean("correct"); - if (correct) { - correctAnswers.add(answer); - } else { - incorrectAnswers.add(answer); - } - next = vereinfachtesResultSet.next(); - } - Quiz quiz = new Quiz(mcType, question, correctAnswers, incorrectAnswers); - connect.close(); - return quiz; - } - ->>>>>>> origin/#40_dummyProjectCreation - private User getUserByField(String field, String value) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM users where " + field + " = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, value); - boolean next = vereinfachtesResultSet.next(); - if (next) { - User user = getUserFromResultSet(vereinfachtesResultSet); - connect.close(); - return user; - } else { - connect.close(); - return null; - } - } - - @Override - public Project getProjectById(String id) { - if (id == null){ - return null; - } - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM projects where id = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, id); - boolean next = vereinfachtesResultSet.next(); - if (next) { - Project project = getProjectFromResultSet(vereinfachtesResultSet); - connect.close(); - return project; - } else { - connect.close(); - return null; - } - } - - @Override - public void create(Group group) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - - String mysqlRequestGroup = "INSERT INTO groups (`projectId`,`chatRoomId`) values (?,?)"; - connect.issueInsertOrDeleteStatement(mysqlRequestGroup, group.getProjectId(), group.getChatRoomId()); - - for (User groupMember : group.getMembers()) { - String mysqlRequest2 = "INSERT INTO groupuser (`userEmail`, `groupId`) values (?,?)"; - connect.issueInsertOrDeleteStatement(mysqlRequest2, groupMember.getEmail(), group.getProjectId()); - } - connect.close(); - } - - @Override - public void addGroupMember(User groupMember, int groupId) { - // TODO: implement - } - - @Override - public void deleteGroupMember(User groupMember, int groupId) { - // TODO: implement - } - - @Override - public List<Group> getGroupsByProjectId(String projectId) { - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM groups g " + - "JOIN groupuser gu ON g.id=gu.groupId " + "JOIN users u ON gu.userEmail=u.email" + - "where g.projectId = ?"; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, projectId); - HashMap<Integer, Group> groupHashMap = new HashMap<>(); - while (vereinfachtesResultSet.next()) { - fillGroupFromResultSet(vereinfachtesResultSet, groupHashMap); - } - ArrayList<Group> groups = new ArrayList<>(); - groupHashMap.forEach((key, group) -> groups.add(group)); - if (groups.isEmpty()) { - return null; - } - - return groups; - } - - @Override - public void create(ProjectConfiguration projectConfiguration, Project project) { - ProjectConfigurationDAO projectConfigurationDAO = new ProjectConfigurationDAO(); - projectConfigurationDAO.persistProjectConfiguration(projectConfiguration, project); - } - - @Override - public ProjectConfiguration getProjectConfiguration(Project project) { - ProjectConfigurationDAO projectConfigurationDAO = new ProjectConfigurationDAO(); - return projectConfigurationDAO.loadProjectConfiguration(project); - } - - public String saveProfilePicture(FileInputStream image, String studentId){ - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - Blob blobbedImage= (Blob) image; - String mysqlRequest = "INSERT INTO `profilepicture`(`studentId`, `image`) VALUES (?,?)"; - connect.issueInsertOrDeleteStatement(mysqlRequest, studentId, blobbedImage); - return "success"; - } -} 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 d98a0d85649f9c2fd76ca978c592a6f03b0307ce..b28673c9c84ef47efab4fead51a1604a52444657 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,8 @@ import unipotsdam.gf.core.management.user.User; import java.util.ArrayList; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; public class Group { @@ -15,6 +17,7 @@ public class Group { public Group() { } + public Group(String projectId) { this(new ArrayList<>(), projectId); } @@ -23,10 +26,12 @@ public class Group { this(members, projectId, ""); } + public Group(int id, String projectId) { + this(id, new ArrayList<>(), projectId, ""); + } + public Group(List<User> members, String projectId, String chatRoomId) { - this.members = members; - this.projectId = projectId; - this.chatRoomId = chatRoomId; + this(0, members, projectId, chatRoomId); } public Group(int id, List<User> members, String projectId, String chatRoomId) { @@ -67,4 +72,28 @@ public class Group { public int getId() { return id; } + + public void setId(int id) { + this.id = id; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Group group = (Group) o; + List<User> newMemberList = members.stream() + .filter(member -> group.members.contains(member)) + .collect(Collectors.toList()); + return Objects.equals(members.size(), newMemberList.size()) && + Objects.equals(members.size(), group.members.size()) && + Objects.equals(projectId, group.projectId) && + Objects.equals(chatRoomId, group.chatRoomId) && + Objects.equals(id, group.id) || Objects.equals(id, 0) || Objects.equals(group.id, 0); + } + + @Override + public int hashCode() { + return Objects.hash(members, projectId, chatRoomId); + } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java index d517c79ebb58ca45a7df73d4430fe546c3e91722..10df853274debb869f2e5c1324d8ce1d86e33417 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java @@ -1,8 +1,9 @@ package unipotsdam.gf.core.management.pageAppearance; -import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.management.project.ProjectDAO; import unipotsdam.gf.core.states.model.ProjectPhase; +import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; @@ -10,14 +11,17 @@ import javax.servlet.jsp.tagext.SimpleTagSupport; import java.io.IOException; public class Footer extends SimpleTagSupport { + + @Inject + private ProjectDAO projectDAO; + public void doTag() throws IOException { PageContext pageContext = (PageContext) getJspContext(); HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); String projectId = request.getParameter("projectId"); - ManagementImpl management = new ManagementImpl(); ProjectPhase projectPhase; try { - projectPhase = management.getProjectById(projectId).getPhase(); + projectPhase = projectDAO.getProjectById(projectId).getPhase(); } catch (Exception e) { projectPhase = null; } @@ -30,16 +34,16 @@ public class Footer extends SimpleTagSupport { " </div>\n" + " <div>\n"; if (projectPhase.equals(ProjectPhase.GroupFormation)) - footerString +=" GroupFormation\n"; + footerString += " GroupFormation\n"; if (projectPhase.equals(ProjectPhase.Execution)) - footerString +=" Execution\n"; + footerString += " Execution\n"; if (projectPhase.equals(ProjectPhase.Assessment)) - footerString +=" Assessment\n"; + footerString += " Assessment\n"; if (projectPhase.equals(ProjectPhase.DossierFeedback)) - footerString +=" DossierFeedback\n"; + footerString += " DossierFeedback\n"; if (projectPhase.equals(ProjectPhase.Projectfinished)) - footerString +=" Projectfinished\n"; - footerString +=" </div>\n" + + footerString += " Projectfinished\n"; + footerString += " </div>\n" + " <div class=\"progress-bar pg-rest\" role=\"progressbar\">\n" + " </div>\n" + " </div>\n"; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/HeadLine.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/HeadLine.java index ea026238ac67bffb444d4b2107ac4460f1a3f546..57c99d95faacbd9f364ba00bb7de2d9c7e8ddfc0 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/HeadLine.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/HeadLine.java @@ -1,7 +1,8 @@ package unipotsdam.gf.core.management.pageAppearance; -import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.management.user.UserDAO; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspWriter; @@ -10,26 +11,27 @@ import javax.servlet.jsp.tagext.SimpleTagSupport; import java.io.IOException; public class HeadLine extends SimpleTagSupport { + public void doTag() throws IOException { PageContext pageContext = (PageContext) getJspContext(); HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); String projectId = request.getParameter("projectId"); String token = request.getParameter("token"); - ManagementImpl management = new ManagementImpl(); JspWriter out = getJspContext().getOut(); - User user = management.getUserByToken(token); + UserDAO userDAO = new UserDAO(new MysqlConnect()); + User user = userDAO.getUserByToken(token); Boolean isStudent = user.getStudent(); out.println("<div class=\"container-fluid\">\n" + " <table style=\"width:100%\">\n" + " <tr>\n" + " <td style=\"width:70%\"><h2 id=\"headLineProject\">"); - if (projectId!=null){ + if (projectId != null) { out.println(projectId); - }else{ - if (isStudent){ - out.println("Studentenübersicht "+user.getName()); - }else{ - out.println("Dozentenübersicht "+user.getName()); + } else { + if (isStudent) { + out.println("Studentenübersicht " + user.getName()); + } else { + out.println("Dozentenübersicht " + user.getName()); } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java index 22c4f0446dd9a34a7fbd2a9d8cbe22e3dd6a7ec8..24979038f4f54fe09c738af4b23722a1800754b5 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java @@ -1,7 +1,9 @@ package unipotsdam.gf.core.management.pageAppearance; -import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.database.mysql.MysqlConnect; +import unipotsdam.gf.core.management.project.ProjectDAO; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.management.user.UserDAO; import unipotsdam.gf.core.states.model.ProjectPhase; import javax.servlet.http.HttpServletRequest; @@ -10,7 +12,9 @@ import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.SimpleTagSupport; import java.io.IOException; + public class Menu extends SimpleTagSupport { + private Integer hierarchyLevel = 0; public void doTag() throws IOException { @@ -19,48 +23,49 @@ public class Menu extends SimpleTagSupport { HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); String token = request.getParameter("token"); String projectId = request.getParameter("projectId"); - ManagementImpl management = new ManagementImpl(); ProjectPhase projectPhase; - try{ - projectPhase = management.getProjectById(projectId).getPhase(); - }catch(Exception e){ + try { + ProjectDAO projectDAO = new ProjectDAO(new MysqlConnect()); + projectPhase = projectDAO.getProjectById(projectId).getPhase(); + } catch (Exception e) { projectPhase = null; } JspWriter out = getJspContext().getOut(); - if (token!=null){ - User user = management.getUserByToken(token); + UserDAO userDAO = new UserDAO(new MysqlConnect()); + if (token != null) { + User user = userDAO.getUserByToken(token); Boolean isStudent = user.getStudent(); - if (isStudent){ + if (isStudent) { String menuString = "<div id=\"sidebar-wrapper\">\n" + " <ul class=\"sidebar-nav\">\n" + - " <li class=\"sidebar-brand\"><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"overview-student.jsp?token="+token+"&projectId="+projectId+"\">overview</a></li>\n" + - " <li><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"profile/profile.jsp?token="+token+"&projectId="+projectId+"\">Profil</a></li>\n"; - if (projectPhase!=null){ - if (projectPhase.equals(ProjectPhase.CourseCreation)){ + " <li class=\"sidebar-brand\"><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "overview-student.jsp?token=" + token + "&projectId=" + projectId + "\">overview</a></li>\n" + + " <li><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "profile/profile.jsp?token=" + token + "&projectId=" + projectId + "\">Profil</a></li>\n"; + if (projectPhase != null) { + if (projectPhase.equals(ProjectPhase.CourseCreation)) { menuString += " <li><p>Quizfrage</p></li>\n" + - " <li><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"journal/eportfolio.jsp?token="+token+"&projectId="+projectId+"\">ePortfolio</a></li>\n" + + " <li><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "journal/eportfolio.jsp?token=" + token + "&projectId=" + projectId + "\">ePortfolio</a></li>\n" + " <li><p>Beitrag</p></li>\n" + " <li><p>Bewertung</p></li>\n"; } - if (projectPhase.equals(ProjectPhase.GroupFormation)){ + if (projectPhase.equals(ProjectPhase.GroupFormation)) { menuString += " <li><p>Quizfrage</p></li>\n" + - " <li><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"journal/eportfolio.jsp?token="+token+"&projectId="+projectId+"\">ePortfolio</a></li>\n" + + " <li><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "journal/eportfolio.jsp?token=" + token + "&projectId=" + projectId + "\">ePortfolio</a></li>\n" + " <li><p>Beitrag</p></li>\n" + " <li><p>Bewertung</p></li>\n"; } - if (projectPhase.equals(ProjectPhase.DossierFeedback)){ + if (projectPhase.equals(ProjectPhase.DossierFeedback)) { menuString += " <li><p>Quizfrage</p></li>\n" + - " <li><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"journal/eportfolio.jsp?token="+token+"&projectId="+projectId+"\">ePortfolio</a></li>\n" + - " <li><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"researchReport/create-title.jsp?token="+token+"&projectId="+projectId+"\">Beitrag</a></li>\n" + + " <li><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "journal/eportfolio.jsp?token=" + token + "&projectId=" + projectId + "\">ePortfolio</a></li>\n" + + " <li><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "researchReport/create-title.jsp?token=" + token + "&projectId=" + projectId + "\">Beitrag</a></li>\n" + " <li><p>Bewertung</p></li>\n"; } - if (projectPhase.equals(ProjectPhase.Execution)){ - menuString += " <li><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"assessment/Quiz.jsp?token="+token+"&projectId="+projectId+"\">Quizfrage</a></li>\n" + - " <li><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"journal/eportfolio.jsp?token="+token+"&projectId="+projectId+"\">ePortfolio</a></li>\n" + - " <li><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"researchReport/create-title.jsp?token="+token+"&projectId="+projectId+"\">Beitrag</a></li>\n" + + if (projectPhase.equals(ProjectPhase.Execution)) { + menuString += " <li><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "assessment/Quiz.jsp?token=" + token + "&projectId=" + projectId + "\">Quizfrage</a></li>\n" + + " <li><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "journal/eportfolio.jsp?token=" + token + "&projectId=" + projectId + "\">ePortfolio</a></li>\n" + + " <li><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "researchReport/create-title.jsp?token=" + token + "&projectId=" + projectId + "\">Beitrag</a></li>\n" + " <li><p>Bewertung</p></li>\n"; } - if (projectPhase.equals(ProjectPhase.Assessment)){ + if (projectPhase.equals(ProjectPhase.Assessment)) { menuString += " <li><p>Quizfrage</p></li>\n" + " <li><p>ePortfolio</p></li>\n" + " <li><p>Beitrag</p></li>\n" + @@ -68,46 +73,45 @@ public class Menu extends SimpleTagSupport { } } - menuString +="<li>" + + menuString += "<li>" + "<a id=\"logout\" style=\"cursor:pointer\">Logout</a></li>\n" + "</ul>\n" + " </div>"; out.println(menuString); out.println("<p id=\"userRole\" hidden>isStudent</p>"); } else { - String menuString ="<div id=\"sidebar-wrapper\">\n" + + String menuString = "<div id=\"sidebar-wrapper\">\n" + " <ul class=\"sidebar-nav\">\n" + - " <li class=\"sidebar-brand\"><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"overview-docent.jsp?token="+token+"&projectId="+projectId+"\">overview</a></li>\n"; - if (projectPhase!=null) { + " <li class=\"sidebar-brand\"><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "overview-docent.jsp?token=" + token + "&projectId=" + projectId + "\">overview</a></li>\n"; + if (projectPhase != null) { if (!projectPhase.equals(ProjectPhase.GroupFormation)) { - menuString += "<li><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"assessment/Quiz-docent.jsp?token="+token+"&projectId="+projectId+"\">Quizfrage</a></li>\n" + + menuString += "<li><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "assessment/Quiz-docent.jsp?token=" + token + "&projectId=" + projectId + "\">Quizfrage</a></li>\n" + " <li><p>Gruppen erstellen</p></li>\n" + - " <li><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"management/change-phase.jsp?token="+token+"&projectId="+projectId+"\">Projektphase ändern</a></li>\n"; - }else { - menuString += "<li><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"assessment/quiz-docent.jsp?token="+token+"&projectId="+projectId+"\">Quizfrage</a></li>\n" + - " <li><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"groupfinding/create-groups.jsp?token="+token+"&projectId="+projectId+"\">Gruppen erstellen</a></li>\n" + - " <li><a href=\""+OmniDependencies.hierarchyToString(hierarchyLevel)+"management/change-phase.jsp?token="+token+"&projectId="+projectId+"\">Projektphase ändern</a></li>\n"; + " <li><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "management/change-phase.jsp?token=" + token + "&projectId=" + projectId + "\">Projektphase ändern</a></li>\n"; + } else { + menuString += "<li><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "assessment/quiz-docent.jsp?token=" + token + "&projectId=" + projectId + "\">Quizfrage</a></li>\n" + + " <li><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "groupfinding/create-groups.jsp?token=" + token + "&projectId=" + projectId + "\">Gruppen erstellen</a></li>\n" + + " <li><a href=\"" + OmniDependencies.hierarchyToString(hierarchyLevel) + "management/change-phase.jsp?token=" + token + "&projectId=" + projectId + "\">Projektphase ändern</a></li>\n"; } } - menuString +="<li><a id=\"logout\" style=\"cursor:pointer\">Logout</a></li>\n" + + menuString += "<li><a id=\"logout\" style=\"cursor:pointer\">Logout</a></li>\n" + "</ul>\n" + " </div>"; out.println(menuString); out.println("<p id=\"userRole\" hidden>isDocent</p>"); } - }else{ + } else { out.println("<div class='alert alert-warning'>" + "You probably did not give the token to the url" + "</div>"); //in active System this will be the point to redirect to index.jsp, because token is "wrong" } - if (projectId!=null) - out.println("<p id=\"projectId\" hidden>"+projectId+"</p>"); - User user = management.getUserByToken(token); + if (projectId != null) + out.println("<p id=\"projectId\" hidden>" + projectId + "</p>"); + User user = userDAO.getUserByToken(token); if (user != null) - out.println("<p id=\"user\" hidden>"+user.getName()+"</p>"); - out.println("<p id=\"hierarchyLevel\" hidden>"+hierarchyLevel.toString()+"</p>"); - + out.println("<p id=\"user\" hidden>" + user.getName() + "</p>"); + out.println("<p id=\"hierarchyLevel\" hidden>" + hierarchyLevel.toString() + "</p>"); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/OmniDependencies.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/OmniDependencies.java index 4d3527caa8292371981881f7f17c524ee92f09a8..cf51416156553af2f8479eb814481513974a7e01 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/OmniDependencies.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/OmniDependencies.java @@ -5,7 +5,7 @@ import javax.servlet.jsp.tagext.SimpleTagSupport; import java.io.IOException; public class OmniDependencies extends SimpleTagSupport { - private Integer hierarchyLevel=0; + private Integer hierarchyLevel = 0; public void doTag() throws IOException { hierarchyLevel = getHierarchy(); @@ -14,23 +14,23 @@ public class OmniDependencies extends SimpleTagSupport { " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" + " <title>fltrail</title>\n" + " <link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\">\n" + - " <link rel=\"stylesheet\" href=\""+hierarchyToString(hierarchyLevel)+"libs/css/styles.css\">\n" + - " <link rel=\"stylesheet\" href=\""+hierarchyToString(hierarchyLevel)+"core/footer.css\">\n" + + " <link rel=\"stylesheet\" href=\"" + hierarchyToString(hierarchyLevel) + "libs/css/styles.css\">\n" + + " <link rel=\"stylesheet\" href=\"" + hierarchyToString(hierarchyLevel) + "core/footer.css\">\n" + " <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js\"></script>\n" + " <script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js\"></script>\n" + - " <link rel=\"stylesheet\" href=\""+hierarchyToString(hierarchyLevel)+"libs/fonts/font-awesome.min.css\">\n" + - " <link rel=\"stylesheet\" href=\""+hierarchyToString(hierarchyLevel)+"libs/css/Sidebar-Menu-1.css\">\n" + - " <link rel=\"stylesheet\" href=\""+hierarchyToString(hierarchyLevel)+"libs/css/Sidebar-Menu.css\">\n" + - " <script src=\""+hierarchyToString(hierarchyLevel)+"core/utility.js\"></script>\n" + - " <script src=\""+hierarchyToString(hierarchyLevel)+"core/footer.js\"></script>\n" + + " <link rel=\"stylesheet\" href=\"" + hierarchyToString(hierarchyLevel) + "libs/fonts/font-awesome.min.css\">\n" + + " <link rel=\"stylesheet\" href=\"" + hierarchyToString(hierarchyLevel) + "libs/css/Sidebar-Menu-1.css\">\n" + + " <link rel=\"stylesheet\" href=\"" + hierarchyToString(hierarchyLevel) + "libs/css/Sidebar-Menu.css\">\n" + + " <script src=\"" + hierarchyToString(hierarchyLevel) + "core/utility.js\"></script>\n" + + " <script src=\"" + hierarchyToString(hierarchyLevel) + "core/footer.js\"></script>\n" + " <link rel=\"stylesheet\" href=\"https://use.fontawesome.com/releases/v5.1.0/css/all.css\"\n" + " integrity=\"sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt\" crossorigin=\"anonymous\">"); } - static public String hierarchyToString(Integer hierarchyLevel){ + static public String hierarchyToString(Integer hierarchyLevel) { StringBuilder resultBuilder = new StringBuilder(); String result; - for(Integer count=0; count<hierarchyLevel; count++){ + for (Integer count = 0; count < hierarchyLevel; count++) { resultBuilder.append("../"); } result = resultBuilder.toString(); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java new file mode 100644 index 0000000000000000000000000000000000000000..14325b3469d351ea9b9b81c13be13d5494b03449 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java @@ -0,0 +1,89 @@ +package unipotsdam.gf.core.management.project; + +import unipotsdam.gf.core.database.mysql.MysqlConnect; +import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; +import unipotsdam.gf.core.states.model.ProjectPhase; + +import javax.annotation.ManagedBean; +import javax.annotation.Resource; +import javax.inject.Inject; +import javax.inject.Singleton; +import java.sql.Timestamp; +import java.util.UUID; + +@ManagedBean +@Resource +@Singleton +public class ProjectDAO { + + private MysqlConnect connect; + + @Inject + public ProjectDAO(MysqlConnect connect) { + this.connect = connect; + } + + public void persist(Project project) { + UUID uuid = UUID.randomUUID(); + String token = uuid.toString(); + + connect.connect(); + String mysqlRequest = + "INSERT INTO projects (`id`, `password`, `active`, `timecreated`, `author`, " + + "`adminPassword`, `token`, `phase`) values (?,?,?,?,?,?,?,?)"; + connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), project.getPassword(), project.isActive(), + project.getTimecreated(), project.getAuthor(), project.getAdminPassword(), token, project.getPhase() + == null ? ProjectPhase.CourseCreation : project.getPhase()); + connect.close(); + } + + public void delete(Project project) { + connect.connect(); + String mysqlRequest = "DELETE FROM projects where id = (?)"; + connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId()); + connect.close(); + // TODO: delete all groups of project? + + + } + + public Boolean exists(Project project) { + Boolean result; + connect.connect(); + String mysqlRequest = "SELECT * FROM projects where id = ? and adminPassword = ?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, project.getId(), project.getAdminPassword()); + result = vereinfachtesResultSet.next(); + connect.close(); + return result; + } + + public Project getProjectById(String id) { + connect.connect(); + String mysqlRequest = "SELECT * FROM projects where id = ?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, id); + boolean next = vereinfachtesResultSet.next(); + if (next) { + Project project = getProjectFromResultSet(vereinfachtesResultSet); + connect.close(); + return project; + } else { + connect.close(); + return null; + } + } + + private Project getProjectFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) { + String id = vereinfachtesResultSet.getString("id"); + String password = vereinfachtesResultSet.getString("password"); + boolean active = vereinfachtesResultSet.getBoolean("active"); + Timestamp timestamp = vereinfachtesResultSet.getTimestamp("timecreated"); + String author = vereinfachtesResultSet.getString("author"); + String adminPassword = vereinfachtesResultSet.getString("adminpassword"); + String token = vereinfachtesResultSet.getString("token"); + String phase = vereinfachtesResultSet.getString("phase"); + + return new Project(id, password, active, timestamp, author, adminPassword, token, ProjectPhase.valueOf(phase)); + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java index 879ce2268e2cf4187e8f529b6636636520c39c06..715c568c00c6cd42750deae8da892a92c6645b87 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/HiddenUserTag.java @@ -1,7 +1,7 @@ package unipotsdam.gf.core.management.user; -import unipotsdam.gf.core.management.ManagementImpl; - +import javax.annotation.ManagedBean; +import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; @@ -12,15 +12,19 @@ import java.io.IOException; * implemented while porting the login page. It might be useful to have a hidden user field on the page in order to * manipulate the user data with jquery */ +@ManagedBean public class HiddenUserTag extends SimpleTagSupport { + + @Inject + UserDAO userDAO; + public void doTag() throws IOException { PageContext pageContext = (PageContext) getJspContext(); HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); String token = request.getParameter("token"); - ManagementImpl management = new ManagementImpl(); - User user = management.getUserByToken(token); + User user = userDAO.getUserByToken(token); JspWriter out = getJspContext().getOut(); - out.println("<p id=\"user\" hidden>"+user.getName()+"</p>"); + out.println("<p id=\"user\" hidden>" + user.getName() + "</p>"); } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/Menu.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/Menu.java new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java index 3a3a695d7e870ddca681c05918a9a5c4acafddfd..d5f33ab1b826d4b6c91e2430e8feba0a7e23bf32 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/SessionValidator.java @@ -2,8 +2,9 @@ package unipotsdam.gf.core.management.user; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import unipotsdam.gf.core.management.ManagementImpl; +import javax.annotation.ManagedBean; +import javax.inject.Inject; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -17,10 +18,14 @@ import java.io.IOException; * this filter can be applied to a given space in order to validate, that the tag in the url is a valid one * not applied to to a folder yet (because might lead to confusing experiences in debugging) */ +@ManagedBean public class SessionValidator implements Filter { private final static Logger log = LoggerFactory.getLogger(SessionValidator.class); + @Inject + private UserDAO userDAO; + private void redirectToLogin(ServletRequest request, ServletResponse response) { log.debug("redirecting user to login because token does not exist"); String loginJSP = "../../index.jsp"; @@ -41,8 +46,8 @@ public class SessionValidator implements Filter { if (token == null) { redirectToLogin(request, response); } - ManagementImpl management = new ManagementImpl(); - User user = management.getUserByToken(token); + + User user = userDAO.getUserByToken(token); if (user == null) { redirectToLogin(request, response); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java index 812cbe6c04522a18b5f469bbbf7fe1cc14e1a90f..39606a396ffde7b205dd8b52ed773ef2273c1bf0 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java @@ -2,6 +2,8 @@ package unipotsdam.gf.core.management.user; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import java.util.Objects; + /** * Created by dehne on 31.05.2018. */ @@ -111,4 +113,17 @@ public class User { ", isStudent=" + isStudent + '}'; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + User user = (User) o; + return Objects.equals(name, user.name) && + Objects.equals(password, user.password) && + Objects.equals(email, user.email) && + Objects.equals(rocketChatAuthToken, user.rocketChatAuthToken) && + Objects.equals(rocketChatId, user.rocketChatId) && + Objects.equals(isStudent, user.isStudent); + } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserDAO.java new file mode 100644 index 0000000000000000000000000000000000000000..01ed068187a425e546e43ce3f00b19e1f45d7ba4 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserDAO.java @@ -0,0 +1,132 @@ +package unipotsdam.gf.core.management.user; + +import unipotsdam.gf.core.database.mysql.MysqlConnect; +import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; +import unipotsdam.gf.core.management.util.ResultSetUtil; + +import javax.annotation.ManagedBean; +import javax.annotation.Resource; +import javax.inject.Inject; +import javax.inject.Singleton; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +@ManagedBean +@Resource +@Singleton +public class UserDAO { + + + private MysqlConnect connect; + + @Inject + public UserDAO(MysqlConnect connect) { + this.connect = connect; + } + + public void persist(User user, UserProfile profile) { + UUID uuid = UUID.randomUUID(); + String token = uuid.toString(); + connect.connect(); + String mysqlRequest = "INSERT INTO users (`name`, `password`, `email`, `token`,`isStudent`," + + "`rocketChatId`,`rocketChatAuthToken`) values (?,?,?,?,?,?,?)"; + connect.issueInsertOrDeleteStatement(mysqlRequest, user.getName(), user.getPassword(), user.getEmail(), + token, user.getStudent(), user.getRocketChatId(), user.getRocketChatAuthToken()); + connect.close(); + // TODO implmement UserProfile @Mar + } + + public void delete(User user) { + String mysqlRequest = "DELETE FROM users where email = (?)"; + connect.connect(); + connect.issueInsertOrDeleteStatement(mysqlRequest, user.getEmail()); + connect.close(); + } + + public void update(User user) { + String mysqlRequest = "UPDATE `users` SET `name`=?,`password`=?,`email`=?,`token`=?,`isStudent`=?," + + "`rocketChatId`=?,`rocketChatAuthToken`=? WHERE email=? LIMIT 1"; + //TODO: maybe add handling if a line is actually updated + //TODO: if user is updated, it also must update all other tables which includes some information about the user, for example project user + connect.connect(); + connect.issueUpdateStatement(mysqlRequest, user.getName(), user.getPassword(), user.getEmail(), + user.getToken(), user.getStudent(), user.getRocketChatId(), user.getRocketChatAuthToken(), user.getEmail()); + connect.close(); + } + + public boolean exists(User user) { + boolean result; + connect.connect(); + String mysqlRequest = "SELECT * FROM users where email = ? and password = ?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, user.getEmail(), user.getPassword()); + result = vereinfachtesResultSet.next(); + connect.close(); + return result; + } + + public List<User> getUsersByProjectId(String projectId) { + connect.connect(); + String query = + "SELECT * FROM users u " + + " JOIN projectuser pu ON u.email=pu.userId" + + " JOIN projects p ON pu.projectId = p.id" + + " WHERE pu.projectId = ?"; + + ArrayList<User> result = new ArrayList<>(); + VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(query, projectId); + while (!vereinfachtesResultSet.isLast()) { + boolean next = vereinfachtesResultSet.next(); + if (next) { + User user = ResultSetUtil.getUserFromResultSet(vereinfachtesResultSet); + String token = vereinfachtesResultSet.getString("token"); + user.setToken(token); + result.add(user); + } else { + break; + } + } + connect.close(); + return result; + } + + public String getUserToken(User user) { + connect.connect(); + String mysqlRequest = "SELECT * FROM users where email = ? and password = ?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, user.getEmail(), user.getPassword()); + boolean next = vereinfachtesResultSet.next(); + if (!next) { + connect.close(); + return null; + } + String token = vereinfachtesResultSet.getString("token"); + connect.close(); + return token; + } + + public User getUserByToken(String token) { + return getUserByField("token", token); + } + + public User getUserByEmail(String email) { + return getUserByField("email", email); + } + + private User getUserByField(String field, String value) { + connect.connect(); + String mysqlRequest = "SELECT * FROM users where " + field + " = ?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, value); + boolean next = vereinfachtesResultSet.next(); + if (next) { + User user = ResultSetUtil.getUserFromResultSet(vereinfachtesResultSet); + connect.close(); + return user; + } else { + connect.close(); + return null; + } + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java index 5df13ac921258e35e664cda7c8d12d37101a8e68..c38d65b9813da8f783c9cb4152a5f271944e6402 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java @@ -1,12 +1,16 @@ package unipotsdam.gf.core.management.user; -import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.management.Management; import unipotsdam.gf.interfaces.ICommunication; import unipotsdam.gf.modules.communication.service.CommunicationDummyService; import javax.annotation.ManagedBean; import javax.inject.Inject; -import javax.ws.rs.*; +import javax.ws.rs.FormParam; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.io.File; @@ -18,9 +22,20 @@ import java.net.URISyntaxException; @ManagedBean public class UserService { - @Inject private ICommunication communicationService; + private UserDAO userDAO; + + @Inject + private Management management; + + @Inject + public UserService(ICommunication communicationService, UserDAO userDAO, Management management) { + this.communicationService = communicationService; + this.userDAO = userDAO; + this.management = management; + } + /** * creates a user with given credentials * @@ -39,7 +54,6 @@ public class UserService { @FormParam("email") String email, @FormParam("isStudent") String isStudent) throws URISyntaxException { - ManagementImpl management = new ManagementImpl(); User user = new User(name, password, email, isStudent == null); return login(true, user); @@ -62,7 +76,6 @@ public class UserService { @FormParam("email") String email) throws URISyntaxException { - ManagementImpl management = new ManagementImpl(); User user = new User(name, password, email, null); ICommunication iCommunication = new CommunicationDummyService(); boolean isLoggedIn = iCommunication.loginUser(user); @@ -77,12 +90,11 @@ public class UserService { @Produces(MediaType.TEXT_PLAIN) @Path("/student/{studentId}") public String getQuiz(@FormParam("image") File file, @PathParam("studentId") String studentId) { - ManagementImpl management = new ManagementImpl(); - try{ + try { FileInputStream fis = new FileInputStream(file); return management.saveProfilePicture(fis, studentId); - }catch(Exception e){ + } catch (Exception e) { return e.toString(); } @@ -97,11 +109,11 @@ public class UserService { * @throws URISyntaxException */ protected Response login(boolean createUser, User user) throws URISyntaxException { - ManagementImpl management = new ManagementImpl(); + if (management.exists(user)) { if (!createUser) { user = fillUserFields(user); - return redirectToProjectPage(user, management); + return redirectToProjectPage(user); } String existsUrl = "../register.jsp?userExists=true"; return forwardToLocation(existsUrl); @@ -113,7 +125,7 @@ public class UserService { } management.create(user, null); user = fillUserFields(user); - return redirectToProjectPage(user, management); + return redirectToProjectPage(user); } else { String existsUrl = "../index.jsp?userExists=false"; return forwardToLocation(existsUrl); @@ -123,9 +135,8 @@ public class UserService { } private User fillUserFields(User user) { - ManagementImpl m = new ManagementImpl(); - String token = m.getUserToken(user); - user = m.getUserByToken(token); + String token = userDAO.getUserToken(user); + user = userDAO.getUserByToken(token); return user; } @@ -143,18 +154,17 @@ public class UserService { * helper function for redirecting to the right project page * * @param user - * @param management * @return * @throws URISyntaxException */ - private Response redirectToProjectPage(User user, ManagementImpl management) throws URISyntaxException { + private Response redirectToProjectPage(User user) throws URISyntaxException { String successUrl; if (user.getStudent() != null && user.getStudent()) { successUrl = "../overview-student.jsp?token="; } else { successUrl = "../overview-docent.jsp?token="; } - successUrl += management.getUserToken(user); + successUrl += userDAO.getUserToken(user); return forwardToLocation(successUrl); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/util/ResultSetUtil.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/util/ResultSetUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..7a79f816542360f3039f8468b9440c8d3bc91330 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/util/ResultSetUtil.java @@ -0,0 +1,18 @@ +package unipotsdam.gf.core.management.util; + +import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; +import unipotsdam.gf.core.management.user.User; + +public class ResultSetUtil { + + public static User getUserFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) { + String name = vereinfachtesResultSet.getString("name"); + String password = vereinfachtesResultSet.getString("password"); + String email = vereinfachtesResultSet.getString("email"); + String token = vereinfachtesResultSet.getString("token"); + String rocketChatId = vereinfachtesResultSet.getString("rocketChatId"); + String rocketChatAuthToken = vereinfachtesResultSet.getString("rocketChatAuthToken"); + Boolean isStudent = vereinfachtesResultSet.getBoolean("isStudent"); + return new User(name, password, email, token, rocketChatId, rocketChatAuthToken, isStudent); + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/ContextTag.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/ContextTag.java index 741d3eb28a69d4a2ebef9f63b9749e7d8a9204ec..451bebe1ce005c67e512fd264a6df8462379c63b 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/ContextTag.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/ContextTag.java @@ -1,7 +1,5 @@ package unipotsdam.gf.core.session; -import unipotsdam.gf.core.management.project.Project; - import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; @@ -21,7 +19,7 @@ public class ContextTag extends SimpleTagSupport { * in the view, then the project is loaded from db and added via setAttribute like below */ GFContext gfContext = (GFContext) request.getSession().getAttribute("gf_context"); - out.println("<p>project:"+gfContext.getProject().toString()+"</p>"); + out.println("<p>project:" + gfContext.getProject().toString() + "</p>"); } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/SessionTag.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/SessionTag.java index eae3f549fe2061b4533e4092dbcd1e0d52632edb..5ddc026bc96eb97efa0e2c574aace7b926a72299 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/SessionTag.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/SessionTag.java @@ -2,9 +2,7 @@ package unipotsdam.gf.core.session; import uk.co.jemos.podam.api.PodamFactory; import uk.co.jemos.podam.api.PodamFactoryImpl; -import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.core.management.project.Project; -import unipotsdam.gf.core.management.user.User; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspWriter; @@ -25,7 +23,7 @@ public class SessionTag extends SimpleTagSupport { HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); // sessionID is created with first call and persisted throughout the user's session< JspWriter out = getJspContext().getOut(); - out.println("<p id=\"sessionId\"> SessionId:"+request.getSession().getId()+"</p>"); + out.println("<p id=\"sessionId\"> SessionId:" + request.getSession().getId() + "</p>"); // lets add some context to the site diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java index 685e6018bd27b08078e15765b3f52c1d92dac648..0c06f3ee705f15f9ac6a7497a7ed2a9a19bf9162 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java @@ -3,11 +3,18 @@ package unipotsdam.gf.core.states; import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.core.states.model.ProjectPhase; -import unipotsdam.gf.interfaces.*; +import unipotsdam.gf.interfaces.Feedback; +import unipotsdam.gf.interfaces.ICommunication; +import unipotsdam.gf.interfaces.IJournal; +import unipotsdam.gf.interfaces.IPeerAssessment; +import unipotsdam.gf.interfaces.IPhases; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; +import unipotsdam.gf.modules.assessment.controller.service.PeerAssessment; import unipotsdam.gf.modules.assessment.controller.service.PeerAssessmentDummy; import unipotsdam.gf.modules.communication.service.CommunicationDummyService; +import unipotsdam.gf.modules.journal.service.IJournalImpl; import unipotsdam.gf.modules.peer2peerfeedback.DummyFeedback; import unipotsdam.gf.view.Messages; @@ -25,13 +32,13 @@ import java.util.Map; @ManagedBean public class PhasesImpl implements IPhases { - private IPeerAssessment iPeerAssessment = new PeerAssessmentDummy(); + private IPeerAssessment iPeerAssessment = new PeerAssessment(); private Feedback feedback = new DummyFeedback(); private ICommunication iCommunication = new CommunicationDummyService(); - private IJournal iJournal; + private IJournal iJournal = new IJournalImpl(); public PhasesImpl() { } @@ -75,53 +82,54 @@ public class PhasesImpl implements IPhases { @Override public void endPhase(ProjectPhase currentPhase, Project project) { ProjectPhase changeToPhase = getNextPhase(currentPhase); - Map<StudentIdentifier, Constraints> tasks = new HashMap<>(); + Map<StudentIdentifier, ConstraintsMessages> tasks; + if (changeToPhase != null) switch (changeToPhase) { case CourseCreation: // saving the state - saveState(project,changeToPhase); + saveState(project, changeToPhase); break; case GroupFormation: // inform users about the formed groups, optionally giving them a hint on what happens next iCommunication.sendMessageToUsers(project, Messages.GroupFormation(project)); - saveState(project,changeToPhase); + saveState(project, changeToPhase); break; case DossierFeedback: // check if everybody has uploaded a dossier - Boolean feedbacksGiven = feedback.checkFeedbackConstraints(project); - if (!feedbacksGiven) { - feedback.assigningMissingFeedbackTasks(project); + tasks = feedback.checkFeedbackConstraints(project); + if (tasks.size()>0) { + iCommunication.informAboutMissingTasks(tasks, project); } else { // send a message to the users informing them about the start of the new phase iCommunication.sendMessageToUsers(project, Messages.NewFeedbackTask(project)); - saveState(project,changeToPhase); + saveState(project, changeToPhase); } break; case Execution: // check if the portfolios have been prepared for evaluation (relevant entries selected) - // todo: Boolean portfoliosReady = iJournal.getPortfoliosForEvaluationPrepared(project); - Boolean portfoliosReady = true; - if (portfoliosReady) { + tasks = iJournal.getPortfoliosForEvaluationPrepared(project); + if (tasks.size()<1) { // inform users about the end of the phase iCommunication.sendMessageToUsers(project, Messages.AssessmentPhaseStarted(project)); - saveState(project,changeToPhase); + saveState(project, changeToPhase); } else { - iJournal.assignMissingPortfolioTasks(project); + iCommunication.informAboutMissingTasks(tasks, project); } break; case Assessment: - Boolean allAssessmentsDone = iPeerAssessment.allAssessmentsDone(project.getId()); - if(allAssessmentsDone){ + tasks = iPeerAssessment.allAssessmentsDone(project.getId()); + if(tasks.size()<1){ iCommunication.sendMessageToUsers(project, Messages.CourseEnds(project)); saveState(project, changeToPhase); - }else{ + } else { iPeerAssessment.assignMissingAssessmentTasks(project); } break; case Projectfinished: closeProject(); break; + default:{} } } @@ -129,7 +137,7 @@ public class PhasesImpl implements IPhases { // TODO implement } - ProjectPhase getNextPhase(ProjectPhase projectPhase) { + private ProjectPhase getNextPhase(ProjectPhase projectPhase) { switch (projectPhase) { case CourseCreation: return ProjectPhase.GroupFormation; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java index 49a65404c45db5aab532b94f98eb1e7ef9f427f2..2c412169e9573d97c16ed0ff96e6669b3da1f86e 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java @@ -1,11 +1,16 @@ package unipotsdam.gf.core.states; -import unipotsdam.gf.core.management.Management; -import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.management.project.ProjectDAO; import unipotsdam.gf.core.states.model.ProjectPhase; import unipotsdam.gf.interfaces.IPhases; -import javax.ws.rs.*; +import javax.inject.Inject; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; /** @@ -13,14 +18,16 @@ import javax.ws.rs.core.MediaType; * In order to look up the possible phases @see unipotsdam.gf.core.states.model.ProjectPhase */ @Path("/phases") -public class PhasesService { +public class PhasesService { private IPhases phases = new PhasesImpl(); - private Management management = new ManagementImpl(); + @Inject + private ProjectDAO projectDAO; /** * end phase + * * @param projectPhase * @param projectId */ @@ -28,11 +35,12 @@ public class PhasesService { @POST @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public void endPhase(@PathParam("projectPhase") String projectPhase, @PathParam("projectId") String projectId) { - phases.endPhase(ProjectPhase.valueOf(projectPhase), management.getProjectById(projectId)); + phases.endPhase(ProjectPhase.valueOf(projectPhase), projectDAO.getProjectById(projectId)); } /** * get current phase + * * @param projectId * @return */ @@ -40,6 +48,6 @@ public class PhasesService { @GET @Produces({MediaType.TEXT_PLAIN}) public String getCurrentPhase(@PathParam("projectId") String projectId) { - return management.getProjectById(projectId).getPhase().toString(); + return projectDAO.getProjectById(projectId).getPhase().toString(); } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java index ac413e63a173d5a8dbbbffbebb90267c06bc984f..27c3d4c54370f6eb056a533bdc098507a703eeeb 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java @@ -1,34 +1,12 @@ package unipotsdam.gf.core.states.model; -import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; - -public class Constraints { - - public static String DossierWritten(StudentIdentifier student){ - return student.getStudentId()+" hat noch kein Dossier hochgeladen."; - } - - public static String FeedbackCount(StudentIdentifier student){ - return student.getStudentId()+" hat noch nicht das erwartete Feedack gegeben."; - } - - public static String QuizCount(StudentIdentifier student){ - return student.getStudentId()+" hat noch kein Quiz erstellt."; - } - - public static String JournalCount(StudentIdentifier student){ - return student.getStudentId()+" hat noch nicht genug Tagebucheinträge verfasst."; - } - - public static String DossierFinalized(StudentIdentifier student){ - return student.getStudentId()+" hat sein Dossier noch nicht finalisiert."; - } - - public static String JournalFinalized(StudentIdentifier student){ - return student.getStudentId()+" hat sein Tagebuch noch nicht finalisiert"; - } - - public static String AssessmentDone(StudentIdentifier student){ - return student.getStudentId()+" hat die Bewertung noch nicht abgeschlossen."; - } +public enum Constraints { + DossierMissing, + FeedbackCount, + QuizCount, + JournalCount, + DossierOpen, + DescriptionsOpen, + JournalOpen, + AssessmentOpen } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ConstraintsMessages.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ConstraintsMessages.java new file mode 100644 index 0000000000000000000000000000000000000000..0d9d940d6212a8cb8353bf908f46386eb362f5bd --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ConstraintsMessages.java @@ -0,0 +1,28 @@ +package unipotsdam.gf.core.states.model; + +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; + +public class ConstraintsMessages { + private final Constraints constraint; + private final StudentIdentifier student; + + public ConstraintsMessages(Constraints enumConstraints, StudentIdentifier student) { + this.constraint = enumConstraints; + this.student = student; + } + + @Override + public String toString() { + switch (constraint) { + case QuizCount: return student.getStudentId()+" hat noch kein Quiz erstellt."; + case DossierMissing: return student.getStudentId()+" hat noch kein Dossier hochgeladen."; + case FeedbackCount: return student.getStudentId()+" hat noch nicht das erwartete Feedack gegeben."; + case JournalCount: return student.getStudentId()+" hat noch nicht genug Tagebucheinträge verfasst."; + case DossierOpen: return student.getStudentId()+" hat sein Dossier noch nicht finalisiert."; + case DescriptionsOpen: return student.getStudentId()+" hat die Descriptions noch nicht abgeschlossen."; + case JournalOpen: return student.getStudentId()+" hat sein Tagebuch noch nicht finalisiert"; + case AssessmentOpen: return student.getStudentId()+" hat die Bewertung noch nicht abgeschlossen."; + default: return "default message"; + } + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java index 773103d2bff7c333fe4ece1983d8e21f420c4341..e26063fe2bb9893e374df224cd22ea4a27945ade 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java @@ -1,11 +1,15 @@ package unipotsdam.gf.interfaces; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.peer2peerfeedback.peerfeedback.Model.Peer2PeerFeedback; import unipotsdam.gf.modules.researchreport.ResearchReport; import java.io.File; import java.util.ArrayList; +import java.util.Map; /** @@ -21,16 +25,16 @@ public interface Feedback { * @return Returns the Peer2PeerFeedback Object */ - Peer2PeerFeedback createPeer2PeerFeedback (Peer2PeerFeedback feedback); + Peer2PeerFeedback createPeer2PeerFeedback(Peer2PeerFeedback feedback); //(String id, String reciever, String sender, String text, Category category, String filename); /** * create Peer2PeerFeedback Object * - * @param feedbackuser: - * @param selectedstudent: - * @param document: - * **/ + * @param feedbackuser: + * @param selectedstudent: + * @param document: + **/ Peer2PeerFeedback createPeer2PeerFeedbackmask(User feedbackuser, User selectedstudent, File document); /** @@ -66,7 +70,7 @@ public interface Feedback { * @param project * @return */ - Boolean checkFeedbackConstraints(Project project); + Map<StudentIdentifier, ConstraintsMessages> checkFeedbackConstraints(Project project); /** * TODO implement a routine that assigns missing feedback tasks if someone drops out of a course diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java index 2705893f7f91d50b0052c22d9171aa74de43681c..71a7811851339f48524765a8e4b626a9d08e5b2c 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java @@ -3,11 +3,15 @@ package unipotsdam.gf.interfaces; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.assignments.NotImplementedLogger; +import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.communication.model.Message; import unipotsdam.gf.modules.communication.model.chat.ChatMessage; import unipotsdam.gf.modules.communication.model.chat.ChatRoom; import java.util.List; +import java.util.Map; /** * Provides connection to rocket chat @@ -31,10 +35,10 @@ public interface ICommunication { * creates chatroom * * @param name chat room name - * @param studentIdentifierList member of chat by id + * @param userList member of chat by id * @return chat room id */ - String createChatRoom(String name, List<User> studentIdentifierList); + String createChatRoom(String name, List<User> userList); /** @@ -90,6 +94,9 @@ public interface ICommunication { // TODO implement as Email or whatever void sendSingleMessage(Message message, User user); + //added by Axel. + void informAboutMissingTasks(Map<StudentIdentifier, ConstraintsMessages> tasks, Project project); + // TODO implement as Email or whatever void sendMessageToUsers(Project project, String message); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java index a09553839cb9160aae3c3d1d7f8874882ecca599..acf97e3afbce6612422e2a0201b63e8df23800f0 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java @@ -3,12 +3,15 @@ package unipotsdam.gf.interfaces; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.model.ConstraintsMessages; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.journal.model.EPortfolio; import unipotsdam.gf.modules.journal.model.Journal; import unipotsdam.gf.modules.researchreport.ResearchReport; import java.io.File; import java.util.List; +import java.util.Map; /** * Interface for learning journal @@ -18,14 +21,14 @@ public interface IJournal { /** * check if all students have prepared their portfolios to be evaluated - * @return true if all students have prepared their portfolios - * @param project project + * @return + * @param project */ - Boolean getPortfoliosForEvaluationPrepared(Project project) ; + Map<StudentIdentifier, ConstraintsMessages> getPortfoliosForEvaluationPrepared(Project project) ; /** * find out, who hasn't prepared their portfolio for evaluation and send message or highlight in view - * @param project project + * @param project */ void assignMissingPortfolioTasks(Project project) ; @@ -50,14 +53,9 @@ public interface IJournal { /** * Gets EPortfolio for assesment - * @param project project + * @param project * @return EPortfolio (containing Report, ProjectDescription and Journal) */ - EPortfolio getFinalPortfolioForAssessment(Project project, User user) ; - - - EPortfolio getPortfolio(String project, String user); - - byte[] exportPortfolioToPdf(EPortfolio ePortfolio); + EPortfolio getFinalPortfolioForAssessment(Project project, User user); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java index 1892ec3961260ec76a97bf0fa2aa0362fdad5070..a5558ec1f91b2561ffc469d7e765b4c29d9fdcae 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java @@ -1,7 +1,13 @@ package unipotsdam.gf.interfaces; import unipotsdam.gf.core.management.project.Project; -import unipotsdam.gf.modules.assessment.controller.model.*; +import unipotsdam.gf.core.states.model.ConstraintsMessages; +import unipotsdam.gf.modules.assessment.controller.model.Assessment; +import unipotsdam.gf.modules.assessment.controller.model.PeerRating; +import unipotsdam.gf.modules.assessment.controller.model.Performance; +import unipotsdam.gf.modules.assessment.controller.model.Quiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentAndQuiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import java.util.ArrayList; import java.util.List; @@ -43,6 +49,7 @@ public interface IPeerAssessment { * @param totalPerformance @return */ Map<StudentIdentifier, Double> calculateAssessment(ArrayList<Performance> totalPerformance); // calculates marks for every performance and writes it to an array + Map<StudentIdentifier, Double> calculateAssessment(String projectId, String method); @@ -89,16 +96,16 @@ public interface IPeerAssessment { Map<String, Integer> contributionRating); /** - * * @param questions * @param student */ void answerQuiz(Map<String, List<String>> questions, StudentIdentifier student); + void deleteQuiz(String quizId); String whatToRate(StudentIdentifier student); - Boolean allAssessmentsDone(String projectId); + Map<StudentIdentifier, ConstraintsMessages> allAssessmentsDone(String projectId); void assignMissingAssessmentTasks(Project project); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ISubmission.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ISubmission.java index 01a450025cfcf1e1cddf4b6b8bc059ffb29da3a0..6a6a849bbea02d06aeb104578df1293556216868 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ISubmission.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ISubmission.java @@ -1,7 +1,11 @@ package unipotsdam.gf.interfaces; import unipotsdam.gf.modules.peer2peerfeedback.Category; -import unipotsdam.gf.modules.submission.model.*; +import unipotsdam.gf.modules.submission.model.FullSubmission; +import unipotsdam.gf.modules.submission.model.FullSubmissionPostRequest; +import unipotsdam.gf.modules.submission.model.SubmissionPart; +import unipotsdam.gf.modules.submission.model.SubmissionPartPostRequest; +import unipotsdam.gf.modules.submission.model.SubmissionProjectRepresentation; import java.util.ArrayList; @@ -47,7 +51,7 @@ public interface ISubmission { * Get the entire submission part from database * * @param fullSubmissionId The id of the full submission - * @param category The category of the submission + * @param category The category of the submission * @return The returned submission part */ SubmissionPart getSubmissionPart(String fullSubmissionId, Category category); @@ -72,7 +76,7 @@ public interface ISubmission { * Checks if a submission part already exists in the database * * @param fullSubmissionId The id of the full submission - * @param category The category of the submission + * @param category The category of the submission * @return Returns true if the submission part exists */ boolean existsSubmissionPart(String fullSubmissionId, Category category); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/AnnotationController.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/AnnotationController.java index 394ccf69df9e554a136704c2221a0f4e1b3a4bfe..3b4a54b5ca2cd7b39fe0c57c2518d8f728f46859 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/AnnotationController.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/AnnotationController.java @@ -9,7 +9,6 @@ import unipotsdam.gf.modules.annotation.model.AnnotationPatchRequest; import unipotsdam.gf.modules.annotation.model.AnnotationPostRequest; import unipotsdam.gf.modules.peer2peerfeedback.Category; -import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.UUID; @@ -29,7 +28,7 @@ public class AnnotationController implements IAnnotation { // build and execute request String request = "INSERT INTO annotations (`id`, `userToken`, `targetId`, `targetCategory`, `title`, `comment`, `startCharacter`, `endCharacter`) VALUES (?,?,?,?,?,?,?,?);"; - connection.issueInsertOrDeleteStatement(request, uuid, annotationPostRequest.getUserToken(), annotationPostRequest.getTargetId(), annotationPostRequest.getTargetCategory().toString().toUpperCase(), annotationPostRequest.getBody().getTitle(), annotationPostRequest.getBody().getComment(),annotationPostRequest.getBody().getStartCharacter(), annotationPostRequest.getBody().getEndCharacter()); + connection.issueInsertOrDeleteStatement(request, uuid, annotationPostRequest.getUserToken(), annotationPostRequest.getTargetId(), annotationPostRequest.getTargetCategory().toString().toUpperCase(), annotationPostRequest.getBody().getTitle(), annotationPostRequest.getBody().getComment(), annotationPostRequest.getBody().getStartCharacter(), annotationPostRequest.getBody().getEndCharacter()); // close connection connection.close(); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationPostRequest.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationPostRequest.java index 1ae3c2b6b5137b7877367c3342b1f2eaab7584f4..98020b68eb138a4cb522200c4acaeef506643d09 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationPostRequest.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationPostRequest.java @@ -67,5 +67,5 @@ public class AnnotationPostRequest { ", body=" + body + '}'; } - + } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/view/AnnotationService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/view/AnnotationService.java index 9a4656e6dc7098c0c7563a57a162ef5d3bc782ae..987a49b09bf8c8fa585834cb24f478fea8581723 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/view/AnnotationService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/view/AnnotationService.java @@ -8,7 +8,13 @@ import unipotsdam.gf.modules.annotation.model.AnnotationPostRequest; import unipotsdam.gf.modules.annotation.model.AnnotationResponse; import unipotsdam.gf.modules.peer2peerfeedback.Category; -import javax.ws.rs.*; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.util.ArrayList; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/websocket/AnnotationWebSocketEndpoint.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/websocket/AnnotationWebSocketEndpoint.java index b30743913672d6770337c6d4b5ca5dcebfeda1a5..69fd65030dccb01589f5416a20d5d52c204eefcd 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/websocket/AnnotationWebSocketEndpoint.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/websocket/AnnotationWebSocketEndpoint.java @@ -3,7 +3,12 @@ package unipotsdam.gf.modules.annotation.websocket; import unipotsdam.gf.modules.annotation.model.AnnotationMessage; import unipotsdam.gf.modules.peer2peerfeedback.Category; -import javax.websocket.*; +import javax.websocket.EncodeException; +import javax.websocket.OnClose; +import javax.websocket.OnError; +import javax.websocket.OnMessage; +import javax.websocket.OnOpen; +import javax.websocket.Session; import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; import java.io.IOException; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Assessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Assessment.java index be42f1baa23fbece4fa842645201448c3fe0b6a9..f61f345fd2ed77b96d9f02387f90b38d3fd65033 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Assessment.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Assessment.java @@ -2,17 +2,6 @@ package unipotsdam.gf.modules.assessment.controller.model; import com.fasterxml.jackson.annotation.JsonIgnore; import unipotsdam.gf.core.database.mysql.MysqlConnect; -import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; -import unipotsdam.gf.core.management.project.Project; -import unipotsdam.gf.core.management.user.User; -import unipotsdam.gf.modules.assessment.controller.model.Performance; -import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; - -import javax.xml.bind.annotation.XmlRootElement; -import java.security.acl.Group; -import java.util.ArrayList; - - import javax.xml.bind.annotation.XmlRootElement; import java.util.ArrayList; @@ -36,13 +25,13 @@ public class Assessment { this.performance = performance; } - public Assessment(boolean adressat,StudentIdentifier student, Date deadline, StudentIdentifier bewertender, String projektId, int bewertung) { + public Assessment(boolean adressat, StudentIdentifier student, Date deadline, StudentIdentifier bewertender, String projektId, int bewertung) { this.student = student; this.deadline = deadline; this.bewertender = bewertender; this.projektId = projektId; this.bewertung = bewertung; - this.adressat=adressat; + this.adressat = adressat; } public Assessment() { @@ -72,6 +61,7 @@ public class Assessment { public Performance getPerformance() { return performance; } + @JsonIgnore public void setPerformance(Performance performance) { this.performance = performance; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalDataDatasets.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalDataDatasets.java index 17beba2eed381316a22488217073ebe04af84c4e..202cac8e4d8534233c4e62500119080b3c7ec514 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalDataDatasets.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalDataDatasets.java @@ -1,28 +1,29 @@ package unipotsdam.gf.modules.assessment.controller.model; - public class GroupEvalDataDatasets { private String label; - private int[] data= new int[50]; + private int[] data = new int[50]; - private String borderColor= "rgba(0,255,0,0.2)"; - private String backgroundColor= "rgba(0,255,0,0.2)"; - private boolean fill=false; + private String borderColor = "rgba(0,255,0,0.2)"; + private String backgroundColor = "rgba(0,255,0,0.2)"; + private boolean fill = false; - public GroupEvalDataDatasets(){} + public GroupEvalDataDatasets() { + } - public GroupEvalDataDatasets(String label,int[] data, String backgroundColor, String borderColor, boolean fill){ - this.backgroundColor=backgroundColor; - this.borderColor=borderColor; - this.data=data; - this.fill=fill; - this.label=label; + public GroupEvalDataDatasets(String label, int[] data, String backgroundColor, String borderColor, boolean fill) { + this.backgroundColor = backgroundColor; + this.borderColor = borderColor; + this.data = data; + this.fill = fill; + this.label = label; } - public GroupEvalDataDatasets(String label, int[] data){ - this.data=data; - this.label=label; + public GroupEvalDataDatasets(String label, int[] data) { + + this.data = data; + this.label = label; } public int[] getData() { @@ -32,11 +33,12 @@ public class GroupEvalDataDatasets { public void setData(int[] data) { this.data = data; } -/* - public void appendData(int data) { - this.data.add(data); - } -*/ + + /* + public void appendData(int data) { + this.data.add(data); + } + */ public String getBorderColor() { return borderColor; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalDataList.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalDataList.java index 05f44bce99da488ba3a1f29a3cb441031e88db20..9b8ef4cff6dc5fa67021a3cffbbef80035b78d1b 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalDataList.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalDataList.java @@ -1,20 +1,24 @@ package unipotsdam.gf.modules.assessment.controller.model; -import java.util.*; + +import java.util.ArrayList; +import java.util.List; public class GroupEvalDataList { - private String[] labels ; + private String[] labels; private List<GroupEvalDataDatasets> datasets = new ArrayList<>(); - public GroupEvalDataList(){} - public GroupEvalDataList(String[] labels, List<GroupEvalDataDatasets> datasets){ - this.datasets=datasets; - this.labels=labels; + public GroupEvalDataList() { } - public GroupEvalDataList(List<GroupEvalDataDatasets> datasets,String[] labels){ - this.labels=labels; - this.datasets=datasets; + public GroupEvalDataList(String[] labels, List<GroupEvalDataDatasets> datasets) { + this.datasets = datasets; + this.labels = labels; + } + + public GroupEvalDataList(List<GroupEvalDataDatasets> datasets, String[] labels) { + this.labels = labels; + this.datasets = datasets; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalDiagrammData.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalDiagrammData.java index 67b8a15d28780375b88fa6e076b0c8c4814645c4..166919a60439e9ea08eb88f594700971c6db86fb 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalDiagrammData.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalDiagrammData.java @@ -3,10 +3,12 @@ package unipotsdam.gf.modules.assessment.controller.model; import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; -import javax.ws.rs.*; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; @Path("/assessments4") @@ -32,11 +34,13 @@ public class GroupEvalDiagrammData { public void setData(GroupEvalDataList data) { this.data = data; } - public GroupEvalDiagrammData(){} - public GroupEvalDiagrammData(String type, GroupEvalDataList data){ - this.type=type; - this.data=data; + public GroupEvalDiagrammData() { + } + + public GroupEvalDiagrammData(String type, GroupEvalDataList data) { + this.type = type; + this.data = data; } public GroupEvalOption getOption() { @@ -50,13 +54,12 @@ public class GroupEvalDiagrammData { @POST @Produces(MediaType.APPLICATION_JSON) @Path("/diagramm1/{projectId}") - public GroupEvalDiagrammData getValuesFromDBByProjectID(@PathParam("projectId") String projectId) - { + public GroupEvalDiagrammData getValuesFromDBByProjectID(@PathParam("projectId") String projectId) { //GruppenID muss noch irgendwie aus der Seite ausgelesen werden, wenn die dann mal dynamisch gefüllt wurde - GroupEvalDiagrammData diagramm= new GroupEvalDiagrammData(); - GroupEvalOption option=new GroupEvalOption(); - GroupEvalDiagrammLegende legende =new GroupEvalDiagrammLegende(); + GroupEvalDiagrammData diagramm = new GroupEvalDiagrammData(); + GroupEvalOption option = new GroupEvalOption(); + GroupEvalDiagrammLegende legende = new GroupEvalDiagrammLegende(); diagramm.setType("line"); diagramm.setOption(option); @@ -65,7 +68,7 @@ public class GroupEvalDiagrammData { MysqlConnect connect = new MysqlConnect(); - List<String> userNamen=new ArrayList<>(); + List<String> userNamen = new ArrayList<>(); GroupEvalDataDatasets datenSaetze = new GroupEvalDataDatasets(); GroupEvalDataList datenDia = new GroupEvalDataList(); @@ -76,13 +79,13 @@ public class GroupEvalDiagrammData { connect.connect(); String mysqlRequestGroupuser = "SELECT * FROM `groupuser` WHERE `groupId`=? "; - VereinfachtesResultSet namenDerUser = connect.issueSelectStatement(mysqlRequestGroupuser,3); + VereinfachtesResultSet namenDerUser = connect.issueSelectStatement(mysqlRequestGroupuser, 3); List<Integer> bewertungenZwischen = new ArrayList<Integer>(); List<String> labelZwischen = new ArrayList<String>(); - List<GroupEvalDataDatasets> hilfeBittefunktionierEndlich=new ArrayList<>(); + List<GroupEvalDataDatasets> hilfeBittefunktionierEndlich = new ArrayList<>(); - while (namenDerUser.next()){ + while (namenDerUser.next()) { userNamen.add(namenDerUser.getString("userEmail")); } for (String anUserNamen : userNamen) { @@ -91,7 +94,7 @@ public class GroupEvalDiagrammData { while (bewertungDerUser.next()) { bewertungenZwischen.add(bewertungDerUser.getInt("bewertung")); - labelZwischen.add(String.valueOf(bewertungDerUser.getTimestamp("deadline")).substring(0,10)); + labelZwischen.add(String.valueOf(bewertungDerUser.getTimestamp("deadline")).substring(0, 10)); } int[] hilfeDaten = new int[bewertungenZwischen.size()]; for (int z = 0; z < labelZwischen.size(); z++) { @@ -99,25 +102,23 @@ public class GroupEvalDiagrammData { } - String[] hilfeLabel = new String[labelZwischen.size()]; for (int z = 0; z < labelZwischen.size(); z++) { hilfeLabel[z] = labelZwischen.get(z); } - hilfeBittefunktionierEndlich.add(new GroupEvalDataDatasets(anUserNamen,hilfeDaten)); + hilfeBittefunktionierEndlich.add(new GroupEvalDataDatasets(anUserNamen, hilfeDaten)); datenSaetze.setData(hilfeDaten); datenSaetze.setLabel(anUserNamen); System.out.println(anUserNamen); - + bewertungenZwischen.clear(); labelZwischen.clear(); - diagramm.setData(new GroupEvalDataList(hilfeLabel,hilfeBittefunktionierEndlich)); + diagramm.setData(new GroupEvalDataList(hilfeLabel, hilfeBittefunktionierEndlich)); } connect.close(); - return diagramm; } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalOption.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalOption.java index 95d0d15834c58758cbad722e801349f5e5a3bd53..588c4ecf02df83c1aaedb4c65e970b397f96dbbc 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalOption.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/GroupEvalOption.java @@ -1,7 +1,6 @@ package unipotsdam.gf.modules.assessment.controller.model; - public class GroupEvalOption { private GroupEvalDiagrammLegende legende; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/PACalculate.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/PACalculate.java index fa81556965e51fa31c6112337ca8d9a111b38cf0..2e815baf4653f79119e6cb4a442b310dcc64f332 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/PACalculate.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/PACalculate.java @@ -1,40 +1,39 @@ package unipotsdam.gf.modules.assessment.controller.model; -import com.mysql.jdbc.Statement; + import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; -import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; public class PACalculate { -public List<Double> meanOfAssessments(String name, String projekt){ + public List<Double> meanOfAssessments(String name, String projekt) { /* Berechnet aus Namen und ProjektId das arithmetische Mittel der Bewertungen und gibt eine Liste mit allen EInzelnoten und dem Mittel als letztem Eintrag zurück */ - double zwischenErgebnis=0.0; - double counter=0.0; - List<Double> results = new ArrayList<>(); - MysqlConnect connect = new MysqlConnect(); + double zwischenErgebnis = 0.0; + double counter = 0.0; + List<Double> results = new ArrayList<>(); + MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM `assessments` WHERE `empfaengerId`=? AND `projektId`=?"; + connect.connect(); + String mysqlRequest = "SELECT * FROM `assessments` WHERE `empfaengerId`=? AND `projektId`=?"; - String nameDesKandidaten = name; - String projektDesKandidaten = projekt; - VereinfachtesResultSet ausgabe = connect.issueSelectStatement(mysqlRequest,nameDesKandidaten, projektDesKandidaten); + String nameDesKandidaten = name; + String projektDesKandidaten = projekt; + VereinfachtesResultSet ausgabe = connect.issueSelectStatement(mysqlRequest, nameDesKandidaten, projektDesKandidaten); - while (ausgabe.next()){ - counter++; - zwischenErgebnis=zwischenErgebnis+ausgabe.getInt("bewertung"); - results.add((double) ausgabe.getInt("bewertung")); - } - results.add(zwischenErgebnis/counter); - connect.close(); - return results; + while (ausgabe.next()) { + counter++; + zwischenErgebnis = zwischenErgebnis + ausgabe.getInt("bewertung"); + results.add((double) ausgabe.getInt("bewertung")); + } + results.add(zwischenErgebnis / counter); + connect.close(); + return results; -} + } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/PeerRating.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/PeerRating.java index 0d29f8ce6322059e0258f708af7cd581d864e436..1351cf69b92a1901285758c3d92f0b0a0134d3b7 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/PeerRating.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/PeerRating.java @@ -1,6 +1,5 @@ package unipotsdam.gf.modules.assessment.controller.model; -import java.util.Arrays; import java.util.Map; public class PeerRating { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Performance.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Performance.java index 4f97bdb7384a3e37deb26bf85e60d31573c027d4..03c25404c5f5a09669d30826acb60f68d6d6a58f 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Performance.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/Performance.java @@ -15,7 +15,7 @@ public class Performance { this.studentIdentifier = student; this.quizAnswer = quiz; this.workRating=workRating; - this.contributionRating=contributionRating; + this.contributionRating = contributionRating; } @@ -26,9 +26,14 @@ public class Performance { public void setStudentIdentifier(StudentIdentifier studentIdentifier) { this.studentIdentifier = studentIdentifier; } - public Map getContributionRating() { return contributionRating; } - public void setContributionRating(Map contributionRating) { this.contributionRating = contributionRating; } + public Map getContributionRating() { + return contributionRating; + } + + public void setContributionRating(Map contributionRating) { + this.contributionRating = contributionRating; + } public List<Integer> getQuizAnswer() { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/cheatCheckerMethods.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/cheatCheckerMethods.java index ff2d1bdc4eef24c126ac98ffa789fd32ee658154..b64a6ad853b286cfaedc3db433c81be32878edee 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/cheatCheckerMethods.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/cheatCheckerMethods.java @@ -7,11 +7,12 @@ public enum cheatCheckerMethods { private final String text; - cheatCheckerMethods(final String text){ + cheatCheckerMethods(final String text) { this.text = text; } + @Override - public String toString(){ + public String toString() { return text; } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDBCommunication.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDBCommunication.java index 5f05a39f3c6c9920be80265daa497acbbba0e849..43bf51f462697e1a6a95e40d5ee10029c34e64a1 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDBCommunication.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDBCommunication.java @@ -2,7 +2,14 @@ package unipotsdam.gf.modules.assessment.controller.service; import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; -import unipotsdam.gf.modules.assessment.controller.model.*; +import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; +import unipotsdam.gf.modules.assessment.controller.model.Categories; +import unipotsdam.gf.modules.assessment.controller.model.Grading; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; +import unipotsdam.gf.modules.assessment.controller.model.Categories; +import unipotsdam.gf.modules.assessment.controller.model.Grading; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import javax.annotation.ManagedBean; import javax.annotation.Resource; @@ -36,7 +43,7 @@ class AssessmentDBCommunication { return result; } - Boolean getWorkRating(StudentIdentifier student, String fromStudent){ + Boolean getWorkRating(StudentIdentifier student, String fromStudent) { MysqlConnect connect = new MysqlConnect(); connect.connect(); String mysqlRequest = "SELECT * FROM `workrating` WHERE `projectId`=? AND `studentId`=? AND `fromPeer`=?"; @@ -72,7 +79,7 @@ class AssessmentDBCommunication { return result; } - ArrayList<String> getStudentsByGroupAndProject(Integer groupId, String projectId){ + ArrayList<String> getStudentsByGroupAndProject(Integer groupId, String projectId) { ArrayList<String> result = new ArrayList<>(); MysqlConnect connect = new MysqlConnect(); connect.connect(); @@ -80,7 +87,7 @@ class AssessmentDBCommunication { VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(mysqlRequest, groupId, projectId); Boolean next = vereinfachtesResultSet.next(); - while (next){ + while (next) { result.add(vereinfachtesResultSet.getString("studentId")); next = vereinfachtesResultSet.next(); } @@ -135,7 +142,7 @@ class AssessmentDBCommunication { void writeAnsweredQuiz(StudentIdentifier student, Map<String, Boolean> questions) { MysqlConnect connect = new MysqlConnect(); connect.connect(); - for (String question: questions.keySet()){ + for (String question : questions.keySet()) { String mysqlRequest = "INSERT INTO `answeredquiz`(`projectId`, `studentId`, `question`, `correct`) VALUES (?,?,?,?)"; connect.issueInsertOrDeleteStatement(mysqlRequest, student.getProjectId(), @@ -167,13 +174,13 @@ class AssessmentDBCommunication { connect.close(); } - Integer getWhichGroupToRate(StudentIdentifier student){ + Integer getWhichGroupToRate(StudentIdentifier student) { Integer result; MysqlConnect connect = new MysqlConnect(); connect.connect(); String mysqlRequest1 = "SELECT groupId FROM `groupuser` WHERE `projectId`=? AND `studentId`=? "; VereinfachtesResultSet vereinfachtesResultSet1 = - connect.issueSelectStatement(mysqlRequest1, student.getProjectId(),student.getStudentId()); + connect.issueSelectStatement(mysqlRequest1, student.getProjectId(), student.getStudentId()); vereinfachtesResultSet1.next(); Integer groupId = vereinfachtesResultSet1.getInt("groupId"); @@ -182,13 +189,13 @@ class AssessmentDBCommunication { connect.issueSelectStatement(mysqlRequest2, student.getProjectId()); Boolean next = vereinfachtesResultSet2.next(); result = vereinfachtesResultSet2.getInt("groupId"); - while(next){ - if (vereinfachtesResultSet2.getInt("groupId") == groupId){ + while (next) { + if (vereinfachtesResultSet2.getInt("groupId") == groupId) { next = vereinfachtesResultSet2.next(); - if (next){ + if (next) { result = vereinfachtesResultSet2.getInt("groupId"); } - }else{ + } else { next = vereinfachtesResultSet2.next(); } @@ -243,4 +250,60 @@ class AssessmentDBCommunication { return result; } + Map<StudentIdentifier, ConstraintsMessages> missingAssessments(String projectId) { + Map<StudentIdentifier, ConstraintsMessages> result = new HashMap<>(); + ArrayList<String> studentsInProject = new ArrayList<>(getStudents(projectId)); + ArrayList<StudentIdentifier> missingStudentsCauseOfWorkrating = missingWorkRatings(studentsInProject, projectId); + if (missingStudentsCauseOfWorkrating != null) + for (StudentIdentifier missingStudent : missingStudentsCauseOfWorkrating) { + result.put(missingStudent, new ConstraintsMessages(Constraints.AssessmentOpen, missingStudent)); + } + // ArrayList<StudentIdentifier> missingStudentsCauseOfQuiz <--- I can't check that atm + ArrayList<StudentIdentifier> missingStudentsCauseOfContribution = missingContribution(studentsInProject, projectId); + if (missingStudentsCauseOfContribution != null) + for (StudentIdentifier missingStudent : missingStudentsCauseOfContribution) { + result.put(missingStudent, new ConstraintsMessages(Constraints.AssessmentOpen, missingStudent)); + } + return result; + } + + private ArrayList<StudentIdentifier> missingWorkRatings(ArrayList<String> studentsInProject, String projectId) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + ArrayList<StudentIdentifier> result = new ArrayList<>(); + String sqlSelectWorkRating = "SELECT DISTINCT fromPeer FROM `workrating` WHERE `projectId`='"+projectId+"' AND `fromPeer`=''"; + for (String studentId : studentsInProject) { + sqlSelectWorkRating = sqlSelectWorkRating + " OR `fromPeer`='" + studentId+"'"; + } + VereinfachtesResultSet selectWorkRatingResultSet = + connect.issueSelectStatement(sqlSelectWorkRating); + Boolean next = selectWorkRatingResultSet.next(); + resultSetToStudentIdentifierList(studentsInProject, projectId, result, selectWorkRatingResultSet, next); + return result; + } + + private ArrayList<StudentIdentifier> missingContribution(ArrayList<String> studentsInProject, String projectId) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + ArrayList<StudentIdentifier> result = new ArrayList<>(); + String sqlContribution = "SELECT DISTINCT cr.fromPeer FROM groupuser gu " + + "JOIN contributionrating cr ON gu.groupId=cr.groupId WHERE gu.projectId = ?;"; + VereinfachtesResultSet selectContributionResultSet = + connect.issueSelectStatement(sqlContribution, projectId); + Boolean next = selectContributionResultSet.next(); + resultSetToStudentIdentifierList(studentsInProject, projectId, result, selectContributionResultSet, next); + return result; + } + + private void resultSetToStudentIdentifierList(ArrayList<String> studentsInProject, String projectId, ArrayList<StudentIdentifier> result, VereinfachtesResultSet selectWorkRatingResultSet, Boolean next) { + while (next) { + String fromPeer = selectWorkRatingResultSet.getString("fromPeer"); + if (!studentsInProject.contains(fromPeer)) { + StudentIdentifier studentIdentifier = new StudentIdentifier(projectId, fromPeer); + result.add(studentIdentifier); + } + next = selectWorkRatingResultSet.next(); + } + } + } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java index 866d46be26992a8be17bd44f4b2cb6823ca60d37..bc2d65e25dbd1f95146daf1112b0b216ae1df2ec 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java @@ -1,7 +1,13 @@ package unipotsdam.gf.modules.assessment.controller.service; import unipotsdam.gf.core.management.project.Project; -import unipotsdam.gf.modules.assessment.controller.model.*; +import unipotsdam.gf.core.states.model.ConstraintsMessages; +import unipotsdam.gf.modules.assessment.controller.model.Assessment; +import unipotsdam.gf.modules.assessment.controller.model.PeerRating; +import unipotsdam.gf.modules.assessment.controller.model.Performance; +import unipotsdam.gf.modules.assessment.controller.model.Quiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentAndQuiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import java.util.ArrayList; import java.util.List; @@ -86,7 +92,7 @@ public class FBAssessement extends AssessmentDAO { } @Override - public Boolean allAssessmentsDone(String projectId) { + public Map<StudentIdentifier, ConstraintsMessages> allAssessmentsDone(String projectId) { return null; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java index 871b3c94af79f47dc054d632240a8648ee0992af..56ec42edf3c14bce353513954c379fc610e9a10c 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java @@ -1,12 +1,29 @@ package unipotsdam.gf.modules.assessment.controller.service; +import unipotsdam.gf.core.management.Management; import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.interfaces.IPeerAssessment; -import unipotsdam.gf.modules.assessment.controller.model.*; +import unipotsdam.gf.modules.assessment.controller.model.Assessment; +import unipotsdam.gf.modules.assessment.controller.model.PeerRating; +import unipotsdam.gf.modules.assessment.controller.model.Performance; +import unipotsdam.gf.modules.assessment.controller.model.Quiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentAndQuiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; +import unipotsdam.gf.modules.assessment.controller.model.cheatCheckerMethods; -import java.util.*; +import javax.inject.Inject; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class PeerAssessment implements IPeerAssessment { + + @Inject + private Management management; + @Override public void addAssessmentDataToDB(Assessment assessment) { @@ -41,28 +58,30 @@ public class PeerAssessment implements IPeerAssessment { public String whatToRate(StudentIdentifier student) { Integer groupId = new AssessmentDBCommunication().getGroupByStudent(student); ArrayList<String> groupMembers = new AssessmentDBCommunication().getStudentsByGroupAndProject(groupId, student.getProjectId()); - for (String peer: groupMembers){ - if (!peer.equals(student.getStudentId())){ + for (String peer : groupMembers) { + if (!peer.equals(student.getStudentId())) { StudentIdentifier groupMember = new StudentIdentifier(student.getProjectId(), peer); - if (!new AssessmentDBCommunication().getWorkRating(groupMember, student.getStudentId())){ + if (!new AssessmentDBCommunication().getWorkRating(groupMember, student.getStudentId())) { return "workRating"; } } } ArrayList<Integer> answers = new AssessmentDBCommunication().getAnsweredQuizzes(student); - if (answers==null){ + if (answers == null) { return "quiz"; } Integer groupToRate = new AssessmentDBCommunication().getWhichGroupToRate(student); - if (!new AssessmentDBCommunication().getContributionRating(groupToRate, student.getStudentId())){ + if (!new AssessmentDBCommunication().getContributionRating(groupToRate, student.getStudentId())) { return "contributionRating"; } return "done"; } @Override - public Boolean allAssessmentsDone(String projectId) { - return null; + public Map<StudentIdentifier, ConstraintsMessages> allAssessmentsDone(String projectId) { + Map<StudentIdentifier, ConstraintsMessages> result; + result = new AssessmentDBCommunication().missingAssessments(projectId); + return result; } @Override @@ -83,7 +102,7 @@ public class PeerAssessment implements IPeerAssessment { Map<StudentIdentifier, Double> contributionMean = new HashMap<>(mapToGrade(contributionRating)); Map<StudentIdentifier, Double> result = new HashMap<>(); for (StudentIdentifier student : quizMean.keySet()) { - double grade = (quizMean.get(student) + workRateMean.get(student) + contributionMean.get(student)) * 100 / 3. ; + double grade = (quizMean.get(student) + workRateMean.get(student) + contributionMean.get(student)) * 100 / 3.; result.put(student, grade); } return result; @@ -133,12 +152,11 @@ public class PeerAssessment implements IPeerAssessment { Double allAssessments; Map<StudentIdentifier, Double> grading = new HashMap<>(); for (StudentIdentifier student : ratings.keySet()) { - if (ratings.get(student) != null){ + if (ratings.get(student) != null) { allAssessments = sumOfDimensions(ratings.get(student)); Double countDimensions = (double) ratings.get(student).size(); - grading.put(student, (allAssessments-1) / (countDimensions * 4)); - } - else { + grading.put(student, (allAssessments - 1) / (countDimensions * 4)); + } else { grading.put(student, 0.); } } @@ -182,7 +200,7 @@ public class PeerAssessment implements IPeerAssessment { oneExcludedMeans.add(meanOfWorkRatings(possiblyCheating)); } } else { - if (workRatings.size() <1){ + if (workRatings.size() < 1) { return null; } oneExcludedMeans.add(meanOfWorkRatings(workRatings)); @@ -215,7 +233,7 @@ public class PeerAssessment implements IPeerAssessment { } } result = oneExcludedMeans.get(key); //gets set of rates with highest deviation in data - //so without the cheater + //so without the cheater } else { //without cheatChecking result = meanOfWorkRatings(workRatings); } @@ -236,7 +254,7 @@ public class PeerAssessment implements IPeerAssessment { @Override public void postPeerRating(ArrayList<PeerRating> peerRatings, String projectId) { - for (PeerRating peer: peerRatings){ + for (PeerRating peer : peerRatings) { StudentIdentifier student = new StudentIdentifier(projectId, peer.getToPeer()); new AssessmentDBCommunication().writeWorkRatingToDB(student, peer.getFromPeer(), peer.getWorkRating()); } @@ -256,13 +274,13 @@ public class PeerAssessment implements IPeerAssessment { @Override public void answerQuiz(Map<String, List<String>> questions, StudentIdentifier student) { - for (String question: questions.keySet()){ + for (String question : questions.keySet()) { Map<String, Boolean> whatAreAnswers = new AssessmentDBCommunication().getAnswers(student.getProjectId(), question); Map<String, Boolean> wasQuestionAnsweredCorrectly = new HashMap<>(); Boolean correct = true; - for (String studentAnswer: questions.get(question)){ - if (!whatAreAnswers.get(studentAnswer)){ - correct=false; + for (String studentAnswer : questions.get(question)) { + if (!whatAreAnswers.get(studentAnswer)) { + correct = false; } } wasQuestionAnsweredCorrectly.put(question, correct); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java index a5cb9fae5bdddcc98bf3b438665e17860e50a969..6dfe61edc45fde90f709b0490a5b1f46cf2260ed 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java @@ -3,10 +3,19 @@ package unipotsdam.gf.modules.assessment.controller.service; import unipotsdam.gf.assignments.Assignee; import unipotsdam.gf.assignments.NotImplementedLogger; import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.interfaces.IPeerAssessment; -import unipotsdam.gf.modules.assessment.controller.model.*; - -import java.util.*; +import unipotsdam.gf.modules.assessment.controller.model.Assessment; +import unipotsdam.gf.modules.assessment.controller.model.PeerRating; +import unipotsdam.gf.modules.assessment.controller.model.Performance; +import unipotsdam.gf.modules.assessment.controller.model.Quiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentAndQuiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class PeerAssessmentDummy implements IPeerAssessment { @@ -90,8 +99,8 @@ public class PeerAssessmentDummy implements IPeerAssessment { } @Override - public Boolean allAssessmentsDone(String projectId) { - return true; + public Map<StudentIdentifier, ConstraintsMessages> allAssessmentsDone(String projectId) { + return new HashMap<StudentIdentifier, ConstraintsMessages>(); } @Override diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/QuizDBCommunication.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/QuizDBCommunication.java index 1bec0a0672821a6f22d342f5dd1390d7340066ac..f080c09a384d04d52d124710b71befd2c6ae70db 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/QuizDBCommunication.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/QuizDBCommunication.java @@ -13,12 +13,12 @@ import java.util.ArrayList; @Resource @Singleton public class QuizDBCommunication { - Quiz getQuizByProjectQuizId(String projectId, String quizId, String author){ + Quiz getQuizByProjectQuizId(String projectId, String quizId, String author) { MysqlConnect connect = new MysqlConnect(); connect.connect(); String mysqlRequest = "SELECT * FROM `quiz` WHERE `projectId`=? AND `question`=? AND `author`=?"; VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, projectId,quizId,author); + connect.issueSelectStatement(mysqlRequest, projectId, quizId, author); boolean next = vereinfachtesResultSet.next(); String question = ""; ArrayList<String> correctAnswers = new ArrayList<>(); @@ -31,21 +31,21 @@ public class QuizDBCommunication { question = vereinfachtesResultSet.getString("question"); answer = vereinfachtesResultSet.getString("answer"); correct = vereinfachtesResultSet.getBoolean("correct"); - if (correct){ + if (correct) { correctAnswers.add(answer); - }else{ + } else { incorrectAnswers.add(answer); } next = vereinfachtesResultSet.next(); } - Quiz quiz = new Quiz(mcType,question, correctAnswers, incorrectAnswers); + Quiz quiz = new Quiz(mcType, question, correctAnswers, incorrectAnswers); connect.close(); return quiz; } ArrayList<Quiz> getQuizByProjectId(String projectId) { MysqlConnect connect = new MysqlConnect(); - ArrayList<Quiz> result= new ArrayList<>(); + ArrayList<Quiz> result = new ArrayList<>(); connect.connect(); String mysqlRequest = "SELECT * FROM quiz where projectId= ?"; VereinfachtesResultSet vereinfachtesResultSet = @@ -55,7 +55,7 @@ public class QuizDBCommunication { ArrayList<String> correctAnswers = new ArrayList<>(); ArrayList<String> incorrectAnswers = new ArrayList<>(); String answer; - String oldQuestion=""; + String oldQuestion = ""; Boolean correct; String mcType = ""; Quiz quiz; @@ -64,20 +64,20 @@ public class QuizDBCommunication { question = vereinfachtesResultSet.getString("question"); answer = vereinfachtesResultSet.getString("answer"); correct = vereinfachtesResultSet.getBoolean("correct"); - if (oldQuestion.equals(question)){ - if (correct){ + if (oldQuestion.equals(question)) { + if (correct) { correctAnswers.add(answer); - }else{ + } else { incorrectAnswers.add(answer); } - }else{ - quiz = new Quiz(mcType,oldQuestion, correctAnswers, incorrectAnswers); + } else { + quiz = new Quiz(mcType, oldQuestion, correctAnswers, incorrectAnswers); result.add(quiz); - correctAnswers=new ArrayList<>(); - incorrectAnswers=new ArrayList<>(); - if (correct){ + correctAnswers = new ArrayList<>(); + incorrectAnswers = new ArrayList<>(); + if (correct) { correctAnswers.add(answer); - }else{ + } else { incorrectAnswers.add(answer); } @@ -85,7 +85,7 @@ public class QuizDBCommunication { oldQuestion = question; next = vereinfachtesResultSet.next(); } - quiz = new Quiz(mcType,oldQuestion, correctAnswers, incorrectAnswers); + quiz = new Quiz(mcType, oldQuestion, correctAnswers, incorrectAnswers); result.add(quiz); return result; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/AssessmentView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/AssessmentView.java index 2a603937709464ce3e5d823c67d8628827c1bf59..b46921a052b1d965523d80c76845cb597ec653d1 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/AssessmentView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/AssessmentView.java @@ -2,19 +2,22 @@ package unipotsdam.gf.modules.assessment.controller.view; import unipotsdam.gf.interfaces.IPeerAssessment; import unipotsdam.gf.modules.assessment.controller.model.Assessment; -import unipotsdam.gf.modules.assessment.controller.model.*; +import unipotsdam.gf.modules.assessment.controller.model.Performance; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.assessment.controller.service.PeerAssessmentDummy; - -import javax.ws.rs.*; +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import java.util.ArrayList; -import java.util.List; import java.util.Map; @Path("/assessments2") -public class AssessmentView{ - private static IPeerAssessment peer = new PeerAssessmentDummy(); +public class AssessmentView { + private static IPeerAssessment peer = new PeerAssessmentDummy(); + @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @@ -27,7 +30,7 @@ public class AssessmentView{ @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) @Path("/calculate2") - public String testDesReturn(Assessment assessment){ + public String testDesReturn(Assessment assessment) { Assessment shuttle = new Assessment(); //neues Objekt, dass dann bearbeitet werden kann //System.out.println(assessment.getBewertung()); shuttle.setAssessment(assessment); //inhalte werden in die DB geschrieben und es wird erfolg zurückgemeldet diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java index f897c2561574cf9d896ce445d6879d8bc74443f4..cbf9f2c785cce362d821f5ad24f0e001066712e2 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java @@ -1,16 +1,20 @@ package unipotsdam.gf.modules.assessment.controller.view; -import unipotsdam.gf.core.management.Management; -import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.interfaces.IPeerAssessment; -import unipotsdam.gf.interfaces.IPhases; -import unipotsdam.gf.modules.assessment.QuizAnswer; import unipotsdam.gf.modules.assessment.controller.model.Assessment; -import unipotsdam.gf.modules.assessment.controller.model.*; +import unipotsdam.gf.modules.assessment.controller.model.PeerRating; +import unipotsdam.gf.modules.assessment.controller.model.Performance; +import unipotsdam.gf.modules.assessment.controller.model.Quiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentAndQuiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.assessment.controller.service.PeerAssessment; -import javax.inject.Inject; -import javax.ws.rs.*; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -55,9 +59,8 @@ public class QuizView { @GET @Produces(MediaType.APPLICATION_JSON) @Path("/groupRate/project/{projectId}/student/{studentId}") - public Integer whichGroupToRate(@PathParam("projectId") String projectId, @PathParam("studentId") String studentId) - { - StudentIdentifier student = new StudentIdentifier(projectId,studentId); + public Integer whichGroupToRate(@PathParam("projectId") String projectId, @PathParam("studentId") String studentId) { + StudentIdentifier student = new StudentIdentifier(projectId, studentId); return peer.whichGroupToRate(student); } @@ -93,9 +96,8 @@ public class QuizView { @GET @Produces(MediaType.TEXT_HTML) @Path("/whatToRate/project/{projectId}/student/{studentId}") - public String whatToRate(@PathParam("projectId") String projectId, @PathParam("studentId") String studentId) - { - StudentIdentifier student = new StudentIdentifier(projectId,studentId); + public String whatToRate(@PathParam("projectId") String projectId, @PathParam("studentId") String studentId) { + StudentIdentifier student = new StudentIdentifier(projectId, studentId); return peer.whatToRate(student); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java index 9fa51312f3f086cdacfd1dd25bc21612dccffbc8..366395cee07156c5b2f44fb22e56a449478afbaf 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java @@ -1,6 +1,5 @@ package unipotsdam.gf.modules.communication; -import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.interfaces.ICommunication; import unipotsdam.gf.modules.communication.service.CommunicationDummyService; @@ -18,16 +17,15 @@ public class ChatWindow extends SimpleTagSupport { PageContext pageContext = (PageContext) getJspContext(); HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); String token = request.getParameter("token"); - ManagementImpl management = new ManagementImpl(); //User user = management.getUserByToken(token); String groupToken = request.getParameter("groupToken"); String projectToken = request.getParameter("projectToken"); //get ProjetbyToken ICommunication communicationService = new CommunicationDummyService(); - String chatRoomLink = communicationService.getChatRoomLink(token,projectToken,groupToken); + String chatRoomLink = communicationService.getChatRoomLink(token, projectToken, groupToken); JspWriter out = getJspContext().getOut(); - out.println("<iframe width=\"30%\" height=\"100%\" src=\""+chatRoomLink+"\"/>"); + out.println("<iframe width=\"30%\" height=\"100%\" src=\"" + chatRoomLink + "\"/>"); } public void setOrientation(String orientation) { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java index 1aa5c32fee0d669a6956d7822e9b084f294c264f..9fa183199162551aaa5d98d65ab6a3c6128d05ff 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java @@ -1,12 +1,17 @@ package unipotsdam.gf.modules.communication.service; +import unipotsdam.gf.assignments.Assignee; +import unipotsdam.gf.assignments.NotImplementedLogger; import unipotsdam.gf.config.Constants; import unipotsdam.gf.core.management.Management; 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.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.interfaces.ICommunication; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.communication.model.Message; import unipotsdam.gf.modules.communication.model.chat.ChatMessage; import unipotsdam.gf.modules.communication.model.chat.ChatRoom; @@ -18,6 +23,7 @@ import javax.inject.Singleton; import java.time.Instant; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; @Resource @@ -46,8 +52,8 @@ public class CommunicationDummyService implements ICommunication { } @Override - public String createChatRoom(String name, List<User> users) { - if (Objects.isNull(users)) { + public String createChatRoom(String name, List<User> userList) { + if (Objects.isNull(userList)) { return "2"; } @@ -115,6 +121,11 @@ public class CommunicationDummyService implements ICommunication { NotImplementedLogger.logAssignment(Assignee.MARTIN, CommunicationDummyService.class, message2); } + @Override + public void informAboutMissingTasks(Map<StudentIdentifier, ConstraintsMessages> tasks, Project project) { + + } + @Override public void sendMessageToUsers(Project project, String message) { // TODO implement as email or directed message, popup after login or whatever diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/GroupfindingImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/GroupfindingImpl.java index 78f8621f3d2b9ba1fbaffc207a8970e05b56cb17..0676fdc8c2c4d44f8445cd8d15ae15dad92dca82 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/GroupfindingImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/GroupfindingImpl.java @@ -4,13 +4,21 @@ import unipotsdam.gf.core.management.group.Group; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.interfaces.IGroupFinding; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; -import unipotsdam.gf.modules.groupfinding.service.GroupCreationService; import unipotsdam.gf.modules.groupfinding.service.GroupDAO; +import javax.inject.Inject; import java.util.ArrayList; import java.util.List; public class GroupfindingImpl implements IGroupFinding { + + private GroupDAO groupDAO; + + @Inject + public GroupfindingImpl(GroupDAO groupDAO) { + this.groupDAO = groupDAO; + } + @Override public void selectGroupfindingCriteria(GroupfindingCriteria groupfindingCriteria) { @@ -32,7 +40,7 @@ public class GroupfindingImpl implements IGroupFinding { } - public ArrayList<String> getStudentsInSameGroup(StudentIdentifier student){ - return new GroupDAO().getStudentsInSameGroupAs(student); + public ArrayList<String> getStudentsInSameGroup(StudentIdentifier student) { + return groupDAO.getStudentsInSameGroupAs(student); } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationService.java similarity index 62% rename from gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java rename to gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationService.java index 09fba126c48b52b04893ac4d08a4f207ffe478a5..4f1122f71f7761c8e52b9b567efde8b2545e017f 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationService.java @@ -1,11 +1,13 @@ -package unipotsdam.gf.modules.groupfinding.service; +package unipotsdam.gf.modules.groupfinding.dummy.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.UserDAO; import unipotsdam.gf.core.management.user.UserProfile; import unipotsdam.gf.interfaces.ICommunication; +import unipotsdam.gf.modules.groupfinding.service.GroupDAO; import javax.annotation.ManagedBean; import javax.annotation.Resource; @@ -19,41 +21,51 @@ import java.util.stream.Collectors; @ManagedBean @Resource @Singleton -public class GroupCreationService { +public class DummyProjectCreationService { + - @Inject private ICommunication communicationService; + private Management management; + private GroupDAO groupDAO; + private UserDAO userDAO; @Inject - private Management management; + public DummyProjectCreationService(ICommunication communicationService, Management management, GroupDAO groupDAO, UserDAO userDAO) { + this.communicationService = communicationService; + this.management = management; + this.groupDAO = groupDAO; + this.userDAO = userDAO; + } public boolean createExampleProject() { User docentUser = getDocentUser(); - Project project = new Project("1", "", true, docentUser.getEmail(), "admin"); - - List<Group> groups = createDummyGroups(project.getId()); + if (!management.exists(docentUser)) { + management.create(docentUser, null); + } + Project project = new Project("1", "password", true, docentUser.getEmail(), "admin"); if (!management.exists(project)) { management.create(project); } - 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> groups = createDummyGroups(project.getId()); + List<Group> nonCreatedGroups = groups.stream().filter(group -> !management.exists(group)).collect(Collectors.toList()); - List<Group> nonEmptyGroups = groups.stream().filter(group -> group.getMembers().isEmpty()) - .collect(Collectors.toList()); - if (nonEmptyGroups.isEmpty()) { - return false; - } + nonCreatedGroups.forEach(group -> management.create(group)); + List<Group> groupsWithId = groupDAO.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; } - private List<Group> createDummyGroups(String projectId) { + 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); @@ -78,12 +90,12 @@ public class GroupCreationService { return groups; } - private User getDocentUser() { + User getDocentUser() { User docent = new User("Julian", "docent", "docent@docent.com", false); if (!management.exists(docent)) { saveUserToDatabase(docent); } else { - docent = management.getUserByEmail(docent.getEmail()); + docent = userDAO.getUserByEmail(docent.getEmail()); } return docent; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/view/DummyProjectCreationView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/view/DummyProjectCreationView.java new file mode 100644 index 0000000000000000000000000000000000000000..554ec84506879b189a2476e09ed49277d467a9af --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/view/DummyProjectCreationView.java @@ -0,0 +1,36 @@ +package unipotsdam.gf.modules.groupfinding.dummy.view; + +import unipotsdam.gf.modules.groupfinding.dummy.service.DummyProjectCreationService; + +import javax.inject.Inject; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +@Path("/dummy/project/") +public class DummyProjectCreationView { + + @Inject + DummyProjectCreationService dummyProjectCreationService; + + @GET + @Produces(MediaType.APPLICATION_JSON) + @Path("/create") + public Response createDummyProject() { + + boolean success = dummyProjectCreationService.createExampleProject(); + + Response response; + if (success) { + response = Response.ok("Dummy-Project created").build(); + } else { + response = Response.serverError().build(); + } + + return response; + } + + +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupDAO.java index ffa94b4e83f1e00ff63e59692c956bc19e70403d..ed1198a195338360dbbd54b04b44a2356e46edcf 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupDAO.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupDAO.java @@ -2,14 +2,34 @@ package unipotsdam.gf.modules.groupfinding.service; import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; +import unipotsdam.gf.core.management.group.Group; +import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.management.util.ResultSetUtil; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; +import javax.annotation.ManagedBean; +import javax.annotation.Resource; +import javax.inject.Inject; +import javax.inject.Singleton; import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Objects; +@ManagedBean +@Resource +@Singleton public class GroupDAO { + private MysqlConnect connect; + + @Inject + public GroupDAO(MysqlConnect connect) { + this.connect = connect; + } + public ArrayList<String> getStudentsInSameGroupAs(StudentIdentifier student) { - MysqlConnect connect = new MysqlConnect(); connect.connect(); ArrayList<String> result = new ArrayList<>(); Integer groupId; @@ -22,13 +42,101 @@ public class GroupDAO { VereinfachtesResultSet vereinfachtesResultSet2 = connect.issueSelectStatement(mysqlRequest2, groupId); boolean next2 = vereinfachtesResultSet2.next(); - while(next2){ + while (next2) { String peer = vereinfachtesResultSet2.getString("studentId"); - if (!peer.equals( student.getStudentId())) + if (!peer.equals(student.getStudentId())) result.add(peer); - next2=vereinfachtesResultSet2.next(); + next2 = vereinfachtesResultSet2.next(); } connect.close(); return result; } + + public void persist(Group group) { + connect.connect(); + List<Group> existingGroups = getExistingEntriesOfGroups(group.getProjectId()); + + 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 update(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 update of groupuser if needed later (if member list need to be updated) + } + + + 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; + } + } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/view/GroupView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/view/GroupView.java index 0a9f8c6602e980ec97825126b7f322cad1bb9719..c55f53a85fad03f054c1d6f9ff9b0e6a4c93b66b 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/view/GroupView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/view/GroupView.java @@ -3,14 +3,20 @@ package unipotsdam.gf.modules.groupfinding.view; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.groupfinding.GroupfindingImpl; -import javax.ws.rs.*; +import javax.inject.Inject; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import java.io.IOException; import java.util.ArrayList; @Path("/group") public class GroupView { - private GroupfindingImpl groupfinding = new GroupfindingImpl(); + + @Inject + private GroupfindingImpl groupfinding; @GET @Produces(MediaType.APPLICATION_JSON) diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/EPortfolio.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/EPortfolio.java index be23df134dd8e3f8f8c56d6c04f5e118fba3bf01..317b9b696b723f7a2adfd97dde34ffe9084b12dd 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/EPortfolio.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/EPortfolio.java @@ -17,7 +17,6 @@ public class EPortfolio { private ResearchReport report; - public EPortfolio() { } 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 a0561e81639ef40ef3d2394980c90c618680c381..f721812474ae2df9256dbc49e212319a61af6af6 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 @@ -17,7 +17,7 @@ public class JournalDAOImpl implements JournalDAO { public void createJournal(Journal journal) { // create a new id if we found no id. String uuid = UUID.randomUUID().toString(); - while (JournalUtils.existsId(uuid,"journals")) { + while (JournalUtils.existsId(uuid, "journals")) { uuid = UUID.randomUUID().toString(); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/LinkDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/LinkDAO.java index be43ba44bf7706b582fdfdd2f07d460ab94c13bd..8cbe3950240942d2393abf75add54e51e1848eba 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/LinkDAO.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/LinkDAO.java @@ -7,8 +7,11 @@ import java.util.ArrayList; public interface LinkDAO { void addLink(Link link); + void deleteLink(String linkId); + Link getLink(String linkId); + ArrayList<Link> getAllLinks(String descriptionID); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/LinkDAOImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/LinkDAOImpl.java index 3b7ff8613a52c7c616b82cc91be9ba514dba42e5..6b81361f1b92a27441f2ee22e43653cdf86acb3a 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/LinkDAOImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/LinkDAOImpl.java @@ -8,13 +8,13 @@ import unipotsdam.gf.modules.journal.util.JournalUtils; import java.util.ArrayList; import java.util.UUID; -public class LinkDAOImpl implements LinkDAO{ +public class LinkDAOImpl implements LinkDAO { @Override public void addLink(Link link) { // create a new id String uuid = UUID.randomUUID().toString(); - while (JournalUtils.existsId(uuid,"links")) { + while (JournalUtils.existsId(uuid, "links")) { uuid = UUID.randomUUID().toString(); } @@ -24,7 +24,7 @@ public class LinkDAOImpl implements LinkDAO{ // build and execute request String request = "INSERT INTO links (`id`, `projecdesription`, `name`, `link`) VALUES (?,?,?,?);"; - connection.issueInsertOrDeleteStatement(request, uuid, link.getProjectDescription(),link.getName(),link.getLink()); + connection.issueInsertOrDeleteStatement(request, uuid, link.getProjectDescription(), link.getName(), link.getLink()); //close connection connection.close(); @@ -103,7 +103,7 @@ public class LinkDAOImpl implements LinkDAO{ String project = rs.getString("projecdesription"); String name = rs.getString("name"); String link = rs.getString("link"); - return new Link(id,project,name,link); + return new Link(id, project, name, link); } } 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 0ebb749d4cf824e02a95646123595c3b2b0fc1b0..faa7591a1b1aa5b52b8442a2649fcc4704a704c0 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 @@ -9,11 +9,15 @@ import java.util.ArrayList; public interface ProjectDescriptionDAO { void createDescription(ProjectDescription projectDescription); + void updateDescription(ProjectDescription projectDescription); + ProjectDescription getDescription(StudentIdentifier projectDescription); 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 6bd193c998db83cb1cf0a8d18d5c0703e5a24f51..d473afdc6435ebee06239e6f5a53bde5fb802aa4 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 @@ -17,7 +17,7 @@ public class ProjectDescriptionDAOImpl implements ProjectDescriptionDAO { public void createDescription(ProjectDescription projectDescription) { // create a new id String uuid = UUID.randomUUID().toString(); - while (JournalUtils.existsId(uuid,"projectdescription")) { + while (JournalUtils.existsId(uuid, "projectdescription")) { uuid = UUID.randomUUID().toString(); } @@ -27,7 +27,8 @@ public class ProjectDescriptionDAOImpl implements ProjectDescriptionDAO { // build and execute request String request = "INSERT INTO projectdescription(`id`, `studentId`, `projectId`, `text`, `open`) VALUES (?,?,?,?,?);"; - connection.issueInsertOrDeleteStatement(request, uuid, projectDescription.getStudent().getStudentId(),projectDescription.getStudent().getProjectId(),projectDescription.getDescriptionMD(),true); + connection.issueInsertOrDeleteStatement(request, uuid, projectDescription.getStudent().getStudentId(), + projectDescription.getStudent().getProjectId(), projectDescription.getDescriptionMD(), true); //close connection connection.close(); @@ -56,7 +57,8 @@ public class ProjectDescriptionDAOImpl implements ProjectDescriptionDAO { // build and execute request String request = "SELECT * FROM projectdescription WHERE studentId = ? AND projectId = ?;"; - VereinfachtesResultSet rs = connection.issueSelectStatement(request, studentIdentifier.getStudentId(),studentIdentifier.getProjectId()); + VereinfachtesResultSet rs = connection.issueSelectStatement(request, studentIdentifier.getStudentId(), + studentIdentifier.getProjectId()); if (rs != null && rs.next()) { @@ -112,7 +114,7 @@ public class ProjectDescriptionDAOImpl implements ProjectDescriptionDAO { // build and execute request String request = "DELETE FROM projectdescription WHERE studentId = ? AND projectId = ?;"; - connection.issueInsertOrDeleteStatement(request, studentIdentifier.getStudentId(),studentIdentifier.getProjectId()); + connection.issueInsertOrDeleteStatement(request, studentIdentifier.getStudentId(), studentIdentifier.getProjectId()); // close connection connection.close(); @@ -164,7 +166,7 @@ public class ProjectDescriptionDAOImpl implements ProjectDescriptionDAO { String text = rs.getString("text"); boolean open = rs.getBoolean("open"); - return new ProjectDescription(id,author,text,project,new ArrayList<>(), timestamp, open); + return new ProjectDescription(id, author, text, project, new ArrayList<>(), timestamp, open); } } 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 1ed2a87685fb252f1fcf5e8f79f7e0c6ae15b355..d4bd609495878594a8bae532202d5702a17e6a99 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,25 +1,21 @@ package unipotsdam.gf.modules.journal.service; -import com.qkyrie.markdown2pdf.Markdown2PdfConverter; -import com.qkyrie.markdown2pdf.internal.exceptions.ConversionException; -import com.qkyrie.markdown2pdf.internal.exceptions.Markdown2PdfLogicException; 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.core.states.model.ConstraintsMessages; import unipotsdam.gf.interfaces.IJournal; -import unipotsdam.gf.interfaces.ResearchReports; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.journal.model.EPortfolio; import unipotsdam.gf.modules.journal.model.Journal; -import unipotsdam.gf.modules.peer2peerfeedback.Category; import unipotsdam.gf.modules.researchreport.ResearchReport; import java.io.File; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class IJournalImpl implements IJournal { @@ -28,11 +24,13 @@ public class IJournalImpl implements IJournal { private final JournalService journalService = new JournalServiceImpl(); private final ProjectDescriptionService descriptionService = new ProjectDescriptionImpl(); - private final SimpleDateFormat jdf = new SimpleDateFormat("dd.MM.yyyy HH:mm"); @Override - public Boolean getPortfoliosForEvaluationPrepared(Project project) { - return descriptionService.checkIfAllDescriptionsClosed(project) && journalService.checkIfAllJournalClosed(project); + public Map<StudentIdentifier, ConstraintsMessages> getPortfoliosForEvaluationPrepared(Project project) { + Map<StudentIdentifier, ConstraintsMessages> result =new HashMap<>(); + result.putAll(descriptionService.checkIfAllDescriptionsClosed(project)); + result.putAll(journalService.checkIfAllJournalClosed(project)); + return result; } @@ -62,162 +60,26 @@ public class IJournalImpl implements IJournal { @Override public void uploadJournalEntry(Journal journalEntry, User student) { - journalService.saveJournal("0",student.getId(),journalEntry.getStudentIdentifier().getProjectId(),journalEntry.getEntryMD(),journalEntry.getVisibility().toString(),journalEntry.getCategory().toString()); + //TODO } @Override public void uploadFinalPortfolio(Project project, List<Journal> journalEntries, ResearchReport finalResearchReport, File presentation, User user) { - //TODO for version 2 + //TODO } @Override public EPortfolio getFinalPortfolioForAssessment(Project project, User user) { - return getPortfolio(project.getId(), user.getId()); - } - - @Override - public EPortfolio getPortfolio(String project, String user) { - EPortfolio result = new EPortfolio(); - StudentIdentifier studentIdentifier = new StudentIdentifier(project, user); - ResearchReports researchReports /*TODO = ??*/; + StudentIdentifier studentIdentifier = new StudentIdentifier(project.getId(), user.getId()); result.setDescription(descriptionService.getProjectByStudent(studentIdentifier)); - result.setJournals(journalService.getAllJournals(user, project)); - /* - TODO wenn von Quark implementiert - result.setReport(getReports(new StudentIdentifier(project,user)); - */ + result.setJournals(journalService.getAllJournals(user.getId(), project.getId())); + //TODO result.setReport(...); return result; } - @Override - public byte[] exportPortfolioToPdf(EPortfolio ePortfolio) { - - //IntelliJs solution for lambda statement - final byte[][] res = new byte[1][1]; - - //Build String - String input = ePortfolioToString(ePortfolio); - - //Convert - try { - Markdown2PdfConverter - .newConverter() - .readFrom(() -> input) - .writeTo(out -> { - res[0] = out; - }) - .doIt(); - } catch (ConversionException | Markdown2PdfLogicException e) { - e.printStackTrace(); - } - - return res[0]; - } - - //TODO Formatierung - private String ePortfolioToString(EPortfolio ePortfolio) { - - StringBuilder result = new StringBuilder(); - - //If Description exists, add to pdf - if (ePortfolio.getDescription() != null) { - result.append("#Portfolio# \n\n"); - result.append(ePortfolio.getDescription().getDescriptionMD()).append("\n"); - } - - //If Journals and Report exists combine - if (ePortfolio.getReport() != null && ePortfolio.getJournals() != null && !ePortfolio.getJournals().isEmpty()) { - - ArrayList<Journal> journals = ePortfolio.getJournals(); - ResearchReport researchReport = ePortfolio.getReport(); - - //TODO zuordnung Absprechen - result.append(researchReport.getTitle()).append("\n"); - result.append(journalStringByCategory(journals, Category.TITEL)); - - result.append(researchReport.getResearchQuestion()).append("\n"); - result.append(journalStringByCategory(journals, Category.FORSCHUNGSFRAGE)); - - - for (String s : researchReport.getLearningGoals()) { - result.append(s).append("\n"); - } - - result.append(researchReport.getMethod()).append("\n"); - - //TODO zuordnung Absprechen - result.append(journalStringByCategory(journals, Category.UNTERSUCHUNGSKONZEPT)); - result.append(journalStringByCategory(journals, Category.METHODIK)); - - result.append(researchReport.getResearch()).append("\n"); - result.append(journalStringByCategory(journals, Category.RECHERCHE)); - - result.append(researchReport.getResearchResult()).append("\n"); - result.append(journalStringByCategory(journals, Category.DURCHFUEHRUNG)); - - - result.append(researchReport.getEvaluation()).append("\n"); - result.append(journalStringByCategory(journals, Category.AUSWERTUNG)); - //TODO Extract String when implemented - result.append(researchReport.getBibliography()).append("\n"); - result.append(journalStringByCategory(journals, Category.LITERATURVERZEICHNIS)); - - - } - - //if Report but no Journals, add Report - else if (ePortfolio.getReport() != null) { - ResearchReport report = ePortfolio.getReport(); - - result.append(report.getTitle()).append("\n"); - - result.append(report.getResearchQuestion()).append("\n"); - - for (String s : report.getLearningGoals()) { - result.append(s).append("\n"); - } - - result.append(report.getMethod()).append("\n"); - - result.append(report.getResearch()).append("\n"); - - result.append(report.getResearchResult()).append("\n"); - - result.append(report.getEvaluation()).append("\n"); - - //TODO Extract String when implemented - result.append(report.getBibliography()).append("\n"); - - } - - //If Journal but no Report - else if (ePortfolio.getJournals() != null) { - result.append("##Lerntagebuch## \n\n"); - - for (Journal j : ePortfolio.getJournals()) { - result.append(journalAsString(j)); - } - } - - return result.toString(); - } - - private String journalStringByCategory(ArrayList<Journal> journals, Category c) { - StringBuilder str = new StringBuilder(); - for (Journal j : journals) { - if (j.getCategory().equals(c)) { - str.append(journalAsString(j)); - } - } - return str.toString(); - } - - private String journalAsString(Journal j) { - return jdf.format(new Date(j.getTimestamp())) + " " + j.getCategory() + "\n" + j.getEntryMD() + "\n"; - } } 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 be8dc781a90624f648196f0a74a55203ae053215..028ea0315d2862e76b3f4cea05fc9bb61fdeca6f 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 @@ -2,10 +2,13 @@ package unipotsdam.gf.modules.journal.service; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.model.ConstraintsMessages; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.journal.model.Journal; import unipotsdam.gf.modules.journal.model.JournalFilter; import java.util.ArrayList; +import java.util.Map; /** * Service for learning Journal @@ -57,7 +60,7 @@ public interface JournalService { void closeJournal(String journal); - boolean checkIfAllJournalClosed(Project project); + Map<StudentIdentifier, ConstraintsMessages> 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 e6367199fb8ecea4fc583389ca7cef4b553027d1..d2107460b7435f4a0dafff9521947c31f3049f9e 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,9 +2,11 @@ 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.core.management.user.UserDAO; +import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.journal.model.Journal; import unipotsdam.gf.modules.journal.model.JournalFilter; @@ -13,13 +15,19 @@ import unipotsdam.gf.modules.journal.model.dao.JournalDAO; import unipotsdam.gf.modules.journal.model.dao.JournalDAOImpl; import unipotsdam.gf.modules.journal.util.JournalUtils; +import javax.inject.Inject; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; public class JournalServiceImpl implements JournalService { private final Logger log = LoggerFactory.getLogger(JournalServiceImpl.class); private final JournalDAO journalDAO = new JournalDAOImpl(); + @Inject + private UserDAO userDAO; + @Override public Journal getJournal(String id) { return journalDAO.getJournal(id); @@ -99,20 +107,23 @@ public class JournalServiceImpl implements JournalService { } @Override - public boolean checkIfAllJournalClosed(Project project) { - return (journalDAO.getOpenJournals(project).size() == 0); + public Map<StudentIdentifier, ConstraintsMessages> checkIfAllJournalClosed(Project project) { + Map<StudentIdentifier, ConstraintsMessages> result = new HashMap<>(); + for (String studentId: journalDAO.getOpenJournals(project)) { + StudentIdentifier student = new StudentIdentifier(project.getId(), studentId); + result.put(student, new ConstraintsMessages(Constraints.JournalOpen, student)); + } + return result; } @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)); + for (String id : userId) { + users.add(userDAO.getUserByToken(id)); } return users; } 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 22ca2a4b63429bdda422f3be7547439caa8c1f0d..312d664d20387986ac32c28c8b16b83d0bba8c43 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,8 +1,10 @@ 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.core.management.user.UserDAO; +import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.journal.model.Link; import unipotsdam.gf.modules.journal.model.ProjectDescription; @@ -11,18 +13,24 @@ 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 javax.inject.Inject; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; public class ProjectDescriptionImpl implements ProjectDescriptionService { private final ProjectDescriptionDAO descriptionDAO = new ProjectDescriptionDAOImpl(); private final LinkDAO linkDAO = new LinkDAOImpl(); + @Inject + private UserDAO userDAO; + @Override public ProjectDescription getProjectByStudent(StudentIdentifier studentIdentifier) { //if no description exists (when page is opened for the first time), create a new one - if(descriptionDAO.getDescription(studentIdentifier)==null){ + if (descriptionDAO.getDescription(studentIdentifier) == null) { ProjectDescription description = new ProjectDescription("0", studentIdentifier.getStudentId(), "Hier soll ein Turtorialtext stehen", studentIdentifier.getProjectId(), null); descriptionDAO.createDescription(description); } @@ -50,7 +58,7 @@ public class ProjectDescriptionImpl implements ProjectDescriptionService { @Override public void addLink(String project, String link, String name) { - Link newLink = new Link(project,project,name,link); + Link newLink = new Link(project, project, name, link); linkDAO.addLink(newLink); } @@ -65,19 +73,24 @@ public class ProjectDescriptionImpl implements ProjectDescriptionService { } @Override - public boolean checkIfAllDescriptionsClosed(Project project) { - return (descriptionDAO.getOpenDescriptions(project).size() == 0); + public Map<StudentIdentifier, ConstraintsMessages> checkIfAllDescriptionsClosed(Project project) { + ArrayList<String> missingStudents = descriptionDAO.getOpenDescriptions(project); + Map<StudentIdentifier, ConstraintsMessages> result = new HashMap<>(); + for (String studentId: missingStudents) { + StudentIdentifier student = new StudentIdentifier(project.getId(), studentId); + result.put(student, new ConstraintsMessages(Constraints.DescriptionsOpen, student)); + } + return result; } @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)); + for (String id : userId) { + users.add(userDAO.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 a99aef7d96d10670e5e6b580481b5df727a543cf..b3f82feb121bf44082780ed81197ef08762fed69 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 @@ -2,10 +2,12 @@ package unipotsdam.gf.modules.journal.service; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.journal.model.ProjectDescription; import java.util.ArrayList; +import java.util.Map; /** * Service for learning Journal @@ -17,6 +19,7 @@ public interface ProjectDescriptionService { ProjectDescription getProjectByStudent(StudentIdentifier studentIdentifier); ProjectDescription getProjectById(String id); + void saveProjectText(StudentIdentifier studentIdentifier, String text); void addLink(String project, String link, String name); @@ -25,7 +28,7 @@ public interface ProjectDescriptionService { void closeDescription(String projectDescriptionId); - boolean checkIfAllDescriptionsClosed(Project project); + Map<StudentIdentifier, ConstraintsMessages> checkIfAllDescriptionsClosed(Project project); ArrayList<User> getOpenUserByProject(Project project); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/util/JournalUtils.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/util/JournalUtils.java index 696edc376fbc08b3ffdbda93e55ccc26e686918c..eac4fc69f0ec34351ac0fae892565852d0f5e5c7 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/util/JournalUtils.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/util/JournalUtils.java @@ -66,8 +66,8 @@ public class JournalUtils { connection.connect(); // build and execute request - String request = "SELECT COUNT(*) > 0 AS `exists` FROM " + table+ " WHERE id = ?;"; - VereinfachtesResultSet rs = connection.issueSelectStatement(request,id); + String request = "SELECT COUNT(*) > 0 AS `exists` FROM " + table + " WHERE id = ?;"; + VereinfachtesResultSet rs = connection.issueSelectStatement(request, id); JournalUtils.log.debug("query: " + rs.toString()); if (rs.next()) { // save the response diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/JournalView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/JournalView.java index 622af9dc3adf37727a837b95e38b64a2e69e64f7..10927a32b16166f8f2ffc54ecf3aff9f4ba1baef 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/JournalView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/JournalView.java @@ -8,7 +8,13 @@ import unipotsdam.gf.modules.journal.model.JournalFilter; import unipotsdam.gf.modules.journal.service.JournalService; import unipotsdam.gf.modules.journal.service.JournalServiceImpl; -import javax.ws.rs.*; +import javax.ws.rs.Consumes; +import javax.ws.rs.FormParam; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.net.URI; @@ -60,8 +66,8 @@ public class JournalView { log.debug(">>> getJournals: student=" + student + " project=" + project +" filter=" + filter ); - JournalFilter journalFilter = (filter.equals("ALL")) ? JournalFilter.ALL:JournalFilter.OWN; - ArrayList<Journal> result = journalService.getAllJournals(student,project,journalFilter); + JournalFilter journalFilter = (filter.equals("ALL")) ? JournalFilter.ALL : JournalFilter.OWN; + ArrayList<Journal> result = journalService.getAllJournals(student, project, journalFilter); log.debug(">>> getJournals: size=" + result.size()); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/ProjectDescriptionView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/ProjectDescriptionView.java index f106477e8c07760811a3b85d8cde21d8a1240489..bf9d1d94e89660199e114755707c82225c198734 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/ProjectDescriptionView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/ProjectDescriptionView.java @@ -7,7 +7,13 @@ import unipotsdam.gf.modules.journal.model.ProjectDescription; import unipotsdam.gf.modules.journal.service.ProjectDescriptionImpl; import unipotsdam.gf.modules.journal.service.ProjectDescriptionService; -import javax.ws.rs.*; +import javax.ws.rs.Consumes; +import javax.ws.rs.FormParam; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.net.URI; @@ -28,7 +34,7 @@ public class ProjectDescriptionView { @GET @Produces(MediaType.APPLICATION_JSON) @Path("{project}/{student}") - public Response getProjectDescription(@PathParam("project") String project, @PathParam("student") String student){ + public Response getProjectDescription(@PathParam("project") String project, @PathParam("student") String student) { log.debug(">>> getProjectDescription: " + project + "/" + student); ProjectDescription result = descriptionService.getProjectByStudent(new StudentIdentifier(project, student)); @@ -44,7 +50,7 @@ public class ProjectDescriptionView { @Path("/saveText") public Response saveProjectText(@FormParam("student") String student, @FormParam("project") String project, @FormParam("text") String text) { log.debug(">>> saveText: " + text); - descriptionService.saveProjectText(new StudentIdentifier(project,student),text); + descriptionService.saveProjectText(new StudentIdentifier(project, student), text); try { URI location = new URI("../pages/eportfolio.jsp?token=" + student + "&projectId=" + project); @@ -66,15 +72,15 @@ public class ProjectDescriptionView { @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Path("/addLink") - public Response addLink(@FormParam("link") String link, @FormParam("name") String name, @FormParam("projectdescriptionId") String project){ + public Response addLink(@FormParam("link") String link, @FormParam("name") String name, @FormParam("projectdescriptionId") String project) { log.debug(">>> addLink: " + name + ":" + link); ProjectDescription desc = descriptionService.getProjectById(project); - descriptionService.addLink(project,link, name ); + descriptionService.addLink(project, link, name); try { - URI location = new URI("../pages/eportfolio.jsp?token="+ desc.getStudent().getStudentId()+"&projectId="+desc.getStudent().getProjectId()); + URI location = new URI("../pages/eportfolio.jsp?token=" + desc.getStudent().getStudentId() + "&projectId=" + desc.getStudent().getProjectId()); log.debug("<<< addLink: redirect to " +location.toString()); return Response.temporaryRedirect(location).build(); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java index 0bf9d071c9cdeed87676e3570771afc632324aca..17de8fdc1aff64ed9523f44f2fdf19b03bea0b64 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java @@ -6,12 +6,17 @@ import unipotsdam.gf.assignments.Assignee; import unipotsdam.gf.assignments.NotImplementedLogger; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.model.Constraints; +import unipotsdam.gf.core.states.model.ConstraintsMessages; import unipotsdam.gf.interfaces.Feedback; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.peer2peerfeedback.peerfeedback.Model.Peer2PeerFeedback; import unipotsdam.gf.modules.researchreport.ResearchReport; import java.io.File; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; public class DummyFeedback implements Feedback { @@ -21,7 +26,7 @@ public class DummyFeedback implements Feedback { PodamFactory factory = new PodamFactoryImpl(); private static Boolean missingTaskAssigned = false; - private Boolean constraintsFulfilled = false; + private Map<StudentIdentifier, Constraints> openTasks; public DummyFeedback() { @@ -34,7 +39,9 @@ public class DummyFeedback implements Feedback { return null; } - public Peer2PeerFeedback createPeer2PeerFeedback (Peer2PeerFeedback feedback){return null; } + public Peer2PeerFeedback createPeer2PeerFeedback(Peer2PeerFeedback feedback) { + return null; + } @Override public Boolean giveFeedback(Peer2PeerFeedback feedback, ResearchReport document) { @@ -52,12 +59,12 @@ public class DummyFeedback implements Feedback { } @Override - public Boolean checkFeedbackConstraints(Project project) { + public Map<StudentIdentifier, ConstraintsMessages> checkFeedbackConstraints(Project project) { // TODO implement constraints NotImplementedLogger.logAssignment(Assignee.KATHARINA, Feedback.class, "check Feedback constraints", "checking feedback constraints "); - constraintsFulfilled = true; - return constraintsFulfilled; + Map<StudentIdentifier, ConstraintsMessages> result = new HashMap<>(); + return result; } @Override diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/peerfeedback/Controller/PeerFeedbackController.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/peerfeedback/Controller/PeerFeedbackController.java index f7b899b487b07220779ccf5674bd0d1d8d259b23..6bb4d2aa957fa5d83eb5337700b503de7fb058e4 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/peerfeedback/Controller/PeerFeedbackController.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/peerfeedback/Controller/PeerFeedbackController.java @@ -60,13 +60,13 @@ public class PeerFeedbackController { System.out.print(feedback); return feedback; - } else { + } else { // close connection connection.close(); - System.out.print("null"); - return null; - } + System.out.print("null"); + return null; + } } @@ -107,6 +107,6 @@ public class PeerFeedbackController { //AnnotationBody body = new AnnotationBody(title, comment, startCharacter, endCharacter); //return new Peer2PeerFeedback("id", 1234, Category.TITEL, "reciever", "sender", "test", "filename"); - return new Peer2PeerFeedback(id,timestamp,Category.TITEL,reciever, sender, text, filename); + return new Peer2PeerFeedback(id, timestamp, Category.TITEL, reciever, sender, text, filename); } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/peerfeedback/Model/Peer2PeerFeedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/peerfeedback/Model/Peer2PeerFeedback.java index 3974138735cb7cba9b824310fcdad5b2eee9e079..4be64ce4e8435d110a7b733c79f63583bec36ea8 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/peerfeedback/Model/Peer2PeerFeedback.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/peerfeedback/Model/Peer2PeerFeedback.java @@ -1,17 +1,15 @@ package unipotsdam.gf.modules.peer2peerfeedback.peerfeedback.Model; -import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.modules.peer2peerfeedback.Category; -import static unipotsdam.gf.view.MarkdownUtils.convertMarkdownToHtml; -import java.io.File; +import static unipotsdam.gf.view.MarkdownUtils.convertMarkdownToHtml; /** - Peer2PeerFeedback Object - created by Katharina + * Peer2PeerFeedback Object + * created by Katharina */ -public class Peer2PeerFeedback{ +public class Peer2PeerFeedback { private String id; @@ -32,17 +30,25 @@ public class Peer2PeerFeedback{ this.filename = filename; } - public Peer2PeerFeedback(){ + public Peer2PeerFeedback() { } - public String getID() { return id; } + public String getID() { + return id; + } - public void setID(String id) { this.id = id; } + public void setID(String id) { + this.id = id; + } - public long getTimestamp() { return timestamp; } + public long getTimestamp() { + return timestamp; + } - public void setTimestamp(long timestamp) { this.timestamp = timestamp; } + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } public Category getFeedbackcategory() { return category; @@ -52,13 +58,21 @@ public class Peer2PeerFeedback{ this.category = category; } - public String getText() { return text; } + public String getText() { + return text; + } - public void setText(String text) { this.text = text; } + public void setText(String text) { + this.text = text; + } - public String getFilename() { return filename; } + public String getFilename() { + return filename; + } - public void setFilename(String filename) { this.filename = filename; } + public void setFilename(String filename) { + this.filename = filename; + } public String getFeedbacksender() { return sender; @@ -76,7 +90,7 @@ public class Peer2PeerFeedback{ this.receiver = receiver; } - + @Override public String toString() { return "Peer2PeerFeedback{" + diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/peerfeedback/View/PeerFeedbackView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/peerfeedback/View/PeerFeedbackView.java index 90f0f0519bb334fce5818a3c1fd12220cdb96536..dd0c40444b40df66676016395324110f477ba542 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/peerfeedback/View/PeerFeedbackView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/peerfeedback/View/PeerFeedbackView.java @@ -1,13 +1,16 @@ package unipotsdam.gf.modules.peer2peerfeedback.peerfeedback.View; -import com.sun.tools.xjc.model.Model; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import unipotsdam.gf.modules.peer2peerfeedback.Category; -import unipotsdam.gf.modules.peer2peerfeedback.peerfeedback.Model.Peer2PeerFeedback; import unipotsdam.gf.modules.peer2peerfeedback.peerfeedback.Controller.PeerFeedbackController; +import unipotsdam.gf.modules.peer2peerfeedback.peerfeedback.Model.Peer2PeerFeedback; -import javax.ws.rs.*; +import javax.ws.rs.Consumes; +import javax.ws.rs.FormParam; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.util.ArrayList; @@ -26,7 +29,7 @@ public class PeerFeedbackView { @POST @Path("/save") public Response createPeerfeedback(@FormParam("text") String text, @FormParam("student") String student, @FormParam("id") String id, @FormParam("reciever") String reciever, - @FormParam("sender") String sender, @FormParam("filename") String filename, @FormParam("category") Category category, @FormParam("timestamp") Long timestamp) { + @FormParam("sender") String sender, @FormParam("filename") String filename, @FormParam("category") Category category, @FormParam("timestamp") Long timestamp) { // save peerfeedback request in database and receive the new peerfeedback object //PeerFeedbackController controller = new PeerFeedbackController(); @@ -46,7 +49,7 @@ public class PeerFeedbackView { @GET @Produces(MediaType.APPLICATION_JSON) @Path("{sender}") - public Response getPeerfeedback(@PathParam("sender") String sender){ + public Response getPeerfeedback(@PathParam("sender") String sender) { PeerFeedbackController controller = new PeerFeedbackController(); ArrayList<Peer2PeerFeedback> fd = controller.getAllFeedbacks(sender); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java index 7f5b6a30279d55b5157c0b31ee285e68c077f528..a71ab3a33775d836252b4cdb2327db9b26803131 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java @@ -5,9 +5,13 @@ import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; import unipotsdam.gf.interfaces.ISubmission; import unipotsdam.gf.modules.peer2peerfeedback.Category; -import unipotsdam.gf.modules.submission.model.*; +import unipotsdam.gf.modules.submission.model.FullSubmission; +import unipotsdam.gf.modules.submission.model.FullSubmissionPostRequest; +import unipotsdam.gf.modules.submission.model.SubmissionPart; +import unipotsdam.gf.modules.submission.model.SubmissionPartBodyElement; +import unipotsdam.gf.modules.submission.model.SubmissionPartPostRequest; +import unipotsdam.gf.modules.submission.model.SubmissionProjectRepresentation; -import java.sql.PreparedStatement; import java.util.ArrayList; import java.util.UUID; @@ -62,8 +66,7 @@ public class SubmissionController implements ISubmission { connection.close(); return fullSubmission; - } - else { + } else { // close connection connection.close(); @@ -94,8 +97,7 @@ public class SubmissionController implements ISubmission { // return true if we found the id if (count < 1) { return false; - } - else { + } else { return true; } } @@ -211,8 +213,7 @@ public class SubmissionController implements ISubmission { connection.close(); return submissionPart; - } - else { + } else { // close connection connection.close(); @@ -322,8 +323,7 @@ public class SubmissionController implements ISubmission { // return true if we found the id if (count < 1) { return false; - } - else { + } else { return true; } } @@ -419,11 +419,11 @@ public class SubmissionController implements ISubmission { // build submission part with empty body tmpPart = new SubmissionPart( - rs.getTimestamp("timestamp").getTime(), - rs.getString("userId"), - rs.getString("fullSubmissionId"), - Category.valueOf(tmpCategory), - new ArrayList<SubmissionPartBodyElement>() + rs.getTimestamp("timestamp").getTime(), + rs.getString("userId"), + rs.getString("fullSubmissionId"), + Category.valueOf(tmpCategory), + new ArrayList<SubmissionPartBodyElement>() ); } @@ -466,9 +466,9 @@ public class SubmissionController implements ISubmission { * Calculates how many similar body elements (based on start and end character) can be found in the database * * @param fullSubmissionId The id of the full submission - * @param category The category of the submission part - * @param startCharacter The start character of the new element - * @param endCharacter The end character of the old element + * @param category The category of the submission part + * @param startCharacter The start character of the new element + * @param endCharacter The end character of the old element * @return Return 0 if there are no similar elements, 2 if we found two similar elements (right and left side), * 1 if we found a similar element on the right side and -1 if we found a similar element on the left side. */ @@ -501,14 +501,12 @@ public class SubmissionController implements ISubmission { if (side == 1) { return -1; - } - else { + } else { return 1; } } - } - else { + } else { // close connection connection.close(); @@ -524,8 +522,8 @@ public class SubmissionController implements ISubmission { * Checks if a new body element has overlapping boundaries with an already existing element * * @param fullSubmissionId The id of the full submission - * @param category The category - * @param element The new element + * @param category The category + * @param element The new element * @return Returns true if overlapping boundaries have been found */ private boolean hasOverlappingBoundaries(String fullSubmissionId, Category category, SubmissionPartBodyElement element) { @@ -554,8 +552,7 @@ public class SubmissionController implements ISubmission { // return true if we found the id if (count < 1) { return false; - } - else { + } else { return true; } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java index 48a2dfe748498fcd1f672ac5eb6ed2bc126af227..5801eeadafbdf2ec701f0efe83bca59474e1b1ca 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java @@ -18,7 +18,8 @@ public class FullSubmissionPostRequest { this.projectId = projectId; } - public FullSubmissionPostRequest() {} + public FullSubmissionPostRequest() { + } // methods public String getUser() { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionPart.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionPart.java index 1a0b7644d1f69f2c5490f1bc7ac9ab6111eb6daa..2b420ff9d07a7da0065b301329702180750264b1 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionPart.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionPart.java @@ -26,7 +26,8 @@ public class SubmissionPart { this.body = body; } - public SubmissionPart(){} + public SubmissionPart() { + } // methods public long getTimestamp() { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionPartBodyElement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionPartBodyElement.java index 7448d70ab6c9704057c71b257482bf904c74ee0a..b78009ebb5d5b56de9b39f31a52c818f6fb34153 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionPartBodyElement.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionPartBodyElement.java @@ -18,7 +18,8 @@ public class SubmissionPartBodyElement { this.endCharacter = endCharacter; } - public SubmissionPartBodyElement() {} + public SubmissionPartBodyElement() { + } // methods public String getText() { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionPartPostRequest.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionPartPostRequest.java index 07ac839bb6ca8927c00e5b766d05e1f4a50e6763..20901ed5422229074ee73d1b9f704d1cca7fd994 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionPartPostRequest.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionPartPostRequest.java @@ -24,7 +24,8 @@ public class SubmissionPartPostRequest { this.body = body; } - public SubmissionPartPostRequest(){} + public SubmissionPartPostRequest() { + } // methods public String getUserId() { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionProjectRepresentation.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionProjectRepresentation.java index 998bc1fb6c567e7d30fa0fa06cd91f3808afcdf6..1058b3ffd81b1d56155222a998eee30655fb6b6b 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionProjectRepresentation.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionProjectRepresentation.java @@ -16,7 +16,8 @@ public class SubmissionProjectRepresentation { this.fullSubmissionId = fullSubmissionId; } - public SubmissionProjectRepresentation(){} + public SubmissionProjectRepresentation() { + } // methods public String getUser() { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionResponse.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionResponse.java index 51990953829fab6fde864683722c758e9e5a7d98..0c124f17dcc8ce52fa6992dfca503a7c948d7c61 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionResponse.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/SubmissionResponse.java @@ -14,7 +14,8 @@ public class SubmissionResponse { this.message = message; } - public SubmissionResponse(){} + public SubmissionResponse() { + } // methods public String getMessage() { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java index 6b6bfd25b9aa141526009e46153c799c87b0acea..f853dba4f30daddbeaaca8633ab344c8bbbeb8e7 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java @@ -2,9 +2,19 @@ package unipotsdam.gf.modules.submission.view; import unipotsdam.gf.modules.peer2peerfeedback.Category; import unipotsdam.gf.modules.submission.controller.SubmissionController; -import unipotsdam.gf.modules.submission.model.*; - -import javax.ws.rs.*; +import unipotsdam.gf.modules.submission.model.FullSubmission; +import unipotsdam.gf.modules.submission.model.FullSubmissionPostRequest; +import unipotsdam.gf.modules.submission.model.SubmissionPart; +import unipotsdam.gf.modules.submission.model.SubmissionPartPostRequest; +import unipotsdam.gf.modules.submission.model.SubmissionProjectRepresentation; +import unipotsdam.gf.modules.submission.model.SubmissionResponse; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.util.ArrayList; @@ -39,8 +49,7 @@ public class SubmissionService { if (fullSubmission != null) { return Response.ok(fullSubmission).build(); - } - else { + } else { // declare response SubmissionResponse response = new SubmissionResponse(); response.setMessage("Submission with the id '" + fullSubmissionId + "' can't be found"); @@ -68,9 +77,8 @@ public class SubmissionService { SubmissionPart submissionPart = controller.getSubmissionPart(fullSubmissionId, Category.valueOf(category.toUpperCase())); if (submissionPart != null) { - return Response.ok(submissionPart).build(); - } - else { + return Response.ok(submissionPart).build(); + } else { // declare response SubmissionResponse response = new SubmissionResponse(); response.setMessage("Submission part with the full submission id '" + fullSubmissionId + "' and the category '" + category.toUpperCase() + "' can't be found"); @@ -88,8 +96,7 @@ public class SubmissionService { if (parts.size() > 0) { return Response.ok(parts).build(); - } - else { + } else { SubmissionResponse response = new SubmissionResponse(); response.setMessage("No submission parts found for submission with the id '" + fullSubmissionId + "'"); @@ -106,8 +113,7 @@ public class SubmissionService { if (representations.size() > 0) { return Response.ok(representations).build(); - } - else { + } else { SubmissionResponse response = new SubmissionResponse(); response.setMessage("No submission parts found for project id '" + projectId + "'"); diff --git a/gemeinsamforschen/src/main/webapp/annotation/annotation-document.jsp b/gemeinsamforschen/src/main/webapp/annotation/annotation-document.jsp index 0e876cb6f11fbe73434b153a6ccb834b0bf61ada..0fe9adc57154f030a6528a91a6cd577bf477c4d0 100644 --- a/gemeinsamforschen/src/main/webapp/annotation/annotation-document.jsp +++ b/gemeinsamforschen/src/main/webapp/annotation/annotation-document.jsp @@ -61,7 +61,8 @@ </div> </div> <div class="rightcolumn"> - <input type="text" id="annotation-search" onkeyup="searchAnnotation()" placeholder="Suchen..."> + <input type="text" id="annotation-search" onkeyup="searchAnnotation()" + placeholder="Suchen..."> <div class="rightcontent"> <ol id="annotations"> </ol> diff --git a/gemeinsamforschen/src/main/webapp/annotation/create-unstructured-annotation.jsp b/gemeinsamforschen/src/main/webapp/annotation/create-unstructured-annotation.jsp index 4d78a097050806769b7354d62dfb0e18fd2c7561..f544cbfa9fc1d0fed76e5c4149d7e844e57b12ef 100644 --- a/gemeinsamforschen/src/main/webapp/annotation/create-unstructured-annotation.jsp +++ b/gemeinsamforschen/src/main/webapp/annotation/create-unstructured-annotation.jsp @@ -1,4 +1,4 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> @@ -12,14 +12,17 @@ <!-- css - unstructured-annotation --> <link rel="stylesheet" type="text/css" href="css/unstructured-annotation.css"> <!-- css - contextMenu --> - <link href="https://swisnl.github.io/jQuery-contextMenu/dist/jquery.contextMenu.css" rel="stylesheet" type="text/css" /> + <link href="https://swisnl.github.io/jQuery-contextMenu/dist/jquery.contextMenu.css" rel="stylesheet" + type="text/css"/> <!-- js - jQuery validation plugin --> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.14.0/jquery.validate.min.js"></script> <!-- js - jQuery ui position --> - <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" type="text/javascript"></script> + <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" + type="text/javascript"></script> <!-- js - contextMenu script --> - <script src="https://swisnl.github.io/jQuery-contextMenu/dist/jquery.contextMenu.js" type="text/javascript"></script> + <script src="https://swisnl.github.io/jQuery-contextMenu/dist/jquery.contextMenu.js" + type="text/javascript"></script> <!-- js - rangy Core --> <script src="https://cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-core.js" type="text/javascript"></script> <!-- js - rangy TextRange Module --> diff --git a/gemeinsamforschen/src/main/webapp/annotation/css/annotationStyle.css b/gemeinsamforschen/src/main/webapp/annotation/css/annotationStyle.css index 9e618c7d558bef2e5e8c6e4adcfe93b92e8b7f54..56fe59aba7346e671cdeb28d4fd5d22c844bc1b7 100644 --- a/gemeinsamforschen/src/main/webapp/annotation/css/annotationStyle.css +++ b/gemeinsamforschen/src/main/webapp/annotation/css/annotationStyle.css @@ -54,7 +54,7 @@ ol { background-color: white; } .annotation-card:hover { - box-shadow: 0 8px 12px 0 rgba(0,0,0,0.2); + box-shadow: 0 8px 12px 0 rgba(0, 0, 0, 0.2); } .annotation-header { padding: 5px; @@ -141,7 +141,8 @@ ol { .flex { display: flex; } -.flex .container-fluid{ + +.flex .container-fluid { flex: 1; } .full-height { @@ -151,6 +152,7 @@ ol { float: right; margin: 20px; } + .leftcontent-buttons-back { float: left; margin: 20px; @@ -163,10 +165,12 @@ ol { .resize-vertical { resize: vertical; } + .categoryText { color: black; font-weight: bold; } + #annotation-search { width: 100%; padding: 5px; diff --git a/gemeinsamforschen/src/main/webapp/annotation/css/unstructured-annotation.css b/gemeinsamforschen/src/main/webapp/annotation/css/unstructured-annotation.css index 53ad932cba2ed091225f101c0e1a72c5be1dbc18..aad00e2a4143980c2b24855dc4693a84ff2f303d 100644 --- a/gemeinsamforschen/src/main/webapp/annotation/css/unstructured-annotation.css +++ b/gemeinsamforschen/src/main/webapp/annotation/css/unstructured-annotation.css @@ -2,6 +2,7 @@ body, html { height: 100vh; width: 100vw; } + .content-mainpage { display: flex; box-sizing: border-box; @@ -9,6 +10,7 @@ body, html { height: 100%; overflow-y: hidden; } + .rightcolumn { float: right; width: 25%; @@ -17,6 +19,7 @@ body, html { display: inline-block; overflow: scroll; } + .leftcolumn { padding: 10px; float: left; @@ -24,51 +27,63 @@ body, html { display: inline-block; /* background-color: yellow; */ } + .rightcontent { height: 100%; } + .rightcontent ol { padding: 0px; margin: 0px; list-style-type: none; height: 100%; } + .rightcontent li { height: calc((100% - 70px) / 8); min-height: 40px; } + .leftcontent { max-height: 100%; display: flex; flex-flow: column; /* background-color: white; */ } + .spacing { margin-bottom: 10px; /* background-color: orange; */ } + .container-fluid-content { display: flex; flex-flow: column; height: 100%; } + .flex { display: flex; } -.flex .container-fluid{ + +.flex .container-fluid { flex: 1; } + .full-height { height: 100%; } + .leftcontent-buttons-save { float: right; margin: 20px; } + .leftcontent-text { overflow: scroll; white-space: pre-line; } + .category-card { min-height: 30px; height: 100%; @@ -78,6 +93,7 @@ body, html { font-size: large; overflow: hidden; } + .category-card p { position: relative; float: left; @@ -86,7 +102,8 @@ body, html { transform: translate(-50%, -50%); max-width: 100%; } -.not-added{ + +.not-added { border-style: dashed; border-color: lightgray; color: lightgray; @@ -95,6 +112,7 @@ body, html { .titel { background-color: #ba68c8; } + .added-titel { border-style: solid; border-color: #ba68c8; @@ -104,6 +122,7 @@ body, html { .recherche { background-color: #7986cb; } + .added-recherche { border-style: solid; border-color: #7986cb; @@ -113,6 +132,7 @@ body, html { .literaturverzeichnis { background-color: #4dd0e1; } + .added-literaturverzeichnis { border-style: solid; border-color: #4dd0e1; @@ -122,6 +142,7 @@ body, html { .forschungsfrage { background-color: #81c784; } + .added-forschungsfrage { border-style: solid; border-color: #81c784; @@ -131,6 +152,7 @@ body, html { .untersuchungskonzept { background-color: #dce775; } + .added-untersuchungskonzept { border-style: solid; border-color: #dce775; @@ -140,6 +162,7 @@ body, html { .methodik { background-color: #ffd54f; } + .added-methodik { border-style: solid; border-color: #ffd54f; @@ -149,6 +172,7 @@ body, html { .durchfuehrung { background-color: #ff8a65; } + .added-durchfuehrung { border-style: solid; border-color: #ff8a65; @@ -158,6 +182,7 @@ body, html { .auswertung { background-color: #a1887f; } + .added-auswertung { border-style: solid; border-color: #a1887f; diff --git a/gemeinsamforschen/src/main/webapp/annotation/css/unstructured-upload.css b/gemeinsamforschen/src/main/webapp/annotation/css/unstructured-upload.css index 9b1c11047b5335b7f030735c5730f38debfc1afb..bab0f5b6a075214092dc3f99ba1654da6eeb329e 100644 --- a/gemeinsamforschen/src/main/webapp/annotation/css/unstructured-upload.css +++ b/gemeinsamforschen/src/main/webapp/annotation/css/unstructured-upload.css @@ -2,6 +2,7 @@ body, html { height: 100vh; width: 100vw; } + .content-mainpage { display: flex; box-sizing: border-box; @@ -10,28 +11,35 @@ body, html { overflow-y: scroll; flex-flow: column nowrap; } + .container-fluid-content { display: flex; flex-flow: column; height: 100%; } + .full-height { height: 100%; } + .flex { display: flex; } + .document-text-buttons { margin-bottom: 15px; margin-top: 15px; display: inline; } + .document-text-buttons-back { float: left; } + .document-text-buttons-next { float: right; } + .file-upload-area { height: 20%; } @@ -41,18 +49,22 @@ body, html { flex-flow: column; height: 100%; } + .upload-text-textarea { resize: none; flex: 1; } + #upload-textarea-form { height: 100%; margin-bottom: 15px; } + label.error { color: red; } -.flex .container-fluid{ + +.flex .container-fluid { flex: 1; } diff --git a/gemeinsamforschen/src/main/webapp/annotation/js/annotationScript.js b/gemeinsamforschen/src/main/webapp/annotation/js/annotationScript.js index 54470a0048359ab9324f489e4311aef213b834df..892ea941f27e556ff2878816d8055be647359c9e 100644 --- a/gemeinsamforschen/src/main/webapp/annotation/js/annotationScript.js +++ b/gemeinsamforschen/src/main/webapp/annotation/js/annotationScript.js @@ -68,14 +68,14 @@ $(document).ready(function() { * continue button */ $('#btnContinue').click(function () { - location.href="../feedback/give-feedback.jsp?token=" + getUserTokenFromUrl(); + location.href = "../feedback/give-feedback.jsp?token=" + getUserTokenFromUrl(); }); /** * back button */ $('#btnBack').click(function () { - location.href="../project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); + location.href = "../project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); }); /** diff --git a/gemeinsamforschen/src/main/webapp/annotation/js/annotationWebsocket.js b/gemeinsamforschen/src/main/webapp/annotation/js/annotationWebsocket.js index 585b09c007d0a3a28bf8c9a802fec7397fbe9974..6d7d807e3f44cc504f211a55dd625debca695365 100644 --- a/gemeinsamforschen/src/main/webapp/annotation/js/annotationWebsocket.js +++ b/gemeinsamforschen/src/main/webapp/annotation/js/annotationWebsocket.js @@ -4,7 +4,7 @@ function connect(targetId, targetCategory) { var host = document.location.host; var pathname = document.location.pathname; - ws = new WebSocket("ws://" + host + "/ws/annotation/" + targetId + "/" + targetCategory); + ws = new WebSocket("ws://" + host + "/ws/annotation/" + targetId + "/" + targetCategory); ws.onmessage = function (e) { var message = JSON.parse(e.data); diff --git a/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredAnnotation.js b/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredAnnotation.js index a8ab85a55c8050287ac9228165ec1b0538659db7..49f9968ff114e42e47294230cd398f25e9565f76 100644 --- a/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredAnnotation.js +++ b/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredAnnotation.js @@ -1,7 +1,7 @@ /** * This function will fire when the DOM is ready */ -$(document).ready(function() { +$(document).ready(function () { // fetch the document text of the given id getFullSubmission(getSubmissionIdFromUrl(), function (response) { @@ -26,20 +26,20 @@ $(document).ready(function() { }, function () { // jump to upload page on error - location.href="upload-unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); + location.href = "upload-unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); }); // set click listener to save button $('#btnSave').click(function () { saveButtonHandler(); }); - + /** * Context menu handler */ $.contextMenu({ selector: '.context-menu-one', - callback: function(key, options) { + callback: function (key, options) { // handle the category click handleCategoryClick(key); @@ -119,13 +119,13 @@ function handleCategorySelection(category, startCharacter, endCharacter) { * @returns {string} The text */ function getSelectedText() { - if(window.getSelection){ + if (window.getSelection) { return window.getSelection().toString(); } - else if(document.getSelection){ + else if (document.getSelection) { return document.getSelection(); } - else if(document.selection){ + else if (document.selection) { return document.selection.createRange().text; } } @@ -285,7 +285,7 @@ function saveButtonHandler() { $.when.apply($, promises).then(function () { // redirect user to project page after saving - location.href="../project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); + location.href = "../project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); }); // redirect user to project page after saving diff --git a/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredUpload.js b/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredUpload.js index 2148e5cb04d95a8280dc4af60579aa8f6bdfa2e8..f1a8dea6af5538dd106f57e291f1df3a2b55a03c 100644 --- a/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredUpload.js +++ b/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredUpload.js @@ -1,7 +1,7 @@ /** * This function will fire when the DOM is ready */ -$(document).ready(function() { +$(document).ready(function () { $('#btnNext').click(function () { if ($('#upload-textarea-form').valid()) { @@ -23,7 +23,7 @@ $(document).ready(function() { $('#upload-textarea').val(""); // jump to next page - location.href="create-unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId") + "&submission=" + response.id; + location.href = "create-unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId") + "&submission=" + response.id; }); } }); @@ -38,14 +38,14 @@ $(document).ready(function() { // jump to previous page //window.history.back(); - location.href="../project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); + location.href = "../project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); } } // nothing to check else { // jump to previous page //window.history.back(); - location.href="../project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); + location.href = "../project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); } }); diff --git a/gemeinsamforschen/src/main/webapp/annotation/upload-unstructured-annotation.jsp b/gemeinsamforschen/src/main/webapp/annotation/upload-unstructured-annotation.jsp index 43f3340fe7137b2a0dc3ba7ee03609bb9db273b1..42baec9225aa2b53172ed5eda788621612e15cb2 100644 --- a/gemeinsamforschen/src/main/webapp/annotation/upload-unstructured-annotation.jsp +++ b/gemeinsamforschen/src/main/webapp/annotation/upload-unstructured-annotation.jsp @@ -1,4 +1,4 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> @@ -13,7 +13,8 @@ <!-- js - jQuery validation plugin --> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.14.0/jquery.validate.min.js"></script> <!-- js - jQuery ui position --> - <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" type="text/javascript"></script> + <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" + type="text/javascript"></script> <!-- css - upload-unstructured --> <link rel="stylesheet" type="text/css" href="css/unstructured-upload.css"> @@ -37,7 +38,8 @@ <form id="upload-textarea-form"> <div class="form-group upload-text" id="documentText"> <label for="upload-textarea">Texteingabe</label> - <textarea class="upload-text-textarea form-control" placeholder="Text einfügen..." id="upload-textarea" name="uploadtextarea"></textarea> + <textarea class="upload-text-textarea form-control" placeholder="Text einfügen..." + id="upload-textarea" name="uploadtextarea"></textarea> </div> </form> @@ -46,8 +48,10 @@ <input type="file" id="file" name="file"> </div> <div class="document-text-buttons"> - <button type="button" class="btn btn-secondary document-text-buttons-back" id="btnBack">Zurück</button> - <button type="button" class="btn btn-primary document-text-buttons-next" id="btnNext">Weiter</button> + <button type="button" class="btn btn-secondary document-text-buttons-back" id="btnBack">Zurück + </button> + <button type="button" class="btn btn-primary document-text-buttons-next" id="btnNext">Weiter + </button> </div> </div> </div> diff --git a/gemeinsamforschen/src/main/webapp/assessment/calculate-assessment.jsp b/gemeinsamforschen/src/main/webapp/assessment/calculate-assessment.jsp index a8f39bfa961789996308eeddc58cae565ddbc82b..1451b1f81c24ba00fba64875bbb96989df1870a7 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/calculate-assessment.jsp +++ b/gemeinsamforschen/src/main/webapp/assessment/calculate-assessment.jsp @@ -1,4 +1,4 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> diff --git a/gemeinsamforschen/src/main/webapp/assessment/create-quiz.jsp b/gemeinsamforschen/src/main/webapp/assessment/create-quiz.jsp index 229b240942108f7e8fe8bf391bfa5272dba91395..d80dd66a57e6ade70d469254330fb3f73933355d 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/create-quiz.jsp +++ b/gemeinsamforschen/src/main/webapp/assessment/create-quiz.jsp @@ -17,15 +17,18 @@ <headLine:headLine/> <div style="margin-left:50px;"> <div> - <label>Frage: <input placeholder="Ihre Frage" id="question"></label><!--todo: remember to cut out whitespace and signs (?.,;)--> + <label>Frage: <input placeholder="Ihre Frage" id="question"></label> + <!--todo: remember to cut out whitespace and signs (?.,;)--> </div> <div><label><input type="radio" name="type" checked="checked">multiple choice</label></div> <div><label><input type="radio" name="type" disabled>Freitext</label></div> <div><label><input type="radio" name="type" disabled>rhetorische Frage</label></div> <div id="correctAnswers"><input placeholder="korrekte Antwort" id="correctAnswer"></div> - <button id="addCorrectAnswer"> + </button><button id="deleteCorrectAnswer"> - </button> + <button id="addCorrectAnswer"> +</button> + <button id="deleteCorrectAnswer"> -</button> <div id="incorrectAnswers"><input placeholder="inkorrekte Antwort" id="incorrectAnswer"></div> - <button id="addIncorrectAnswer"> + </button><button id="deleteIncorrectAnswer"> - </button> + <button id="addIncorrectAnswer"> +</button> + <button id="deleteIncorrectAnswer"> -</button> <button id="save">speichern</button> </div> </div> diff --git a/gemeinsamforschen/src/main/webapp/assessment/js/AlertAssessmentOutlier.js b/gemeinsamforschen/src/main/webapp/assessment/js/AlertAssessmentOutlier.js index c839478e287cb4652039897471ab07afecdb92cd..adef75018f9b0f806907e52422d3551cb8ed2122 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/js/AlertAssessmentOutlier.js +++ b/gemeinsamforschen/src/main/webapp/assessment/js/AlertAssessmentOutlier.js @@ -1,12 +1,11 @@ $(document).ready(function () { - $('#DiaBlende').on('click',function () { - + $('#DiaBlende').on('click', function () { $.ajax({ - url: "../rest/assessments4/diagramm1/"+getQueryVariable("projectId"), + url: "../rest/assessments4/diagramm1/" + getQueryVariable("projectId"), type: 'POST', headers: { "Content-Type": "application/json", @@ -18,69 +17,70 @@ $(document).ready(function () { var myChart = new Chart(ctx, response); }, - error: function (a,b,c) { + error: function (a, b, c) { alert('some error' + b); } }); - /* - var ctx = document.getElementById("Diagramm").getContext('2d'); - var myChart = new Chart(ctx, { - type: 'line', - data: { - labels: ["05.06.1009", "05.06.1009", "05.06.1009", "05.06.1009"], - datasets: [{ - label: "Note Student 1", - data: [ - 5,4,4,3], - borderColor: "rgba(255,0,3,0.2)", - backgroundColor: "rgba(255,0,3,0.2)", - fill:false - } - , - { - label:"Note Student 2", - data: [ - 1,2,3,4 ] - ,borderColor: 'rgba(0,255,0,0.2)' - , backgroundColor: 'rgba(0,255,3,0.2)' - ,fill:false + /* + var ctx = document.getElementById("Diagramm").getContext('2d'); + var myChart = new Chart(ctx, { + type: 'line', + data: { + labels: ["05.06.1009", "05.06.1009", "05.06.1009", "05.06.1009"], + datasets: [{ + label: "Note Student 1", + data: [ + 5,4,4,3], + borderColor: "rgba(255,0,3,0.2)", + backgroundColor: "rgba(255,0,3,0.2)", + fill:false + } + , + { + label:"Note Student 2", + data: [ + 1,2,3,4 ] + ,borderColor: 'rgba(0,255,0,0.2)' + , backgroundColor: 'rgba(0,255,3,0.2)' + ,fill:false - }, - { - label:"Note Student 3", - data: [ - 5,2,4,6] - ,borderColor: 'rgba(0,255,0,0.2)' - , backgroundColor: 'rgba(0,255,3,0.2)' - ,fill:false + }, + { + label:"Note Student 3", + data: [ + 5,2,4,6] + ,borderColor: 'rgba(0,255,0,0.2)' + , backgroundColor: 'rgba(0,255,3,0.2)' + ,fill:false - }] - }, + }] + }, - options: {legend:{display:false}} - });*/ + options: {legend:{display:false}} + });*/ }); }); // hier noch dynamik ergänzen, damit der Student und die Gruppe ausgelesen werden $(document).ready(function () { - $('#ProblemGrp1').on('click',function () { - var alarm = prompt("hier gibt es Unstimmigeiten","Vorgeschlagene Note:") - if (alarm === "1"||alarm=="2"||alarm=="3"||alarm=="4"||alarm=="5"||alarm=="6") { + $('#ProblemGrp1').on('click', function () { + var alarm = prompt("hier gibt es Unstimmigeiten", "Vorgeschlagene Note:") + if (alarm === "1" || alarm == "2" || alarm == "3" || alarm == "4" || alarm == "5" || alarm == "6") { - var dataP= JSON.stringify({"adressat":true,"student": { - "projectId": getQueryVariable("projectId"), - "studentId": "fgnxnw" - }, "deadline":new Date(), - "bewertender": { - "projectId": getQueryVariable("projectId"), - "studentId": document.getElementById("user").innerText - }, - "projektId":getQueryVariable("projectId"), - "bewertung":alarm - }); + var dataP = JSON.stringify({ + "adressat": true, "student": { + "projectId": getQueryVariable("projectId"), + "studentId": "fgnxnw" + }, "deadline": new Date(), + "bewertender": { + "projectId": getQueryVariable("projectId"), + "studentId": document.getElementById("user").innerText + }, + "projektId": getQueryVariable("projectId"), + "bewertung": alarm + }); $.ajax({ url: "../rest/assessments2/calculate2", type: 'POST', @@ -90,34 +90,35 @@ $(document).ready(function () { }, data: dataP, success: function (response) { - document.getElementById('ProblemGrp1').innerHTML=response; + document.getElementById('ProblemGrp1').innerHTML = response; }, - error: function (a,b,c) { + error: function (a, b, c) { alert('some error' + b); } }) } - else{ + else { window.alert("Bitte eine Zahl zwischen eins und 6 angeben") } }); }); $(document).ready(function () { - $('#ProblemGrp1S1').on('click',function () { - var alarm = prompt("hier gibt es Unstimmigeiten","Vorgeschlagene Note:") - if (alarm === "1"||alarm=="2"||alarm=="3"||alarm=="4"||alarm=="5"||alarm=="6") { + $('#ProblemGrp1S1').on('click', function () { + var alarm = prompt("hier gibt es Unstimmigeiten", "Vorgeschlagene Note:") + if (alarm === "1" || alarm == "2" || alarm == "3" || alarm == "4" || alarm == "5" || alarm == "6") { - var dataP= JSON.stringify({"adressat":true,"student": { + var dataP = JSON.stringify({ + "adressat": true, "student": { "projectId": getQueryVariable("projectId"), "studentId": "fgnxnw" - }, "deadline":new Date(), + }, "deadline": new Date(), "bewertender": { "projectId": getQueryVariable("projectId"), "studentId": document.getElementById("user").innerText }, - "projektId":getQueryVariable("projectId"), - "bewertung":alarm + "projektId": getQueryVariable("projectId"), + "bewertung": alarm }); $.ajax({ url: "../rest/assessments2/calculate2", @@ -128,33 +129,34 @@ $(document).ready(function () { }, data: dataP, success: function (response) { - document.getElementById('ProblemGrp1S1').innerHTML=response; + document.getElementById('ProblemGrp1S1').innerHTML = response; }, - error: function (a,b,c) { + error: function (a, b, c) { alert('some error' + b); } }) } - else{ + else { window.alert("Bitte eine Zahl zwischen eins und 6 angeben") } }); }); $(document).ready(function () { - $('#ProblemGrp1S2').on('click',function () { - var alarm = prompt("hier gibt es Unstimmigeiten","Vorgeschlagene Note:") - if (alarm === "1"||alarm=="2"||alarm=="3"||alarm=="4"||alarm=="5"||alarm=="6") { + $('#ProblemGrp1S2').on('click', function () { + var alarm = prompt("hier gibt es Unstimmigeiten", "Vorgeschlagene Note:") + if (alarm === "1" || alarm == "2" || alarm == "3" || alarm == "4" || alarm == "5" || alarm == "6") { - var dataP= JSON.stringify({"adressat":true,"student": { + var dataP = JSON.stringify({ + "adressat": true, "student": { "projectId": getQueryVariable("projectId"), "studentId": "fgnxnw" - }, "deadline":new Date(), + }, "deadline": new Date(), "bewertender": { "projectId": getQueryVariable("projectId"), "studentId": document.getElementById("user").innerText }, - "projektId":getQueryVariable("projectId"), - "bewertung":alarm + "projektId": getQueryVariable("projectId"), + "bewertung": alarm }); $.ajax({ url: "../rest/assessments2/calculate2", @@ -165,33 +167,34 @@ $(document).ready(function () { }, data: dataP, success: function (response) { - document.getElementById('ProblemGrp1S2').innerHTML=response; + document.getElementById('ProblemGrp1S2').innerHTML = response; }, - error: function (a,b,c) { + error: function (a, b, c) { alert('some error' + b); } }) } - else{ + else { window.alert("Bitte eine Zahl zwischen eins und 6 angeben") } }); }); $(document).ready(function () { - $('#ProblemGrp2').on('click',function () { - var alarm = prompt("hier gibt es Unstimmigeiten","Vorgeschlagene Note:") - if (alarm === "1"||alarm=="2"||alarm=="3"||alarm=="4"||alarm=="5"||alarm=="6") { + $('#ProblemGrp2').on('click', function () { + var alarm = prompt("hier gibt es Unstimmigeiten", "Vorgeschlagene Note:") + if (alarm === "1" || alarm == "2" || alarm == "3" || alarm == "4" || alarm == "5" || alarm == "6") { - var dataP= JSON.stringify({"adressat":true,"student": { + var dataP = JSON.stringify({ + "adressat": true, "student": { "projectId": getQueryVariable("projectId"), "studentId": "fgnxnw" - }, "deadline":new Date(), + }, "deadline": new Date(), "bewertender": { "projectId": getQueryVariable("projectId"), "studentId": document.getElementById("user").innerText }, - "projektId":getQueryVariable("projectId"), - "bewertung":alarm + "projektId": getQueryVariable("projectId"), + "bewertung": alarm }); $.ajax({ url: "../rest/assessments2/calculate2", @@ -202,33 +205,34 @@ $(document).ready(function () { }, data: dataP, success: function (response) { - document.getElementById('ProblemGrp2').innerHTML=response; + document.getElementById('ProblemGrp2').innerHTML = response; }, - error: function (a,b,c) { + error: function (a, b, c) { alert('some error' + b); } }) } - else{ + else { window.alert("Bitte eine Zahl zwischen eins und 6 angeben") } }); }); $(document).ready(function () { - $('#ProblemGrp2S3').on('click',function () { - var alarm = prompt("hier gibt es Unstimmigeiten","Vorgeschlagene Note:") - if (alarm === "1"||alarm=="2"||alarm=="3"||alarm=="4"||alarm=="5"||alarm=="6") { + $('#ProblemGrp2S3').on('click', function () { + var alarm = prompt("hier gibt es Unstimmigeiten", "Vorgeschlagene Note:") + if (alarm === "1" || alarm == "2" || alarm == "3" || alarm == "4" || alarm == "5" || alarm == "6") { - var dataP= JSON.stringify({"adressat":true,"student": { + var dataP = JSON.stringify({ + "adressat": true, "student": { "projectId": getQueryVariable("projectId"), "studentId": "fgnxnw" - }, "deadline":new Date(), + }, "deadline": new Date(), "bewertender": { "projectId": getQueryVariable("projectId"), "studentId": document.getElementById("user").innerText }, - "projektId":getQueryVariable("projectId"), - "bewertung":alarm + "projektId": getQueryVariable("projectId"), + "bewertung": alarm }); $.ajax({ url: "../rest/assessments2/calculate2", @@ -239,33 +243,34 @@ $(document).ready(function () { }, data: dataP, success: function (response) { - document.getElementById('ProblemGrp2S3').innerHTML=response; + document.getElementById('ProblemGrp2S3').innerHTML = response; }, - error: function (a,b,c) { + error: function (a, b, c) { alert('some error' + b); } }) } - else{ + else { window.alert("Bitte eine Zahl zwischen eins und 6 angeben") } }); }); $(document).ready(function () { - $('#ProblemGrp2S4').on('click',function () { - var alarm = prompt("hier gibt es Unstimmigeiten","Vorgeschlagene Note:") - if (alarm === "1"||alarm=="2"||alarm=="3"||alarm=="4"||alarm=="5"||alarm=="6") { + $('#ProblemGrp2S4').on('click', function () { + var alarm = prompt("hier gibt es Unstimmigeiten", "Vorgeschlagene Note:") + if (alarm === "1" || alarm == "2" || alarm == "3" || alarm == "4" || alarm == "5" || alarm == "6") { - var dataP= JSON.stringify({"adressat":true,"student": { + var dataP = JSON.stringify({ + "adressat": true, "student": { "projectId": getQueryVariable("projectId"), "studentId": "fgnxnw" - }, "deadline":new Date(), + }, "deadline": new Date(), "bewertender": { "projectId": getQueryVariable("projectId"), "studentId": document.getElementById("user").innerText }, - "projektId":getQueryVariable("projectId"), - "bewertung":alarm + "projektId": getQueryVariable("projectId"), + "bewertung": alarm }); $.ajax({ url: "../rest/assessments2/calculate2", @@ -276,33 +281,34 @@ $(document).ready(function () { }, data: dataP, success: function (response) { - document.getElementById('ProblemGrp2S4').innerHTML=response; + document.getElementById('ProblemGrp2S4').innerHTML = response; }, - error: function (a,b,c) { + error: function (a, b, c) { alert('some error' + b); } }) } - else{ + else { window.alert("Bitte eine Zahl zwischen eins und 6 angeben") } }); }); $(document).ready(function () { - $('#ProblemGrp3').on('click',function () { - var alarm = prompt("hier gibt es Unstimmigeiten","Vorgeschlagene Note:") - if (alarm === "1"||alarm=="2"||alarm=="3"||alarm=="4"||alarm=="5"||alarm=="6") { + $('#ProblemGrp3').on('click', function () { + var alarm = prompt("hier gibt es Unstimmigeiten", "Vorgeschlagene Note:") + if (alarm === "1" || alarm == "2" || alarm == "3" || alarm == "4" || alarm == "5" || alarm == "6") { - var dataP= JSON.stringify({"adressat":true,"student": { + var dataP = JSON.stringify({ + "adressat": true, "student": { "projectId": getQueryVariable("projectId"), "studentId": "fgnxnw" - }, "deadline":new Date(), + }, "deadline": new Date(), "bewertender": { "projectId": getQueryVariable("projectId"), "studentId": document.getElementById("user").innerText }, - "projektId":getQueryVariable("projectId"), - "bewertung":alarm + "projektId": getQueryVariable("projectId"), + "bewertung": alarm }); $.ajax({ url: "../rest/assessments2/calculate2", @@ -313,33 +319,34 @@ $(document).ready(function () { }, data: dataP, success: function (response) { - document.getElementById('ProblemGrp3').innerHTML=response; + document.getElementById('ProblemGrp3').innerHTML = response; }, - error: function (a,b,c) { + error: function (a, b, c) { alert('some error' + b); } }) } - else{ + else { window.alert("Bitte eine Zahl zwischen eins und 6 angeben") } }); }); $(document).ready(function () { - $('#ProblemGrp3S5').on('click',function () { - var alarm = prompt("hier gibt es Unstimmigeiten","Vorgeschlagene Note:") - if (alarm === "1"||alarm=="2"||alarm=="3"||alarm=="4"||alarm=="5"||alarm=="6") { + $('#ProblemGrp3S5').on('click', function () { + var alarm = prompt("hier gibt es Unstimmigeiten", "Vorgeschlagene Note:") + if (alarm === "1" || alarm == "2" || alarm == "3" || alarm == "4" || alarm == "5" || alarm == "6") { - var dataP= JSON.stringify({"adressat":true,"student": { + var dataP = JSON.stringify({ + "adressat": true, "student": { "projectId": getQueryVariable("projectId"), "studentId": "fgnxnw" - }, "deadline":new Date(), + }, "deadline": new Date(), "bewertender": { "projectId": getQueryVariable("projectId"), "studentId": document.getElementById("user").innerText }, - "projektId":getQueryVariable("projectId"), - "bewertung":alarm + "projektId": getQueryVariable("projectId"), + "bewertung": alarm }); $.ajax({ url: "../rest/assessments2/calculate2", @@ -350,33 +357,34 @@ $(document).ready(function () { }, data: dataP, success: function (response) { - document.getElementById('ProblemGrp3S5').innerHTML=response; + document.getElementById('ProblemGrp3S5').innerHTML = response; }, - error: function (a,b,c) { + error: function (a, b, c) { alert('some error' + b); } }) } - else{ + else { window.alert("Bitte eine Zahl zwischen eins und 6 angeben") } }); }); $(document).ready(function () { - $('#ProblemGrp3S6').on('click',function () { - var alarm = prompt("hier gibt es Unstimmigeiten","Vorgeschlagene Note:") - if (alarm === "1"||alarm=="2"||alarm=="3"||alarm=="4"||alarm=="5"||alarm=="6") { + $('#ProblemGrp3S6').on('click', function () { + var alarm = prompt("hier gibt es Unstimmigeiten", "Vorgeschlagene Note:") + if (alarm === "1" || alarm == "2" || alarm == "3" || alarm == "4" || alarm == "5" || alarm == "6") { - var dataP= JSON.stringify({"adressat":true,"student": { + var dataP = JSON.stringify({ + "adressat": true, "student": { "projectId": getQueryVariable("projectId"), "studentId": "fgnxnw" - }, "deadline":new Date(), + }, "deadline": new Date(), "bewertender": { "projectId": getQueryVariable("projectId"), "studentId": document.getElementById("user").innerText }, - "projektId":getQueryVariable("projectId"), - "bewertung":alarm + "projektId": getQueryVariable("projectId"), + "bewertung": alarm }); $.ajax({ url: "../rest/assessments2/calculate2", @@ -387,14 +395,14 @@ $(document).ready(function () { }, data: dataP, success: function (response) { - document.getElementById('ProblemGrp3S6').innerHTML=response; + document.getElementById('ProblemGrp3S6').innerHTML = response; }, - error: function (a,b,c) { + error: function (a, b, c) { alert('some error' + b); } }) } - else{ + else { window.alert("Bitte eine Zahl zwischen eins und 6 angeben") } }); diff --git a/gemeinsamforschen/src/main/webapp/assessment/js/Quiz-docent.js b/gemeinsamforschen/src/main/webapp/assessment/js/Quiz-docent.js index 8ddea17c89cace4cdfe23ce433ea226da5cf64a3..52af2f86b99a66d2561edc917f1eaba42871d6b0 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/js/Quiz-docent.js +++ b/gemeinsamforschen/src/main/webapp/assessment/js/Quiz-docent.js @@ -1,6 +1,6 @@ $(document).ready(function () { - $('#newQuiz').on('click', function(){ - location.href="create-quiz.jsp?token="+getUserTokenFromUrl()+"&projectId="+$('#projectId').html().trim(); + $('#newQuiz').on('click', function () { + location.href = "create-quiz.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + $('#projectId').html().trim(); }); let loading = $('#loadbar').hide(); @@ -11,12 +11,12 @@ $(document).ready(function () { loading.hide(); }); - $("label.btn").on('click',function () { + $("label.btn").on('click', function () { let choice = $(this).find('input:radio').val(); $('#loadbar').show(); $('#quiz').fadeOut(); - setTimeout(function(){ - $( "#answer" ).html( $(this).checking(choice) ); + setTimeout(function () { + $("#answer").html($(this).checking(choice)); $('#quiz').show(); $('#loadbar').fadeOut(); /* something else */ @@ -27,26 +27,26 @@ $(document).ready(function () { let projectId = document.getElementById('projectId').innerText.trim(); $.ajax({ - url: '../rest/assessments/project/'+projectId+'/quiz/', + url: '../rest/assessments/project/' + projectId + '/quiz/', type: 'GET', success: function (data) { let table = document.getElementById('tableQuiz'); - for (let quiz = 0; quiz < data.length; quiz++){ - let question = data[quiz].question.replace(/ /g,"").replace("?","").replace(",",""); + for (let quiz = 0; quiz < data.length; quiz++) { + let question = data[quiz].question.replace(/ /g, "").replace("?", "").replace(",", ""); let answers = data[quiz].correctAnswers.concat(data[quiz].incorrectAnswers); let colspan = answers.length; let trQuestion = document.createElement('TR'); let tdQuestion = '<td colspan="' + colspan + '"' + - ' data-toggle="collapse" href="#'+question+'" aria-expanded="false" aria-controls="'+question+'">' + + ' data-toggle="collapse" href="#' + question + '" aria-expanded="false" aria-controls="' + question + '">' + '' + data[quiz].question + '</td>'; trQuestion.innerHTML = tdQuestion; let trAnswers = document.createElement('TR'); - let answersTd='<td style="display: block;">' + + let answersTd = '<td style="display: block;">' + '<div ' + 'class="quiz collapse" ' + - 'id="'+question+'" ' + + 'id="' + question + '" ' + 'data-toggle="buttons">' + - '<p hidden>'+data[quiz].question+'</p>'; + '<p hidden>' + data[quiz].question + '</p>'; for (let i = 0; i < answers.length; i++) { answersTd = answersTd + '<div>' + '<label class="element-animation1 btn btn-lg btn-primary btn-block">' + @@ -54,17 +54,17 @@ $(document).ready(function () { '<i class="glyphicon glyphicon-chevron-right">' + '</i>' + '</span>' + - '<input type="checkbox" value="'+answers[i]+'">' + answers[i] + '' + + '<input type="checkbox" value="' + answers[i] + '">' + answers[i] + '' + '</label>' + '</div>'; } - tdQuestion =""; - answers=[]; - let deletebutton = '<button class="btn btn-danger" id="delete'+question+'">löschen</button>'; - trAnswers.innerHTML = answersTd+deletebutton+'</div></td>'; + tdQuestion = ""; + answers = []; + let deletebutton = '<button class="btn btn-danger" id="delete' + question + '">löschen</button>'; + trAnswers.innerHTML = answersTd + deletebutton + '</div></td>'; table.appendChild(trQuestion); table.appendChild(trAnswers); - $("#delete"+question).click({quizId: data[quiz].question}, deleteQuiz); + $("#delete" + question).click({quizId: data[quiz].question}, deleteQuiz); } }, error: function (a) { @@ -72,14 +72,14 @@ $(document).ready(function () { } }); - function deleteQuiz(event){ + function deleteQuiz(event) { $.ajax({ url: '../rest/assessments/quiz/' + encodeURIComponent(event.data.quizId), type: 'POST', success: function () { - document.location.href="quiz-docent.jsp?token="+getUserTokenFromUrl()+"&projectId="+$('#projectId').html().trim(); + document.location.href = "quiz-docent.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + $('#projectId').html().trim(); }, - error: function(a){ + error: function (a) { alert(a) } }); diff --git a/gemeinsamforschen/src/main/webapp/assessment/js/Quiz.js b/gemeinsamforschen/src/main/webapp/assessment/js/Quiz.js index f79b9de9519fdb8b78d10842685c12cd20cf54c7..97134fdb30366ac470be44bee84462f44406a162 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/js/Quiz.js +++ b/gemeinsamforschen/src/main/webapp/assessment/js/Quiz.js @@ -1,22 +1,22 @@ -$(document).ready(function(){ +$(document).ready(function () { let projectId = document.getElementById('projectId').innerText.trim(); $.ajax({ - url: '../rest/assessments/project/'+projectId+'/quiz/', + url: '../rest/assessments/project/' + projectId + '/quiz/', projectId: projectId, type: 'GET', success: function (data) { let table = document.getElementById('myQuizzes'); - for (let quiz = 0; quiz < data.length; quiz++){ + for (let quiz = 0; quiz < data.length; quiz++) { let answers = data[quiz].correctAnswers.concat(data[quiz].incorrectAnswers); let colspan = answers.length; let trQuestion = document.createElement('TR'); - trQuestion.className="pageChanger"; + trQuestion.className = "pageChanger"; trQuestion.innerHTML = '<td colspan="' + colspan + '"><h3>' + '<a href="view-quiz.jsp' + - '?token='+getUserTokenFromUrl()+ - '&projectId='+projectId+ - '&quizId='+ encodeURIComponent(data[quiz].question)+'"</a>' + - data[quiz].question+'</h3></td>'; + '?token=' + getUserTokenFromUrl() + + '&projectId=' + projectId + + '&quizId=' + encodeURIComponent(data[quiz].question) + '"</a>' + + data[quiz].question + '</h3></td>'; table.appendChild(trQuestion); } }, @@ -25,7 +25,7 @@ $(document).ready(function(){ } }); - $('#newQuiz').on('click', function(){ - location.href="create-quiz.jsp?token="+getUserTokenFromUrl()+"&projectId="+$('#projectId').html().trim(); + $('#newQuiz').on('click', function () { + location.href = "create-quiz.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + $('#projectId').html().trim(); }); }); diff --git a/gemeinsamforschen/src/main/webapp/assessment/js/assess-work.js b/gemeinsamforschen/src/main/webapp/assessment/js/assess-work.js index 98a0a9765f2bf8bbecceddce58b99688b9260162..7315cef8a8d7aa665b76d8300a827ed46d14c73d 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/js/assess-work.js +++ b/gemeinsamforschen/src/main/webapp/assessment/js/assess-work.js @@ -17,7 +17,7 @@ $(document).ready(function () { function buildTablesForPeers() { let studentId = $('#user').html().trim(); let projectId = $('#projectId').html().trim(); - $.ajax({ + $.ajax({ url: '../rest/group/project/' + projectId + '/student/' + studentId, type: 'GET', headers: { diff --git a/gemeinsamforschen/src/main/webapp/assessment/js/create-quiz.js b/gemeinsamforschen/src/main/webapp/assessment/js/create-quiz.js index 5353643dbcb0770b3aa7096c0011c6ac743c43f6..0005f90353bb2066aa69ed6dbeb4104558669b4b 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/js/create-quiz.js +++ b/gemeinsamforschen/src/main/webapp/assessment/js/create-quiz.js @@ -1,41 +1,39 @@ $(document).ready(function () { - $('#addCorrectAnswer').on('click', function(){ + $('#addCorrectAnswer').on('click', function () { let divCorrectAnswer = document.getElementById('correctAnswers'); let i = divCorrectAnswer.children.length; let inputCorrectAnswer = document.createElement('INPUT'); - inputCorrectAnswer.id='correctAnswer'+i; + inputCorrectAnswer.id = 'correctAnswer' + i; divCorrectAnswer.appendChild(inputCorrectAnswer); }); - $('#addIncorrectAnswer').on('click', function(){ + $('#addIncorrectAnswer').on('click', function () { let divIncorrectAnswer = document.getElementById('incorrectAnswers'); let i = divIncorrectAnswer.children.length; let inputIncorrectAnswer = document.createElement('INPUT'); - inputIncorrectAnswer.id='incorrectAnswer'+i; + inputIncorrectAnswer.id = 'incorrectAnswer' + i; divIncorrectAnswer.appendChild(inputIncorrectAnswer); }); - $('#deleteCorrectAnswer').on('click', function(){ + $('#deleteCorrectAnswer').on('click', function () { let divCorrectAnswer = document.getElementById('correctAnswers'); divCorrectAnswer.removeChild(divCorrectAnswer.lastChild); }); - $('#deleteIncorrectAnswer').on('click', function(){ + $('#deleteIncorrectAnswer').on('click', function () { let divIncorrectAnswer = document.getElementById('incorrectAnswers'); divIncorrectAnswer.removeChild(divIncorrectAnswer.lastChild); }); $("#save").on('click', function () { - let correctAnswers= []; - let incorrectAnswers= []; + let correctAnswers = []; + let incorrectAnswers = []; let shuttleList = document.getElementById('correctAnswers'); - for (var i=0; i<shuttleList.children.length; i++) - { + for (var i = 0; i < shuttleList.children.length; i++) { correctAnswers.push(shuttleList.children[i].value.trim()) } shuttleList = document.getElementById('incorrectAnswers'); - for (i=0; i<shuttleList.children.length; i++) - { + for (i = 0; i < shuttleList.children.length; i++) { incorrectAnswers.push(shuttleList.children[i].value.trim()) } let quiz = { @@ -60,12 +58,12 @@ $(document).ready(function () { "Cache-Control": "no-cache" }, type: 'POST', - success: function(){ - location.href="quiz.jsp?token="+getUserTokenFromUrl()+"&projectId="+$('#projectId').html().trim(); - }, - error: function(a){ + success: function () { + location.href = "quiz.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + $('#projectId').html().trim(); + }, + error: function (a) { - } + } }); }); }); diff --git a/gemeinsamforschen/src/main/webapp/assessment/js/grading.js b/gemeinsamforschen/src/main/webapp/assessment/js/grading.js index 5f6823dab004b402bdb5e4eccbb87a88c8541f53..4e894548551abb956d9e67ad2e39e0935bb8209a 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/js/grading.js +++ b/gemeinsamforschen/src/main/webapp/assessment/js/grading.js @@ -1,7 +1,7 @@ $(document).ready(function () { - $('#ProjektFinalisieren').on('click',function () { + $('#ProjektFinalisieren').on('click', function () { - document.getElementById("ProjektFinalisieren").style.color="magenta"; + document.getElementById("ProjektFinalisieren").style.color = "magenta"; }); diff --git a/gemeinsamforschen/src/main/webapp/assessment/js/rateContribution.js b/gemeinsamforschen/src/main/webapp/assessment/js/rateContribution.js index 402b474a1d1d3f9816757b53e8d7b3fed725e750..028b0311016a066a7f6b86e06c4b13c43610318d 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/js/rateContribution.js +++ b/gemeinsamforschen/src/main/webapp/assessment/js/rateContribution.js @@ -22,11 +22,11 @@ $(document).ready(function () { }); }); -function whichGroupToRate(){ +function whichGroupToRate() { let projectId = $('#projectId').html().trim(); let studentId = $('#user').html().trim(); $.ajax({ - url: '../rest/assessments/groupRate/project/'+projectId+'/student/'+studentId, + url: '../rest/assessments/groupRate/project/' + projectId + '/student/' + studentId, type: 'GET', headers: { "Content-Type": "application/json", @@ -54,7 +54,7 @@ function safeContributionRating() { let fromPeer = $('#user').html().trim(); let groupId = $('#groupId').html().trim(); $.ajax({ - url: '../rest/assessments/contributionRating/group/'+groupId+'/fromPeer/' + fromPeer, + url: '../rest/assessments/contributionRating/group/' + groupId + '/fromPeer/' + fromPeer, type: 'POST', headers: { "Content-Type": "application/json", diff --git a/gemeinsamforschen/src/main/webapp/assessment/js/take-quiz.js b/gemeinsamforschen/src/main/webapp/assessment/js/take-quiz.js index 75cf2fa1bd8b2abc54bfbd04d4246cb0beccd985..07c83920d732ed9ed9f72ad7c365f311b7cfad39 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/js/take-quiz.js +++ b/gemeinsamforschen/src/main/webapp/assessment/js/take-quiz.js @@ -7,12 +7,12 @@ $(document).ready(function () { loading.hide(); }); - $("label.btn").on('click',function () { + $("label.btn").on('click', function () { let choice = $(this).find('input:radio').val(); $('#loadbar').show(); $('#quiz').fadeOut(); - setTimeout(function(){ - $( "#answer" ).html( $(this).checking(choice) ); + setTimeout(function () { + $("#answer").html($(this).checking(choice)); $('#quiz').show(); $('#loadbar').fadeOut(); /* something else */ @@ -23,27 +23,27 @@ $(document).ready(function () { let projectId = document.getElementById('projectId').innerText.trim(); $.ajax({ - url: '../rest/assessments/project/'+projectId+'/quiz/', + url: '../rest/assessments/project/' + projectId + '/quiz/', type: 'GET', success: function (data) { let table = document.getElementById('tableQuiz'); - for (let quiz = 0; quiz < data.length; quiz++){ - let question = data[quiz].question.replace(/ /g,"").replace("?","").replace(",",""); + for (let quiz = 0; quiz < data.length; quiz++) { + let question = data[quiz].question.replace(/ /g, "").replace("?", "").replace(",", ""); let answers = data[quiz].correctAnswers.concat(data[quiz].incorrectAnswers); let colspan = answers.length; let trQuestion = document.createElement('TR'); let tdQuestion = '<td colspan="' + colspan + '"' + - ' data-toggle="collapse" href="#'+question+'" aria-expanded="false" aria-controls="'+question+'">' + + ' data-toggle="collapse" href="#' + question + '" aria-expanded="false" aria-controls="' + question + '">' + '' + data[quiz].question + '</td>'; trQuestion.innerHTML = tdQuestion; let trAnswers = document.createElement('TR'); answers = shuffle(answers); - let answersTd='<td style="display: block;">' + + let answersTd = '<td style="display: block;">' + '<div ' + 'class="quiz collapse" ' + - 'id="'+question+'" ' + + 'id="' + question + '" ' + 'data-toggle="buttons">' + - '<p hidden>'+data[quiz].question+'</p>'; + '<p hidden>' + data[quiz].question + '</p>'; for (let i = 0; i < answers.length; i++) { answersTd = answersTd + '<div>' + '<label class="element-animation1 btn btn-lg btn-primary btn-block">' + @@ -51,13 +51,13 @@ $(document).ready(function () { '<i class="glyphicon glyphicon-chevron-right">' + '</i>' + '</span>' + - '<input type="checkbox" value="'+answers[i]+'">' + answers[i] + '' + + '<input type="checkbox" value="' + answers[i] + '">' + answers[i] + '' + '</label>' + '</div>'; } - tdQuestion =""; - answers=[]; - trAnswers.innerHTML = answersTd+'</div></td>'; + tdQuestion = ""; + answers = []; + trAnswers.innerHTML = answersTd + '</div></td>'; table.appendChild(trQuestion); table.appendChild(trAnswers); } @@ -82,37 +82,37 @@ function shuffle(a) { return a; } -function safeQuizAnswers(){ +function safeQuizAnswers() { let quizzes = $('.quiz'); ///////initialize variables/////// let dataP = {}; ///////read values from html/////// - for (let quiz=0; quiz<quizzes.length; quiz++){ + for (let quiz = 0; quiz < quizzes.length; quiz++) { let answerList = []; - if (quizzes[quiz].id !== ""){ - let checkedBoxes = $("#"+quizzes[quiz].id+" input:checked"); - checkedBoxes.each(function(){ + if (quizzes[quiz].id !== "") { + let checkedBoxes = $("#" + quizzes[quiz].id + " input:checked"); + checkedBoxes.each(function () { answerList.push($(this).val()); }); - let question = $("#"+quizzes[quiz].id+" p").html().trim(); - dataP[question]= answerList; + let question = $("#" + quizzes[quiz].id + " p").html().trim(); + dataP[question] = answerList; } } - let projectId=$('#projectId').html().trim(); - let studentId=$('#user').html().trim(); + let projectId = $('#projectId').html().trim(); + let studentId = $('#user').html().trim(); $.ajax({ - url:'../rest/assessments/quizAnswer/projectId/'+projectId+'/studentId/'+studentId, + url: '../rest/assessments/quizAnswer/projectId/' + projectId + '/studentId/' + studentId, type: 'POST', headers: { "Content-Type": "application/json", "Cache-Control": "no-cache" }, data: JSON.stringify(dataP), - success: function(){ - location.href="rate-contribution.jsp?token="+getUserTokenFromUrl()+"&projectId="+$('#projectId').html().trim(); + success: function () { + location.href = "rate-contribution.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + $('#projectId').html().trim(); }, - error: function(a,b,c){ + error: function (a, b, c) { } }); diff --git a/gemeinsamforschen/src/main/webapp/assessment/js/view-quiz.js b/gemeinsamforschen/src/main/webapp/assessment/js/view-quiz.js index 8ebaac60bf99121d46d4fc6bc15bffb43b9e3ac7..6aaa6efd53b7db4e4ea1e6dba8c906f3d8ce1a6c 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/js/view-quiz.js +++ b/gemeinsamforschen/src/main/webapp/assessment/js/view-quiz.js @@ -37,7 +37,7 @@ $(document).ready(function () { var author = $('#user').html().trim(); var projectId = document.getElementById('projectId').innerText.trim(); $.ajax({ - url: '../rest/assessments/project/'+projectId+'/quiz/'+quizId+'/author/'+author, + url: '../rest/assessments/project/' + projectId + '/quiz/' + quizId + '/author/' + author, type: 'GET', success: function (data) { var table = document.getElementById('tableQuiz'); @@ -67,9 +67,9 @@ $(document).ready(function () { url: '../rest/assessments/quiz/' + encodeURIComponent(quizId), type: 'POST', success: function () { - document.location.href="quiz.jsp?token="+getUserTokenFromUrl()+"&projectId="+$('#projectId').html().trim(); + document.location.href = "quiz.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + $('#projectId').html().trim(); }, - error: function(a){ + error: function (a) { alert(a) } }); diff --git a/gemeinsamforschen/src/main/webapp/assessment/project-docent_CG.jsp b/gemeinsamforschen/src/main/webapp/assessment/project-docent_CG.jsp index f8ec92fc5cf46c3cc272ce6b6cca5fe12b0266ba..21eeddab2f2499e676bf7cfadf652fe617f03fca 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/project-docent_CG.jsp +++ b/gemeinsamforschen/src/main/webapp/assessment/project-docent_CG.jsp @@ -15,7 +15,6 @@ </head> - <body> <div id="wrapper"> <menu:menu hierarchy="1"/> @@ -29,7 +28,9 @@ </div> <p hidden id="ProjektId">Projekt1</p> <button - class="btn btn-default" type="button">Exportiere Zwischenstand</button><button class="btn btn-default" type="button">Quizfrage erstellen</button> + class="btn btn-default" type="button">Exportiere Zwischenstand + </button> + <button class="btn btn-default" type="button">Quizfrage erstellen</button> <div> <div class="container"> <div class="row"> @@ -38,21 +39,27 @@ <table class="table"> <thead> <tr> - <th id="testAjax">Gruppe1 </th> - <th>Beiträge </th> - <th> <button id="ProblemGrp1">!</button> </th> + <th id="testAjax">Gruppe1</th> + <th>Beiträge</th> + <th> + <button id="ProblemGrp1">!</button> + </th> </tr> </thead> <tbody> <tr> - <td>student1 </td> - <td>Interfaces </td> - <th> <button id="ProblemGrp1S1">!</button> </th> + <td>student1</td> + <td>Interfaces</td> + <th> + <button id="ProblemGrp1S1">!</button> + </th> </tr> <tr> - <td>student2 </td> - <td>Design </td> - <th> <button id="ProblemGrp1S2">!</button> </th> + <td>student2</td> + <td>Design</td> + <th> + <button id="ProblemGrp1S2">!</button> + </th> </tr> </tbody> </table> @@ -61,21 +68,27 @@ <table class="table"> <thead> <tr> - <th>Gruppe2 </th> - <th>Beiträge </th> - <th> <button id="ProblemGrp2">!</button> </th> + <th>Gruppe2</th> + <th>Beiträge</th> + <th> + <button id="ProblemGrp2">!</button> + </th> </tr> </thead> <tbody> <tr> - <td>student3 </td> - <td>Interfaces </td> - <th> <button id="ProblemGrp2S3">!</button> </th> + <td>student3</td> + <td>Interfaces</td> + <th> + <button id="ProblemGrp2S3">!</button> + </th> </tr> <tr> - <td>student4 </td> - <td>Design </td> - <th> <button id="ProblemGrp2S4">!</button> </th> + <td>student4</td> + <td>Design</td> + <th> + <button id="ProblemGrp2S4">!</button> + </th> </tr> </tbody> </table> @@ -84,21 +97,27 @@ <table class="table"> <thead> <tr> - <th>Gruppe3 </th> - <th>Beiträge </th> - <th> <button id="ProblemGrp3">!</button> </th> + <th>Gruppe3</th> + <th>Beiträge</th> + <th> + <button id="ProblemGrp3">!</button> + </th> </tr> </thead> <tbody> <tr> - <td>student5 </td> - <td>Interfaces </td> - <th> <button id="ProblemGrp3S5">!</button> </th> + <td>student5</td> + <td>Interfaces</td> + <th> + <button id="ProblemGrp3S5">!</button> + </th> </tr> <tr> - <td>student6 </td> - <td>Design </td> - <th> <button id="ProblemGrp3S6">!</button> </th> + <td>student6</td> + <td>Design</td> + <th> + <button id="ProblemGrp3S6">!</button> + </th> </tr> </tbody> </table> @@ -106,7 +125,7 @@ </div> <div class="col-md-4"> <button id="DiaBlende">Zeitlicher Verlauf</button> - <canvas height="480" width="480", id = "Diagramm" ></canvas> + <canvas height="480" width="480" , id="Diagramm"></canvas> </div> <div class="col-md-4"> <div class="panel panel-default"> @@ -125,7 +144,9 @@ <div class="row"> <div class="col-md-12"> <p><a href="#">Sara Doe:</a> This guy has been going 100+ MPH on side streets. <br> - <small class="text-muted">August 6, 2016 @ 10:35am </small></p> + <small class="text-muted">August 6, 2016 @ 10:35am + </small> + </p> </div> </div> </div> @@ -143,7 +164,9 @@ <div class="row"> <div class="col-md-12"> <p><a href="#">Brennan Prill:</a> This guy has been going 100+ MPH on side streets. <br> - <small class="text-muted">August 6, 2016 @ 10:35am </small></p> + <small class="text-muted">August 6, 2016 @ 10:35am + </small> + </p> </div> </div> </div> diff --git a/gemeinsamforschen/src/main/webapp/assessment/take-quiz.jsp b/gemeinsamforschen/src/main/webapp/assessment/take-quiz.jsp index 78e164752a1ec941a29236c3764412ee3969779b..8809591756b5e50e6d9b3d106e70f249d5db55e1 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/take-quiz.jsp +++ b/gemeinsamforschen/src/main/webapp/assessment/take-quiz.jsp @@ -1,4 +1,4 @@ -<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> @@ -20,12 +20,11 @@ <div> <table> <tr> - <td id="yourContent"> + <td id="yourContent"> <h1>Quiz for gemeinsamForschen </h1> <!-- here will be all the content --> - <table class="table-striped"> <tbody id="tableQuiz"> diff --git a/gemeinsamforschen/src/main/webapp/assessment/view-quiz.jsp b/gemeinsamforschen/src/main/webapp/assessment/view-quiz.jsp index 4fc3d8b85736f8f2aea5b1bcb442acb85147094f..f141d1c728b1c7234f7e541422829e7c9c33102c 100644 --- a/gemeinsamforschen/src/main/webapp/assessment/view-quiz.jsp +++ b/gemeinsamforschen/src/main/webapp/assessment/view-quiz.jsp @@ -1,4 +1,4 @@ -<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> @@ -22,7 +22,7 @@ <div> <table> <tr> - <td id="yourContent"> + <td id="yourContent"> <h1>Quiz for project1 </h1> <!-- here will be all the content --> <table class="table-striped"> diff --git a/gemeinsamforschen/src/main/webapp/core/footer.css b/gemeinsamforschen/src/main/webapp/core/footer.css index beb5cbc6a2d2f0a9015b498d756e4a0531d77ca8..72997a2776eaea11fde130fbcebd46e5f4e592a2 100644 --- a/gemeinsamforschen/src/main/webapp/core/footer.css +++ b/gemeinsamforschen/src/main/webapp/core/footer.css @@ -24,12 +24,12 @@ .pg-Execution { background: #77AAAA; - width:55%; + width: 55%; } .pg-Assessment { background: #AA5555; - width:75%; + width: 75%; } .pg-Projectfinished { diff --git a/gemeinsamforschen/src/main/webapp/core/footer.js b/gemeinsamforschen/src/main/webapp/core/footer.js index 6875866f0675741797ba62d75e5e2538556dfe19..6e3cfcbb57e97f5e90801bc6d61b4b0d359c96c0 100644 --- a/gemeinsamforschen/src/main/webapp/core/footer.js +++ b/gemeinsamforschen/src/main/webapp/core/footer.js @@ -1,6 +1,6 @@ -$(document).ready(function(){ +$(document).ready(function () { $('#btnUnstructuredUpload').click(function () { - location.href="annotation/upload-unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); + location.href = "annotation/upload-unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); }); }); diff --git a/gemeinsamforschen/src/main/webapp/core/gemeinsamForschen.tld b/gemeinsamforschen/src/main/webapp/core/gemeinsamForschen.tld index 75ee5e5eeb4c94f178e786d9b95ee3c079c21d34..ce6494c98aa34c6ea2489d02d7a8ffb6d7c4f018 100644 --- a/gemeinsamforschen/src/main/webapp/core/gemeinsamForschen.tld +++ b/gemeinsamforschen/src/main/webapp/core/gemeinsamForschen.tld @@ -48,7 +48,7 @@ <tag-class>unipotsdam.gf.core.management.pageAppearance.Footer</tag-class> <body-content>empty</body-content> </tag> - + <tag> <name>context</name> <tag-class>unipotsdam.gf.core.session.ContextTag</tag-class> diff --git a/gemeinsamforschen/src/main/webapp/core/overview-docent.js b/gemeinsamforschen/src/main/webapp/core/overview-docent.js index 77cd2693f2740cc2cb0a36e504271eecae90310e..511ef0f529b71729ca7d74a4c7f1585e5fb7b0b9 100644 --- a/gemeinsamforschen/src/main/webapp/core/overview-docent.js +++ b/gemeinsamforschen/src/main/webapp/core/overview-docent.js @@ -1,9 +1,9 @@ $(document).ready(function(){ $('#project1Link').on('click', function(){ - location.href="project-docent.jsp?token="+getUserTokenFromUrl()+'&projectId='+'gemeinsamForschen'; + location.href = "project-docent.jsp?token=" + getUserTokenFromUrl() + '&projectId=' + 'gemeinsamForschen'; }); $('#project2Link').on('click', function(){ - location.href="project-docent.jsp?token="+getUserTokenFromUrl()+'&projectId='+'Kaleo'; + location.href = "project-docent.jsp?token=" + getUserTokenFromUrl() + '&projectId=' + 'Kaleo'; }); $('#createProject').on('click', function(){ location.href="createProject.jsp?token="+getUserTokenFromUrl(); diff --git a/gemeinsamforschen/src/main/webapp/core/overview-student.js b/gemeinsamforschen/src/main/webapp/core/overview-student.js index 898f3f5e00183d9549a84cb5c3028be9aa7f5bd6..251cdab51ebf4f6087747ef639cbcff416550e53 100644 --- a/gemeinsamforschen/src/main/webapp/core/overview-student.js +++ b/gemeinsamforschen/src/main/webapp/core/overview-student.js @@ -1,9 +1,9 @@ $(document).ready(function(){ $('#project1Link').on('click', function(){ - location.href="project-student.jsp?token="+getUserTokenFromUrl()+'&projectId='+'gemeinsamForschen'; + location.href = "project-student.jsp?token=" + getUserTokenFromUrl() + '&projectId=' + 'gemeinsamForschen'; }); - $('#project2Link').on('click', function(){ - location.href="project-student.jsp?token="+getUserTokenFromUrl()+'&projectId='+'Kaleo'; + $('#project2Link').on('click', function () { + location.href = "project-student.jsp?token=" + getUserTokenFromUrl() + '&projectId=' + 'Kaleo'; }); $('#enrollProject').on('click', function(){ location.href="enrollProject.jsp?token="+getUserTokenFromUrl(); diff --git a/gemeinsamforschen/src/main/webapp/core/project-student.js b/gemeinsamforschen/src/main/webapp/core/project-student.js index 8c7642ebeff55680cc523f7e27005087a29082a6..81e54d1bc73d0f7ce9f00bf83c5992a1ac767eef 100644 --- a/gemeinsamforschen/src/main/webapp/core/project-student.js +++ b/gemeinsamforschen/src/main/webapp/core/project-student.js @@ -1,4 +1,4 @@ -$(document).ready(function(){ +$(document).ready(function () { // fetch all submission part project representations from database getSubmissionPartsByProjectId(getQueryVariable("projectId"), function (response) { @@ -11,7 +11,7 @@ $(document).ready(function(){ $('.annotationview').click(function () { let fullSubmissionId = $(this).closest("li").data("fullSubmissionId"); let category = $(this).closest("li").data("category"); - location.href="annotation/annotation-document.jsp?token=" + getUserTokenFromUrl() + + location.href = "annotation/annotation-document.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId") + "&fullSubmissionId=" + fullSubmissionId + "&category=" + category; @@ -30,18 +30,18 @@ $(document).ready(function(){ }); */ $('.givefeedback').click(function () { - location.href="feedback/give-feedback.jsp?token="+getUserTokenFromUrl(); + location.href = "feedback/give-feedback.jsp?token=" + getUserTokenFromUrl(); }); $('.viewfeedback').click(function () { - location.href="feedback/view-feedback.jsp?token="+getUserTokenFromUrl(); + location.href = "feedback/view-feedback.jsp?token=" + getUserTokenFromUrl(); }); $('.annotationview').click(function () { - location.href="annotation/annotation-document.jsp?token="+getUserTokenFromUrl(); + location.href = "annotation/annotation-document.jsp?token=" + getUserTokenFromUrl(); }); $('.viewprojectstudent').click(function () { - location.href="project-student.jsp?token="+getUserTokenFromUrl(); + location.href = "project-student.jsp?token=" + getUserTokenFromUrl(); }) }); diff --git a/gemeinsamforschen/src/main/webapp/core/utility.js b/gemeinsamforschen/src/main/webapp/core/utility.js index 334fdd7dbe9cace9e66a922b3e05773135a192d6..218e70cbda03a96d398743c49e6fc97cf1c85dbd 100644 --- a/gemeinsamforschen/src/main/webapp/core/utility.js +++ b/gemeinsamforschen/src/main/webapp/core/utility.js @@ -1,16 +1,16 @@ -$(document).ready(function(){ +$(document).ready(function () { $('#headLineProject').html($('#projectId').html()); - $('#logout').click(function(){ + $('#logout').click(function () { //todo: delete cookies / reset session let target = "index.jsp"; let link = changeLocationTo(target); - document.location=link; + document.location = link; }); - $('#assessment').click(function(){ - checkAssessementPhase(); + $('#assessment').click(function () { + checkAssessementPhase(); }); - $('#footerBack').click(function(){ - goBack(); + $('#footerBack').click(function () { + goBack(); }); }); @@ -25,37 +25,37 @@ function goBack() { window.history.back(); } -function checkAssessementPhase(){ +function checkAssessementPhase() { let studentId = $('#user').html().trim(); let projectId = $('#projectId').html().trim(); $.ajax({ - url: '../rest/assessments/whatToRate/project/'+projectId+'/student/'+studentId, + url: '../rest/assessments/whatToRate/project/' + projectId + '/student/' + studentId, type: 'GET', headers: { "Content-Type": "application/json", "Cache-Control": "no-cache" }, success: function (phase) { - switch (phase){ - case "workRating":{ + switch (phase) { + case "workRating": { changeLocationTo("finalAssessment.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + $('#projectId').html().trim()); break; } - case "quiz":{ + case "quiz": { changeLocationTo("take-quiz.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + $('#projectId').html().trim()); break; } - case "contributionRating":{ + case "contributionRating": { changeLocationTo("rate-contribution.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + $('#projectId').html().trim()); break; } - case "done":{ + case "done": { changeLocationTo("project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + $('#projectId').html().trim()); break; } } }, - error: function(a){ + error: function (a) { } }); } @@ -84,7 +84,6 @@ function getQueryVariable(variable) { } - function calculateHierachy(level) { if (level == 0) { @@ -93,7 +92,7 @@ function calculateHierachy(level) { } else { - return calculateHierachy(level-1)+"../"; + return calculateHierachy(level - 1) + "../"; } diff --git a/gemeinsamforschen/src/main/webapp/course/js/createProject.js b/gemeinsamforschen/src/main/webapp/course/js/createProject.js index 696572480960c61746fcf08f4f70d407a9037d95..20389fcf55138826ed0a51917b0f6bcb384f201c 100644 --- a/gemeinsamforschen/src/main/webapp/course/js/createProject.js +++ b/gemeinsamforschen/src/main/webapp/course/js/createProject.js @@ -1,19 +1,19 @@ -$(document).ready(function(){ - $('#submit').on('click', function(){ - location.href="specificRequirement.jsp?token="+getUserTokenFromUrl(); +$(document).ready(function () { + $('#submit').on('click', function () { + location.href = "specificRequirement.jsp?token=" + getUserTokenFromUrl(); }); let projectId = $('#projectId').html().trim(); $.ajax({ - url: '../rest/phases/projects/'+projectId, + url: '../rest/phases/projects/' + projectId, headers: { "Content-Type": "application/json", "Cache-Control": "no-cache" }, type: 'GET', success: function (response) { - let phaseDiv = $('#'+response); - if (phaseDiv !== null){ - phaseDiv.toggleClass('alert','alert-info'); + let phaseDiv = $('#' + response); + if (phaseDiv !== null) { + phaseDiv.toggleClass('alert', 'alert-info'); } else { $('#end').addClass('alert-info'); } diff --git a/gemeinsamforschen/src/main/webapp/course/js/showProjects.js b/gemeinsamforschen/src/main/webapp/course/js/showProjects.js index ff687d3f310be2d92ae07cc89f27192ce1b194f5..e31045e77f438a1b57d3bf39db5d2c74c2db7541 100644 --- a/gemeinsamforschen/src/main/webapp/course/js/showProjects.js +++ b/gemeinsamforschen/src/main/webapp/course/js/showProjects.js @@ -35,7 +35,7 @@ function seeProject(projectName) { $("#projectIsMissing").show(); } else { if (response !== "wrong password") { //if response !== project missing and not wrong password, its the projectToken - location.href="enter-preferences.jsp?token="+getUserTokenFromUrl()+"&projectToken="+response; + location.href = "enter-preferences.jsp?token=" + getUserTokenFromUrl() + "&projectToken=" + response; } else { $("#projectIsMissing").hide(); $('#projectWrongPassword').show(); diff --git a/gemeinsamforschen/src/main/webapp/feedback/css/viewfeedback.css b/gemeinsamforschen/src/main/webapp/feedback/css/viewfeedback.css index 625f097619306e338664716c6fd15adac0e219c8..65f5d525908983d27cc2eee7df001a4817bbf372 100644 --- a/gemeinsamforschen/src/main/webapp/feedback/css/viewfeedback.css +++ b/gemeinsamforschen/src/main/webapp/feedback/css/viewfeedback.css @@ -28,7 +28,7 @@ .feedback-container img.right { float: right; margin-left: 20px; - margin-right:0; + margin-right: 0; } .time-right { diff --git a/gemeinsamforschen/src/main/webapp/feedback/give-feedback.jsp b/gemeinsamforschen/src/main/webapp/feedback/give-feedback.jsp index 365f23b121e96b5df7443a4a4d105ef9e85cff92..9a36706c4c2af6e27eff4fd5505500578f3eb782 100644 --- a/gemeinsamforschen/src/main/webapp/feedback/give-feedback.jsp +++ b/gemeinsamforschen/src/main/webapp/feedback/give-feedback.jsp @@ -32,11 +32,11 @@ <script src="js/create-journal.js"></script> --%> - <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.css"> - <script src="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.js"></script> - <link rel="stylesheet" type="text/css" href="../journal/css/create-journal.css"> + <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.css"> + <script src="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.js"></script> + <link rel="stylesheet" type="text/css" href="../journal/css/create-journal.css"> <script src="js/peerfeedback.js"></script> - <omniDependencies:omniDependencies hierarchy="1"/> + <omniDependencies:omniDependencies hierarchy="1"/> </head> <body> @@ -51,7 +51,7 @@ <div class="line-spacer"></div> <p><span> Datei zum Feedback: SelectedFile.pdf </span></p> <p class="text-primary"><span> Kategorie: Untersuchungskonzept </span></p> - <hr /> + <hr/> <div class="form-check"> <input class="form-check-input" type="checkbox" value="" id="defaultCheck1"> <label class="form-check-label" for="defaultCheck1"> @@ -76,15 +76,15 @@ Ich habe eine Idee </label> </div> - <hr /> + <hr/> <div> <table> <tr> - <td id="yourContent"> + <td id="yourContent"> <h2> Schreibe dein Feedback! </h2> - <form id= "form" method="POST" action="../rest/peerfeedback/save"> + <form id="form" method="POST" action="../rest/peerfeedback/save"> <%--id="journalform" class="form-journal"--%> <input type="hidden" id="student" name="student"> <input type="hidden" id="project" name="project"> @@ -109,7 +109,7 @@ <div> <p id="as">Now what</p> - <input type="button" value="get txt" onclick="go()" /> + <input type="button" value="get txt" onclick="go()"/> </div> </div> @@ -122,20 +122,19 @@ </div> - - <script> - function goBack() { - window.history.back(); - } - </script> + <script> + function goBack() { + window.history.back(); + } + </script> </tr> </td> -</tr> -</table> -</div> -</div> + </tr> + </table> + </div> + </div> <footer:footer/> </div> </body> diff --git a/gemeinsamforschen/src/main/webapp/feedback/js/givepeerfeedback.js b/gemeinsamforschen/src/main/webapp/feedback/js/givepeerfeedback.js index 58721539a34d8a5af868d09fd6d25c6e87d8061f..947720aba927f3c7a76bb3589b557cc30597dd25 100644 --- a/gemeinsamforschen/src/main/webapp/feedback/js/givepeerfeedback.js +++ b/gemeinsamforschen/src/main/webapp/feedback/js/givepeerfeedback.js @@ -1,8 +1,7 @@ - var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); -$(document).ready(function() { +$(document).ready(function () { $('#student').val(student); $('#project').val(project); @@ -13,59 +12,60 @@ $(document).ready(function() { var sender = "sender"; console.log(peerfeedbackID); //if(peerfeedbackID) { - $.ajax({ - url: "../rest/peerfeedback/"+sender //peerfeedbackID {id} + $.ajax({ + url: "../rest/peerfeedback/" + sender //peerfeedbackID {id} - }).then(function (data) { - //$('#editor').append(data.descriptionMD); - console.log("function1"); - loadFeedback(data); - console.log("function2"); + }).then(function (data) { + //$('#editor').append(data.descriptionMD); + console.log("function1"); + loadFeedback(data); + console.log("function2"); - //document.getElementById("Peerfeedback").innerHTML = data.text +"text"; - //document.write(data); - //console.log(data); - /** - var newDiv = document.createElement("div"); - var newContent = document.createTextNode(data.text); - newDiv.appendChild(newContent); // füge den Textknoten zum neu erstellten div hinzu. + //document.getElementById("Peerfeedback").innerHTML = data.text +"text"; + //document.write(data); + //console.log(data); + /** + var newDiv = document.createElement("div"); + var newContent = document.createTextNode(data.text); + newDiv.appendChild(newContent); // füge den Textknoten zum neu erstellten div hinzu. - // füge das neu erstellte Element und seinen Inhalt ins DOM ein - var currentDiv = document.getElementById("div1"); - currentDiv.appendChild(newDiv); - //document.body.insertBefore(newDiv, currentDiv); - */ - //$('#peerfeedbackID').val(peerfeedbackID); - console.log(data); - }); - // } + // füge das neu erstellte Element und seinen Inhalt ins DOM ein + var currentDiv = document.getElementById("div1"); + currentDiv.appendChild(newDiv); + //document.body.insertBefore(newDiv, currentDiv); + */ + //$('#peerfeedbackID').val(peerfeedbackID); + console.log(data); + }); + + // } function loadFeedback(data) { for (var feedback in data) { /**var feedbackString = '<div class="pf-container">' + - '<div class="journal-date"> ' + - data[feedback].timestamp + - '</div>' + - '<div class="journal-name">' + - // TODO id to name - data[feedback].text + - '</div>' + - '<div class="journal-category">' + - data[feedback].id + - '</div>' + - '<div class="journal-edit" align="right">'; + '<div class="journal-date"> ' + + data[feedback].timestamp + + '</div>' + + '<div class="journal-name">' + + // TODO id to name + data[feedback].text + + '</div>' + + '<div class="journal-category">' + + data[feedback].id + + '</div>' + + '<div class="journal-edit" align="right">'; - feedbackString = feedbackString + '</div>' + - '<div class="journal-text">' + - data[feedback].entryHTML + - '</div>' + - '</div><br><br>';*/ + feedbackString = feedbackString + '</div>' + + '<div class="journal-text">' + + data[feedback].entryHTML + + '</div>' + + '</div><br><br>';*/ var newdiv = document.createElement("div"); //newdiv.innerHTML = data[feedback].text; //newdiv.append(data[feedback].text); - newdiv.insertAdjacentHTML('beforeend',data[feedback].text); + newdiv.insertAdjacentHTML('beforeend', data[feedback].text); newdiv.className = "feedback-container"; //var text = convertMarkdownToHtml(data[feedback].text); //var newcontent = document.createTextNode(data[feedback].text); @@ -78,5 +78,6 @@ $(document).ready(function() { //document.getElementById("div").innerHTML = data[feedback].text; //$('.Peerfeedback').append(feedbackString) - }}; + } + }; }) \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/feedback/js/peerfeedback.js b/gemeinsamforschen/src/main/webapp/feedback/js/peerfeedback.js index 05bf9979063190089e21d01a32965c6d9016fa71..ef25a9809d4419051e0217442b27a988a4f4ffbd 100644 --- a/gemeinsamforschen/src/main/webapp/feedback/js/peerfeedback.js +++ b/gemeinsamforschen/src/main/webapp/feedback/js/peerfeedback.js @@ -22,7 +22,7 @@ var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); -function go(){ +function go() { var a = document.getElementById("editor").valueOf().toString(); var b = document.getElementById("as"); b.innerHTML = a.toString(); @@ -32,7 +32,7 @@ function go(){ } -$(document).ready(function() { +$(document).ready(function () { $('#student').val(student); $('#project').val(project); @@ -41,15 +41,15 @@ $(document).ready(function() { }).then(function (data) { $('#editor').append(data.descriptionMD); - /** //TODO preselet in select tags - new InscrybMDE({ + /** //TODO preselet in select tags + new InscrybMDE({ element: document.getElementById("editor"), spellChecker: false, forceSync: true, });*/ //console.log(data); - location.href="give-feedback.jsp?token=" + getUserTokenFromUrl(); - alert("Feedback wurde gesendet!"); + location.href = "give-feedback.jsp?token=" + getUserTokenFromUrl(); + alert("Feedback wurde gesendet!"); }); }) \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/feedback/view-feedback.jsp b/gemeinsamforschen/src/main/webapp/feedback/view-feedback.jsp index b50e9f8921415b4e5fa7a16715c054c34045166e..7e5df8436f0212ebfcedff64336fea9b896d85c5 100644 --- a/gemeinsamforschen/src/main/webapp/feedback/view-feedback.jsp +++ b/gemeinsamforschen/src/main/webapp/feedback/view-feedback.jsp @@ -42,52 +42,52 @@ <div> <table> <tr> - <tr> - <th>Feedback Nachrichten von Student X</th> - </tr> + <tr> + <th>Feedback Nachrichten von Student X</th> + </tr> - <td id="filter-feedbacks"> + <td id="filter-feedbacks"> - <%--<iframe width="90%" height="200%" src="http://rocketchat.westeurope.cloudapp.azure.com/channel/general?layout=embedded"></iframe> - --%> - <%--<p id="view"></p> type="hidden"--%> - <input type="hidden" name="peerfeedbackID" id="peerfeedbackID-input" value=""/> - <div style="height: 100px; overflow: auto"> - <div class="feedback-container"> - <p>Sender</p> - <span class="time-right">11:00</span> - </div> - </div> + <%--<iframe width="90%" height="200%" src="http://rocketchat.westeurope.cloudapp.azure.com/channel/general?layout=embedded"></iframe> + --%> + <%--<p id="view"></p> type="hidden"--%> + <input type="hidden" name="peerfeedbackID" id="peerfeedbackID-input" value=""/> + <div style="height: 100px; overflow: auto"> + <div class="feedback-container"> + <p>Sender</p> + <span class="time-right">11:00</span> + </div> + </div> - </td> + </td> - <td id="view-feedbacks"> + <td id="view-feedbacks"> - <div style="height: 300px; overflow: auto"> + <div style="height: 300px; overflow: auto"> - <div class="feedback-container"> - <p>Hello. How are you today?</p> - <span class="time-right">11:00</span> - </div> + <div class="feedback-container"> + <p>Hello. How are you today?</p> + <span class="time-right">11:00</span> + </div> - <div class="feedback-container"> - <p>Hey! I'm fine. Thanks for asking!</p> - <span class="time-left">11:01</span> - </div> + <div class="feedback-container"> + <p>Hey! I'm fine. Thanks for asking!</p> + <span class="time-left">11:01</span> + </div> - <div class="feedback-container"> - <p>Sweet! So, what do you wanna do today?</p> - <span class="time-right">11:02</span> - </div> + <div class="feedback-container"> + <p>Sweet! So, what do you wanna do today?</p> + <span class="time-right">11:02</span> + </div> - <div id="div1"></div> + <div id="div1"></div> - </div> - </td> + </div> + </td> <button class="btn btn-secondary" onclick="goBack()">Zurück</button> @@ -101,8 +101,7 @@ </td> - - <td id="chat"> + <td id="chat"> <div class="card"> <div class="card-header"> <h6 class="mb-0">Gruppen+Projekt Chat</h6> diff --git a/gemeinsamforschen/src/main/webapp/groupfinding/create-groups.jsp b/gemeinsamforschen/src/main/webapp/groupfinding/create-groups.jsp index 2959e4b75e27810fe9d5a60dfcb722cb27916017..287c8a769d15d461270e638401f63e5ad1b44e6e 100644 --- a/gemeinsamforschen/src/main/webapp/groupfinding/create-groups.jsp +++ b/gemeinsamforschen/src/main/webapp/groupfinding/create-groups.jsp @@ -17,7 +17,7 @@ student1<br> student2<br> <br> - in Gruppe 1 2 3 + in Gruppe 1 2 3 </div> </div> </body> diff --git a/gemeinsamforschen/src/main/webapp/journal/css/eportfolio.css b/gemeinsamforschen/src/main/webapp/journal/css/eportfolio.css index eaf72ed574d05d1b2f3f77784f42e01966a24803..6b37059d3a1806efffd145b305aa957a71197574 100644 --- a/gemeinsamforschen/src/main/webapp/journal/css/eportfolio.css +++ b/gemeinsamforschen/src/main/webapp/journal/css/eportfolio.css @@ -2,8 +2,7 @@ display: grid; grid-gap: 10px; grid-template-columns: 2fr 1fr 15%; - grid-template-areas: - "edit edit group" + grid-template-areas: "edit edit group" "text text links" "text text ..." ; diff --git a/gemeinsamforschen/src/main/webapp/management/edit-project.jsp b/gemeinsamforschen/src/main/webapp/journal/edit-description.jsp similarity index 87% rename from gemeinsamforschen/src/main/webapp/management/edit-project.jsp rename to gemeinsamforschen/src/main/webapp/journal/edit-description.jsp index 3e585224e3c6229b6c96f9f8a5172ac52dac98ea..c374cad536cfa764acdf402284678fe388c873c3 100644 --- a/gemeinsamforschen/src/main/webapp/management/edit-project.jsp +++ b/gemeinsamforschen/src/main/webapp/journal/edit-description.jsp @@ -8,8 +8,9 @@ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.css"> <script src="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.js"></script> - <link rel="stylesheet" type="text/css" href="../assets/css/editDescription.css"> <omniDependencies:omniDependencies hierarchy="1"/> + <script src="js/edit-description.js"></script> + </head> @@ -34,7 +35,8 @@ <td id="yourContent"> <h1> Projektbeschreibung bearbeiten </h1> - <form id="descriptionform" class="form-journal" method="POST" action="rest/projectdescription/saveText"> + <form id="descriptionform" class="form-journal" method="POST" + action="rest/projectdescription/saveText"> <input type="hidden" id="student" name="student"> <input type="hidden" id="project" name="project"> @@ -42,7 +44,7 @@ <div class="description-form-container"> <div class ="description-form-editor"> - <textarea id = "editor" name="text" form="descriptionform"></textarea> + <textarea id="editor" name="text" form="descriptionform"></textarea> </div> <div class="description-form-buttons"> @@ -59,7 +61,7 @@ </div> </div> </div> -<script src="js/editDescription.js"></script> +<script src="js/editDescription.js"></script> </body> </html> \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/journal/eportfolio.jsp b/gemeinsamforschen/src/main/webapp/journal/eportfolio.jsp index 3ccb22263902e13f18ad21118ae530bece296ecd..0a075463793d7c03325a65edeb0add25ee4e1ba0 100644 --- a/gemeinsamforschen/src/main/webapp/journal/eportfolio.jsp +++ b/gemeinsamforschen/src/main/webapp/journal/eportfolio.jsp @@ -1,4 +1,4 @@ -<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> @@ -44,7 +44,7 @@ <div class="journal-description-container"> <div class="journal-description-title"> </div> - <div class="journal-description-edit" id="description-edit" align="right"> + <div class="journal-description-edit" id="description-edit" align="right"> <a id="editDescriptionLink" class="btn btn-default btn-sm"> <i class="fa fa-pencil"></i> Bearbeiten</a> <a class="btn btn-default btn-sm" data-toggle="modal" data-target="#closeDescriptionModal"><i class="fa fa-check-square" aria-hidden="true"></i>Abschließen</a> @@ -149,7 +149,9 @@ </div> <div class="modal-footer"> <div class="btn-group"> - <button type="button" class="btn btn-primary mr-auto" data-dismiss="modal" onclick="closeDescription()">Ja</button> + <button type="button" class="btn btn-primary mr-auto" data-dismiss="modal" + onclick="closeDescription()">Ja + </button> <button type="button" class="btn btn-secondary" data-dismiss="modal">Nein</button> </div> diff --git a/gemeinsamforschen/src/main/webapp/journal/js/create-journal.js b/gemeinsamforschen/src/main/webapp/journal/js/create-journal.js index c664f15fcd3b757da953215a19f3ed09f40fe49b..18fe4660327645544f3e206439e79e3d32857084 100644 --- a/gemeinsamforschen/src/main/webapp/journal/js/create-journal.js +++ b/gemeinsamforschen/src/main/webapp/journal/js/create-journal.js @@ -2,11 +2,11 @@ var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); -$(document).ready(function() { +$(document).ready(function () { $('#student').val(student); $('#project').val(project); - $('#backLink').on('click', function(){ + $('#backLink').on('click', function () { location.href = "eportfolio.jsp?token=" + student + "&projectId=" + project; }); diff --git a/gemeinsamforschen/src/main/webapp/journal/js/edit-description.js b/gemeinsamforschen/src/main/webapp/journal/js/edit-description.js new file mode 100644 index 0000000000000000000000000000000000000000..c664f15fcd3b757da953215a19f3ed09f40fe49b --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/journal/js/edit-description.js @@ -0,0 +1,28 @@ +var student = getQueryVariable("token"); +var project = getQueryVariable("projectId"); + + +$(document).ready(function() { + $('#student').val(student); + $('#project').val(project); + + $('#backLink').on('click', function(){ + location.href = "eportfolio.jsp?token=" + student + "&projectId=" + project; + }); + + $.ajax({ + url: "../rest/projectdescription/" + student + "/" + project + }).then(function (data) { + $('#editor').append(data.descriptionMD); + + //TODO preselet in select tags + new InscrybMDE({ + element: document.getElementById("editor"), + spellChecker: false, + forceSync: true, + }); + + console.log(data); + + }); +}) \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/journal/js/eportfolio.js b/gemeinsamforschen/src/main/webapp/journal/js/eportfolio.js index d01f00884d97114d88996f7f170f9f3445b869fe..f33ee9a152126b71705dcc9b401eb8b7170c5826 100644 --- a/gemeinsamforschen/src/main/webapp/journal/js/eportfolio.js +++ b/gemeinsamforschen/src/main/webapp/journal/js/eportfolio.js @@ -2,26 +2,26 @@ var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); var description = 0; -$(document).ready(function() { +$(document).ready(function () { $.ajax({ url: "../rest/projectdescription/" + project + "/" + student - }).then(function(data) { + }).then(function (data) { console.log("desc: " + data); description = data.id; $('#projectdescriptionId').val(description); - if (!data.open){ + if (!data.open) { $("#description-edit").remove(); } $('.journal-description-text').append(data.descriptionHTML); - for(var ii in data.links){ + for (var ii in data.links) { console.log(data.links[ii]) - $('.journal-description-links').append('<button class="btn btn-default btn-xs" onclick=\'linkLoeschen("'+data.links[ii].id +'")\'> <i class="fa fa-trash" aria-hidden="true" ></i></button><a href=' + data.links[ii].link + '>' + data.links[ii].name + '</a> <br/>'); + $('.journal-description-links').append('<button class="btn btn-default btn-xs" onclick=\'linkLoeschen("' + data.links[ii].id + '")\'> <i class="fa fa-trash" aria-hidden="true" ></i></button><a href=' + data.links[ii].link + '>' + data.links[ii].name + '</a> <br/>'); } $('.journal-description-links').append('<button type="button" class="btn btn-default btn-xs" data-toggle="modal" data-target="#addLinkModal"><i class="fa fa-plus" aria-hidden="true"></i></button>'); - for(var g in data.group){ - $('.journal-description-group').append(data.group[g]+ '<br/>'); + for (var g in data.group) { + $('.journal-description-group').append(data.group[g] + '<br/>'); } @@ -32,13 +32,13 @@ $(document).ready(function() { $.ajax({ url: "../rest/journal/journals/" + student + "/" + project + "/ALL" - }).then(function(data) { + }).then(function (data) { loadJournals(data); console.log(data); }); $('#editDescriptionLink').on('click', function () { - location.href = "edit-project.jsp?project=" + project + "&token=" + student + "&projectId=" + project; + location.href = "edit-description.jsp?project=" + project + "&token=" + student + "&projectId=" + project; }); $('#createJournalLink').on('click', function () { @@ -60,13 +60,13 @@ function timestampToDateString(timestamp) { } function filterJournals() { - var filter = $( '#journalfilter option:selected' ).val(); + var filter = $('#journalfilter option:selected').val(); project = getQueryVariable("projectId"); $('.journal').empty(); $.ajax({ url: "../rest/journal/journals/" + student + "/" + project + "/" + filter - }).then(function(data) { + }).then(function (data) { loadJournals(data); console.log(data); @@ -108,7 +108,8 @@ function loadJournals(data) { '</div><br><br>'; $('.journal').append(journalString) - }}; + } +}; function linkLoeschen(id) { console.log("löschen" + id); diff --git a/gemeinsamforschen/src/main/webapp/libs/img/arrow.png b/gemeinsamforschen/src/main/webapp/libs/img/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..ef700a4dad17e7889f1b73516670d46aea0a1fd3 Binary files /dev/null and b/gemeinsamforschen/src/main/webapp/libs/img/arrow.png differ diff --git a/gemeinsamforschen/src/main/webapp/libs/img/fides-logo.svg b/gemeinsamforschen/src/main/webapp/libs/img/fides-logo.svg index eeabb24f45f83da9fa51d7dc99c6733b1fbe0601..e27410a124eee7a40da6486fdc473616c0c6044f 100644 --- a/gemeinsamforschen/src/main/webapp/libs/img/fides-logo.svg +++ b/gemeinsamforschen/src/main/webapp/libs/img/fides-logo.svg @@ -6,7 +6,6 @@ xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" diff --git a/gemeinsamforschen/src/main/webapp/management/change-phase.jsp b/gemeinsamforschen/src/main/webapp/management/change-phase.jsp index 33d0d5a0b53caa9ce310020bd409c48771c49b0d..7611cd906edae79c0609b2dd5f9a56bdad421da1 100644 --- a/gemeinsamforschen/src/main/webapp/management/change-phase.jsp +++ b/gemeinsamforschen/src/main/webapp/management/change-phase.jsp @@ -9,6 +9,7 @@ <head> <omniDependencies:omniDependencies hierarchy="1"/> <script src="js/changePhase.js"></script> + <link href="css/changePhase.css" rel="stylesheet"> </head> <body> @@ -16,23 +17,26 @@ <menu:menu hierarchy="1"/> <div class="page-content-wrapper"> <headLine:headLine/> - <div class="alert" id="CourseCreation"> - <button id="btnCourseCreation" class="btn btn-secondary">Projekterstellungsphase</button> - </div> - <div class="alert" id="GroupFormation"> - <button id="btnGroupformation" class="btn btn-secondary">Gruppen erstellen</button> - </div> - <div class="alert" id="DossierFeedback"> - <button id="btnDossierFeedback" class="btn btn-secondary">Feedbackphase</button> - </div> - <div class="alert" id="Execution"> - <button id="btnExecution" class="btn btn-secondary">Durchführungsphase</button> - </div> - <div class="alert" id="Assessment"> - <button id="btnAssessment" class="btn btn-secondary">Bewertungsphase</button> - </div> - <div class="alert" id="end"> - <button id="btnProjectfinished" class="btn btn-secondary">Ende</button> + <div class="container-fluid"> + <input type="image" src="../libs/img/arrow.png" class="arrow" id="changePhase"/> + <div class="alert" id="CourseCreation"> + <p>Projekterstellungsphase</p> + </div> + <div class="alert" id="GroupFormation"> + <p>Gruppen erstellen</p> + </div> + <div class="alert" id="DossierFeedback"> + <p>Feedbackphase</p> + </div> + <div class="alert" id="Execution"> + <p>Durchführungsphase</p> + </div> + <div class="alert" id="Assessment"> + <p>Bewertungsphase</p> + </div> + <div class="alert" id="end"> + <p>Ende</p> + </div> </div> </div> <footer:footer/> diff --git a/gemeinsamforschen/src/main/webapp/management/css/changePhase.css b/gemeinsamforschen/src/main/webapp/management/css/changePhase.css new file mode 100644 index 0000000000000000000000000000000000000000..ec554712ee45dae725c9e8c3ec1a4a3ffe3189cd --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/management/css/changePhase.css @@ -0,0 +1,23 @@ +.arrow { + position:absolute; + margin-left:160px; + height:90px; +} +.arrowCourseCreation{ + margin-top:20px; +} +.arrowGroupFormation{ + margin-top:90px; +} +.arrowDossierFeedback{ + margin-top:160px; +} +.arrowExecution{ + margin-top:210px; +} +.arrowAssessment{ + margin-top:280px; +} +.arrowDone{ + visibility: hidden; +} \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/management/delete-project.jsp b/gemeinsamforschen/src/main/webapp/management/delete-project.jsp index d3cdd4cd3007f94d77cd5e1fa913d67a1fb816f3..357e583544f5add6c0afc1760e5f0b3a216cc1a2 100644 --- a/gemeinsamforschen/src/main/webapp/management/delete-project.jsp +++ b/gemeinsamforschen/src/main/webapp/management/delete-project.jsp @@ -33,26 +33,26 @@ </div> </div> </div> - <fieldset> - <legend style="margin-left:13px;">Projektnamen</legend> - <input class="form-control" type="text" id="projectName" name="Project" required="" - placeholder="Projekt1" autofocus="" - style="max-width:417px;margin-left:14px;padding-top:10px;margin-top:2px;margin-bottom:13px;"> - <div class="alert alert-warning" role="alert" id="projectIsMissing"> - Dieser Projektname existiert nicht oder das Passwort ist falsch. - </div> + <fieldset> + <legend style="margin-left:13px;">Projektnamen</legend> + <input class="form-control" type="text" id="projectName" name="Project" required="" + placeholder="Projekt1" autofocus="" + style="max-width:417px;margin-left:14px;padding-top:10px;margin-top:2px;margin-bottom:13px;"> + <div class="alert alert-warning" role="alert" id="projectIsMissing"> + Dieser Projektname existiert nicht oder das Passwort ist falsch. + </div> - </fieldset> - <fieldset> - <legend style="margin-left:13px;">Passwort zum löschen</legend> - <input class="form-control" type="password" id="projectPassword" name="Password" required="" - placeholder="******" - style="max-width:417px;margin-left:14px;padding-top:10px;margin-top:2px;margin-bottom:13px;"> - <div class="alert alert-warning" role="alert" id="projectWrongPassword"> - Falsches Passwort. - </div> - </fieldset> - <button id="deleteProject" class="btn btn-danger">löschen</button> + </fieldset> + <fieldset> + <legend style="margin-left:13px;">Passwort zum löschen</legend> + <input class="form-control" type="password" id="projectPassword" name="Password" required="" + placeholder="******" + style="max-width:417px;margin-left:14px;padding-top:10px;margin-top:2px;margin-bottom:13px;"> + <div class="alert alert-warning" role="alert" id="projectWrongPassword"> + Falsches Passwort. + </div> + </fieldset> + <button id="deleteProject" class="btn btn-danger">löschen</button> <footer:footer/> </div> </body> diff --git a/gemeinsamforschen/src/main/webapp/management/enter-preferences.jsp b/gemeinsamforschen/src/main/webapp/management/enter-preferences.jsp index f5aaa888d4c2664f520a8b6e8ce37ba7b45e41b4..c8190bcd6faf2d0deaeedc5ba7e8ec03a28c5442 100644 --- a/gemeinsamforschen/src/main/webapp/management/enter-preferences.jsp +++ b/gemeinsamforschen/src/main/webapp/management/enter-preferences.jsp @@ -73,7 +73,8 @@ </fieldset> <fieldset> <legend style="margin-left:13px;">Tags</legend> - <p class="alert alert-warning" style="width:520px;">Wähle 2 der hier angegebenen Tags aus, die am ehesten zu deiner Forschungsfrage passen.</p> + <p class="alert alert-warning" style="width:520px;">Wähle 2 der hier angegebenen Tags aus, die am ehesten zu + deiner Forschungsfrage passen.</p> <div id="tags"> </div> diff --git a/gemeinsamforschen/src/main/webapp/management/groups.jsp b/gemeinsamforschen/src/main/webapp/management/groups.jsp index ce3bbf59c16fd39a6a6d79cfd832b21d600a2ecd..a2097cf6502ca6db28cd70e6506e195579f35516 100644 --- a/gemeinsamforschen/src/main/webapp/management/groups.jsp +++ b/gemeinsamforschen/src/main/webapp/management/groups.jsp @@ -21,7 +21,6 @@ <script src="js/Sidebar-Menu.js"></script> - </head> <body> @@ -57,30 +56,30 @@ </div> </div> <div id="tablesHolder"></div> - <!-- <table class="table table-striped table-bordered table-list" style="width: 40%;margin-top: 10px;"> - <thead id="tableHead"> - <tr> - <th class="hidden-xs">Student</th> - <th>E-Mail</th> - </tr> - </thead> - <tbody> - <tr id="student2"> + <!-- <table class="table table-striped table-bordered table-list" style="width: 40%;margin-top: 10px;"> + <thead id="tableHead"> + <tr> + <th class="hidden-xs">Student</th> + <th>E-Mail</th> + </tr> + </thead> + <tbody> + <tr id="student2"> - </tr> - <tr id="student3"> + </tr> + <tr id="student3"> - </tr> - <tr id="student4"> + </tr> + <tr id="student4"> - </tr> - <tr id="student5"> + </tr> + <tr id="student5"> - </tr> + </tr> - </tbody> + </tbody> - </table>--> + </table>--> <!--<p>Hier können sie ihre Gruppen zu allen Projekten einsehen. Klicken sie dafür auf das Dropdownmenü um ihren Kurs auszuwählen.</p>--> </div> diff --git a/gemeinsamforschen/src/main/webapp/management/join-project.jsp b/gemeinsamforschen/src/main/webapp/management/join-project.jsp index 3dca2a077cdc5db5207f37e067e5b91d2d6a460e..0acaa5844f95826b75db1ba91b0481cbdb7a4a06 100644 --- a/gemeinsamforschen/src/main/webapp/management/join-project.jsp +++ b/gemeinsamforschen/src/main/webapp/management/join-project.jsp @@ -40,26 +40,26 @@ </div> </div> </div> - <fieldset> - <legend style="margin-left:13px;">Projektnamen</legend> - <input class="form-control" type="text" id="projectName" name="Project" required="" - placeholder="Projekt1" autofocus="" - style="margin:0px;max-width:417px;margin-left:14px;padding-top:10px;margin-top:2px;margin-bottom:13px;"> - <div class="alert alert-warning" role="alert" id="projectIsMissing"> - Dieser Projektname existiert nicht. - </div> + <fieldset> + <legend style="margin-left:13px;">Projektnamen</legend> + <input class="form-control" type="text" id="projectName" name="Project" required="" + placeholder="Projekt1" autofocus="" + style="margin:0px;max-width:417px;margin-left:14px;padding-top:10px;margin-top:2px;margin-bottom:13px;"> + <div class="alert alert-warning" role="alert" id="projectIsMissing"> + Dieser Projektname existiert nicht. + </div> - </fieldset> - <fieldset> - <legend style="margin-left:13px;">Passwort</legend> - <input class="form-control" type="password" id="projectPassword" name="Password" required="" - placeholder="******" - style="margin:0px;max-width:417px;margin-left:14px;padding-top:10px;margin-top:2px;margin-bottom:13px;"> - <div class="alert alert-warning" role="alert" id="projectWrongPassword"> - Falsches Passwort. - </div> - </fieldset> - <button id="seeProject" class="btn btn-primary">Einsehen</button> + </fieldset> + <fieldset> + <legend style="margin-left:13px;">Passwort</legend> + <input class="form-control" type="password" id="projectPassword" name="Password" required="" + placeholder="******" + style="margin:0px;max-width:417px;margin-left:14px;padding-top:10px;margin-top:2px;margin-bottom:13px;"> + <div class="alert alert-warning" role="alert" id="projectWrongPassword"> + Falsches Passwort. + </div> + </fieldset> + <button id="seeProject" class="btn btn-primary">Einsehen</button> </div> </body> diff --git a/gemeinsamforschen/src/main/webapp/management/js/changePhase.js b/gemeinsamforschen/src/main/webapp/management/js/changePhase.js index d35d4ceb258534952e37a952450705f2c0f24b4d..5ef87fff4fc45379e7cec042e97dd68b9d92c36e 100644 --- a/gemeinsamforschen/src/main/webapp/management/js/changePhase.js +++ b/gemeinsamforschen/src/main/webapp/management/js/changePhase.js @@ -1,15 +1,17 @@ $(document).ready(function () { let projectId = $('#projectId').html().trim(); $.ajax({ - url: '../rest/phases/projects/'+projectId, + url: '../rest/phases/projects/' + projectId, headers: { "Content-Type": "application/json", "Cache-Control": "no-cache" }, type: 'GET', success: function (response) { - let phaseDiv = $('#'+response); - if (phaseDiv !== null){ + let arrow = $('#changePhase'); + arrow.toggleClass('arrow'+response); + let phaseDiv = $('#' + response); + if (phaseDiv !== null) { phaseDiv.toggleClass('alert-info'); } else { $('#end').toggleClass('alert-info'); @@ -19,37 +21,36 @@ $(document).ready(function () { } }); - $('#btnAssessment').on('click', function(){ - changePhase('Assessment'); - }); - $('#btnExecution').on('click', function(){ - changePhase('Execution'); - }); - $('#btnGroupformation').on('click', function(){ - changePhase('GroupFormation'); - }); - $('#btnCourseCreation').on('click', function(){ - changePhase('CourseCreation'); - }); - $('#btnDossierFeedback').on('click', function(){ - changePhase('DossierFeedback'); - }); - $('#btnProjectfinished').on('click', function(){ - changePhase('Projectfinished'); + $('#changePhase').on('click', function () { + let projectId = $('#projectId').html().trim(); + $.ajax({ + url: '../rest/phases/projects/'+projectId, + headers: { + "Content-Type": "application/json", + "Cache-Control": "no-cache" + }, + type: 'GET', + success: function (response) { + changePhase(response); + }, + error: function (a) { + + } + }); }); }); -function changePhase(toPhase){ +function changePhase(currentPhase) { let projectId = $('#projectId').html().trim(); $.ajax({ - url: '../rest/phases/'+toPhase+'/projects/'+projectId, + url: '../rest/phases/' + currentPhase + '/projects/' + projectId, headers: { "Content-Type": "application/json", "Cache-Control": "no-cache" }, type: 'POST', success: function () { - location.href="#" + location.reload(1); }, error: function (a) { diff --git a/gemeinsamforschen/src/main/webapp/management/js/createPreferences.js b/gemeinsamforschen/src/main/webapp/management/js/createPreferences.js index 90b4243fbcaf44130bdc34b880fa01bedde101e3..347f8b0b6b27d77a1f5c20d3cf729a5eb40917a0 100644 --- a/gemeinsamforschen/src/main/webapp/management/js/createPreferences.js +++ b/gemeinsamforschen/src/main/webapp/management/js/createPreferences.js @@ -4,7 +4,7 @@ $(document).ready(function () { -var projectName = getProjectByToken(); + var projectName = getProjectByToken(); getTags(projectName); $("#competencies0").focus(); $("#studentFormSubmit").on("click", function () { @@ -25,7 +25,7 @@ var projectName = getProjectByToken(); }); -function getProjectByToken(){ +function getProjectByToken() { return $('#projectName').text().trim(); } @@ -65,8 +65,8 @@ function getTags(projectName) { var newInput = document.createElement("label"); newInput.innerHTML = "<div class='checkbox checkbox-primary' >" - + "<input id='tag" + i + "' " + " class='styled' " + "name='tag'" + "type='checkbox' " + ">" - + "<label for='tag" + i + "' "+ ">" + tagList[i] + "</label>" + + "<input id='tag" + i + "' " + " class='styled' " + "name='tag'" + "type='checkbox' " + ">" + + "<label for='tag" + i + "' " + ">" + tagList[i] + "</label>" + "</div>"; var div = document.getElementById('tags'); div.appendChild(newInput); @@ -97,7 +97,7 @@ function takesPartInProject() { if (document.getElementById("tag" + i).checked) { allTheTags.push(document.getElementById("tag" + i).value); } - if ($("#tag"+i).prop("checked")) + if ($("#tag" + i).prop("checked")) allTheCompetencies.push("Die Studierenden interessieren sich für " + $("#tag" + i).val()); //todo: Die Tags werden hinter der Schnittstelle noch nicht verwertet, daher diese schnelle Lösung } if (allTheTags.length > 2) { diff --git a/gemeinsamforschen/src/main/webapp/management/js/deleteProject.js b/gemeinsamforschen/src/main/webapp/management/js/deleteProject.js index c3b488def69f02e9e13f1c3adfb79e43a5ea38d8..d930682fc823ccbdbbd56b5b3c9e7efb1df6bf94 100644 --- a/gemeinsamforschen/src/main/webapp/management/js/deleteProject.js +++ b/gemeinsamforschen/src/main/webapp/management/js/deleteProject.js @@ -27,7 +27,7 @@ function deleteProject(projectName) { } else { if (response !== "wrong password") { //if response !== project missing and not wrong password, its the projectToken $.ajax({ - url: compbaseUrl+"/api1/courses/"+projectName, + url: compbaseUrl + "/api1/courses/" + projectName, Accept: "text/plain; charset=utf-8", type: 'DELETE', contentType: "text/plain", @@ -39,7 +39,7 @@ function deleteProject(projectName) { console.log(a); } }); - window.location.href = " ../pages/projects.php?token="+getUserTokenFromUrl(); + window.location.href = " ../pages/projects.php?token=" + getUserTokenFromUrl(); } else { $("#projectIsMissing").hide(); $('#projectWrongPassword').show(); diff --git a/gemeinsamforschen/src/main/webapp/management/js/myGroupsInit.js b/gemeinsamforschen/src/main/webapp/management/js/myGroupsInit.js index 11d871a4c901abf49866f35f480bf574c3606fa6..e4c364032e957885fc322d21c776b515218b781e 100644 --- a/gemeinsamforschen/src/main/webapp/management/js/myGroupsInit.js +++ b/gemeinsamforschen/src/main/webapp/management/js/myGroupsInit.js @@ -21,6 +21,7 @@ function printProjectDropdown(projects, numberOfProjectsPrinted) { menu.appendChild(option); } } + function getProjects(user) { var url = compbaseUrl + "/api2/user/" + user + "/projects"; $.ajax({ @@ -90,6 +91,7 @@ function printGroupTable(student1, student2, student3, student4) { }); return innerurl; } + function getMembers(project, user) { //gets all Members in the chosen Project user is a part of with email adresses $("#tablesHolder").empty(); @@ -112,7 +114,7 @@ function getMembers(project, user) { //gets all Members in the chosen Pro printGroupTable(student1, student2, student3, student4); } }, - error: function(data) { + error: function (data) { $("#tablesHolder").append("<p>Es wurden keine Gruppen gefunden. Das Projekt muss mehr als 5 Teilnehmer haben!</p>") } diff --git a/gemeinsamforschen/src/main/webapp/management/js/overview-docent.js b/gemeinsamforschen/src/main/webapp/management/js/overview-docent.js index 57444d11682ab734826fd91d6b29f3619847520a..e24bb7d35e3a65790e734e1b14601b554afd74bb 100644 --- a/gemeinsamforschen/src/main/webapp/management/js/overview-docent.js +++ b/gemeinsamforschen/src/main/webapp/management/js/overview-docent.js @@ -1,14 +1,14 @@ -$(document).ready(function(){ - $('#project1Link').on('click', function(){ - window.location.href="project-docent_CG.jsp?token="+getUserTokenFromUrl(); - location.href="project-docent_CG.jsp?token="+getUserTokenFromUrl()+'&projectId='+'gemeinsamForschen'; +$(document).ready(function () { + $('#project1Link').on('click', function () { + window.location.href = "project-docent_CG.jsp?token=" + getUserTokenFromUrl(); + location.href = "project-docent_CG.jsp?token=" + getUserTokenFromUrl() + '&projectId=' + 'gemeinsamForschen'; }); - $('#project2Link').on('click', function(){ - window.location.href="project-docent_CG.jsp?token="+getUserTokenFromUrl(); - location.href="project-docent_CG.jsp?token="+getUserTokenFromUrl()+'&projectId='+'Kaleo'; + $('#project2Link').on('click', function () { + window.location.href = "project-docent_CG.jsp?token=" + getUserTokenFromUrl(); + location.href = "project-docent_CG.jsp?token=" + getUserTokenFromUrl() + '&projectId=' + 'Kaleo'; }); - $('#createProject').on('click', function(){ - location.href="createProject.jsp?token="+getUserTokenFromUrl(); + $('#createProject').on('click', function () { + location.href = "createProject.jsp?token=" + getUserTokenFromUrl(); }); }); \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/management/js/overview-student.js b/gemeinsamforschen/src/main/webapp/management/js/overview-student.js index 898f3f5e00183d9549a84cb5c3028be9aa7f5bd6..bacf8adfc8feaf83fb00f0ce531de68ab9e45656 100644 --- a/gemeinsamforschen/src/main/webapp/management/js/overview-student.js +++ b/gemeinsamforschen/src/main/webapp/management/js/overview-student.js @@ -1,11 +1,11 @@ -$(document).ready(function(){ - $('#project1Link').on('click', function(){ - location.href="project-student.jsp?token="+getUserTokenFromUrl()+'&projectId='+'gemeinsamForschen'; +$(document).ready(function () { + $('#project1Link').on('click', function () { + location.href = "project-student.jsp?token=" + getUserTokenFromUrl() + '&projectId=' + 'gemeinsamForschen'; }); - $('#project2Link').on('click', function(){ - location.href="project-student.jsp?token="+getUserTokenFromUrl()+'&projectId='+'Kaleo'; + $('#project2Link').on('click', function () { + location.href = "project-student.jsp?token=" + getUserTokenFromUrl() + '&projectId=' + 'Kaleo'; }); - $('#enrollProject').on('click', function(){ - location.href="enrollProject.jsp?token="+getUserTokenFromUrl(); + $('#enrollProject').on('click', function () { + location.href = "enrollProject.jsp?token=" + getUserTokenFromUrl(); }); }); \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/management/js/overview.js b/gemeinsamforschen/src/main/webapp/management/js/overview.js index a78bb0cda5635640c87505b6e1e0e218a965bf96..3030448cf860c8360e54db0729f2764b71abd64e 100644 --- a/gemeinsamforschen/src/main/webapp/management/js/overview.js +++ b/gemeinsamforschen/src/main/webapp/management/js/overview.js @@ -23,7 +23,7 @@ function printProjects(projects, offset) { //'<a class="btn btn-default"><em class="fa fa-pencil" ></em></a>' + //'<button id="deleteButton' +i+ '" class="btn btn-danger fa fa-trash deleteButton"></button>' + content.innerHTML = '<td align="center">' + - '<a href="delete-project.jsp?token='+getUserTokenFromUrl()+'" class="btn btn-danger fa fa-trash"></a>' + + '<a href="delete-project.jsp?token=' + getUserTokenFromUrl() + '" class="btn btn-danger fa fa-trash"></a>' + '</td>' + '<td class="hidden-xs" href="#Div_Promo_Carousel" data-slide="next">' + projects[i] + '</td>' + '<td id="projectTags' + (i + offset) + '" href="#Div_Promo_Carousel" data-slide="next"></td>'; @@ -39,6 +39,7 @@ function printProjects(projects, offset) { //$('#deleteModal').modal('show'); } + function getProjectOverview(user) { var url = compbaseUrl + "/api2/user/" + user + "/projects"; $.ajax({ @@ -85,8 +86,6 @@ function getTags(projectName, number) { } - - function getGroups(projectName) { var pathName = document.getElementsByName("pathProject"); pathName[0].innerHTML = projectName; diff --git a/gemeinsamforschen/src/main/webapp/management/js/project-student.js b/gemeinsamforschen/src/main/webapp/management/js/project-student.js index 83f391e0292fd8826edcb26564892f71b496ca52..2c31980687d9d716aca1a779fdad50a14f99881b 100644 --- a/gemeinsamforschen/src/main/webapp/management/js/project-student.js +++ b/gemeinsamforschen/src/main/webapp/management/js/project-student.js @@ -1,7 +1,7 @@ -$(document).ready(function(){ +$(document).ready(function () { // fetch all submission part project representations from database getSubmissionPartsByProjectId(getQueryVariable("projectId"), function (response) { - + // iterate over response and display each element for (let i = 0; i < response.length; i++) { displaySubmission(response[i].user, response[i].category, response[i].fullSubmissionId); @@ -11,12 +11,12 @@ $(document).ready(function(){ $('.annotationview').click(function () { let fullSubmissionId = $(this).closest("li").data("fullSubmissionId"); let category = $(this).closest("li").data("category"); - location.href="annotation-document.jsp?token=" + getUserTokenFromUrl() + + location.href = "annotation-document.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId") + "&fullSubmissionId=" + fullSubmissionId + "&category=" + category; }); - + }, function () { // display empty view displayEmptyView() @@ -30,22 +30,22 @@ $(document).ready(function(){ }); */ $('.givefeedback').click(function () { - location.href="give-feedback.jsp?token="+getUserTokenFromUrl(); + location.href = "give-feedback.jsp?token=" + getUserTokenFromUrl(); }); $('.viewfeedback').click(function () { - location.href="view-feedback.jsp?token="+getUserTokenFromUrl(); + location.href = "view-feedback.jsp?token=" + getUserTokenFromUrl(); }); $('.annotationview').click(function () { - location.href="annotation-document.jsp?token="+getUserTokenFromUrl(); + location.href = "annotation-document.jsp?token=" + getUserTokenFromUrl(); }); $('#btnUnstructuredUpload').click(function () { - location.href="upload-unstructured-annotation.jsp?token="+getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); + location.href = "upload-unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId"); }) $('.viewprojectstudent').click(function () { - location.href="project-student.jsp?token="+getUserTokenFromUrl(); + location.href = "project-student.jsp?token=" + getUserTokenFromUrl(); }) }); @@ -62,10 +62,10 @@ function displaySubmission(user, category, fullSubmissionId) { $('<li>') .append($('<span>').append(category.toUpperCase() + " eingereicht")) .append($('<a>').attr("class", "annotationview").attr("role", "button") - .append($('<label>').css("font-size", "10px") - .append($('<i>').attr("class", "far fa-comments").css("font-size", "15px")) - .append("feedback") - ) + .append($('<label>').css("font-size", "10px") + .append($('<i>').attr("class", "far fa-comments").css("font-size", "15px")) + .append("feedback") + ) ) // add data to link .data("fullSubmissionId", fullSubmissionId) diff --git a/gemeinsamforschen/src/main/webapp/management/js/showProjects.js b/gemeinsamforschen/src/main/webapp/management/js/showProjects.js index ff687d3f310be2d92ae07cc89f27192ce1b194f5..e31045e77f438a1b57d3bf39db5d2c74c2db7541 100644 --- a/gemeinsamforschen/src/main/webapp/management/js/showProjects.js +++ b/gemeinsamforschen/src/main/webapp/management/js/showProjects.js @@ -35,7 +35,7 @@ function seeProject(projectName) { $("#projectIsMissing").show(); } else { if (response !== "wrong password") { //if response !== project missing and not wrong password, its the projectToken - location.href="enter-preferences.jsp?token="+getUserTokenFromUrl()+"&projectToken="+response; + location.href = "enter-preferences.jsp?token=" + getUserTokenFromUrl() + "&projectToken=" + response; } else { $("#projectIsMissing").hide(); $('#projectWrongPassword').show(); diff --git a/gemeinsamforschen/src/main/webapp/overview-docent.jsp b/gemeinsamforschen/src/main/webapp/overview-docent.jsp index b90362fcfb6f42c332b75cc2ad9f6957014ab30e..77214d7b826af4cfda4aee461691d3d4a4fdc3c7 100644 --- a/gemeinsamforschen/src/main/webapp/overview-docent.jsp +++ b/gemeinsamforschen/src/main/webapp/overview-docent.jsp @@ -1,4 +1,4 @@ -<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> diff --git a/gemeinsamforschen/src/main/webapp/profile/js/profile.js b/gemeinsamforschen/src/main/webapp/profile/js/profile.js index 63b2a09e747bacbc099f3f188ccc0d1222799881..cfe3e34ed13c68d25bb58a6d73b6e7b2f6f7185b 100644 --- a/gemeinsamforschen/src/main/webapp/profile/js/profile.js +++ b/gemeinsamforschen/src/main/webapp/profile/js/profile.js @@ -20,27 +20,26 @@ $(document).ready(function (e) { }));*/ // Function to preview image after validation - $(function() { - $("#file").change(function() { + $(function () { + $("#file").change(function () { $("#message").empty(); // To remove the previous error message let file = this.files[0]; - let match= ["image/jpeg","image/png","image/jpg"]; - if(!((file.type===match[0]) || (file.type===match[1]) || (file.type===match[2]))) - { - $('#previewing').attr('src','noimage.png'); - $("#message").html("<p id='error'>Please Select A valid Image File</p>"+"<h4>Note</h4>"+"<span id='error_message'>Only jpeg, jpg and png Images type allowed</span>"); + let match = ["image/jpeg", "image/png", "image/jpg"]; + if (!((file.type === match[0]) || (file.type === match[1]) || (file.type === match[2]))) { + $('#previewing').attr('src', 'noimage.png'); + $("#message").html("<p id='error'>Please Select A valid Image File</p>" + "<h4>Note</h4>" + "<span id='error_message'>Only jpeg, jpg and png Images type allowed</span>"); return false; } - else - { + else { var reader = new FileReader(); reader.onload = imageIsLoaded; reader.readAsDataURL(this.files[0]); } }); }); + function imageIsLoaded(e) { - $("#file").css("color","green"); + $("#file").css("color", "green"); $('#image_preview').css("display", "block"); $('#previewing').attr('src', e.target.result); $('#previewing').attr('width', '250px'); diff --git a/gemeinsamforschen/src/main/webapp/profile/profile.jsp b/gemeinsamforschen/src/main/webapp/profile/profile.jsp index 3304224efeba919ade02152bac8df561c3cb530a..1edda82c2dd32081d525419978d44c2cfd9fab9e 100644 --- a/gemeinsamforschen/src/main/webapp/profile/profile.jsp +++ b/gemeinsamforschen/src/main/webapp/profile/profile.jsp @@ -1,6 +1,6 @@ <%@ page import="unipotsdam.gf.core.management.ManagementImpl" %> <%@ page import="unipotsdam.gf.core.management.user.User" %> -<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="footer" %> @@ -11,7 +11,8 @@ <head> <omniDependencies:omniDependencies hierarchy="1"/> - <link href='http://fonts.googleapis.com/css?family=Roboto+Condensed|Open+Sans+Condensed:300' rel='stylesheet' type='text/css'> + <link href='http://fonts.googleapis.com/css?family=Roboto+Condensed|Open+Sans+Condensed:300' rel='stylesheet' + type='text/css'> <script src="js/profile.js"></script> </head> @@ -42,12 +43,12 @@ <li class="list-group-item"> <p>Sonstiges:</p> <form id="uploadimage" method="post" action="rest/user/student/wiepke"> - <div id="image_preview"><img id="previewing" src="../libs/img/noImg.png" /></div> + <div id="image_preview"><img id="previewing" src="../libs/img/noImg.png"/></div> <hr id="line"> <div id="selectImage"> <label>Select Your Image</label><br/> - <input type="file" name="image" id="file" required /> - <input type="submit" value="Upload" class="submit" /> + <input type="file" name="image" id="file" required/> + <input type="submit" value="Upload" class="submit"/> </div> </form> <p id="message"></p> diff --git a/gemeinsamforschen/src/main/webapp/project-docent.jsp b/gemeinsamforschen/src/main/webapp/project-docent.jsp index 1533c0d4b5cd540f5c00cc006df3735b55d49b0e..6b85e644e071b59e5193b16032fbfa100a6f77d4 100644 --- a/gemeinsamforschen/src/main/webapp/project-docent.jsp +++ b/gemeinsamforschen/src/main/webapp/project-docent.jsp @@ -6,7 +6,6 @@ <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="footer" %> - <!DOCTYPE html> <html> @@ -94,7 +93,7 @@ </div> <footer:footer/> </div> -<communication:chatWindow orientation="right" /> +<communication:chatWindow orientation="right"/> </body> </html> \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/project-student.jsp b/gemeinsamforschen/src/main/webapp/project-student.jsp index 63562e8b66fa2b753455eb8d8b703094a1687d89..d27e960d852250057d2b69873c2674d35ec9eff6 100644 --- a/gemeinsamforschen/src/main/webapp/project-student.jsp +++ b/gemeinsamforschen/src/main/webapp/project-student.jsp @@ -6,7 +6,6 @@ <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="footer" %> - <!--todo: E-mail an Studenten als Notifikation für Phasenwechsel --> diff --git a/gemeinsamforschen/src/main/webapp/researchReport/create-bibliography.jsp b/gemeinsamforschen/src/main/webapp/researchReport/create-bibliography.jsp index c873d1f9dc3079141f0e1eac0ca9797c1f0faeed..5e788a308e671871138ca9f620845f615d07676b 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/create-bibliography.jsp +++ b/gemeinsamforschen/src/main/webapp/researchReport/create-bibliography.jsp @@ -1,5 +1,5 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> @@ -13,13 +13,13 @@ den Zustand ändert <head> <omniDependencies:omniDependencies hierarchy="1"/> <link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet"> <!--FilePond --> - <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" rel="stylesheet"> <!--FilePond --> + <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" + rel="stylesheet"> <!--FilePond --> <link rel="stylesheet" type="text/css" href="css/researchReport.css"> </head> <body> - <div id="wrapper"> <menu:menu hierarchy="1"/> <div class="page-content-wrapper"> @@ -27,41 +27,45 @@ den Zustand ändert <div style="margin-left:50px;"> <table> <tr> - <td id="yourContent"> - <form id="researchReportform" class="researchReportForm" method="POST" action="../rest/researchReport/save"> + <td id="yourContent"> + <form id="researchReportform" class="researchReportForm" method="POST" + action="../rest/researchReport/save"> - <div class = "researchReportTitlebar"> - <h1> Forschungsbericht erstellen 3/8</h1> - </div> + <div class="researchReportTitlebar"> + <h1> Forschungsbericht erstellen 3/8</h1> + </div> - <div class ="researchReportEditor"> - <h2 class="editor-inhalt">Literaturverzeichnis eingeben:</h2> - <textarea id = "editor" name="text" form="researchReportForm" rows="20" cols="100"> + <div class="researchReportEditor"> + <h2 class="editor-inhalt">Literaturverzeichnis eingeben:</h2> + <textarea id="editor" name="text" form="researchReportForm" rows="20" cols="100"> </textarea> - </div> - <div class="ResearchReportButtons"> - <button class="researchReportButtons"><a href="create-question.jsp">Speichern & weiter</a></button> - <button class="researchReportButtons"><a href="create-research.jsp"> Zurück </a></button> - </div> - <div class="ResearchReportUpload"> - <input type="file" class="filepond" name="filepond"> </input> - </div> + </div> + <div class="ResearchReportButtons"> + <button class="researchReportButtons"><a href="create-question.jsp">Speichern & + weiter</a></button> + <button class="researchReportButtons"><a href="create-research.jsp"> Zurück </a> + </button> + </div> + <div class="ResearchReportUpload"> + <input type="file" class="filepond" name="filepond"> </input> + </div> - <div class="researchReportProgress"> - <nav> - <menu> - <menuitem><a id="title">Titel</a> </menuitem> - <menuitem><a id="recherche">Recherche</a> </menuitem> - <menuitem><a id="bibo"><font color="#green">Literaturverzeichnis</font></a> </menuitem> - <menuitem><a id="question">Forschnugsfrage</a> </menuitem> - <menuitem><a id="concept">Konzept</a></menuitem> - <menuitem><a id="method">Methodik</a></menuitem> - <menuitem><a id="reportDo">Durchführung</a></menuitem> - <menuitem><a id="evaluation">Evalution</a></menuitem> - </menu> - </nav> - </div> + <div class="researchReportProgress"> + <nav> + <menu> + <menuitem><a id="title">Titel</a></menuitem> + <menuitem><a id="recherche">Recherche</a></menuitem> + <menuitem><a id="bibo"><font color="#green">Literaturverzeichnis</font></a> + </menuitem> + <menuitem><a id="question">Forschnugsfrage</a></menuitem> + <menuitem><a id="concept">Konzept</a></menuitem> + <menuitem><a id="method">Methodik</a></menuitem> + <menuitem><a id="reportDo">Durchführung</a></menuitem> + <menuitem><a id="evaluation">Evalution</a></menuitem> + </menu> + </nav> + </div> </form> </td> @@ -72,10 +76,11 @@ den Zustand ändert </div> -<script src="js/createReportBibo.js"></script> -<script src="js/createReportProgress.js"></script> +<script src="js/createReportBibo.js"></script> +<script src="js/createReportProgress.js"></script> <script src="https://unpkg.com/filepond/dist/filepond.js"></script> <!--FilePond --> -<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> <!--FilePond --> +<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> +<!--FilePond --> <script>FilePond.parse(document.body);</script> <!--FilePond --> </body> diff --git a/gemeinsamforschen/src/main/webapp/researchReport/create-concept.jsp b/gemeinsamforschen/src/main/webapp/researchReport/create-concept.jsp index 015039086e8b24597ff833aefc3293c2091270eb..b055bc51fa760e0e4a514c57a99c4bb8ed393313 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/create-concept.jsp +++ b/gemeinsamforschen/src/main/webapp/researchReport/create-concept.jsp @@ -1,5 +1,5 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> @@ -8,24 +8,23 @@ <head> <omniDependencies:omniDependencies hierarchy="1"/> <link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet"> <!--FilePond --> - <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" rel="stylesheet"> <!--FilePond --> + <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" + rel="stylesheet"> <!--FilePond --> <link rel="stylesheet" type="text/css" href="css/researchReport.css"> </head> <body> - <form id="researchReportform" class="researchReportForm" method="POST" action="../rest/researchReport/save"> - - <div class = "researchReportTitlebar"> + <div class="researchReportTitlebar"> <h1> Forschungsbericht erstellen 5/8</h1> </div> - <div class ="researchReportEditor"> + <div class="researchReportEditor"> <h2 class="editor-inhalt">Untersuchungskonzept eingeben:</h2> - <textarea id = "editor" name="text" form="researchReportForm" rows="20" cols="100"> + <textarea id="editor" name="text" form="researchReportForm" rows="20" cols="100"> </textarea> </div> <div class="ResearchReportButtons"> @@ -39,10 +38,10 @@ <div class="researchReportProgress"> <nav> <menu> - <menuitem><a id="title">Titel</a> </menuitem> - <menuitem><a id="recherche">Recherche</a> </menuitem> - <menuitem><a id="bibo">Literaturverzeichnis</a> </menuitem> - <menuitem><a id="question">Forschnugsfrage</a> </menuitem> + <menuitem><a id="title">Titel</a></menuitem> + <menuitem><a id="recherche">Recherche</a></menuitem> + <menuitem><a id="bibo">Literaturverzeichnis</a></menuitem> + <menuitem><a id="question">Forschnugsfrage</a></menuitem> <menuitem><a id="concept"><font color="#green">Konzept</font></a></menuitem> <menuitem><a id="method">Methodik</a></menuitem> <menuitem><a id="reportDo">Durchführung</a></menuitem> @@ -54,10 +53,11 @@ </form> -<script src="js/createReportConcept.js"></script> -<script src="js/createReportProgress.js"></script> +<script src="js/createReportConcept.js"></script> +<script src="js/createReportProgress.js"></script> <script src="https://unpkg.com/filepond/dist/filepond.js"></script> <!--FilePond --> -<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> <!--FilePond --> +<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> +<!--FilePond --> <script>FilePond.parse(document.body);</script> <!--FilePond --> </body> diff --git a/gemeinsamforschen/src/main/webapp/researchReport/create-evaluation.jsp b/gemeinsamforschen/src/main/webapp/researchReport/create-evaluation.jsp index 51d848e9c4749257a603efb2ed67b09b90e912b7..582b905d1710d4f837555105ab6cd46b852f3192 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/create-evaluation.jsp +++ b/gemeinsamforschen/src/main/webapp/researchReport/create-evaluation.jsp @@ -1,5 +1,5 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> @@ -8,14 +8,14 @@ <head> <omniDependencies:omniDependencies hierarchy="1"/> <link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet"> <!--FilePond --> - <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" rel="stylesheet"> <!--FilePond --> + <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" + rel="stylesheet"> <!--FilePond --> <link rel="stylesheet" type="text/css" href="css/researchReport.css"> <title>Forschungsbericht erstellen</title> </head> <body> - <div id="wrapper"> <menu:menu hierarchy="1"/> <div class="page-content-wrapper"> @@ -23,40 +23,44 @@ <div style="margin-left:50px;"> <table> <tr> - <td id="yourContent"> - <form id="researchReportform" class="researchReportForm" method="POST" action="../rest/researchReport/save"> + <td id="yourContent"> + <form id="researchReportform" class="researchReportForm" method="POST" + action="../rest/researchReport/save"> - <div class = "researchReportTitlebar"> - <h1> Forschungsbericht erstellen 8/8</h1> - </div> + <div class="researchReportTitlebar"> + <h1> Forschungsbericht erstellen 8/8</h1> + </div> - <div class ="researchReportEditor"> - <h2 class="editor-inhalt">Auswertung eingeben:</h2> - <textarea id = "editor" name="text" form="researchReportForm" rows="20" cols="100"> + <div class="researchReportEditor"> + <h2 class="editor-inhalt">Auswertung eingeben:</h2> + <textarea id="editor" name="text" form="researchReportForm" rows="20" cols="100"> </textarea> - </div> - <div class="ResearchReportButtons"> - <button class="researchReportButtons"><a href="../project-student.jsp">Speichern & weiter</a></button> - <button class="researchReportButtons"><a href="create-process-description.jsp"> Zurück </a></button> - </div> - <div class="ResearchReportUpload"> - <input type="file" class="filepond" name="filepond"> </input> - </div> + </div> + <div class="ResearchReportButtons"> + <button class="researchReportButtons"><a href="../project-student.jsp">Speichern & + weiter</a></button> + <button class="researchReportButtons"><a href="create-process-description.jsp"> Zurück </a> + </button> + </div> + <div class="ResearchReportUpload"> + <input type="file" class="filepond" name="filepond"> </input> + </div> - <div class="researchReportProgress"> - <nav> - <menu> - <menuitem><a id="title">Titel</a> </menuitem> - <menuitem><a id="recherche">Recherche</a> </menuitem> - <menuitem><a id="bibo">Literaturverzeichnis</a> </menuitem> - <menuitem><a id="question">Forschnugsfrage</a> </menuitem> - <menuitem><a id="concept">Konzept</a></menuitem> - <menuitem><a id="method">Methodik</a></menuitem> - <menuitem><a id="reportDo">Durchführung</a></menuitem> - <menuitem><a id="evaluation"><font color="#green">Evalution</font></a></menuitem> - </menu> - </nav> - </div> + <div class="researchReportProgress"> + <nav> + <menu> + <menuitem><a id="title">Titel</a></menuitem> + <menuitem><a id="recherche">Recherche</a></menuitem> + <menuitem><a id="bibo">Literaturverzeichnis</a></menuitem> + <menuitem><a id="question">Forschnugsfrage</a></menuitem> + <menuitem><a id="concept">Konzept</a></menuitem> + <menuitem><a id="method">Methodik</a></menuitem> + <menuitem><a id="reportDo">Durchführung</a></menuitem> + <menuitem><a id="evaluation"><font color="#green">Evalution</font></a> + </menuitem> + </menu> + </nav> + </div> </form> </td> @@ -67,10 +71,11 @@ </div> -<script src="js/createReportEvaluation.js"></script> -<script src="js/createReportProgress.js"></script> +<script src="js/createReportEvaluation.js"></script> +<script src="js/createReportProgress.js"></script> <script src="https://unpkg.com/filepond/dist/filepond.js"></script> <!--FilePond --> -<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> <!--FilePond --> +<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> +<!--FilePond --> <script>FilePond.parse(document.body);</script> <!--FilePond --> </body> diff --git a/gemeinsamforschen/src/main/webapp/researchReport/create-method.jsp b/gemeinsamforschen/src/main/webapp/researchReport/create-method.jsp index 1749e97343ff3c0c34fd7f7df96682c864f6a2ef..ece2341a689a1270f5e8c19e06a0a3fc37a73954 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/create-method.jsp +++ b/gemeinsamforschen/src/main/webapp/researchReport/create-method.jsp @@ -1,5 +1,5 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> @@ -8,14 +8,14 @@ <head> <omniDependencies:omniDependencies hierarchy="1"/> <link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet"> <!--FilePond --> - <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" rel="stylesheet"> <!--FilePond --> + <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" + rel="stylesheet"> <!--FilePond --> <link rel="stylesheet" type="text/css" href="css/researchReport.css"> <title>Forschungsbericht erstellen</title> </head> <body> - <div id="wrapper"> <menu:menu hierarchy="1"/> <div class="page-content-wrapper"> @@ -23,41 +23,44 @@ <div style="margin-left:50px;"> <table> <tr> - <td id="yourContent"> - <form id="researchReportform" class="researchReportForm" method="POST" action="../rest/researchReport/save"> + <td id="yourContent"> + <form id="researchReportform" class="researchReportForm" method="POST" + action="../rest/researchReport/save"> - <div class = "researchReportTitlebar"> - <h1> Forschungsbericht erstellen 6/8</h1> - </div> + <div class="researchReportTitlebar"> + <h1> Forschungsbericht erstellen 6/8</h1> + </div> - <div class ="researchReportEditor"> - <h2 class="editor-inhalt">Methodik eingeben:</h2> - <textarea id = "editor" name="text" form="researchReportForm" rows="20" cols="100"> + <div class="researchReportEditor"> + <h2 class="editor-inhalt">Methodik eingeben:</h2> + <textarea id="editor" name="text" form="researchReportForm" rows="20" cols="100"> </textarea> - </div> - <div class="ResearchReportButtons"> - <button class="researchReportButtons"><a href="create-process-description.jsp">Speichern & weiter</a></button> - <button class="researchReportButtons"><a href="create-concept.jsp"> Zurück </a></button> - </div> - <div class="ResearchReportUpload"> - <input type="file" class="filepond" name="filepond"> </input> - </div> + </div> + <div class="ResearchReportButtons"> + <button class="researchReportButtons"><a href="create-process-description.jsp">Speichern + & weiter</a></button> + <button class="researchReportButtons"><a href="create-concept.jsp"> Zurück </a> + </button> + </div> + <div class="ResearchReportUpload"> + <input type="file" class="filepond" name="filepond"> </input> + </div> - <div class="researchReportProgress"> - <nav> - <menu> - <menuitem><a id="title">Titel</a> </menuitem> - <menuitem><a id="recherche">Recherche</a> </menuitem> - <menuitem><a id="bibo">Literaturverzeichnis</a> </menuitem> - <menuitem><a id="question">Forschnugsfrage</a> </menuitem> - <menuitem><a id="concept">Konzept</a></menuitem> - <menuitem><a id="method"><font color="#green">Methodik</font></a></menuitem> - <menuitem><a id="reportDo">Durchführung</a></menuitem> - <menuitem><a id="evaluation">Evalution</a></menuitem> - </menu> - </nav> - </div> + <div class="researchReportProgress"> + <nav> + <menu> + <menuitem><a id="title">Titel</a></menuitem> + <menuitem><a id="recherche">Recherche</a></menuitem> + <menuitem><a id="bibo">Literaturverzeichnis</a></menuitem> + <menuitem><a id="question">Forschnugsfrage</a></menuitem> + <menuitem><a id="concept">Konzept</a></menuitem> + <menuitem><a id="method"><font color="#green">Methodik</font></a></menuitem> + <menuitem><a id="reportDo">Durchführung</a></menuitem> + <menuitem><a id="evaluation">Evalution</a></menuitem> + </menu> + </nav> + </div> </form> </td> @@ -68,10 +71,11 @@ </div> -<script src="js/createReportMethod.js"></script> -<script src="js/createReportProgress.js"></script> +<script src="js/createReportMethod.js"></script> +<script src="js/createReportProgress.js"></script> <script src="https://unpkg.com/filepond/dist/filepond.js"></script> <!--FilePond --> -<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> <!--FilePond --> +<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> +<!--FilePond --> <script>FilePond.parse(document.body);</script> <!--FilePond --> </body> diff --git a/gemeinsamforschen/src/main/webapp/researchReport/create-overview.jsp b/gemeinsamforschen/src/main/webapp/researchReport/create-overview.jsp index 46f297f0a22681a3cb96257c4cb12cbe7e51a00b..4c388312f715e5d69603c88edb68b3a8e93508e0 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/create-overview.jsp +++ b/gemeinsamforschen/src/main/webapp/researchReport/create-overview.jsp @@ -1,15 +1,17 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> <html> <head> - <meta name="viewport" content="width=device-width, initial-scale=1", charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1" , charset="utf-8"> <omniDependencies:omniDependencies hierarchy="1"/> <link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet"> <!--FilePond --> - <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" rel="stylesheet"> <!--FilePond --> + <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" + rel="stylesheet"> <!--FilePond --> <link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet"> <!--FilePond --> - <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" rel="stylesheet"> <!--FilePond --> + <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" + rel="stylesheet"> <!--FilePond --> <link rel="stylesheet" type="text/css" href="css/researchReportOverview.css"> <script src="js/createReportOverview.js"></script> <title>Forschungsbericht Ãœbersicht</title> @@ -26,84 +28,84 @@ <div style="margin-left:50px;"> <table> <tr> - <td id="yourContent"> + <td id="yourContent"> <form id="researchReportOverview" class="researchReportOverview"> - <div class = "researchReportTitlebar"> + <div class="researchReportTitlebar"> <h1> Forschungsbericht Ãœbersicht</h1> </div> - <div class="reports"> - <h2>Forschungberichte</h2> - <table> - <thead> - <tr> - <th>Titel</th> - <th>Autor</th> - <th>Placeholder</th> - </tr> - </thead> - <tbody> - <tr> - <td>Titel1</td> - <td>Autor1</td> - <td>1</td> - </tr> - <tr> - <td>Titel2</td> - <td>Autor2</td> - <td>2</td> - </tr> - <tr> - <td>Titel3</td> - <td>Autor3</td> - <td>3</td> - </tr> - </tbody> - </table> - </div> - - <!-- <div class="ResearchReportUpload"> - <h3>Gesamten Forschungsbericht hochladen </h3> - <input type="file" class="filepond" name="filepond"> - </div> --> + <div class="reports"> + <h2>Forschungberichte</h2> + <table> + <thead> + <tr> + <th>Titel</th> + <th>Autor</th> + <th>Placeholder</th> + </tr> + </thead> + <tbody> + <tr> + <td>Titel1</td> + <td>Autor1</td> + <td>1</td> + </tr> + <tr> + <td>Titel2</td> + <td>Autor2</td> + <td>2</td> + </tr> + <tr> + <td>Titel3</td> + <td>Autor3</td> + <td>3</td> + </tr> + </tbody> + </table> + </div> - <div class="feedbacks"> - <h2>Feedbacks</h2> - <table> - <thead> - <tr> - <th>Titel</th> - <th>Autor</th> - <th>Placeholder</th> - </tr> - </thead> - <tbody> - <tr> - <td>Titel1</td> - <td>Autor1</td> - <td>1</td> - </tr> - <tr> - <td>Titel2</td> - <td>Autor2</td> - <td>2</td> - </tr> - <tr> - <td>Titel3</td> - <td>Autor3</td> - <td>3</td> - </tr> - </tbody> - </table> - </div> + <!-- <div class="ResearchReportUpload"> + <h3>Gesamten Forschungsbericht hochladen </h3> + <input type="file" class="filepond" name="filepond"> + </div> --> + + <div class="feedbacks"> + <h2>Feedbacks</h2> + <table> + <thead> + <tr> + <th>Titel</th> + <th>Autor</th> + <th>Placeholder</th> + </tr> + </thead> + <tbody> + <tr> + <td>Titel1</td> + <td>Autor1</td> + <td>1</td> + </tr> + <tr> + <td>Titel2</td> + <td>Autor2</td> + <td>2</td> + </tr> + <tr> + <td>Titel3</td> + <td>Autor3</td> + <td>3</td> + </tr> + </tbody> + </table> + </div> - <div class="ResearchReportButtons"> - <button class="researchReportButtons"><a id="uploader">Upload File</a></button> - <button class="researchReportButtons"><a id="forwardLink">Bericht erstellen</a></button> - <button class="researchReportButtons"><a id="backLink">Zurück</a></button> - </div> + <div class="ResearchReportButtons"> + <button class="researchReportButtons"><a id="uploader">Upload File</a></button> + <button class="researchReportButtons"><a id="forwardLink">Bericht erstellen</a></button> + <button class="researchReportButtons"><a id="backLink">Zurück</a></button> + </div> </form> </td> @@ -114,10 +116,9 @@ </div> - - <script src="https://unpkg.com/filepond/dist/filepond.js"></script> <!--FilePond --> -<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> <!--FilePond --> +<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> +<!--FilePond --> <script>FilePond.parse(document.body);</script> <!--FilePond --> diff --git a/gemeinsamforschen/src/main/webapp/researchReport/create-process-description.jsp b/gemeinsamforschen/src/main/webapp/researchReport/create-process-description.jsp index 1e8d3e7d149d57276b63cb66bd21073a8dd1d948..cfa478c22e7c787e43adfde6b9f74cfd64d770b9 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/create-process-description.jsp +++ b/gemeinsamforschen/src/main/webapp/researchReport/create-process-description.jsp @@ -1,5 +1,5 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> @@ -8,14 +8,14 @@ <head> <omniDependencies:omniDependencies hierarchy="1"/> <link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet"> <!--FilePond --> - <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" rel="stylesheet"> <!--FilePond --> + <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" + rel="stylesheet"> <!--FilePond --> <link rel="stylesheet" type="text/css" href="css/researchReport.css"> <title>Forschungsbericht erstellen</title> </head> <body> - <div id="wrapper"> <menu:menu hierarchy="1"/> <div class="page-content-wrapper"> @@ -23,40 +23,43 @@ <div style="margin-left:50px;"> <table> <tr> - <td id="yourContent"> - <form id="researchReportform" class="researchReportForm" method="POST" action="../rest/researchReport/save"> + <td id="yourContent"> + <form id="researchReportform" class="researchReportForm" method="POST" + action="../rest/researchReport/save"> - <div class = "researchReportTitlebar"> - <h1> Forschungsbericht erstellen 7/8</h1> - </div> + <div class="researchReportTitlebar"> + <h1> Forschungsbericht erstellen 7/8</h1> + </div> - <div class ="researchReportEditor"> - <h2 class="editor-inhalt">Durchführung eingeben:</h2> - <textarea id = "editor" name="text" form="researchReportForm" rows="20" cols="100"> + <div class="researchReportEditor"> + <h2 class="editor-inhalt">Durchführung eingeben:</h2> + <textarea id="editor" name="text" form="researchReportForm" rows="20" cols="100"> </textarea> - </div> - <div class="ResearchReportButtons"> - <button class="researchReportButtons"><a href="create-evaluation.jsp">Speichern & weiter</a></button> - <button class="researchReportButtons"><a href="create-method.jsp"> Zurück </a></button> - </div> - <div class="ResearchReportUpload"> - <input type="file" class="filepond" name="filepond"> </input> - </div> + </div> + <div class="ResearchReportButtons"> + <button class="researchReportButtons"><a href="create-evaluation.jsp">Speichern & + weiter</a></button> + <button class="researchReportButtons"><a href="create-method.jsp"> Zurück </a> + </button> + </div> + <div class="ResearchReportUpload"> + <input type="file" class="filepond" name="filepond"> </input> + </div> - <div class="researchReportProgress"> - <nav> - <menu> - <menuitem><a id="title">Titel</a> </menuitem> - <menuitem><a id="recherche">Recherche</a> </menuitem> - <menuitem><a id="bibo">Literaturverzeichnis</a> </menuitem> - <menuitem><a id="question">Forschnugsfrage</a> </menuitem> - <menuitem><a id="concept">Konzept</a></menuitem> - <menuitem><a id="method"><font color="#green">Methodik</font></a></menuitem> - <menuitem><a id="reportDo">Durchführung</a></menuitem> - <menuitem><a id="evaluation">Evalution</a></menuitem> - </menu> - </nav> - </div> + <div class="researchReportProgress"> + <nav> + <menu> + <menuitem><a id="title">Titel</a></menuitem> + <menuitem><a id="recherche">Recherche</a></menuitem> + <menuitem><a id="bibo">Literaturverzeichnis</a></menuitem> + <menuitem><a id="question">Forschnugsfrage</a></menuitem> + <menuitem><a id="concept">Konzept</a></menuitem> + <menuitem><a id="method"><font color="#green">Methodik</font></a></menuitem> + <menuitem><a id="reportDo">Durchführung</a></menuitem> + <menuitem><a id="evaluation">Evalution</a></menuitem> + </menu> + </nav> + </div> </form> </td> @@ -67,10 +70,11 @@ </div> -<script src="js/createReportDo.js"></script> -<script src="js/createReportProgress.js"></script> +<script src="js/createReportDo.js"></script> +<script src="js/createReportProgress.js"></script> <script src="https://unpkg.com/filepond/dist/filepond.js"></script> <!--FilePond --> -<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> <!--FilePond --> +<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> +<!--FilePond --> <script>FilePond.parse(document.body);</script> <!--FilePond --> </body> diff --git a/gemeinsamforschen/src/main/webapp/researchReport/create-question.jsp b/gemeinsamforschen/src/main/webapp/researchReport/create-question.jsp index f70436ce9d8fe57fe4d2d390f8469e67d5d7805d..86fef01fc55a685c6a915e019ebeb0a69c320a7d 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/create-question.jsp +++ b/gemeinsamforschen/src/main/webapp/researchReport/create-question.jsp @@ -1,5 +1,5 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> @@ -9,15 +9,14 @@ <head> <omniDependencies:omniDependencies hierarchy="1"/> <link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet"> <!--FilePond --> - <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" rel="stylesheet"> <!--FilePond --> + <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" + rel="stylesheet"> <!--FilePond --> <link rel="stylesheet" type="text/css" href="css/researchReport.css"> <title>Forschungsbericht erstellen</title> </head> <body> - - <div id="wrapper"> <menu:menu hierarchy="1"/> <div class="page-content-wrapper"> @@ -25,40 +24,44 @@ <div style="margin-left:50px;"> <table> <tr> - <td id="yourContent"> - <form id="researchReportform" class="researchReportForm" method="POST" action="../rest/researchReport/save"> + <td id="yourContent"> + <form id="researchReportform" class="researchReportForm" method="POST" + action="../rest/researchReport/save"> - <div class = "researchReportTitlebar"> - <h1> Forschungsbericht erstellen 4/8</h1> - </div> + <div class="researchReportTitlebar"> + <h1> Forschungsbericht erstellen 4/8</h1> + </div> - <div class ="researchReportEditor"> - <h2 class="editor-inhalt">Forschungsfrage eingeben:</h2> - <textarea id = "editor" name="text" form="researchReportForm" rows="10" cols="100"> + <div class="researchReportEditor"> + <h2 class="editor-inhalt">Forschungsfrage eingeben:</h2> + <textarea id="editor" name="text" form="researchReportForm" rows="10" cols="100"> </textarea> - </div> - <div class="ResearchReportButtons"> - <button class="researchReportButtons"><a href="create-concept.jsp">Speichern & weiter</a></button> - <button class="researchReportButtons"><a href="create-bibliography.jsp"> Zurück </a></button> - </div> - <div class="ResearchReportUpload"> - <input type="file" class="filepond" name="filepond"> </input> - </div> - <div class="researchReportProgress"> - <nav> - <menu> - <menuitem><a id="title">Titel</a> </menuitem> - <menuitem><a id="recherche">Recherche</a> </menuitem> - <menuitem><a id="bibo">Literaturverzeichnis</a> </menuitem> - <menuitem><a id="question"><font color="#green">Forschnugsfrage</font></a> </menuitem> - <menuitem><a id="concept">Konzept</a></menuitem> - <menuitem><a id="method">Methodik</a></menuitem> - <menuitem><a id="reportDo">Durchführung</a></menuitem> - <menuitem><a id="evaluation">Evalution</a></menuitem> - </menu> - </nav> - </div> + </div> + <div class="ResearchReportButtons"> + <button class="researchReportButtons"><a href="create-concept.jsp">Speichern & + weiter</a></button> + <button class="researchReportButtons"><a href="create-bibliography.jsp"> + Zurück </a></button> + </div> + <div class="ResearchReportUpload"> + <input type="file" class="filepond" name="filepond"> </input> + </div> + <div class="researchReportProgress"> + <nav> + <menu> + <menuitem><a id="title">Titel</a></menuitem> + <menuitem><a id="recherche">Recherche</a></menuitem> + <menuitem><a id="bibo">Literaturverzeichnis</a></menuitem> + <menuitem><a id="question"><font color="#green">Forschnugsfrage</font></a> + </menuitem> + <menuitem><a id="concept">Konzept</a></menuitem> + <menuitem><a id="method">Methodik</a></menuitem> + <menuitem><a id="reportDo">Durchführung</a></menuitem> + <menuitem><a id="evaluation">Evalution</a></menuitem> + </menu> + </nav> + </div> </form> </td> @@ -69,10 +72,11 @@ </div> -<script src="js/createReportQuestion.js"></script> -<script src="js/createReportProgress.js"></script> +<script src="js/createReportQuestion.js"></script> +<script src="js/createReportProgress.js"></script> <script src="https://unpkg.com/filepond/dist/filepond.js"></script> <!--FilePond --> -<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> <!--FilePond --> +<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> +<!--FilePond --> <script>FilePond.parse(document.body);</script> <!--FilePond --> </body> diff --git a/gemeinsamforschen/src/main/webapp/researchReport/create-research.jsp b/gemeinsamforschen/src/main/webapp/researchReport/create-research.jsp index ce4f3d40be427955726ed528c12cd4dc15bcaf1d..ddc43b4b0c0569a53637318d483d1686db5fa573 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/create-research.jsp +++ b/gemeinsamforschen/src/main/webapp/researchReport/create-research.jsp @@ -1,5 +1,5 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> -<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> @@ -8,7 +8,8 @@ <head> <omniDependencies:omniDependencies hierarchy="1"/> <link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet"> <!--FilePond --> - <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" rel="stylesheet"> <!--FilePond --> + <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" + rel="stylesheet"> <!--FilePond --> <link rel="stylesheet" type="text/css" href="css/researchReport.css"> <title>Forschungsbericht erstellen</title> </head> @@ -22,43 +23,45 @@ <div style="margin-left:50px;"> <table> <tr> - <td id="yourContent"> - <form id="researchReportform" class="researchReportForm" method="POST" action="../rest/researchReport/save"> + <td id="yourContent"> + <form id="researchReportform" class="researchReportForm" method="POST" + action="../rest/researchReport/save"> + <div class="researchReportTitlebar"> + <h1> Forschungsbericht erstellen 2/8</h1> + </div> - <div class = "researchReportTitlebar"> - <h1> Forschungsbericht erstellen 2/8</h1> - </div> - - <div class ="researchReportEditor"> - <h2 class="editor-inhalt">Recherche eingeben:</h2> - <textarea id = "editor" name="text" form="researchReportForm" rows="20" cols="100"> + <div class="researchReportEditor"> + <h2 class="editor-inhalt">Recherche eingeben:</h2> + <textarea id="editor" name="text" form="researchReportForm" rows="20" cols="100"> </textarea> - </div> - <div class="ResearchReportButtons"> - <button class="researchReportButtons"><a href="create-bibliography.jsp">Speichern & weiter</a></button> - <button class="researchReportButtons"><a href="create-title.jsp"> Zurück </a></button> - </div> + </div> + <div class="ResearchReportButtons"> + <button class="researchReportButtons"><a href="create-bibliography.jsp">Speichern & + weiter</a></button> + <button class="researchReportButtons"><a href="create-title.jsp"> Zurück </a> + </button> + </div> - <div class="ResearchReportUpload"> - <input type="file" class="filepond" name="filepond" /> - </div> + <div class="ResearchReportUpload"> + <input type="file" class="filepond" name="filepond"/> + </div> - <div class="researchReportProgress"> - <nav> - <menu> - <menuitem><a id="title">Titel</a> </menuitem> - <menuitem><a id="recherche"><font color="#green">Recherche</font></a> </menuitem> - <menuitem><a id="bibo">Literaturverzeichnis</a> </menuitem> - <menuitem><a id="question">Forschnugsfrage</a> </menuitem> - <menuitem><a id="concept">Konzept</a></menuitem> - <menuitem><a id="method">Methodik</a></menuitem> - <menuitem><a id="reportDo">Durchführung</a></menuitem> - <menuitem><a id="evaluation">Evalution</a></menuitem> - </menu> - </nav> - </div> + <div class="researchReportProgress"> + <nav> + <menu> + <menuitem><a id="title">Titel</a></menuitem> + <menuitem><a id="recherche"><font color="#green">Recherche</font></a></menuitem> + <menuitem><a id="bibo">Literaturverzeichnis</a></menuitem> + <menuitem><a id="question">Forschnugsfrage</a></menuitem> + <menuitem><a id="concept">Konzept</a></menuitem> + <menuitem><a id="method">Methodik</a></menuitem> + <menuitem><a id="reportDo">Durchführung</a></menuitem> + <menuitem><a id="evaluation">Evalution</a></menuitem> + </menu> + </nav> + </div> </form> </td> @@ -69,12 +72,11 @@ </div> - - -<script src="js/createReportRecherche.js"></script> -<script src="js/createReportProgress.js"></script> +<script src="js/createReportRecherche.js"></script> +<script src="js/createReportProgress.js"></script> <script src="https://unpkg.com/filepond/dist/filepond.js"></script> <!--FilePond --> -<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> <!--FilePond --> +<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> +<!--FilePond --> <script>FilePond.parse(document.body);</script> <!--FilePond --> </body> diff --git a/gemeinsamforschen/src/main/webapp/researchReport/create-title.jsp b/gemeinsamforschen/src/main/webapp/researchReport/create-title.jsp index d2b1a0a5ebe444fbf6f4b569352fb3398b577089..e302aec6c983e70ce393d884c7db725783b2d57b 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/create-title.jsp +++ b/gemeinsamforschen/src/main/webapp/researchReport/create-title.jsp @@ -9,7 +9,8 @@ <head> <omniDependencies:omniDependencies hierarchy="1"/> <link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet"> <!--FilePond --> - <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" rel="stylesheet"> <!--FilePond --> + <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" + rel="stylesheet"> <!--FilePond --> <link rel="stylesheet" type="text/css" href="css/researchReport.css"> <title>Forschungsbericht erstellen</title> </head> @@ -17,73 +18,76 @@ <div id="wrapper"> <menu:menu hierarchy="1"/> - <div class="page-content-wrapper"> - <headLine:headLine/> - <div style="margin-left:50px;"> - <table> - <tr> - <td id="yourContent"> - <form id="researchReportform" class="researchReportForm" method="POST" action="../rest/researchReport/save"> + <div class="page-content-wrapper"> + <headLine:headLine/> + <div style="margin-left:50px;"> + <table> + <tr> + <td id="yourContent"> + <form id="researchReportform" class="researchReportForm" method="POST" + action="../rest/researchReport/save"> - <!-- <div class = "researchReportMenu"> - <nav> - <menu> - <menuitem><p><a href="">Gruppe</a></p> </menuitem> - <menuitem><p><a href="">Projekt erstellen</a> </p></menuitem> - <menuitem><p><a href="">Forschungsbericht erstellen</a></p></menuitem> - <menuitem><p><a href="">Review</a></p></menuitem> - <menuitem><p><a href="">User</a></p></menuitem> - </menu> - </nav> - </div> --> + <!-- <div class = "researchReportMenu"> + <nav> + <menu> + <menuitem><p><a href="">Gruppe</a></p> </menuitem> + <menuitem><p><a href="">Projekt erstellen</a> </p></menuitem> + <menuitem><p><a href="">Forschungsbericht erstellen</a></p></menuitem> + <menuitem><p><a href="">Review</a></p></menuitem> + <menuitem><p><a href="">User</a></p></menuitem> + </menu> + </nav> + </div> --> - <div class = "researchReportTitlebar"> - <h1> Forschungsbericht erstellen 1/8</h1> - </div> + <div class="researchReportTitlebar"> + <h1> Forschungsbericht erstellen 1/8</h1> + </div> - <div class ="researchReportEditor"> - <h2 class="editor-inhalt">Titel eingeben:</h2> - <textarea id = "editor" name="text" form="researchReportForm" rows="20" cols="100"> + <div class="researchReportEditor"> + <h2 class="editor-inhalt">Titel eingeben:</h2> + <textarea id="editor" name="text" form="researchReportForm" rows="20" cols="100"> </textarea> - </div> - <div class="ResearchReportButtons"> - <button class="researchReportButtons"><a id="forwardLink">Speichern & weiter</a></button> - <button class="researchReportButtons"><a id="backLink"> Zurück </a></button> - </div> + </div> + <div class="ResearchReportButtons"> + <button class="researchReportButtons"><a id="forwardLink">Speichern & weiter</a> + </button> + <button class="researchReportButtons"><a id="backLink"> Zurück </a></button> + </div> - <div class="ResearchReportUpload"> - <input type="file" class="filepond" name="filepond"> </input> - </div> + <div class="ResearchReportUpload"> + <input type="file" class="filepond" name="filepond"> </input> + </div> - <div class="researchReportProgress"> - <nav> - <menu> - <menuitem><a id="title"><font color="#green">Titel</font></a> </menuitem> - <menuitem><a id="recherche">Recherche</a> </menuitem> - <menuitem><a id="bibo">Literaturverzeichnis</a> </menuitem> - <menuitem><a id="question">Forschnugsfrage</a> </menuitem> - <menuitem><a id="concept">Konzept</a></menuitem> - <menuitem><a id="method">Methodik</a></menuitem> - <menuitem><a id="reportDo">Durchführung</a></menuitem> - <menuitem><a id="evaluation">Evalution</a></menuitem> - </menu> - </nav> - </div> + <div class="researchReportProgress"> + <nav> + <menu> + <menuitem><a id="title"><font color="#green">Titel</font></a></menuitem> + <menuitem><a id="recherche">Recherche</a></menuitem> + <menuitem><a id="bibo">Literaturverzeichnis</a></menuitem> + <menuitem><a id="question">Forschnugsfrage</a></menuitem> + <menuitem><a id="concept">Konzept</a></menuitem> + <menuitem><a id="method">Methodik</a></menuitem> + <menuitem><a id="reportDo">Durchführung</a></menuitem> + <menuitem><a id="evaluation">Evalution</a></menuitem> + </menu> + </nav> + </div> -</form> - </td> - </tr> - </table> - </div> + </form> + </td> + </tr> + </table> </div> + </div> </div> -<script src="js/createReportTitle.js"></script> -<script src="js/createReportProgress.js"></script> +<script src="js/createReportTitle.js"></script> +<script src="js/createReportProgress.js"></script> <script src="https://unpkg.com/filepond/dist/filepond.js"></script> <!--FilePond --> -<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> <!--FilePond --> +<script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> +<!--FilePond --> <script>FilePond.parse(document.body);</script> <!--FilePond --> diff --git a/gemeinsamforschen/src/main/webapp/researchReport/css/researchReport.css b/gemeinsamforschen/src/main/webapp/researchReport/css/researchReport.css index d9074aad2960cacb3b11921b1aefbdede8bad780..d0fd1ff178536c283ce55d3e4ea197abe12b7f0c 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/css/researchReport.css +++ b/gemeinsamforschen/src/main/webapp/researchReport/css/researchReport.css @@ -72,73 +72,81 @@ body, html */ body, html { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - font-size: 10px; - font-family: "Roboto", sans-serif; - background-color: gray; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + font-size: 10px; + font-family: "Roboto", sans-serif; + background-color: gray; } .researchReportForm { - width: 100%; - display: grid; - grid-template-rows: 5rem 100vh 7rem 5rem; - grid-template-columns: 1fr 1fr 1fr 1fr 1fr; - grid-template-areas: "header header header header header" "editor editor editor editor editor" ". . buttons upload ." "progress progress progress progress progress"; + width: 100%; + display: grid; + grid-template-rows: 5rem 100vh 7rem 5rem; + grid-template-columns: 1fr 1fr 1fr 1fr 1fr; + grid-template-areas: "header header header header header" "editor editor editor editor editor" ". . buttons upload ." "progress progress progress progress progress"; } + .researchReportForm .researchReportTitlebar { - grid-area: header; - background-color: #003f60; - color: white; - display: flex; - justify-content: center; - align-items: center; + grid-area: header; + background-color: #003f60; + color: white; + display: flex; + justify-content: center; + align-items: center; } + .researchReportForm .researchReportEditor { - grid-area: editor; - background: gray; - color: black; - display: flex; - justify-content: Center; - align-items: Center; + grid-area: editor; + background: gray; + color: black; + display: flex; + justify-content: Center; + align-items: Center; } + .researchReportForm .researchReportEditor .editor-inhalt { - margin: 10rem; - padding: 6rem; - font-size: 2rem; - color: #fff; - text-align: Left; - width: 10%; + margin: 10rem; + padding: 6rem; + font-size: 2rem; + color: #fff; + text-align: Left; + width: 10%; } + .researchReportForm .researchReportButtons { - background-color: #4CAF50; - border: 1.8px solid black; - color: gray; - grid-area: buttons; - padding: 15px 25px; - text-align: Center; - font-size: 16px; - cursor: pointer; + background-color: #4CAF50; + border: 1.8px solid black; + color: gray; + grid-area: buttons; + padding: 15px 25px; + text-align: Center; + font-size: 16px; + cursor: pointer; } + .researchReportForm .researchReportUpload { - grid-area: upload; + grid-area: upload; } + .researchReportForm .researchReportProgress { - background: #003f60; - color: red; - grid-area: progress; - display: flex; - justify-content: center; - align-items: center; + background: #003f60; + color: red; + grid-area: progress; + display: flex; + justify-content: center; + align-items: center; } + .researchReportForm .researchReportProgress nav { - font-size: 1.5rem; + font-size: 1.5rem; } + .researchReportForm .researchReportProgress nav menu menuitem a { - color: White; - text-decoration: none; - margin: 0 0 0 1rem; - cursor: pointer; + color: White; + text-decoration: none; + margin: 0 0 0 1rem; + cursor: pointer; } diff --git a/gemeinsamforschen/src/main/webapp/researchReport/css/researchReportOverview.css b/gemeinsamforschen/src/main/webapp/researchReport/css/researchReportOverview.css index b4fbd6ef76562af9044476a5994be84fcff8e3dd..c0d01e666333c79f67aa877a58bc07adf6698b49 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/css/researchReportOverview.css +++ b/gemeinsamforschen/src/main/webapp/researchReport/css/researchReportOverview.css @@ -88,6 +88,7 @@ body, html { grid-template-columns: 1fr 1fr 1fr 1fr 1fr; grid-template-areas: "header header header header header" "report report report report report" ". . buttons . ." "feed feed feed feed feed"; } + .researchReportOverview .researchReportTitlebar { grid-area: header; background-color: #003f60; @@ -96,22 +97,26 @@ body, html { justify-content: center; align-items: center; } + .researchReportOverview table { table-layout: auto; width: 100%; border-collapse: collapse; overflow: scroll; } + .researchReportOverview th { border: 1px solid #999; padding: 0.5rem; text-align: center; } + .researchReportOverview td { border: 1px solid #999; padding: 0.5rem; text-align: left; } + .researchReportOverview .reports { grid-area: report; margin: auto; @@ -120,9 +125,11 @@ body, html { padding: 10px; background-color: white; } + .researchReportOverview tr:hover { background-color: #c0eef1; } + .researchReportOverview .feedbacks { grid-area: feed; margin: auto; @@ -131,10 +138,10 @@ body, html { padding: 10px; background-color: white; } + .researchReportOverview .researchReportUpload { grid-area: upload; - } .researchReportOverview .researchReportButtons { diff --git a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportBibo.js b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportBibo.js index f081bae605541728a5ca619aa6b5a8b792133d20..e7f063bf52fc9400f5450c9da1fd13cf93ab7cdb 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportBibo.js +++ b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportBibo.js @@ -1,15 +1,15 @@ var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); -$(document).ready(function() { +$(document).ready(function () { $('#student').val(student); $('#project').val(project); - $('#backLink').on('click', function(){ + $('#backLink').on('click', function () { location.href = "createReportOverview.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#forwardLink').on('click', function(){ + $('#forwardLink').on('click', function () { location.href = "researchReportResearch.jsp?token=" + student + "&projectId=" + project; return false; }); diff --git a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportConcept.js b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportConcept.js index f081bae605541728a5ca619aa6b5a8b792133d20..e7f063bf52fc9400f5450c9da1fd13cf93ab7cdb 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportConcept.js +++ b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportConcept.js @@ -1,15 +1,15 @@ var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); -$(document).ready(function() { +$(document).ready(function () { $('#student').val(student); $('#project').val(project); - $('#backLink').on('click', function(){ + $('#backLink').on('click', function () { location.href = "createReportOverview.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#forwardLink').on('click', function(){ + $('#forwardLink').on('click', function () { location.href = "researchReportResearch.jsp?token=" + student + "&projectId=" + project; return false; }); diff --git a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportDo.js b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportDo.js index f081bae605541728a5ca619aa6b5a8b792133d20..e7f063bf52fc9400f5450c9da1fd13cf93ab7cdb 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportDo.js +++ b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportDo.js @@ -1,15 +1,15 @@ var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); -$(document).ready(function() { +$(document).ready(function () { $('#student').val(student); $('#project').val(project); - $('#backLink').on('click', function(){ + $('#backLink').on('click', function () { location.href = "createReportOverview.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#forwardLink').on('click', function(){ + $('#forwardLink').on('click', function () { location.href = "researchReportResearch.jsp?token=" + student + "&projectId=" + project; return false; }); diff --git a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportEvaluation.js b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportEvaluation.js index f081bae605541728a5ca619aa6b5a8b792133d20..e7f063bf52fc9400f5450c9da1fd13cf93ab7cdb 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportEvaluation.js +++ b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportEvaluation.js @@ -1,15 +1,15 @@ var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); -$(document).ready(function() { +$(document).ready(function () { $('#student').val(student); $('#project').val(project); - $('#backLink').on('click', function(){ + $('#backLink').on('click', function () { location.href = "createReportOverview.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#forwardLink').on('click', function(){ + $('#forwardLink').on('click', function () { location.href = "researchReportResearch.jsp?token=" + student + "&projectId=" + project; return false; }); diff --git a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportMethod.js b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportMethod.js index f081bae605541728a5ca619aa6b5a8b792133d20..e7f063bf52fc9400f5450c9da1fd13cf93ab7cdb 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportMethod.js +++ b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportMethod.js @@ -1,15 +1,15 @@ var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); -$(document).ready(function() { +$(document).ready(function () { $('#student').val(student); $('#project').val(project); - $('#backLink').on('click', function(){ + $('#backLink').on('click', function () { location.href = "createReportOverview.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#forwardLink').on('click', function(){ + $('#forwardLink').on('click', function () { location.href = "researchReportResearch.jsp?token=" + student + "&projectId=" + project; return false; }); diff --git a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportOverview.js b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportOverview.js index 46d02dfecb3a3a02f7c83a92611f50696339229e..2eda3629b6afb198356a833020fd56dfe2a32e60 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportOverview.js +++ b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportOverview.js @@ -1,19 +1,19 @@ var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); -$(document).ready(function() { +$(document).ready(function () { $('#student').val(student); $('#project').val(project); - $('#uploader').on('click', function(){ - //location.href="create-title.jsp?token="+getUserTokenFromUrl(); - //boolean uploaded=true; - }); - $('#backLink').on('click', function(){ + $('#uploader').on('click', function () { + //location.href="create-title.jsp?token="+getUserTokenFromUrl(); + //boolean uploaded=true; + }); + $('#backLink').on('click', function () { location.href = "overview-student.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#forwardLink').on('click', function(){ + $('#forwardLink').on('click', function () { location.href = "create-title.jsp?token=" + student + "&projectId=" + project; return false; }); diff --git a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportProgress.js b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportProgress.js index b578bcfe01c1988fa1eb4db9653bc2eaf94ebe2f..ea147dc826ef6cd06230c4ca635571600faa092f 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportProgress.js +++ b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportProgress.js @@ -1,39 +1,39 @@ var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); -$(document).ready(function() { +$(document).ready(function () { $('#student').val(student); $('#project').val(project); - $('#title').on('click', function(){ + $('#title').on('click', function () { location.href = "create-title.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#recherche').on('click', function(){ + $('#recherche').on('click', function () { location.href = "create-research.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#bibo').on('click', function(){ + $('#bibo').on('click', function () { location.href = "create-bibliography.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#question').on('click', function(){ + $('#question').on('click', function () { location.href = "create-question.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#concept').on('click', function(){ + $('#concept').on('click', function () { location.href = "create-concept.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#method').on('click', function(){ + $('#method').on('click', function () { location.href = "create-method.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#reportDo').on('click', function(){ + $('#reportDo').on('click', function () { location.href = "create-process-description.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#evaluation').on('click', function(){ + $('#evaluation').on('click', function () { location.href = "create-evaluation.jsp?token=" + student + "&projectId=" + project; return false; }); diff --git a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportQuestion.js b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportQuestion.js index f081bae605541728a5ca619aa6b5a8b792133d20..e7f063bf52fc9400f5450c9da1fd13cf93ab7cdb 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportQuestion.js +++ b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportQuestion.js @@ -1,15 +1,15 @@ var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); -$(document).ready(function() { +$(document).ready(function () { $('#student').val(student); $('#project').val(project); - $('#backLink').on('click', function(){ + $('#backLink').on('click', function () { location.href = "createReportOverview.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#forwardLink').on('click', function(){ + $('#forwardLink').on('click', function () { location.href = "researchReportResearch.jsp?token=" + student + "&projectId=" + project; return false; }); diff --git a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportRecherche.js b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportRecherche.js index f081bae605541728a5ca619aa6b5a8b792133d20..e7f063bf52fc9400f5450c9da1fd13cf93ab7cdb 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportRecherche.js +++ b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportRecherche.js @@ -1,15 +1,15 @@ var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); -$(document).ready(function() { +$(document).ready(function () { $('#student').val(student); $('#project').val(project); - $('#backLink').on('click', function(){ + $('#backLink').on('click', function () { location.href = "createReportOverview.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#forwardLink').on('click', function(){ + $('#forwardLink').on('click', function () { location.href = "researchReportResearch.jsp?token=" + student + "&projectId=" + project; return false; }); diff --git a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportTitle.js b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportTitle.js index d158a2933ed6cd848caecf9035cc2c037050a207..8412428fa91696f805fc22edb1fe516601efc078 100644 --- a/gemeinsamforschen/src/main/webapp/researchReport/js/createReportTitle.js +++ b/gemeinsamforschen/src/main/webapp/researchReport/js/createReportTitle.js @@ -1,15 +1,15 @@ var student = getQueryVariable("token"); var project = getQueryVariable("projectId"); -$(document).ready(function() { +$(document).ready(function () { $('#student').val(student); $('#project').val(project); - $('#backLink').on('click', function(){ + $('#backLink').on('click', function () { location.href = "createReportOverview.jsp?token=" + student + "&projectId=" + project; return false; }); - $('#forwardLink').on('click', function(){ + $('#forwardLink').on('click', function () { location.href = "researchReportResearch.jsp?token=" + student + "&projectId=" + project; return false; }); diff --git a/gemeinsamforschen/src/main/webapp/session/session_example_1.jsp b/gemeinsamforschen/src/main/webapp/session/session_example_1.jsp index e1b81b465b971d6f33be838634b9a1f0a484f192..632037d5dfd78166df97af6395a39c1e357b3ac7 100644 --- a/gemeinsamforschen/src/main/webapp/session/session_example_1.jsp +++ b/gemeinsamforschen/src/main/webapp/session/session_example_1.jsp @@ -12,7 +12,7 @@ <title>Title</title> </head> <body> - <gf:session></gf:session> - <a href="session_example_2.jsp">click mich</a> +<gf:session></gf:session> +<a href="session_example_2.jsp">click mich</a> </body> </html> diff --git a/gemeinsamforschen/src/main/webapp/session/session_example_2.jsp b/gemeinsamforschen/src/main/webapp/session/session_example_2.jsp index 4e58d95d9b1c81aa9c3345c323c39e0f5f82d01e..01edb289c77cf5e803c81db26d9db57c14e7efc7 100644 --- a/gemeinsamforschen/src/main/webapp/session/session_example_2.jsp +++ b/gemeinsamforschen/src/main/webapp/session/session_example_2.jsp @@ -12,6 +12,6 @@ <title>Big Deal</title> </head> <body> - <gf:context/> +<gf:context/> </body> </html> diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql.orig b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql.orig deleted file mode 100644 index 503b1b82eada5064c0b20cb238f5b9ee6540cdfc..0000000000000000000000000000000000000000 --- a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql.orig +++ /dev/null @@ -1,260 +0,0 @@ -SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; -SET AUTOCOMMIT = 0; -START TRANSACTION; -SET time_zone = "+00:00"; - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; - - -<<<<<<< HEAD -CREATE TABLE `annotations` ( - `id` varchar(120) NOT NULL, - `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `userId` int(11) DEFAULT NULL, - `targetId` int(11) DEFAULT NULL, - `body` varchar(280) DEFAULT NULL, - `startCharacter` int(11) DEFAULT NULL, - `endCharacter` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE `answeredquiz` ( - `projectId` varchar(400) NOT NULL, - `studentId` varchar(400) NOT NULL, - `question` varchar(400) NOT NULL, - `correct` tinyint(4) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE `contributionrating` ( - `groupId` int(11) NOT NULL, - `fromPeer` varchar(400) NOT NULL, - `dossier` int(11) NOT NULL, - `research` int(11) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE `grades` ( - `projectId` varchar(400) NOT NULL, - `studentId` varchar(400) NOT NULL, - `grade` double NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE `groups` ( - `id` int(11) NOT NULL, - `projectId` varchar(400) NOT NULL, - `chatRoomId` varchar(400) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE `groupuser` ( - `studentId` varchar(400) NOT NULL, - `projectId` varchar(400) NOT NULL, - `groupId` int(11) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE `phasesselected` ( - `projectId` varchar(100) NOT NULL, - `phaseSelected` varchar(200) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE `profilepicture` ( - `studentId` varchar(200) NOT NULL, - `image` longblob NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE `projects` ( - `id` varchar(400) NOT NULL, - `password` varchar(400) NOT NULL, - `active` tinyint(1) NOT NULL, - `timecreated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `author` varchar(400) NOT NULL, - `adminPassword` varchar(400) NOT NULL, - `token` varchar(400) NOT NULL, - `phase` varchar(400) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE `projectuser` ( - `projectId` varchar(400) NOT NULL, - `userId` varchar(400) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE `quiz` ( - `studentId` varchar(400) NOT NULL, - `projectId` varchar(400) NOT NULL, - `question` varchar(400) NOT NULL, - `mcType` varchar(400) NOT NULL, - `answer` varchar(400) NOT NULL, - `correct` tinyint(1) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE `tags` ( - `projectId` varchar(400) NOT NULL, - `tag` varchar(400) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE `tasks` ( - `userId` varchar(400) NOT NULL, - `projectId` varchar(400) NOT NULL, - `taskUrl` varchar(400) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE `users` ( - `name` varchar(400) NOT NULL, - `password` varchar(200) NOT NULL, - `email` varchar(255) NOT NULL, - `token` varchar(800) NOT NULL, - `rocketChatId` varchar(400) NOT NULL, - `rocketChatAuthToken` varchar(800) NOT NULL, - `isStudent` tinyint(1) DEFAULT '1' -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE `workrating` ( - `projectId` varchar(400) NOT NULL, - `studentId` varchar(400) NOT NULL, - `fromPeer` varchar(400) NOT NULL, - `responsibility` int(11) NOT NULL, - `partOfWork` int(11) NOT NULL, - `cooperation` int(11) NOT NULL, - `communication` int(11) NOT NULL, - `autonomous` int(11) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -======= -USE `fltrail`; - -CREATE TABLE if not exists `projects` ( - `id` varchar(100) NOT NULL, - `password` varchar(400) NOT NULL, - `active` tinyint(1) NOT NULL, - `timecreated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP - ON UPDATE CURRENT_TIMESTAMP, - `author` varchar(400) NOT NULL, - `adminPassword` varchar(400) NOT NULL, - `token` varchar(400) NOT NULL, - `phase` varchar(400) NOT NULL - -)ENGINE = InnoDB DEFAULT CHARSET = utf8; - -CREATE TABLE if not exists `groups` ( - `id` int NOT NULL AUTO_INCREMENT, - `projectId` varchar(400) NOT NULL, - `chatRoomId` varchar(400) NOT NULL, - PRIMARY KEY (id) -) ENGINE = InnoDB DEFAULT CHARSET = utf8; - -CREATE TABLE if not exists groupuser ( - userEmail varchar(400) NOT NULL, - groupId int NOT NULL -) ENGINE = InnoDB DEFAULT CHARSET = utf8; - -CREATE TABLE if not exists `tags` ( - `projectId` varchar(100) NOT NULL, - `tag` varchar(400) NOT NULL -) ENGINE = InnoDB - DEFAULT CHARSET = utf8; - -CREATE TABLE if not exists `users` ( - `name` varchar(100) NOT NULL, - `password` varchar(200) NOT NULL, - `email` varchar(255) NOT NULL, - `token` varchar(800) NOT NULL, - `rocketChatId` varchar(400) NOT NULL, - `rocketChatAuthToken` varchar(800) NOT NULL, - `isStudent` TINYINT(1), - UNIQUE (email) - -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; - -CREATE TABLE if not exists projectuser ( - projectId varchar(100) NOT NULL, - userId varchar(100) NOT NULL -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; - -CREATE TABLE if not exists `annotations` ( - `id` varchar(120) NOT NULL, - `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP - ON UPDATE CURRENT_TIMESTAMP, - `userToken` varchar(120) DEFAULT NULL, - `targetId` int(11) DEFAULT NULL, - `title` varchar(120) DEFAULT NULL, - `comment` varchar(400) DEFAULT NULL, - `startCharacter` int(11) DEFAULT NULL, - `endCharacter` int(11) DEFAULT NULL, - PRIMARY KEY (`id`) -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; - -alter table users - add isStudent tinyint(1) default '1' null; - -CREATE TABLE if not exists quiz ( - author varchar(400) NOT NULL, - projectId varchar(400) NOT NULL, - question varchar(400) NOT NULL, - mcType varchar(400) NOT NULL, - answer varchar(400) NOT NULL, - correct tinyint(1) NOT NULL -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; - -CREATE TABLE if not exists tasks ( - userId varchar(400) NOT NULL, - projectId varchar(400) NOT NULL, - taskUrl varchar(400) NOT NULL -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; ->>>>>>> origin/#40_dummyProjectCreation - -ALTER TABLE `annotations` - ADD PRIMARY KEY (`id`); - -<<<<<<< HEAD -ALTER TABLE `groups` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `projectuser` - ADD KEY `projectId` (`projectId`(255),`userId`(255)); - -ALTER TABLE `users` - ADD UNIQUE KEY `email` (`email`); - -======= -CREATE TABLE if not exists phasesSelected ( - `projectId` varchar(100) NOT NULL, - phaseSelected varchar(200) NOT NULL -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; - -CREATE TABLE if not exists categoriesSelected ( - `projectId` varchar(100) NOT NULL, - categorySelected varchar(200) NOT NULL -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; - -CREATE TABLE if not exists groupfindingMechanismSelected ( - `projectId` varchar(100) NOT NULL, - gfmSelected varchar(200) NOT NULL -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; - -CREATE TABLE if not exists assessmentMechanismSelected ( - `projectId` varchar(100) NOT NULL, - amSelected varchar(200) NOT NULL -) - ENGINE = InnoDB - DEFAULT CHARSET = utf8; ->>>>>>> origin/#40_dummyProjectCreation - -ALTER TABLE `groups` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; -COMMIT; \ No newline at end of file diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/database/InMemoryMySqlConnect.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/database/InMemoryMySqlConnect.java new file mode 100644 index 0000000000000000000000000000000000000000..5d9a0488f2ef4a602f29cc11757f83a35375cf28 --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/database/InMemoryMySqlConnect.java @@ -0,0 +1,52 @@ +package unipotsdam.gf.core.database; + +import ch.vorburger.exec.ManagedProcessException; +import ch.vorburger.mariadb4j.DB; +import ch.vorburger.mariadb4j.DBConfigurationBuilder; +import org.apache.commons.dbutils.DbUtils; +import unipotsdam.gf.core.database.mysql.MysqlConnect; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Objects; + +public class InMemoryMySqlConnect extends MysqlConnect { + + public InMemoryMySqlConnect() { + connect(); + } + + private Connection getDatabaseConnection() throws ManagedProcessException, SQLException { + DBConfigurationBuilder config = DBConfigurationBuilder.newBuilder(); + // set port for testing statically + config.setPort(0); + DB db = DB.newEmbeddedDB(config.build()); + + db.start(); + db.source("database/fltrail.sql"); + + return DriverManager.getConnection(config.getURL("fltrail")); + + } + + @Override + public void connect() { + try { + if (Objects.isNull(conn)) { + conn = getDatabaseConnection(); + } + } catch (SQLException | ManagedProcessException e) { + DbUtils.closeQuietly(conn); + } + } + + @Override + public void close() { + // do nothing, because close shouldn't close inMemoryDatabase while tests are running, tearDown() replaces close in tests + } + + public void tearDown() { + super.close(); + } +} diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/group/GroupDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/group/GroupDAOTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6eacdade0a3b813f65b62aec8abd6bf5ddb4e870 --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/group/GroupDAOTest.java @@ -0,0 +1,75 @@ +package unipotsdam.gf.core.management.group; + +import org.junit.Before; +import org.junit.Test; +import uk.co.jemos.podam.api.PodamFactory; +import uk.co.jemos.podam.api.PodamFactoryImpl; +import unipotsdam.gf.core.database.InMemoryMySqlConnect; +import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.management.user.UserDAO; +import unipotsdam.gf.modules.groupfinding.service.GroupDAO; + +import java.util.Arrays; +import java.util.List; + +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasSize; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; + +public class GroupDAOTest { + + private InMemoryMySqlConnect inMemoryMySqlConnect; + private GroupDAO groupDAO; + private UserDAO userDAO; + private Group group; + + private PodamFactory factory = new PodamFactoryImpl(); + + @Before + public void setUp() { + inMemoryMySqlConnect = new InMemoryMySqlConnect(); + groupDAO = new GroupDAO(inMemoryMySqlConnect); + userDAO = new UserDAO(inMemoryMySqlConnect); + + User userStudent = new User("Student", "password", "testStudent@mail.com", "1", + "1", "1", true); + User userDocent = new User("Docent", "password", "testDocent@mail.com", + "1", "1", "1", false); + userDAO.persist(userStudent, null); + userDAO.persist(userDocent, null); + + group = new Group(Arrays.asList(userStudent, userDocent), "1", "1"); + } + + @Test + public void testExist() { + groupDAO.persist(group); + assertThat(groupDAO.exists(group), is(true)); + } + + @Test + public void testPersist() { + assertThat(groupDAO.exists(group), is(false)); + groupDAO.persist(group); + assertThat(groupDAO.exists(group), is(true)); + } + + @Test + public void testUpdate() { + groupDAO.persist(group); + assertThat(groupDAO.exists(group), is(true)); + Group groupWithId = groupDAO.getGroupsByProjectId(group.getProjectId()).get(0); + groupWithId.setChatRoomId("neu"); + groupDAO.update(groupWithId); + assertThat(groupDAO.exists(groupWithId), is(true)); + } + + @Test + public void testGetGroupsByProjectId() { + groupDAO.persist(group); + List<Group> groups = groupDAO.getGroupsByProjectId(group.getProjectId()); + assertThat(groups, hasSize(1)); + assertThat(groups.get(0), equalTo(group)); + } +} diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java new file mode 100644 index 0000000000000000000000000000000000000000..7f1c57fd97e892e8c9fb7b00330efc67c6746298 --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java @@ -0,0 +1,64 @@ +package unipotsdam.gf.core.management.project; + +import org.junit.Before; +import org.junit.Test; +import unipotsdam.gf.core.database.InMemoryMySqlConnect; +import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; + +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + +public class ProjectDAOTest { + + private InMemoryMySqlConnect inMemoryMySqlConnect; + private ProjectDAO projectDAO; + private Project project; + + @Before + public void setUp() { + inMemoryMySqlConnect = new InMemoryMySqlConnect(); + projectDAO = new ProjectDAO(inMemoryMySqlConnect); + project = new Project("Gemeinsam Forschen", "1235", true, "me", + "keins"); + } + + @Test + public void testPersist() { + projectDAO.persist(project); + inMemoryMySqlConnect.connect(); + String mysqlRequest = "SELECT * FROM projects where id = ? and adminPassword = ?"; + VereinfachtesResultSet vereinfachtesResultSet = + inMemoryMySqlConnect.issueSelectStatement(mysqlRequest, project.getId(), project.getAdminPassword()); + boolean result = vereinfachtesResultSet.next(); + assertThat(result, is(true)); + } + + @Test + public void testExists() { + projectDAO.persist(project); + assertThat(projectDAO.exists(project), is(true)); + } + + @Test + public void testDelete() { + projectDAO.persist(project); + assertThat(projectDAO.exists(project), is(true)); + + projectDAO.delete(project); + assertThat(projectDAO.exists(project), is(false)); + } + + @Test + public void testGetProjectById() { + projectDAO.persist(project); + Project projectActual = projectDAO.getProjectById(project.getId()); + + assertEquals(project.getAdminPassword(), projectActual.getAdminPassword()); + assertEquals(project.getAuthor(), projectActual.getAuthor()); + assertEquals(project.getId(), projectActual.getId()); + assertEquals(project.getPassword(), projectActual.getPassword()); + assertEquals(project.getPhase(), projectActual.getPhase()); + assertEquals(project.isActive(), projectActual.isActive()); + } +} diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/user/UserDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/user/UserDAOTest.java new file mode 100644 index 0000000000000000000000000000000000000000..be817dfdec142fc0cf008da588e1f51d49e74afb --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/user/UserDAOTest.java @@ -0,0 +1,95 @@ +package unipotsdam.gf.core.management.user; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import unipotsdam.gf.core.database.InMemoryMySqlConnect; +import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.util.TestHelper; + +import java.util.List; + +import static org.hamcrest.Matchers.hasSize; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; + +public class UserDAOTest { + + private InMemoryMySqlConnect inMemoryMySqlConnect; + + @Before + public void setUp() { + inMemoryMySqlConnect = new InMemoryMySqlConnect(); + } + + @After + public void tearDown() { + inMemoryMySqlConnect.tearDown(); + } + + @Test + public void testGetUsersByProjectId() { + ManagementImpl management = TestHelper.getManagementImpl(inMemoryMySqlConnect); + + User user = new User("julian", "1234", "from@stuff.com", false); + management.create(user, new UserProfile()); + assert management.exists(user); + + + Project project = new Project("Gemeinsam Forschen", "1235", true, "me", "keins"); + management.create(project); + management.register(user, project, null); + + assertTrue(management.exists(project)); + + User user2 = new User("julian2", "12345", "from2@stuff.com", true); + management.create(user2, new UserProfile()); + management.register(user2, project, null); + assert management.exists(user2); + + UserDAO userDAO = new UserDAO(inMemoryMySqlConnect); + List<User> users = userDAO.getUsersByProjectId(project.getId()); + assert users != null; + assert !users.isEmpty(); + assertThat(users, hasSize(2)); + } + + @Test + public void testExists() { + UserDAO userDAO = new UserDAO(inMemoryMySqlConnect); + User user = new User("julian", "1234", "from1123123123@stuff.com", true); + assert !userDAO.exists(user); + } + + @Test + public void testPersist() { + UserDAO userDAO = new UserDAO(inMemoryMySqlConnect); + User user = new User("julian", "1234", "from@stuff.com", false); + userDAO.persist(user, new UserProfile()); + assert userDAO.exists(user); + } + + @Test + public void testUpdateUser() { + UserDAO userDAO = new UserDAO(inMemoryMySqlConnect); + User user = new User("julian", "1234", "testUpdateUser@stuff.com", true); + user.setToken("abc"); + userDAO.persist(user, new UserProfile()); + assertTrue(userDAO.exists(user)); + + user.setStudent(false); + userDAO.update(user); + assertTrue(userDAO.exists(user)); + User managementUser = userDAO.getUserByToken(user.getToken()); + assertEquals(user.getStudent(), managementUser.getStudent()); + } + + @Test + public void testDelete() { + + } + + +} diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java index 284258c144cf54efabc89250533c0573edcd4e43..0fd6c42292d14a1b16f7aff2d1e8f4c103dec7db 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java @@ -25,14 +25,14 @@ import unipotsdam.gf.modules.peer2peerfeedback.Category; import unipotsdam.gf.modules.peer2peerfeedback.peerfeedback.Model.Peer2PeerFeedback; import unipotsdam.gf.modules.researchreport.ResearchReport; import unipotsdam.gf.modules.researchreport.ResearchReportManagement; + import javax.inject.Inject; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import static org.mockito.Mockito.verify; @@ -232,7 +232,7 @@ public class ActivityFlowTest { verify(feedback).assigningMissingFeedbackTasks(project); // assert that everybody has given and received mockfeedback - assertTrue(feedback.checkFeedbackConstraints(project)); + assertEquals(0, feedback.checkFeedbackConstraints(project).size()); // docent finishes phase phases.endPhase(ProjectPhase.DossierFeedback, project); diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java index 9fbce54234111c240d671b9fb5e6ea7443201dda..ff18fe4cf81220c5c3ca847c522314328e4e58d2 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java @@ -1,26 +1,17 @@ package unipotsdam.gf.interfaces; -import javafx.application.Application; -import org.glassfish.hk2.api.ServiceLocator; -import org.glassfish.hk2.utilities.Binder; -import org.glassfish.hk2.utilities.ServiceLocatorUtilities; -import org.glassfish.jersey.server.ResourceConfig; -import org.glassfish.jersey.test.JerseyTest; import org.junit.Before; import org.junit.Test; import uk.co.jemos.podam.api.PodamFactory; import uk.co.jemos.podam.api.PodamFactoryImpl; -import unipotsdam.gf.config.GFApplicationBinder; -import unipotsdam.gf.config.GFResourceConfig; import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.project.ProjectConfiguration; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.core.management.user.UserProfile; +import unipotsdam.gf.util.TestHelper; -import java.util.List; - -import static org.junit.Assert.*; +import static org.junit.Assert.assertNotNull; /** * Created by dehne on 01.06.2018. @@ -29,52 +20,19 @@ import static org.junit.Assert.*; public class ManagementTest { - /** * Utility to creaty dummy data for students */ - PodamFactory factory = new PodamFactoryImpl(); - - - @Test - public void testDelete() { - - } - - /** - * CREATE a user in the DB using the - */ - @Test - public void testExists() { - ManagementImpl management = new ManagementImpl(); - User user = new User("julian", "1234", "from1123123123@stuff.com", true); - assert !management.exists(user); - } - - /** - * CREATE a user in the DB using the - */ - @Test - public void testCreate() { - ManagementImpl management = new ManagementImpl(); - User user = new User("julian", "1234", "from@stuff.com", false); - management.create(user, new UserProfile()); - assert management.exists(user); - } - - /** - * Test creating a user in the DB - */ - @Test - public void testCreate1() { - ManagementImpl management = new ManagementImpl(); - management.create(new Project("Gemainsam Forschen", "1235", true, "me", "keins")); + private PodamFactory factory = new PodamFactoryImpl(); + private ManagementImpl management; + @Before + public void setUp() throws Exception { + management = TestHelper.getManagementImpl(); } @Test public void testRegister() { - ManagementImpl management = new ManagementImpl(); User user = new User("julian", "1234", "from@stuff.com", true); management.create(user, new UserProfile()); assert management.exists(user); @@ -84,50 +42,11 @@ public class ManagementTest { management.register(user, project, null); } - @Test - public void testUpdateUser() { - ManagementImpl management = new ManagementImpl(); - User user = new User("julian", "1234", "testUpdateUser@stuff.com", true); - user.setToken("abc"); - management.create(user, new UserProfile()); - assertTrue(management.exists(user)); - - user.setStudent(false); - management.update(user); - assertTrue(management.exists(user)); - User managementUser = management.getUserByToken(user.getToken()); - assertEquals(user.getStudent(), managementUser.getStudent()); - } - - @Test - public void testGetUsers() { - ManagementImpl management = new ManagementImpl(); - User user = new User("julian", "1234", "from@stuff.com", false); - management.create(user, new UserProfile()); - assert management.exists(user); - - Project project = new Project("Gemainsam Forschen", "1235", true, "me", "keins"); - management.create(project); - management.register(user, project, null); - - assertTrue(management.exists(project)); - - User user2 = new User("julian2", "12345", "from2@stuff.com", true); - management.create(user2, new UserProfile()); - assert management.exists(user2); - - List<User> users = management.getUsers(project); - assert users != null; - assert !users.isEmpty(); - - } - @Test public void testProjectConfiguration() { ProjectConfiguration projectConfiguration = factory.manufacturePojo(ProjectConfiguration.class); Project project = factory.manufacturePojo(Project.class); - ManagementImpl management = new ManagementImpl(); management.create(projectConfiguration, project); ProjectConfiguration projectConfiguration1 = management.getProjectConfiguration(project); diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java index fa948cc8054747957ec225561db6bcf8e2ecea1e..b70df0f1ce8dc2aa7dfd6b44c72af4392f0ed0c2 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java @@ -11,6 +11,8 @@ import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.core.management.user.UserProfile; import unipotsdam.gf.core.states.model.ProjectPhase; +import unipotsdam.gf.util.TestHelper; + import javax.inject.Inject; public class PhaseTest { @@ -27,7 +29,7 @@ public class PhaseTest { @BeforeClass public static void prepareProject() { - ManagementImpl management = new ManagementImpl(); + ManagementImpl management = TestHelper.getManagementImpl(); User user = new User("julian", "1234", "from@stuff.com", false); management.create(user, new UserProfile()); assert management.exists(user); diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java index 1b13a03bcf124f3a2edb682104bce1e56a19bd7b..04ee86cb1815e127f48ad94af326e36805513b13 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java @@ -4,15 +4,17 @@ import org.junit.Test; import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; import unipotsdam.gf.interfaces.IPeerAssessment; -import unipotsdam.gf.modules.assessment.controller.model.*; +import unipotsdam.gf.modules.assessment.controller.model.GroupEvalDataDatasets; +import unipotsdam.gf.modules.assessment.controller.model.GroupEvalDataList; +import unipotsdam.gf.modules.assessment.controller.model.Quiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentAndQuiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.assessment.controller.service.FBAssessement; import unipotsdam.gf.modules.assessment.controller.service.PeerAssessment; import java.util.ArrayList; import java.util.HashMap; import java.util.List; - -import static javax.swing.UIManager.getString; import java.util.Map; public class TestAddAssessment { @@ -23,7 +25,7 @@ public class TestAddAssessment { private String quizId = "Whats a good Test?"; @Test - public void createQuiz(){ + public void createQuiz() { StudentAndQuiz studentAndQuiz = new StudentAndQuiz(); StudentIdentifier student = new StudentIdentifier(projectId, studentId); studentAndQuiz.setStudentIdentifier(student); @@ -45,17 +47,17 @@ public class TestAddAssessment { } @Test - public void getAllQuizzesInProject(){ + public void getAllQuizzesInProject() { peer.getQuiz(projectId); } @Test - public void getQuiz(){ + public void getQuiz() { peer.getQuiz(projectId, quizId, studentId); } @Test - public void answerQuiz(){ + public void answerQuiz() { Map<String, List<String>> questions = new HashMap<>(); StudentIdentifier student = new StudentIdentifier(projectId, studentId); List<String> answers = new ArrayList<>(); @@ -67,7 +69,7 @@ public class TestAddAssessment { } @Test - public void deleteQuiz(){ + public void deleteQuiz() { peer.deleteQuiz(quizId); } @@ -90,11 +92,12 @@ public class TestAddAssessment { //Assessment assessment = new Assessment(student, performance); //iPeerAssessment.addAssessmentDataToDB(assessment); } + @Test - public void meanOfAssessments(){ - double Ergebnis=0.0; - double zwischenErgebnis=0.0; - double counter=0.0; + public void meanOfAssessments() { + double Ergebnis = 0.0; + double zwischenErgebnis = 0.0; + double counter = 0.0; List<Double> results = new ArrayList<>(); MysqlConnect connect = new MysqlConnect(); @@ -102,47 +105,48 @@ public class TestAddAssessment { String mysqlRequest = "SELECT * FROM `assessments` WHERE `empfaengerId`=? AND `projektId`=?"; String test = "fgnxn"; String test2 = "projekt"; - VereinfachtesResultSet ausgabe = connect.issueSelectStatement(mysqlRequest,test, test2); - while (ausgabe.next()){ + VereinfachtesResultSet ausgabe = connect.issueSelectStatement(mysqlRequest, test, test2); + while (ausgabe.next()) { counter++; - zwischenErgebnis=zwischenErgebnis+ausgabe.getInt("bewertung"); + zwischenErgebnis = zwischenErgebnis + ausgabe.getInt("bewertung"); results.add((double) ausgabe.getInt("bewertung")); } - results.add(zwischenErgebnis/counter); + results.add(zwischenErgebnis / counter); System.out.println(results); //Integer bewertung = ausgabe.getInt("bewertung"); connect.close(); } + @Test - public void groupDatafromDB(){ + public void groupDatafromDB() { MysqlConnect connect = new MysqlConnect(); - List<String> userNamen=new ArrayList<>(); + List<String> userNamen = new ArrayList<>(); GroupEvalDataDatasets datenSaetze = new GroupEvalDataDatasets(); GroupEvalDataList datenDia = new GroupEvalDataList(); connect.connect(); String mysqlRequestGroupuser = "SELECT * FROM `groupuser` WHERE `groupId`=? "; - VereinfachtesResultSet namenDerUser = connect.issueSelectStatement(mysqlRequestGroupuser,3); - int[] bewertungenZwischen=new int[10]; - while (namenDerUser.next()){ + VereinfachtesResultSet namenDerUser = connect.issueSelectStatement(mysqlRequestGroupuser, 3); + int[] bewertungenZwischen = new int[10]; + while (namenDerUser.next()) { userNamen.add(namenDerUser.getString("userEmail")); } - for (int i=0;i<userNamen.size();i++){ + for (int i = 0; i < userNamen.size(); i++) { String mysqlRequestAssessment = "SELECT * FROM `assessments` WHERE `empfaengerId`=?"; - VereinfachtesResultSet bewertungDerUser = connect.issueSelectStatement(mysqlRequestAssessment,userNamen.get(i)); + VereinfachtesResultSet bewertungDerUser = connect.issueSelectStatement(mysqlRequestAssessment, userNamen.get(i)); while (bewertungDerUser.next()) { //bewertungenZwischen.add(bewertungDerUser.getInt("bewertung")); System.out.println("Hass"); - } + } datenSaetze.setData(bewertungenZwischen); //datenSaetze.setLabel(userNamen.get(i)); datenDia.appendDataSet(datenSaetze); System.out.println(datenSaetze.getData()); System.out.println(datenSaetze.getLabel()); - } + } connect.close(); } diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java.orig b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java.orig deleted file mode 100644 index 9551fecdd8a1ff851d2613269ab51347f7b791cc..0000000000000000000000000000000000000000 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java.orig +++ /dev/null @@ -1,156 +0,0 @@ -package unipotsdam.gf.modules.assessment; - -import org.junit.Test; -import unipotsdam.gf.core.database.mysql.MysqlConnect; -import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; -import unipotsdam.gf.interfaces.IPeerAssessment; -import unipotsdam.gf.modules.assessment.controller.model.*; -import unipotsdam.gf.modules.assessment.controller.service.FBAssessement; -<<<<<<< HEAD -import unipotsdam.gf.modules.assessment.controller.service.PeerAssessment; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -======= - -import java.util.ArrayList; -import java.util.List; - -import static javax.swing.UIManager.getString; ->>>>>>> origin/PeerAssessmentChristian_2 - -public class TestAddAssessment { - - private IPeerAssessment peer = new PeerAssessment(); - private String studentId = "Kevin"; - private String projectId = "test a la test"; - private String quizId = "Whats a good Test?"; - - @Test - public void createQuiz(){ - StudentAndQuiz studentAndQuiz = new StudentAndQuiz(); - StudentIdentifier student = new StudentIdentifier(projectId, studentId); - studentAndQuiz.setStudentIdentifier(student); - Quiz quiz = new Quiz(); - ArrayList<String> correctAnswers = new ArrayList<>(); - correctAnswers.add("1"); - correctAnswers.add("2"); - correctAnswers.add("3"); - ArrayList<String> incorrectAnswers = new ArrayList<>(); - incorrectAnswers.add("4"); - incorrectAnswers.add("5"); - incorrectAnswers.add("6"); - quiz.setQuestion(quizId); - quiz.setIncorrectAnswers(incorrectAnswers); - quiz.setType("mc"); - quiz.setCorrectAnswers(correctAnswers); - studentAndQuiz.setQuiz(quiz); - peer.createQuiz(studentAndQuiz); - } - - @Test - public void getAllQuizzesInProject(){ - peer.getQuiz(projectId); - } - - @Test - public void getQuiz(){ - peer.getQuiz(projectId, quizId, studentId); - } - - @Test - public void answerQuiz(){ - Map<String, List<String>> questions = new HashMap<>(); - StudentIdentifier student = new StudentIdentifier(projectId, studentId); - List<String> answers = new ArrayList<>(); - answers.add("1"); - answers.add("2"); - answers.add("3"); - questions.put(quizId, answers); - peer.answerQuiz(questions, student); - } - - @Test - public void deleteQuiz(){ - peer.deleteQuiz(quizId); - } - - @Test - public void addTestAssessment() { - IPeerAssessment iPeerAssessment = new FBAssessement(); - int [] quizAnswers = new int[5]; - quizAnswers[0] = 0; - quizAnswers[1] = 1; - quizAnswers[2] = 0; - quizAnswers[3] = 1; - quizAnswers[4] = 1; - int [] workRating = new int[3]; - workRating[0] = 5; //Führungsqualität - workRating[1] = 1; //Pünktlichkeit - workRating[2] = 4; //Hilfsbereitschaft oder so - - StudentIdentifier student = new StudentIdentifier("Spaß", "Haralf"); - //Performance performance = new Performance(student, quizAnswers,"so ein toller Typ", workRating); - //Assessment assessment = new Assessment(student, performance); - //iPeerAssessment.addAssessmentDataToDB(assessment); - } - @Test - public void meanOfAssessments(){ - double Ergebnis=0.0; - double zwischenErgebnis=0.0; - double counter=0.0; - List<Double> results = new ArrayList<>(); - MysqlConnect connect = new MysqlConnect(); - - connect.connect(); - String mysqlRequest = "SELECT * FROM `assessments` WHERE `empfaengerId`=? AND `projektId`=?"; - String test = "fgnxn"; - String test2 = "projekt"; - VereinfachtesResultSet ausgabe = connect.issueSelectStatement(mysqlRequest,test, test2); - while (ausgabe.next()){ - counter++; - zwischenErgebnis=zwischenErgebnis+ausgabe.getInt("bewertung"); - results.add((double) ausgabe.getInt("bewertung")); - } - results.add(zwischenErgebnis/counter); - System.out.println(results); - //Integer bewertung = ausgabe.getInt("bewertung"); - connect.close(); - } - @Test - public void groupDatafromDB(){ - MysqlConnect connect = new MysqlConnect(); - List<String> userNamen=new ArrayList<>(); - GroupEvalDataDatasets datenSaetze = new GroupEvalDataDatasets(); - GroupEvalDataList datenDia = new GroupEvalDataList(); - connect.connect(); - - String mysqlRequestGroupuser = "SELECT * FROM `groupuser` WHERE `groupId`=? "; - - VereinfachtesResultSet namenDerUser = connect.issueSelectStatement(mysqlRequestGroupuser,3); - int[] bewertungenZwischen=new int[10]; - while (namenDerUser.next()){ - userNamen.add(namenDerUser.getString("userEmail")); - } - for (int i=0;i<userNamen.size();i++){ - String mysqlRequestAssessment = "SELECT * FROM `assessments` WHERE `empfaengerId`=?"; - VereinfachtesResultSet bewertungDerUser = connect.issueSelectStatement(mysqlRequestAssessment,userNamen.get(i)); - - while (bewertungDerUser.next()) { - //bewertungenZwischen.add(bewertungDerUser.getInt("bewertung")); - System.out.println("Hass"); - } - datenSaetze.setData(bewertungenZwischen); - //datenSaetze.setLabel(userNamen.get(i)); - datenDia.appendDataSet(datenSaetze); - System.out.println(datenSaetze.getData()); - System.out.println(datenSaetze.getLabel()); - - } - connect.close(); - } - - -} diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationServiceTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationServiceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..07b517ef6fd8ec65eb742b9b5cda97277a32b629 --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationServiceTest.java @@ -0,0 +1,48 @@ +package unipotsdam.gf.modules.groupfinding.dummy.service; + +import org.junit.Test; +import unipotsdam.gf.core.database.InMemoryMySqlConnect; +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.project.ProjectDAO; +import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.management.user.UserDAO; +import unipotsdam.gf.interfaces.ICommunication; +import unipotsdam.gf.modules.communication.service.CommunicationDummyService; +import unipotsdam.gf.modules.groupfinding.service.GroupDAO; +import unipotsdam.gf.util.TestHelper; + +import java.util.List; + +import static org.junit.Assert.assertTrue; + +public class DummyProjectCreationServiceTest { + + @Test + public void testCreateExampleProject() { + ICommunication communication = new CommunicationDummyService(); + InMemoryMySqlConnect inMemoryMySqlConnect = new InMemoryMySqlConnect(); + Management management = TestHelper.getManagementImpl(inMemoryMySqlConnect); + GroupDAO groupDAO = new GroupDAO(inMemoryMySqlConnect); + UserDAO userDAO = new UserDAO(inMemoryMySqlConnect); + + DummyProjectCreationService dummyProjectCreationService = new DummyProjectCreationService(communication, management, groupDAO, userDAO); + + dummyProjectCreationService.createExampleProject(); + + User docentUser = dummyProjectCreationService.getDocentUser(); + assertTrue(userDAO.exists(docentUser)); + + ProjectDAO projectDAO = new ProjectDAO(inMemoryMySqlConnect); + Project project = new Project("1", "password", true, docentUser.getEmail(), "admin"); + assertTrue(projectDAO.exists(project)); + + List<Group> dummyGroups = dummyProjectCreationService.createDummyGroups(project.getId()); + dummyGroups.forEach(group -> group.setChatRoomId("1")); + dummyGroups.forEach(group -> { + assertTrue(groupDAO.exists(group)); + group.getMembers().forEach(user -> assertTrue(userDAO.exists(user))); + }); + } +} diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java index d7d201f69c8a72f99538b3ba56cf9a3c32947891..e429d35fe73afde493debb0311b96949538b12b2 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java @@ -13,7 +13,9 @@ import unipotsdam.gf.modules.peer2peerfeedback.Category; import java.util.ArrayList; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; public class JournalDAOImplTest { diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java index bcc98003103ad7c5d13e95336266e32b67657595..601245c3b77e470a3edcb45c428cf60e97b1c947 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java @@ -9,7 +9,9 @@ import unipotsdam.gf.modules.journal.model.ProjectDescription; import java.util.ArrayList; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; public class ProjectDescriptionImplDAOTest { @@ -172,7 +174,7 @@ public class ProjectDescriptionImplDAOTest { ArrayList<String> resultDescriptions = descriptionDAO.getOpenDescriptions(project); assertEquals(2, resultDescriptions.size()); - cleanup("-1","-2","-3"); + cleanup("-1", "-2", "-3"); connection.close(); } diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java index 05ce97fb48f7880edf0b40c40b79be515661bc81..936830acb3b6f4bfb1e1c70a2f7279291306fcc8 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java @@ -2,10 +2,10 @@ package unipotsdam.gf.modules.journal.service; import org.junit.After; import org.junit.Test; -import unipotsdam.gf.core.management.Management; -import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.management.user.UserDAO; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.journal.model.Journal; import unipotsdam.gf.modules.journal.model.Visibility; @@ -15,7 +15,10 @@ import unipotsdam.gf.modules.peer2peerfeedback.Category; import java.util.ArrayList; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; public class JournalServiceImplTest { @@ -28,7 +31,7 @@ public class JournalServiceImplTest { private final Journal testJournal = new Journal(testId, new StudentIdentifier(testProject, testStudent), testEntry, testVisibility, testCategory); private JournalService journalService = new JournalServiceImpl(); private JournalDAO journalDAO = new JournalDAOImpl(); - private Management management = new ManagementImpl(); + private UserDAO userDAO = new UserDAO(new MysqlConnect()); @After public void cleanUp() { @@ -104,7 +107,7 @@ public class JournalServiceImplTest { public void saveJournal() { //Create new - journalService.saveJournal("0",testStudent,testProject,testEntry,testVisibility.toString(),testVisibility.toString()); + journalService.saveJournal("0", testStudent, testProject, testEntry, testVisibility.toString(), testVisibility.toString()); String journalID = journalDAO.getAllByProject(testProject, testStudent).get(0).getId(); @@ -122,7 +125,7 @@ public class JournalServiceImplTest { //Update - journalService.saveJournal(journalID,testStudent,testProject,testEntry+testEntry,Visibility.MINE.toString(),Category.AUSWERTUNG.toString()); + journalService.saveJournal(journalID, testStudent, testProject, testEntry + testEntry, Visibility.MINE.toString(), Category.AUSWERTUNG.toString()); resultJournal = journalDAO.getJournal(journalID); @@ -130,7 +133,7 @@ public class JournalServiceImplTest { assertEquals(resultJournal.getStudentIdentifier().getStudentId(), testStudent); assertEquals(resultJournal.getStudentIdentifier().getProjectId(), testProject); - assertEquals(resultJournal.getEntryMD(), testEntry+testEntry); + assertEquals(resultJournal.getEntryMD(), testEntry + testEntry); assertEquals(resultJournal.getId(), journalID); assertEquals(resultJournal.getVisibility(), Visibility.MINE); assertEquals(resultJournal.getCategory(), Category.AUSWERTUNG); @@ -179,15 +182,15 @@ public class JournalServiceImplTest { journalDAO.createJournal(testJournal); journalDAO.createJournal(testJournal); - ArrayList<Journal> resultJournals = journalDAO.getAllByProject(testProject,testStudent); + ArrayList<Journal> resultJournals = journalDAO.getAllByProject(testProject, testStudent); - assertFalse(journalService.checkIfAllJournalClosed(project)); + assertEquals(0, journalService.checkIfAllJournalClosed(project).size()); - for(Journal j : resultJournals){ + for (Journal j : resultJournals) { journalDAO.closeJournal(j.getId()); } - assertTrue(journalService.checkIfAllJournalClosed(project)); + assertEquals(0, journalService.checkIfAllJournalClosed(project).size()); } @@ -195,7 +198,7 @@ public class JournalServiceImplTest { public void getOpenUserByProject() { User user = new User("Test", "Test", "test@test.de", true); - String token = management.getUserToken(user); + String token = userDAO.getUserToken(user); Project project = new Project(); @@ -206,7 +209,7 @@ public class JournalServiceImplTest { ArrayList<User> resultUsers = journalService.getOpenUserByProject(project); - assertEquals(1,resultUsers.size()); - assertEquals(user.getEmail(),resultUsers.get(0).getId()); + assertEquals(1, resultUsers.size()); + assertEquals(user.getEmail(), resultUsers.get(0).getId()); } } \ No newline at end of file diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java index 66b84406055c680e3c314354ec6897e9126eff5e..4669f793a824701a66aa759b4c12b54ac47e45e9 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java @@ -2,10 +2,10 @@ package unipotsdam.gf.modules.journal.service; import org.junit.After; import org.junit.Test; -import unipotsdam.gf.core.management.Management; -import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.management.user.UserDAO; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import unipotsdam.gf.modules.journal.model.Link; import unipotsdam.gf.modules.journal.model.ProjectDescription; @@ -16,7 +16,10 @@ import unipotsdam.gf.modules.journal.model.dao.ProjectDescriptionDAOImpl; import java.util.ArrayList; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; public class ProjectDescriptionImplTest { @@ -24,7 +27,7 @@ public class ProjectDescriptionImplTest { private ProjectDescriptionDAO descriptionDAO = new ProjectDescriptionDAOImpl(); private LinkDAO linkDAO = new LinkDAOImpl(); - private Management management = new ManagementImpl(); + private UserDAO userDAO = new UserDAO(new MysqlConnect()); private String testId = "-1"; private String testStudent = "testStudent"; @@ -172,20 +175,20 @@ public class ProjectDescriptionImplTest { Project project = new Project(); project.setId(testProject); - assertFalse(projectDescriptionService.checkIfAllDescriptionsClosed(project)); + assertEquals(0, projectDescriptionService.checkIfAllDescriptionsClosed(project).size()); ProjectDescription resDescription = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent)); descriptionDAO.closeDescription(resDescription.getId()); - assertTrue(projectDescriptionService.checkIfAllDescriptionsClosed(project)); + assertEquals(0,projectDescriptionService.checkIfAllDescriptionsClosed(project).size()); } @Test public void getOpenUserByProject() { User user = new User("Test", "Test", "test@test.de", true); - String token = management.getUserToken(user); + String token = userDAO.getUserToken(user); Project project = new Project(); project.setId(testProject); diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/peerassessment/HashMapTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/peerassessment/HashMapTest.java index 1252c6ae0db6e157e1808d3a697f212fda240bfc..55ed9428338e0f5c7be89b8bb4e785f8da313c1d 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/peerassessment/HashMapTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/peerassessment/HashMapTest.java @@ -4,7 +4,12 @@ import org.junit.Test; import unipotsdam.gf.modules.assessment.controller.model.Performance; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; -import java.util.*; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; public class HashMapTest { @@ -61,23 +66,23 @@ public class HashMapTest { } Map<String, Double> meanWorkRating = new HashMap<>(meanOfWorkRatings(oneExcludedMeans)); ArrayList<Map<String, Double>> elementwiseDeviation = new ArrayList<>(); - for (Map<String, Double> rating: oneExcludedMeans){ + for (Map<String, Double> rating : oneExcludedMeans) { HashMap<String, Double> shuttle = new HashMap<>(); - for (String key: rating.keySet()){ - Double value = (rating.get(key)-meanWorkRating.get(key))*(rating.get(key)-meanWorkRating.get(key)); + for (String key : rating.keySet()) { + Double value = (rating.get(key) - meanWorkRating.get(key)) * (rating.get(key) - meanWorkRating.get(key)); shuttle.put(key, value); } elementwiseDeviation.add(shuttle); } - Double deviationOld=0.; - Integer key=0; - for (Integer i=0; i<elementwiseDeviation.size(); i++){ - Double deviationNew=0.; - for (Double devi: elementwiseDeviation.get(i).values()){ + Double deviationOld = 0.; + Integer key = 0; + for (Integer i = 0; i < elementwiseDeviation.size(); i++) { + Double deviationNew = 0.; + for (Double devi : elementwiseDeviation.get(i).values()) { deviationNew += devi; } - if (deviationNew>deviationOld){ - deviationOld=deviationNew; + if (deviationNew > deviationOld) { + deviationOld = deviationNew; key = i; } } diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/util/TestHelper.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/util/TestHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..e3fbe7c69f3a8573b72212ba8bd9fc814cab9f79 --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/util/TestHelper.java @@ -0,0 +1,23 @@ +package unipotsdam.gf.util; + +import unipotsdam.gf.core.database.InMemoryMySqlConnect; +import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.management.project.ProjectDAO; +import unipotsdam.gf.core.management.user.UserDAO; +import unipotsdam.gf.modules.groupfinding.service.GroupDAO; + +public class TestHelper { + + public static ManagementImpl getManagementImpl() { + InMemoryMySqlConnect connect = new InMemoryMySqlConnect(); + return getManagementImpl(connect); + } + + public static ManagementImpl getManagementImpl(InMemoryMySqlConnect connect) { + UserDAO userDAO = new UserDAO(connect); + GroupDAO groupDAO = new GroupDAO(connect); + ProjectDAO projectDAO = new ProjectDAO(connect); + + return new ManagementImpl(userDAO, groupDAO, projectDAO, connect); + } +} diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql b/gemeinsamforschen/src/test/resources/database/fltrail.sql similarity index 95% rename from gemeinsamforschen/src/scripts/dbschema/fltrail.sql rename to gemeinsamforschen/src/test/resources/database/fltrail.sql index 062476e03983706cdbc49fa9fd997c1f5a6534bf..0aa37e4eb98d3802d4a1d7e2a50b120e3d12ae80 100644 --- a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql +++ b/gemeinsamforschen/src/test/resources/database/fltrail.sql @@ -3,12 +3,8 @@ SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; - - +CREATE DATABASE IF NOT EXISTS `fltrail`; +USE fltrail; CREATE TABLE if not exists `annotations` ( `id` varchar(120) NOT NULL, `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, diff --git a/gemeinsamforschen/src/test/resources/log4j2.xml b/gemeinsamforschen/src/test/resources/log4j2.xml new file mode 100644 index 0000000000000000000000000000000000000000..0ebedf9efc442970827512c6beb2fa3983fbbbb0 --- /dev/null +++ b/gemeinsamforschen/src/test/resources/log4j2.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Configuration status="WARN"> + <Appenders> + <Console name="Console" target="SYSTEM_OUT"> + <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%level] %logger{35} - %msg%n"/> + </Console> + </Appenders> + <Loggers> + <Root level="ERROR"> + <AppenderRef ref="Console"/> + </Root> + </Loggers> +</Configuration> \ No newline at end of file