use of de.tum.in.www1.artemis.domain.ExampleSubmission in project Artemis by ls1intum.
the class ModelingExerciseImportService method copyExampleSubmission.
/**
* This functions does a hard copy of the example submissions contained in {@code templateExercise}.
* To copy the corresponding Submission entity this function calls {@link #copySubmission(Submission)}
*
* @param templateExercise {TextExercise} The original exercise from which to fetch the example submissions
* @param newExercise The new exercise in which we will insert the example submissions
* @return The cloned set of example submissions
*/
@Override
Set<ExampleSubmission> copyExampleSubmission(Exercise templateExercise, Exercise newExercise) {
log.debug("Copying the ExampleSubmissions to new Exercise: {}", newExercise);
Set<ExampleSubmission> newExampleSubmissions = new HashSet<>();
for (ExampleSubmission originalExampleSubmission : templateExercise.getExampleSubmissions()) {
ModelingSubmission originalSubmission = (ModelingSubmission) originalExampleSubmission.getSubmission();
ModelingSubmission newSubmission = (ModelingSubmission) copySubmission(originalSubmission);
ExampleSubmission newExampleSubmission = new ExampleSubmission();
newExampleSubmission.setExercise(newExercise);
newExampleSubmission.setSubmission(newSubmission);
newExampleSubmission.setAssessmentExplanation(originalExampleSubmission.getAssessmentExplanation());
exampleSubmissionRepository.save(newExampleSubmission);
newExampleSubmissions.add(newExampleSubmission);
}
return newExampleSubmissions;
}
use of de.tum.in.www1.artemis.domain.ExampleSubmission in project Artemis by ls1intum.
the class DatabaseUtilService method generateExampleSubmission.
/**
* Generates an example submission for a given model and exercise
*
* @param modelOrText given uml model for the example submission
* @param exercise exercise for which the example submission is created
* @param flagAsExampleSubmission true if the submission is an example submission
* @param usedForTutorial true if the example submission is used for tutorial
* @return created example submission
*/
public ExampleSubmission generateExampleSubmission(String modelOrText, Exercise exercise, boolean flagAsExampleSubmission, boolean usedForTutorial) {
Submission submission;
if (exercise instanceof ModelingExercise) {
submission = ModelFactory.generateModelingSubmission(modelOrText, false);
} else {
submission = ModelFactory.generateTextSubmission(modelOrText, Language.ENGLISH, false);
saveSubmissionToRepo(submission);
}
submission.setExampleSubmission(flagAsExampleSubmission);
return ModelFactory.generateExampleSubmission(submission, exercise, usedForTutorial);
}
use of de.tum.in.www1.artemis.domain.ExampleSubmission in project Artemis by ls1intum.
the class DatabaseUtilService method addExampleSubmission.
public ExampleSubmission addExampleSubmission(ExampleSubmission exampleSubmission) {
Submission submission;
if (exampleSubmission.getSubmission() instanceof ModelingSubmission) {
submission = modelingSubmissionRepo.save((ModelingSubmission) exampleSubmission.getSubmission());
} else {
submission = textSubmissionRepo.save((TextSubmission) exampleSubmission.getSubmission());
}
exampleSubmission.setSubmission(submission);
return exampleSubmissionRepo.save(exampleSubmission);
}
use of de.tum.in.www1.artemis.domain.ExampleSubmission in project ArTEMiS by ls1intum.
the class ModelingExerciseImportService method copySubmission.
/**
* This helper function does a hard copy of the {@code originalSubmission} and stores the values in {@code newSubmission}.
* To copy the submission results this function calls {@link #copyExampleResult(Result, Submission)} respectively.
*
* @param originalSubmission The original submission to be copied.
* @return The cloned submission
*/
@Override
Submission copySubmission(Submission originalSubmission) {
ModelingSubmission newSubmission = new ModelingSubmission();
if (originalSubmission != null) {
log.debug("Copying the Submission to new ExampleSubmission: {}", newSubmission);
newSubmission.setExampleSubmission(true);
newSubmission.setSubmissionDate(originalSubmission.getSubmissionDate());
newSubmission.setType(originalSubmission.getType());
newSubmission.setParticipation(originalSubmission.getParticipation());
newSubmission.setExplanationText(((ModelingSubmission) originalSubmission).getExplanationText());
newSubmission.setModel(((ModelingSubmission) originalSubmission).getModel());
newSubmission = submissionRepository.saveAndFlush(newSubmission);
if (originalSubmission.getLatestResult() != null) {
newSubmission.addResult(copyExampleResult(originalSubmission.getLatestResult(), newSubmission));
}
newSubmission = submissionRepository.saveAndFlush(newSubmission);
}
return newSubmission;
}
use of de.tum.in.www1.artemis.domain.ExampleSubmission in project ArTEMiS by ls1intum.
the class DatabaseUtilService method createCoursesWithExercisesAndLectures.
public List<Course> createCoursesWithExercisesAndLectures(boolean withParticipations) throws Exception {
ZonedDateTime pastTimestamp = ZonedDateTime.now().minusDays(5);
ZonedDateTime futureTimestamp = ZonedDateTime.now().plusDays(5);
ZonedDateTime futureFutureTimestamp = ZonedDateTime.now().plusDays(8);
Course course1 = ModelFactory.generateCourse(null, pastTimestamp, futureTimestamp, new HashSet<>(), "tumuser", "tutor", "editor", "instructor");
Course course2 = ModelFactory.generateCourse(null, ZonedDateTime.now().minusDays(8), pastTimestamp, new HashSet<>(), "tumuser", "tutor", "editor", "instructor");
ModelingExercise modelingExercise = ModelFactory.generateModelingExercise(pastTimestamp, futureTimestamp, futureFutureTimestamp, DiagramType.ClassDiagram, course1);
modelingExercise.setGradingInstructions("some grading instructions");
modelingExercise.setExampleSolutionModel("Example solution model");
modelingExercise.setExampleSolutionExplanation("Example Solution");
addGradingInstructionsToExercise(modelingExercise);
modelingExercise.getCategories().add("Modeling");
modelingExercise.setKnowledge(modelAssessmentKnowledgeService.createNewKnowledge());
course1.addExercises(modelingExercise);
TextExercise textExercise = ModelFactory.generateTextExercise(pastTimestamp, futureTimestamp, futureFutureTimestamp, course1);
textExercise.setGradingInstructions("some grading instructions");
textExercise.setExampleSolution("Example Solution");
addGradingInstructionsToExercise(textExercise);
textExercise.getCategories().add("Text");
textExercise.setKnowledge(textAssessmentKnowledgeService.createNewKnowledge());
course1.addExercises(textExercise);
FileUploadExercise fileUploadExercise = ModelFactory.generateFileUploadExercise(pastTimestamp, futureTimestamp, futureFutureTimestamp, "png", course1);
fileUploadExercise.setGradingInstructions("some grading instructions");
fileUploadExercise.setExampleSolution("Example Solution");
addGradingInstructionsToExercise(fileUploadExercise);
fileUploadExercise.getCategories().add("File");
course1.addExercises(fileUploadExercise);
ProgrammingExercise programmingExercise = ModelFactory.generateProgrammingExercise(pastTimestamp, futureTimestamp, course1);
programmingExercise.setGradingInstructions("some grading instructions");
addGradingInstructionsToExercise(programmingExercise);
programmingExercise.getCategories().add("Programming");
course1.addExercises(programmingExercise);
QuizExercise quizExercise = ModelFactory.generateQuizExercise(pastTimestamp, futureTimestamp, course1);
programmingExercise.getCategories().add("Quiz");
course1.addExercises(quizExercise);
Lecture lecture1 = ModelFactory.generateLecture(pastTimestamp, futureFutureTimestamp, course1);
Attachment attachment1 = ModelFactory.generateAttachment(pastTimestamp, lecture1);
lecture1.addAttachments(attachment1);
course1.addLectures(lecture1);
Lecture lecture2 = ModelFactory.generateLecture(pastTimestamp, futureFutureTimestamp, course1);
Attachment attachment2 = ModelFactory.generateAttachment(pastTimestamp, lecture2);
lecture2.addAttachments(attachment2);
course1.addLectures(lecture2);
course1 = courseRepo.save(course1);
course2 = courseRepo.save(course2);
lectureRepo.save(lecture1);
lectureRepo.save(lecture2);
attachmentRepo.save(attachment1);
attachmentRepo.save(attachment2);
modelingExercise = exerciseRepo.save(modelingExercise);
textExercise = exerciseRepo.save(textExercise);
exerciseRepo.save(fileUploadExercise);
exerciseRepo.save(programmingExercise);
exerciseRepo.save(quizExercise);
if (withParticipations) {
// create 5 tutor participations and 5 example submissions and connect all of them (to test the many-to-many relationship)
var tutorParticipations = new ArrayList<TutorParticipation>();
for (int i = 1; i < 6; i++) {
var tutorParticipation = new TutorParticipation().tutor(getUserByLogin("tutor" + i));
tutorParticipationRepo.save(tutorParticipation);
tutorParticipations.add(tutorParticipation);
}
for (int i = 0; i < 5; i++) {
String validModel = FileUtils.loadFileFromResources("test-data/model-submission/model.54727.json");
var exampleSubmission = addExampleSubmission(generateExampleSubmission(validModel, modelingExercise, true));
exampleSubmission.assessmentExplanation("exp");
for (var tutorParticipation : tutorParticipations) {
exampleSubmission.addTutorParticipations(tutorParticipation);
}
exampleSubmissionRepo.save(exampleSubmission);
}
User user = (userRepo.findOneByLogin("student1")).get();
StudentParticipation participation1 = ModelFactory.generateStudentParticipation(InitializationState.INITIALIZED, modelingExercise, user);
StudentParticipation participation2 = ModelFactory.generateStudentParticipation(InitializationState.FINISHED, textExercise, user);
StudentParticipation participation3 = ModelFactory.generateStudentParticipation(InitializationState.UNINITIALIZED, modelingExercise, user);
Submission modelingSubmission1 = ModelFactory.generateModelingSubmission("model1", true);
Submission modelingSubmission2 = ModelFactory.generateModelingSubmission("model2", true);
Submission textSubmission = ModelFactory.generateTextSubmission("text", Language.ENGLISH, true);
Result result1 = ModelFactory.generateResult(true, 10D);
Result result2 = ModelFactory.generateResult(true, 12D);
Result result3 = ModelFactory.generateResult(false, 0D);
participation1 = studentParticipationRepo.save(participation1);
participation2 = studentParticipationRepo.save(participation2);
participation3 = studentParticipationRepo.save(participation3);
submissionRepository.save(modelingSubmission1);
submissionRepository.save(modelingSubmission2);
submissionRepository.save(textSubmission);
modelingSubmission1.setParticipation(participation1);
textSubmission.setParticipation(participation2);
modelingSubmission2.setParticipation(participation3);
result1.setParticipation(participation1);
result2.setParticipation(participation3);
result3.setParticipation(participation2);
result1 = resultRepo.save(result1);
result2 = resultRepo.save(result2);
result3 = resultRepo.save(result3);
result1.setSubmission(modelingSubmission1);
result2.setSubmission(modelingSubmission2);
result3.setSubmission(textSubmission);
modelingSubmission1.addResult(result1);
modelingSubmission2.addResult(result2);
textSubmission.addResult(result3);
submissionRepository.save(modelingSubmission1);
submissionRepository.save(modelingSubmission2);
submissionRepository.save(textSubmission);
}
return Arrays.asList(course1, course2);
}
Aggregations