Allows admins to manage grading report templates #14
@ -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()
|
||||
|
@ -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());
|
||||
|
@ -0,0 +1,2 @@
|
||||
UPDATE `GradingCriterion` SET `flag` = 'OPPOSITION' WHERE title like 'Ö1 %';
|
||||
UPDATE `grading_criterion_template` SET `flag` = 'OPPOSITION' WHERE title like 'Ö1 %';
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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));
|
||||
|
Loading…
x
Reference in New Issue
Block a user