Skip to content
Snippets Groups Projects
Commit d39fe4d5 authored by Pavel Šeda's avatar Pavel Šeda Committed by Dominik Pilár
Browse files

add the new table to the .sql scripts.

parent 8fe4fdd5
No related branches found
No related tags found
1 merge request!28add the new table to the .sql scripts.
package cz.muni.ics.kypo.training.adaptive.domain;
import cz.muni.ics.kypo.training.adaptive.domain.phase.AbstractPhase;
import cz.muni.ics.kypo.training.adaptive.domain.phase.Task;
import cz.muni.ics.kypo.training.adaptive.domain.training.TrainingRun;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "participant_task_assignment")
public class ParticipantTaskAssignment implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "participantTaskAssignmentGenerator")
@SequenceGenerator(name = "participantTaskAssignmentGenerator", sequenceName = "participant_task_assignment_seq")
@Column(name = "participant_task_assignment_id", nullable = false, unique = true)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "phase_id")
private AbstractPhase abstractPhase;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "task_id")
private Task task;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "training_run_id")
private TrainingRun trainingRun;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public AbstractPhase getAbstractPhase() {
return abstractPhase;
}
public void setAbstractPhase(AbstractPhase abstractPhase) {
this.abstractPhase = abstractPhase;
}
public Task getTask() {
return task;
}
public void setTask(Task task) {
this.task = task;
}
public TrainingRun getTrainingRun() {
return trainingRun;
}
public void setTrainingRun(TrainingRun trainingRun) {
this.trainingRun = trainingRun;
}
@Override
public String toString() {
return "ParticipantTaskAssignment{" +
"id=" + id +
'}';
}
}
...@@ -265,8 +265,7 @@ public class TrainingRunFacade { ...@@ -265,8 +265,7 @@ public class TrainingRunFacade {
"or @securityService.isTraineeOfGivenTrainingRun(#trainingRunId)") "or @securityService.isTraineeOfGivenTrainingRun(#trainingRunId)")
@TransactionalWO @TransactionalWO
public AbstractPhaseDTO getNextPhase(Long trainingRunId) { public AbstractPhaseDTO getNextPhase(Long trainingRunId) {
AbstractPhase abstractPhase; AbstractPhase abstractPhase = trainingRunService.getNextPhase(trainingRunId);
abstractPhase = trainingRunService.getNextPhase(trainingRunId);
return getCorrectAbstractPhaseDTO(abstractPhase); return getCorrectAbstractPhaseDTO(abstractPhase);
} }
......
package cz.muni.ics.kypo.training.adaptive.repository;
import cz.muni.ics.kypo.training.adaptive.domain.ParticipantTaskAssignment;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.stereotype.Repository;
@Repository
public interface ParticipantTaskAssignmentRepository extends JpaRepository<ParticipantTaskAssignment, Long>, QuerydslPredicateExecutor<ParticipantTaskAssignment> {
//TODO provide a SQL commands that returns all the relations between task transitions
}
\ No newline at end of file
...@@ -2,6 +2,7 @@ package cz.muni.ics.kypo.training.adaptive.service.training; ...@@ -2,6 +2,7 @@ package cz.muni.ics.kypo.training.adaptive.service.training;
import com.querydsl.core.types.Predicate; import com.querydsl.core.types.Predicate;
import cz.muni.ics.kypo.training.adaptive.annotations.transactions.TransactionalWO; import cz.muni.ics.kypo.training.adaptive.annotations.transactions.TransactionalWO;
import cz.muni.ics.kypo.training.adaptive.domain.ParticipantTaskAssignment;
import cz.muni.ics.kypo.training.adaptive.domain.TRAcquisitionLock; import cz.muni.ics.kypo.training.adaptive.domain.TRAcquisitionLock;
import cz.muni.ics.kypo.training.adaptive.domain.User; import cz.muni.ics.kypo.training.adaptive.domain.User;
import cz.muni.ics.kypo.training.adaptive.domain.phase.*; import cz.muni.ics.kypo.training.adaptive.domain.phase.*;
...@@ -10,6 +11,7 @@ import cz.muni.ics.kypo.training.adaptive.domain.training.TrainingInstance; ...@@ -10,6 +11,7 @@ import cz.muni.ics.kypo.training.adaptive.domain.training.TrainingInstance;
import cz.muni.ics.kypo.training.adaptive.domain.training.TrainingRun; import cz.muni.ics.kypo.training.adaptive.domain.training.TrainingRun;
import cz.muni.ics.kypo.training.adaptive.enums.TRState; import cz.muni.ics.kypo.training.adaptive.enums.TRState;
import cz.muni.ics.kypo.training.adaptive.exceptions.*; import cz.muni.ics.kypo.training.adaptive.exceptions.*;
import cz.muni.ics.kypo.training.adaptive.repository.ParticipantTaskAssignmentRepository;
import cz.muni.ics.kypo.training.adaptive.repository.TRAcquisitionLockRepository; import cz.muni.ics.kypo.training.adaptive.repository.TRAcquisitionLockRepository;
import cz.muni.ics.kypo.training.adaptive.repository.UserRefRepository; import cz.muni.ics.kypo.training.adaptive.repository.UserRefRepository;
import cz.muni.ics.kypo.training.adaptive.repository.phases.AbstractPhaseRepository; import cz.muni.ics.kypo.training.adaptive.repository.phases.AbstractPhaseRepository;
...@@ -51,6 +53,7 @@ public class TrainingRunService { ...@@ -51,6 +53,7 @@ public class TrainingRunService {
private final ElasticsearchServiceApi elasticsearchServiceApi; private final ElasticsearchServiceApi elasticsearchServiceApi;
private final UserManagementServiceApi userManagementServiceApi; private final UserManagementServiceApi userManagementServiceApi;
private final TRAcquisitionLockRepository trAcquisitionLockRepository; private final TRAcquisitionLockRepository trAcquisitionLockRepository;
private final ParticipantTaskAssignmentRepository participantTaskAssignmentRepository;
/** /**
* Instantiates a new Training run service. * Instantiates a new Training run service.
...@@ -72,7 +75,8 @@ public class TrainingRunService { ...@@ -72,7 +75,8 @@ public class TrainingRunService {
AuditEventsService auditEventsService, AuditEventsService auditEventsService,
ElasticsearchServiceApi elasticsearchServiceApi, ElasticsearchServiceApi elasticsearchServiceApi,
UserManagementServiceApi userManagementServiceApi, UserManagementServiceApi userManagementServiceApi,
TRAcquisitionLockRepository trAcquisitionLockRepository) { TRAcquisitionLockRepository trAcquisitionLockRepository,
ParticipantTaskAssignmentRepository participantTaskAssignmentRepository) {
this.sandboxServiceApi = sandboxServiceApi; this.sandboxServiceApi = sandboxServiceApi;
this.trainingRunRepository = trainingRunRepository; this.trainingRunRepository = trainingRunRepository;
this.abstractPhaseRepository = abstractPhaseRepository; this.abstractPhaseRepository = abstractPhaseRepository;
...@@ -82,6 +86,7 @@ public class TrainingRunService { ...@@ -82,6 +86,7 @@ public class TrainingRunService {
this.elasticsearchServiceApi = elasticsearchServiceApi; this.elasticsearchServiceApi = elasticsearchServiceApi;
this.userManagementServiceApi = userManagementServiceApi; this.userManagementServiceApi = userManagementServiceApi;
this.trAcquisitionLockRepository = trAcquisitionLockRepository; this.trAcquisitionLockRepository = trAcquisitionLockRepository;
this.participantTaskAssignmentRepository = participantTaskAssignmentRepository;
} }
/** /**
...@@ -201,11 +206,20 @@ public class TrainingRunService { ...@@ -201,11 +206,20 @@ public class TrainingRunService {
trainingRun.setCurrentPhase(nextPhase); trainingRun.setCurrentPhase(nextPhase);
trainingRun.setIncorrectAnswerCount(0); trainingRun.setIncorrectAnswerCount(0);
trainingRunRepository.save(trainingRun); trainingRunRepository.save(trainingRun);
participantTaskAssignmentRepository.save(prepareDataForSankeyGraph(trainingRun, nextPhase));
auditEventsService.auditPhaseStartedAction(trainingRun); auditEventsService.auditPhaseStartedAction(trainingRun);
return nextPhase; return nextPhase;
} }
private ParticipantTaskAssignment prepareDataForSankeyGraph(TrainingRun trainingRun, AbstractPhase nextPhase) {
ParticipantTaskAssignment participantTaskAssignment = new ParticipantTaskAssignment();
participantTaskAssignment.setTrainingRun(trainingRun);
participantTaskAssignment.setAbstractPhase(nextPhase);
participantTaskAssignment.setTask(trainingRun.getCurrentTask());
return participantTaskAssignment;
}
/** /**
* Finds all Training Runs of specific Training Definition of logged in user. * Finds all Training Runs of specific Training Definition of logged in user.
* *
......
...@@ -5,6 +5,17 @@ create table "user" ( ...@@ -5,6 +5,17 @@ create table "user" (
primary key (user_id) primary key (user_id)
); );
create table participant_task_assignment (
participant_task_assignment_id bigserial not null,
phase_id int8 not null,
training_run_id int8 not null,
task_id int8,
primary key (participant_task_assignment_id),
foreign key (phase_id) references abstract_phase,
foreign key (training_run_id) references training_run,
foreign key (task_id) references task,
);
-- TRAINING -- TRAINING
create table training_definition ( create table training_definition (
training_definition_id bigserial not null, training_definition_id bigserial not null,
......
...@@ -12,3 +12,4 @@ CREATE SEQUENCE training_run_seq AS bigint INCREMENT 50 MINVALUE 1; ...@@ -12,3 +12,4 @@ CREATE SEQUENCE training_run_seq AS bigint INCREMENT 50 MINVALUE 1;
CREATE SEQUENCE access_token_seq AS bigint INCREMENT 50 MINVALUE 1; CREATE SEQUENCE access_token_seq AS bigint INCREMENT 50 MINVALUE 1;
CREATE SEQUENCE tr_acquisition_lock_seq AS bigint INCREMENT 50 MINVALUE 1; CREATE SEQUENCE tr_acquisition_lock_seq AS bigint INCREMENT 50 MINVALUE 1;
CREATE SEQUENCE user_seq AS bigint INCREMENT 50 MINVALUE 1; CREATE SEQUENCE user_seq AS bigint INCREMENT 50 MINVALUE 1;
CREATE SEQUENCE participant_task_assignment_seq AS bigint INCREMENT 50 MINVALUE 1;
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