task/3382: Harmonisera tabellnamn #6

Merged
ansv7779 merged 104 commits from task/3382 into develop 2024-11-12 13:33:44 +01:00
8 changed files with 94 additions and 51 deletions
Showing only changes of commit 94cad840e8 - Show all commits

View File

@ -61,7 +61,7 @@ public class MilestoneActivator {
int minimumActiveParticipationsToBeGraded = event.getProject()
.getProjectType()
.getProjectTypeSettings()
.getMinimumActiveParticipationsToBeGraded();
.getMinActiveParticipationsToBeGraded();
if (completedParticipations >= minimumActiveParticipationsToBeGraded) {
activateIndividualMilestone(Set.of("ParticipationGradingEvent"), event.getProject(), event.getStudent());
} else {

View File

@ -1,68 +1,83 @@
package se.su.dsv.scipro.system;
import jakarta.persistence.*;
import java.util.Objects;
@Entity
@Table(name="project_type_settings")
@Cacheable(true)
public class ProjectTypeSettings extends DomainObject {
public ProjectTypeSettings(){}
import jakarta.persistence.Cacheable;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
public ProjectTypeSettings(ProjectType projectType){
this.projectType = projectType;
}
@Entity
@Cacheable(true)
@Table(name="project_type_settings")
public class ProjectTypeSettings extends DomainObject {
public static final int DEFAULT_NUM_DAYS_BETWEEN_REVIEWS_ON_SAME_PROJECT = 7;
public static final int DEFAULT_NUM_DAYS_TO_SUBMIT_PEER_REVIEW = 3;
public static final int DEFAULT_NUM_DAYS_BEFORE_CANCELLED_PEERS = 90;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToOne(optional = false)
@Column(name = "project_type_id")
private ProjectType projectType;
@Basic(optional=false)
private int minAuthors = 1;
@Basic(optional=false)
private int maxAuthors = 2;
@Basic(optional=false)
private int maxFinalSeminarActiveParticipation;
@Basic(optional=false)
private int maxOpponentsOnFinalSeminar;
@Basic(optional=false)
private int minFinalSeminarActiveParticipation;
@Basic(optional=false)
private int minOpponentsOnFinalSeminar;
private int minimumOppositionsToBeGraded = 0;
private int minimumActiveParticipationsToBeGraded = 0;
public static final int DEFAULT_NUM_DAYS_BETWEEN_REVIEWS_ON_SAME_PROJECT = 7;
public static final int DEFAULT_NUM_DAYS_TO_SUBMIT_PEER_REVIEW = 3;
public static final int DEFAULT_NUM_DAYS_BEFORE_CANCELLED_PEERS = 90;
/*
* Defines the time span between reviews on the same project
*/
@Basic(optional = false)
@Column(name = "num_days_between_peer_reviews_on_same_project", nullable = false)
private int numDaysBetweenPeerReviewsOnSameProject = DEFAULT_NUM_DAYS_BETWEEN_REVIEWS_ON_SAME_PROJECT;
/*
* Defines the number of days between accepting a review and the deadline for review submission
*/
@Basic(optional = false)
@Column(name = "num_days_to_submit_peer_review", nullable = false)
private int numDaysToSubmitPeerReview = DEFAULT_NUM_DAYS_TO_SUBMIT_PEER_REVIEW;
/*
* Defines the number of days between accepting a review and the deadline for review submission
*/
@Basic(optional = false)
@Column(name = "num_days_before_peer_gets_cancelled", nullable = false)
private int numDaysBeforePeerGetsCancelled = DEFAULT_NUM_DAYS_BEFORE_CANCELLED_PEERS;
@Basic
@Column(name = "min_authors", nullable = false)
private int minAuthors = 1;
@Column(name = "max_authors", nullable = false)
private int maxAuthors = 2;
@Column(name = "max_final_seminar_active_participation", nullable = false)
private int maxFinalSeminarActiveParticipation;
@Column(name = "max_opponents_on_final_seminar", nullable = false)
private int maxOpponentsOnFinalSeminar;
@Column(name = "min_final_seminar_active_participation", nullable = false)
private int minFinalSeminarActiveParticipation;
@Column(name = "min_opponents_on_final_seminar", nullable = false)
private int minOpponentsOnFinalSeminar;
@Column(name = "min_oppositions_to_be_graded")
private int minOppositionsToBeGraded = 0;
@Column(name = "min_active_participations_to_be_graded")
private int minActiveParticipationsToBeGraded = 0;
@Column(name = "review_process_information_url_for_supervisor")
private String reviewProcessInformationUrl;
public ProjectTypeSettings(){}
public ProjectTypeSettings(ProjectType projectType){
this.projectType = projectType;
}
@Override
public Long getId() {
return this.id;
@ -152,20 +167,20 @@ public class ProjectTypeSettings extends DomainObject {
this.numDaysBeforePeerGetsCancelled = numDaysBeforePeerGetsCancelled;
}
public int getMinimumOppositionsToBeGraded() {
return minimumOppositionsToBeGraded;
public int getMinOppositionsToBeGraded() {
return minOppositionsToBeGraded;
}
public void setMinimumOppositionsToBeGraded(int minimumOppositionsToBeGraded) {
this.minimumOppositionsToBeGraded = minimumOppositionsToBeGraded;
public void setMinOppositionsToBeGraded(int minimumOppositionsToBeGraded) {
this.minOppositionsToBeGraded = minimumOppositionsToBeGraded;
}
public int getMinimumActiveParticipationsToBeGraded() {
return minimumActiveParticipationsToBeGraded;
public int getMinActiveParticipationsToBeGraded() {
return minActiveParticipationsToBeGraded;
}
public void setMinimumActiveParticipationsToBeGraded(int minimumActiveParticipationsToBeGraded) {
this.minimumActiveParticipationsToBeGraded = minimumActiveParticipationsToBeGraded;
public void setMinActiveParticipationsToBeGraded(int minimumActiveParticipationsToBeGraded) {
this.minActiveParticipationsToBeGraded = minimumActiveParticipationsToBeGraded;
}
public String getReviewProcessInformationUrl() {

View File

@ -774,8 +774,36 @@ alter table `project_type_project_module`
add constraint pk_project_type_project_module
primary key(project_type_id, project_module);
-- fix table project_type_settings except foreign key to table project_type
alter table `project_type_settings` drop foreign key `FK_oxqyb1t8jo7cq2fx8j9slvloa`;
alter table `project_type_settings` drop foreign key `FK_project_class_settings_projectType`;
alter table `project_type_settings` drop key `UK_project_class_settings_projectType`;
alter table `project_type_settings` rename column `numDaysBetweenPeerReviewsOnSameProject` to `num_days_between_peer_reviews_on_same_project`;
alter table `project_type_settings` rename column `numDaysToSubmitPeerReview` to `num_days_to_submit_peer_review`;
alter table `project_type_settings` rename column `projectType_id` to `project_type_id`;
alter table `project_type_settings` rename column `numDaysBeforePeerGetsCancelled` to `num_days_before_peer_gets_cancelled`;
alter table `project_type_settings` rename column `minAuthors` to `min_authors`;
alter table `project_type_settings` rename column `maxAuthors` to `max_authors`;
alter table `project_type_settings` rename column `maxFinalSeminarActiveParticipation` to `max_final_seminar_active_participation`;
alter table `project_type_settings` rename column `maxOpponentsOnFinalSeminar` to `max_opponents_on_final_seminar`;
alter table `project_type_settings` rename column `minFinalSeminarActiveParticipation` to `min_final_seminar_active_participation`;
alter table `project_type_settings` rename column `minOpponentsOnFinalSeminar` to `min_opponents_on_final_seminar`;
alter table `project_type_settings` rename column `minimumOppositionsToBeGraded` to `min_oppositions_to_be_graded`;
alter table `project_type_settings` rename column `minimumActiveParticipationsToBeGraded` to `min_oppositions_to_be_graded`;
alter table `project_type_settings` add constraint uk_project_type_settings_project_type_id unique(project_type_id);
-- activate following later
/*
-- add foreign key reference from project_type_settings to project_type
alter table `project_type_settings`
add constraint fk_project_type_settings_project_type_id
foreign key(project_type_id) references project_type(id)
on delete cascade on update cascade;
-- add foreign key reference from project_type_project_module to project_type
alter table `project_type_project_module`
add constraint fk_project_type_project_module_project_type_id

View File

@ -66,7 +66,7 @@ public class MilestoneActivatorTest {
author.setId(123L);
ProjectType bachelor = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
bachelor.getProjectTypeSettings().setMinimumActiveParticipationsToBeGraded(2);
bachelor.getProjectTypeSettings().setMinActiveParticipationsToBeGraded(2);
project = Project.builder()
.title("Project title")
.projectType(bachelor)

View File

@ -54,16 +54,16 @@ public class AdminProjectTypePanel extends Panel {
NumberTextField<Integer> minimumOppositionsToBeGraded = new NumberTextField<>(
"minimum_oppositions_to_be_graded",
LambdaModel.of(settings,
ProjectTypeSettings::getMinimumOppositionsToBeGraded,
ProjectTypeSettings::setMinimumOppositionsToBeGraded),
ProjectTypeSettings::getMinOppositionsToBeGraded,
ProjectTypeSettings::setMinOppositionsToBeGraded),
Integer.class);
minimumOppositionsToBeGraded.setMinimum(0);
add(minimumOppositionsToBeGraded);
NumberTextField<Integer> minimumActiveParticipationsToBeGraded = new NumberTextField<>(
"minimum_active_participations_to_be_graded",
LambdaModel.of(settings,
ProjectTypeSettings::getMinimumActiveParticipationsToBeGraded,
ProjectTypeSettings::setMinimumActiveParticipationsToBeGraded),
ProjectTypeSettings::getMinActiveParticipationsToBeGraded,
ProjectTypeSettings::setMinActiveParticipationsToBeGraded),
Integer.class);
minimumActiveParticipationsToBeGraded.setMinimum(0);
add(minimumActiveParticipationsToBeGraded);

View File

@ -36,7 +36,7 @@ public class ProjectActiveParticipationListPanel extends GenericPanel<Project> {
IModel<Integer> countRequired = model
.map(Project::getProjectType)
.map(ProjectType::getProjectTypeSettings)
.map(ProjectTypeSettings::getMinimumActiveParticipationsToBeGraded);
.map(ProjectTypeSettings::getMinActiveParticipationsToBeGraded);
item.add(new Label("count_required", countRequired));
IModel<Long> countPerformed = participations.map(this::countApproved);
item.add(new Label("count_approved", countPerformed));

View File

@ -213,8 +213,8 @@ abstract class AbstractExaminationsPanel extends GenericPanel<User> {
.filter(FinalSeminarActiveParticipation::isApproved)
.count();
final ProjectTypeSettings projectTypeSettings = project.getProjectType().getProjectTypeSettings();
final int requiredOppositions = projectTypeSettings.getMinimumOppositionsToBeGraded();
final int requiredActiveParticipations = projectTypeSettings.getMinimumActiveParticipationsToBeGraded();
final int requiredOppositions = projectTypeSettings.getMinOppositionsToBeGraded();
final int requiredActiveParticipations = projectTypeSettings.getMinActiveParticipationsToBeGraded();
return new SeminarParticipationGradingRequirements(
new Requirement(requiredOppositions, completedOppositions),
new Requirement(requiredActiveParticipations, completedParticipations));

View File

@ -128,7 +128,7 @@ public class IndividualAuthorAssessmentPanel extends GenericPanel<User> {
IModel<Integer> minimumActiveParticipationsToBeGraded = LoadableDetachableModel.of(() -> {
Project project = projectModel.getObject();
return project.getProjectType().getProjectTypeSettings().getMinimumActiveParticipationsToBeGraded();
return project.getProjectType().getProjectTypeSettings().getMinActiveParticipationsToBeGraded();
});
IModel<Integer> completedParticipations = LoadableDetachableModel.of(() -> {
Project project = projectModel.getObject();