diff --git a/core/src/main/java/se/su/dsv/scipro/DataInitializer.java b/core/src/main/java/se/su/dsv/scipro/DataInitializer.java index e76d6f3025..55ca42ee2d 100644 --- a/core/src/main/java/se/su/dsv/scipro/DataInitializer.java +++ b/core/src/main/java/se/su/dsv/scipro/DataInitializer.java @@ -10,6 +10,7 @@ import se.su.dsv.scipro.milestones.service.MilestoneActivityTemplateService; import se.su.dsv.scipro.profiles.CurrentProfile; import se.su.dsv.scipro.profiles.Profiles; import se.su.dsv.scipro.project.Project; +import se.su.dsv.scipro.report.AbstractGradingCriterion; import se.su.dsv.scipro.report.GradingCriterionPointTemplate; import se.su.dsv.scipro.report.GradingReportTemplate; import se.su.dsv.scipro.security.auth.roles.Roles; @@ -403,7 +404,7 @@ public class DataInitializer implements Lifecycle { .description("För 2 poäng krävs dessutom: att oppositionsrapporten ingående och välbalanserat beskriver styrkor och svagheter hos det utvärderade arbetet ur flera aspekter samt att den innehåller tydliga och välmotiverade förslag till förbättringar.") .descriptionEn("For 2 points the following is also required: that the opposition report thoroughly and in a well-balanced way describes from numerous aspects the strengths and weaknesses of the evaluated thesis and that it offers clear and well-motivated suggestions for improvements.") .build()); - gradingReportTemplate.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, gradingCriterionPointTemplates); + gradingReportTemplate.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, gradingCriterionPointTemplates, AbstractGradingCriterion.Flag.OPPOSITION); gradingCriterionPointTemplates = initPointTemplates(); gradingCriterionPointTemplates.add(new GradingCriterionPointTemplate.Builder() @@ -632,7 +633,8 @@ public class DataInitializer implements Lifecycle { .description("För 2 poäng krävs dessutom: att oppositionsrapporten ingående och välbalanserat beskriver styrkor och svagheter hos det utvärderade arbetet ur flera aspekter samt att den innehåller tydliga och välmotiverade förslag till förbättringar.") .descriptionEn("For 2 points the following is also required: that the opposition report thoroughly and in a well-balanced way describes from numerous aspects the strengths and weaknesses of the evaluated thesis and that it offers clear and well-motivated suggestions for improvements.") .build()); - gradingReportTemplateMaster.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, gradingCriterionPointTemplates); + gradingReportTemplateMaster.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, gradingCriterionPointTemplates, + AbstractGradingCriterion.Flag.OPPOSITION); gradingCriterionPointTemplates = initPointTemplates(); gradingCriterionPointTemplates.add(new GradingCriterionPointTemplate.Builder() @@ -841,7 +843,8 @@ public class DataInitializer implements Lifecycle { .description("För 2 poäng krävs dessutom: att oppositionsrapporten ingående och välbalanserat beskriver styrkor och svagheter hos det utvärderade arbetet ur flera aspekter samt att den innehåller tydliga och välmotiverade förslag till förbättringar.") .descriptionEn("For 2 points the following is also required: that the opposition report thoroughly and in a well-balanced way describes from numerous aspects the strengths and weaknesses of the evaluated thesis and that it offers clear and well-motivated suggestions for improvements.") .build()); - gradingReportTemplateMagister.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, gradingCriterionPointTemplates); + gradingReportTemplateMagister.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, gradingCriterionPointTemplates, + AbstractGradingCriterion.Flag.OPPOSITION); gradingCriterionPointTemplates = initPointTemplates(); gradingCriterionPointTemplates.add(new GradingCriterionPointTemplate.Builder() diff --git a/core/src/main/java/se/su/dsv/scipro/report/GradingReportServiceImpl.java b/core/src/main/java/se/su/dsv/scipro/report/GradingReportServiceImpl.java index 7c06a09631..e538f8cf14 100644 --- a/core/src/main/java/se/su/dsv/scipro/report/GradingReportServiceImpl.java +++ b/core/src/main/java/se/su/dsv/scipro/report/GradingReportServiceImpl.java @@ -23,8 +23,6 @@ import java.util.*; public class GradingReportServiceImpl implements GradingReportTemplateService, GradingReportService { - public static final String OPPOSITION_SWEDISH = "Ö1 Oppositionsrapport"; - public static final String OPPOSITION_ENGLISH = "Ö1 Opposition report"; private final EventBus eventBus; private final ThesisSubmissionHistoryService thesisSubmissionHistoryService; private final Clock clock; @@ -52,7 +50,7 @@ public class GradingReportServiceImpl implements GradingReportTemplateService, G @Override public boolean updateOppositionCriteria(SupervisorGradingReport report, FinalSeminarOpposition opposition) { for (GradingCriterion gradingCriterion : report.getIndividualCriteria()) { - boolean isOppositionCriterion = gradingCriterion.getTitle().equals(OPPOSITION_SWEDISH) || gradingCriterion.getTitle().equals(OPPOSITION_ENGLISH); + boolean isOppositionCriterion = gradingCriterion.getFlag() == GradingCriterion.Flag.OPPOSITION; boolean betterGrade = gradingCriterion.getPoints() == null || opposition.getPoints() > gradingCriterion.getPoints(); if (isOppositionCriterion && betterGrade) { gradingCriterion.setFeedback(opposition.getFeedback()); diff --git a/core/src/main/resources/db/migration/V393__migrate_opposition_criteria_to_flag.sql b/core/src/main/resources/db/migration/V393__migrate_opposition_criteria_to_flag.sql new file mode 100644 index 0000000000..d4ffffc008 --- /dev/null +++ b/core/src/main/resources/db/migration/V393__migrate_opposition_criteria_to_flag.sql @@ -0,0 +1,2 @@ +UPDATE `GradingCriterion` SET `flag` = 'OPPOSITION' WHERE title like 'Ö1 %'; +UPDATE `grading_criterion_template` SET `flag` = 'OPPOSITION' WHERE title like 'Ö1 %'; diff --git a/core/src/test/java/se/su/dsv/scipro/report/GradingReportServiceImplIntegrationTest.java b/core/src/test/java/se/su/dsv/scipro/report/GradingReportServiceImplIntegrationTest.java index ee8222109f..765513cc4e 100644 --- a/core/src/test/java/se/su/dsv/scipro/report/GradingReportServiceImplIntegrationTest.java +++ b/core/src/test/java/se/su/dsv/scipro/report/GradingReportServiceImplIntegrationTest.java @@ -22,8 +22,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; -import static se.su.dsv.scipro.report.GradingReportServiceImpl.OPPOSITION_ENGLISH; -import static se.su.dsv.scipro.report.GradingReportServiceImpl.OPPOSITION_SWEDISH; public class GradingReportServiceImplIntegrationTest extends IntegrationTest { @@ -83,7 +81,7 @@ public class GradingReportServiceImplIntegrationTest extends IntegrationTest { addOppositionCriterion(); boolean updated = updateOppositionCriterion(); - GradingCriterion oppositionCriterion = findOppositionCriterion(OPPOSITION_SWEDISH); + GradingCriterion oppositionCriterion = findOppositionCriterion(); assert oppositionCriterion != null; assertEquals(FEEDBACK_ON_OPPOSITION, oppositionCriterion.getFeedback()); assertEquals((Integer) OPPOSITION_CRITERION_POINTS, oppositionCriterion.getPoints()); @@ -95,7 +93,7 @@ public class GradingReportServiceImplIntegrationTest extends IntegrationTest { addOppositionCriterion(); boolean updated = updateOppositionCriterion(); - GradingCriterion oppositionCriterion = findEnglishOppositionCriterion(OPPOSITION_ENGLISH); + GradingCriterion oppositionCriterion = findEnglishOppositionCriterion("Ö1 Opposition report"); assert oppositionCriterion != null; assertEquals(FEEDBACK_ON_OPPOSITION, oppositionCriterion.getFeedback()); assertEquals((Integer) OPPOSITION_CRITERION_POINTS, oppositionCriterion.getPoints()); @@ -108,7 +106,7 @@ public class GradingReportServiceImplIntegrationTest extends IntegrationTest { assessAllCriteria(gradingReport); boolean updated = updateOppositionCriterion(); - GradingCriterion oppositionCriterion = findOppositionCriterion(OPPOSITION_SWEDISH); + GradingCriterion oppositionCriterion = findOppositionCriterion(); assert oppositionCriterion != null; assertEquals(FEEDBACK, oppositionCriterion.getFeedback()); assertEquals((Integer) oppositionCriterion.getMaxPoints(), oppositionCriterion.getPoints()); @@ -122,7 +120,7 @@ public class GradingReportServiceImplIntegrationTest extends IntegrationTest { setPointsOnAllCriteria(gradingReport, 1); updateOppositionCriterion(); - GradingCriterion oppositionCriterion = findOppositionCriterion(OPPOSITION_SWEDISH); + GradingCriterion oppositionCriterion = findOppositionCriterion(); assert oppositionCriterion != null; assertEquals(FEEDBACK_ON_OPPOSITION, oppositionCriterion.getFeedback()); assertEquals(OPPOSITION_CRITERION_POINTS, oppositionCriterion.getPoints()); @@ -135,7 +133,7 @@ public class GradingReportServiceImplIntegrationTest extends IntegrationTest { setPointsOnAllCriteria(gradingReport, points); updateOppositionCriterion(); - GradingCriterion oppositionCriterion = findOppositionCriterion(OPPOSITION_SWEDISH); + GradingCriterion oppositionCriterion = findOppositionCriterion(); assert oppositionCriterion != null; assertEquals((Integer) points, oppositionCriterion.getPoints()); assertNull(oppositionCriterion.getFeedback()); @@ -151,9 +149,9 @@ public class GradingReportServiceImplIntegrationTest extends IntegrationTest { return gradingReportService.updateOppositionCriteria(gradingReport, opposition); } - private GradingCriterion findOppositionCriterion(String title) { + private GradingCriterion findOppositionCriterion() { for (GradingCriterion gradingCriterion : gradingReport.getIndividualCriteria()) { - if (gradingCriterion.getTitle().equals(title)) { + if (gradingCriterion.getFlag() == AbstractGradingCriterion.Flag.OPPOSITION) { return gradingCriterion; } } @@ -247,7 +245,7 @@ public class GradingReportServiceImplIntegrationTest extends IntegrationTest { private GradingReportTemplate createOppositionCriteria(GradingReportTemplate gradingReportTemplate, int maxPoints) { List<GradingCriterionPointTemplate> gradingCriterionPointTemplates = getPointTemplates(maxPoints, "Opposition"); - gradingReportTemplate.addIndividualCriterion(OPPOSITION_SWEDISH, OPPOSITION_ENGLISH, 0, gradingCriterionPointTemplates); + gradingReportTemplate.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 0, gradingCriterionPointTemplates, AbstractGradingCriterion.Flag.OPPOSITION); return save(gradingReportTemplate); } diff --git a/core/src/test/java/se/su/dsv/scipro/report/SupervisorGradingReportTest.java b/core/src/test/java/se/su/dsv/scipro/report/SupervisorGradingReportTest.java index 3c8521cb1c..31829f71b7 100644 --- a/core/src/test/java/se/su/dsv/scipro/report/SupervisorGradingReportTest.java +++ b/core/src/test/java/se/su/dsv/scipro/report/SupervisorGradingReportTest.java @@ -74,7 +74,7 @@ public class SupervisorGradingReportTest { gradingReportTemplate.addProjectCriterion("U12 Källhänvisningar och dokumentation", "U12 References and documentation", 1, getPointTemplates(1)).setFx(false); gradingReportTemplate.addProjectCriterion("U13 Originalitet och signifikans", "U13 Originality and significance", 0, getPointTemplates(3)).setFx(false); - gradingReportTemplate.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, getPointTemplates(2)); + gradingReportTemplate.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, getPointTemplates(2), AbstractGradingCriterion.Flag.OPPOSITION); gradingReportTemplate.addIndividualCriterion("Ö2 Presentationer", "Ö2 Presentations", 1, getPointTemplates(1)); gradingReportTemplate.addIndividualCriterion("Ö3 Aktivitet vid seminarier och möten", "Ö3 Participation in seminars and meetings", 1, getPointTemplates(1)); gradingReportTemplate.addIndividualCriterion("Ö4 Deadlines", "Ö4 Deadlines", 0, getPointTemplates(1)).setFx(false); diff --git a/core/src/test/java/se/su/dsv/scipro/report/calculators/original/SupervisorBachelorGradeCalculatorTest.java b/core/src/test/java/se/su/dsv/scipro/report/calculators/original/SupervisorBachelorGradeCalculatorTest.java index 442b6989a1..da0c27eacd 100644 --- a/core/src/test/java/se/su/dsv/scipro/report/calculators/original/SupervisorBachelorGradeCalculatorTest.java +++ b/core/src/test/java/se/su/dsv/scipro/report/calculators/original/SupervisorBachelorGradeCalculatorTest.java @@ -104,7 +104,7 @@ public class SupervisorBachelorGradeCalculatorTest extends GradeCalculatorTest { gradingReportTemplate.addProjectCriterion("U12 Källhänvisningar och dokumentation", "U12 References and documentation", 1, getPointTemplates(1)); gradingReportTemplate.addProjectCriterion("U13 Originalitet och signifikans", "U13 Originality and significance", 0, getPointTemplates(3)).setFx(false); - gradingReportTemplate.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, getPointTemplates(2)); + gradingReportTemplate.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, getPointTemplates(2), AbstractGradingCriterion.Flag.OPPOSITION); gradingReportTemplate.addIndividualCriterion("Ö2 Presentationer", "Ö2 Presentations", 1, getPointTemplates(1)); gradingReportTemplate.addIndividualCriterion("Ö3 Aktivitet vid seminarier och möten", "Ö3 Participation in seminars and meetings", 1, getPointTemplates(1)); gradingReportTemplate.addIndividualCriterion("Ö4 Deadlines", "Ö4 Deadlines", 0, getPointTemplates(1)).setFx(false); diff --git a/core/src/test/java/se/su/dsv/scipro/report/calculators/original/SupervisorMaster15GradeCalculatorTest.java b/core/src/test/java/se/su/dsv/scipro/report/calculators/original/SupervisorMaster15GradeCalculatorTest.java index e4c56d2809..17c8257e8d 100644 --- a/core/src/test/java/se/su/dsv/scipro/report/calculators/original/SupervisorMaster15GradeCalculatorTest.java +++ b/core/src/test/java/se/su/dsv/scipro/report/calculators/original/SupervisorMaster15GradeCalculatorTest.java @@ -91,7 +91,7 @@ public class SupervisorMaster15GradeCalculatorTest extends GradeCalculatorTest { gradingReportTemplate.addProjectCriterion("U12 Källhänvisningar och dokumentation", "U12 References and documentation", 1, getPointTemplates(1)); gradingReportTemplate.addProjectCriterion("U13 Originalitet och signifikans", "U13 Originality and significance", 1, getPointTemplates(3)); - gradingReportTemplate.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, getPointTemplates(2)); + gradingReportTemplate.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, getPointTemplates(2), AbstractGradingCriterion.Flag.OPPOSITION); gradingReportTemplate.addIndividualCriterion("Ö2 Presentationer", "Ö2 Presentations", 1, getPointTemplates(1)); gradingReportTemplate.addIndividualCriterion("Ö3 Aktivitet vid seminarier och möten", "Ö3 Participation in seminars and meetings", 1, getPointTemplates(1)); gradingReportTemplate.addIndividualCriterion("Ö4 Deadlines", "Ö4 Deadlines", 0, getPointTemplates(1)).setFx(false); diff --git a/core/src/test/java/se/su/dsv/scipro/report/calculators/original/SupervisorMaster30GradeCalculatorTest.java b/core/src/test/java/se/su/dsv/scipro/report/calculators/original/SupervisorMaster30GradeCalculatorTest.java index 70122fcf7d..3924773fd0 100644 --- a/core/src/test/java/se/su/dsv/scipro/report/calculators/original/SupervisorMaster30GradeCalculatorTest.java +++ b/core/src/test/java/se/su/dsv/scipro/report/calculators/original/SupervisorMaster30GradeCalculatorTest.java @@ -91,7 +91,7 @@ public class SupervisorMaster30GradeCalculatorTest extends GradeCalculatorTest { gradingReportTemplate.addProjectCriterion("U12 Källhänvisningar och dokumentation", "U12 References and documentation", 1, getPointTemplates(1)); gradingReportTemplate.addProjectCriterion("U13 Originalitet och signifikans", "U13 Originality and significance", 2, getPointTemplates(4)); - gradingReportTemplate.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, getPointTemplates(2)); + gradingReportTemplate.addIndividualCriterion("Ö1 Oppositionsrapport", "Ö1 Opposition report", 1, getPointTemplates(2), AbstractGradingCriterion.Flag.OPPOSITION); gradingReportTemplate.addIndividualCriterion("Ö2 Presentationer", "Ö2 Presentations", 1, getPointTemplates(1)); gradingReportTemplate.addIndividualCriterion("Ö3 Aktivitet vid seminarier och möten", "Ö3 Participation in seminars and meetings", 1, getPointTemplates(1)); gradingReportTemplate.addIndividualCriterion("Ö4 Deadlines", "Ö4 Deadlines", 0, getPointTemplates(1));