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

started implementing state rules

parent 0e6a32a0
No related branches found
No related tags found
No related merge requests found
Showing
with 218 additions and 3 deletions
......@@ -7,6 +7,7 @@ import unipotsdam.gf.core.management.project.Project;
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.ProjectPhase;
import unipotsdam.gf.modules.assessment.controller.model.Quiz;
import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
......@@ -56,11 +57,12 @@ public class ManagementImpl implements Management {
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`) values (?,?,?,?,?,?,?)";
+ "`adminPassword`, `token`, `phase`) values (?,?,?,?,?,?,?,?)";
connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), project.getPassword(), project.isActive(),
project.getTimecreated(), project.getAuthor(), project.getAdminPassword(), token);
connect.close();
......@@ -162,6 +164,7 @@ public class ManagementImpl implements Management {
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);
}
......@@ -173,6 +176,7 @@ public class ManagementImpl implements Management {
// TODO: determine how to get all User
return new Group(id, new ArrayList<>(), projectId, chatRoomId);
}
@Override
public String getUserToken(User user) {
MysqlConnect connect = new MysqlConnect();
......@@ -200,6 +204,13 @@ public class ManagementImpl implements Management {
return getUserByField("email", email);
}
/**
* 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();
......
package unipotsdam.gf.core.management.project;
import unipotsdam.gf.core.states.ProjectPhase;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.ZoneId;
......@@ -16,6 +18,8 @@ public class Project {
private String author;
private String adminPassword;
private String token;
// using enum ProjectPhase
private String phase;
public Project() {
}
......@@ -26,8 +30,21 @@ public class Project {
this.active = active;
this.author = author;
this.adminPassword = adminPassword;
this.timecreated = Timestamp.valueOf(LocalDateTime.now(ZoneId.of("UTC")));
// default starting at course creation if new
this.setPhase(ProjectPhase.CourseCreationPhase);
}
public String getPhase() {
return phase;
}
/**
* setting phase only with enum
* @param phase
*/
public void setPhase(ProjectPhase phase) {
this.phase = phase.name();
}
public Project(String id, String password, Boolean active, String author, String adminPassword, String token) {
......
package unipotsdam.gf.core.states;
import unipotsdam.gf.core.management.user.User;
public class DosserUploadTask extends Task {
public DosserUploadTask(User owner) {
super(owner);
}
@Override
public String getTaskMessage() {
return null;
}
@Override
protected String getTaskUrl() {
return null;
}
}
package unipotsdam.gf.core.states;
import unipotsdam.gf.core.management.user.User;
public class PeerAssessmentTask extends Task {
public PeerAssessmentTask(User owner) {
super(owner);
}
@Override
public String getTaskMessage() {
return null;
}
@Override
protected String getTaskUrl() {
return null;
}
}
package unipotsdam.gf.core.states;
import unipotsdam.gf.core.management.user.User;
public class PeerFeedbackTask extends Task {
public PeerFeedbackTask(User owner) {
super(owner);
}
@Override
public String getTaskMessage() {
// TODO implement
return null;
}
@Override
protected String getTaskUrl() {
// TODO implement
return null;
}
}
package unipotsdam.gf.core.states;
public enum ProjectPhase {
CourseCreationPhase,
GroupFormationPhase,
DossierFeedbackPhase,
ExecutionPhase,
AssessmentPhase
}
package unipotsdam.gf.core.states;
import unipotsdam.gf.core.management.user.User;
import unipotsdam.gf.interfaces.ICommunication;
import unipotsdam.gf.modules.communication.model.Message;
import javax.inject.Inject;
public class States {
@Inject
ICommunication iCommunication;
public void endPhase(ProjectPhase currentPhase) {
// TODO implement
// calculate reaction
// if no problem change phase
// if problem send message
// and start recovery process
}
private void sendProblemMessage(String message, User user) {
iCommunication.sendSingleMessage(new Message(null, message),user);
}
}
package unipotsdam.gf.core.states;
import unipotsdam.gf.core.management.user.User;
import unipotsdam.gf.interfaces.ICommunication;
import unipotsdam.gf.modules.communication.model.Message;
import javax.inject.Inject;
public abstract class Task {
@Inject
ICommunication iCommunication;
// the user who has to do the task
protected User owner;
public Task(User owner) {
this.owner = owner;
}
public abstract String getTaskMessage();
public void start() {
sendTaskMessage();
save();
}
private void save() {
String name = getClass().getName(); // this returns the runtime name of the subclass i.e. PeerAssessmentTask
String url = getTaskUrl();
}
/**
* should be a relative path like
* /dossiers/upload
* /peerfeedback/{userId}/give
* /peerassessment/{userId}/give
* or similar
*
* @return
*/
protected abstract String getTaskUrl();
public void sendTaskMessage() {
iCommunication.sendSingleMessage(new Message(null, getTaskMessage()), owner);
}
public User getOwner() {
return owner;
}
public void setOwner(User owner) {
this.owner = owner;
}
}
......@@ -85,4 +85,5 @@ public interface ICommunication {
String getChatRoomLink(String userToken, String projectToken, String groupToken);
void sendSingleMessage(Message message, User user);
}
......@@ -100,6 +100,12 @@ public class CommunicationDummyService implements ICommunication {
return Constants.ROCKET_CHAT_URL + "/channel/" + channelName + "?layout=embedded";
}
@Override
public void sendSingleMessage(Message message, User user) {
// TODO implement as email or directed message, popup after login or whatever
System.out.println("sending email with message: "+ message.getMessage() + " to: "+ user.getEmail());
}
// TODO: remove after done implementing
// just for postman testing
public User getUser() {
......
......@@ -20,7 +20,9 @@ CREATE TABLE if not exists `projects` (
`adminPassword` varchar(400) NOT NULL,
`token` varchar(400) NOT NULL
`token` varchar(400) NOT NULL,
`phase` varchar(400) NOT NULL
)
......@@ -125,6 +127,7 @@ CREATE TABLE if not exists projectuser
) ENGINE=InnoDB DEFAULT CHARSET=utf8;alter table users
add isStudent tinyint(1) default '1' null;
CREATE TABLE if not exists quiz
(
......@@ -145,4 +148,19 @@ CREATE TABLE if not exists quiz
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;
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment