use of de.tum.in.www1.artemis.domain.modeling.ModelingExercise in project Artemis by ls1intum.
the class DatabaseUtilService method createSubmissionAndResult.
public Result createSubmissionAndResult(StudentParticipation studentParticipation, long scoreAwarded, boolean rated) {
Exercise exercise = studentParticipation.getExercise();
Submission submission;
if (exercise instanceof ProgrammingExercise) {
submission = new ProgrammingSubmission();
} else if (exercise instanceof ModelingExercise) {
submission = new ModelingSubmission();
} else if (exercise instanceof TextExercise) {
submission = new TextSubmission();
} else if (exercise instanceof FileUploadExercise) {
submission = new FileUploadSubmission();
} else if (exercise instanceof QuizExercise) {
submission = new QuizSubmission();
} else {
throw new RuntimeException("Unsupported exercise type: " + exercise);
}
submission.setType(SubmissionType.MANUAL);
submission.setParticipation(studentParticipation);
submission = submissionRepository.saveAndFlush(submission);
Result result = ModelFactory.generateResult(rated, scoreAwarded);
result.setParticipation(studentParticipation);
result.setSubmission(submission);
result.completionDate(ZonedDateTime.now());
submission.addResult(result);
submission = submissionRepository.saveAndFlush(submission);
return submission.getResults().get(0);
}
use of de.tum.in.www1.artemis.domain.modeling.ModelingExercise in project Artemis by ls1intum.
the class DatabaseUtilService method addCourseWithOneExerciseAndSubmissions.
/**
* Generates a course with one specific exercise, and an arbitrare amount of submissions.
*
* @param exerciseType - the type of exercise which should be generated: modeling, programming, file-pload or text
* @param numberOfSubmissions - the amount of submissions which should be generated for an exercise
* @param modelForModelingExercise - the model string for a modeling exercise
* @return a course with an exercise with submissions
*/
public Course addCourseWithOneExerciseAndSubmissions(String exerciseType, int numberOfSubmissions, Optional<String> modelForModelingExercise) {
Course course;
Exercise exercise;
switch(exerciseType) {
case "modeling":
course = addCourseWithOneModelingExercise();
exercise = exerciseRepo.findAllExercisesByCourseId(course.getId()).iterator().next();
for (int j = 1; j <= numberOfSubmissions; j++) {
StudentParticipation participation = createAndSaveParticipationForExercise(exercise, "student" + j);
assertThat(modelForModelingExercise).isNotEmpty();
ModelingSubmission submission = ModelFactory.generateModelingSubmission(modelForModelingExercise.get(), true);
modelSubmissionService.save(submission, (ModelingExercise) exercise, "student" + j);
studentParticipationRepo.save(participation);
}
return course;
case "programming":
course = addCourseWithOneProgrammingExercise();
exercise = exerciseRepo.findAllExercisesByCourseId(course.getId()).iterator().next();
for (int j = 1; j <= numberOfSubmissions; j++) {
ProgrammingSubmission submission = new ProgrammingSubmission();
addProgrammingSubmission((ProgrammingExercise) exercise, submission, "student" + j);
}
return course;
case "text":
course = addCourseWithOneFinishedTextExercise();
exercise = exerciseRepo.findAllExercisesByCourseId(course.getId()).iterator().next();
for (int j = 1; j <= numberOfSubmissions; j++) {
TextSubmission textSubmission = ModelFactory.generateTextSubmission("Text" + j + j, null, true);
saveTextSubmission((TextExercise) exercise, textSubmission, "student" + j);
}
return course;
case "file-upload":
course = addCourseWithFileUploadExercise();
exercise = exerciseRepo.findAllExercisesByCourseId(course.getId()).iterator().next();
for (int j = 1; j <= numberOfSubmissions; j++) {
FileUploadSubmission submission = ModelFactory.generateFileUploadSubmissionWithFile(true, "path/to/file.pdf");
saveFileUploadSubmission((FileUploadExercise) exercise, submission, "student" + j);
}
return course;
default:
return null;
}
}
use of de.tum.in.www1.artemis.domain.modeling.ModelingExercise in project Artemis by ls1intum.
the class DatabaseUtilService method addModelingSubmissionWithEmptyResult.
/**
* Stores for the given model a submission of the user and initiates the corresponding Result
*
* @param exercise exercise the submission belongs to
* @param model ModelingSubmission json as string contained in the submission
* @param login of the user the submission belongs to
* @return submission stored in the modelingSubmissionRepository
*/
public ModelingSubmission addModelingSubmissionWithEmptyResult(ModelingExercise exercise, String model, String login) {
StudentParticipation participation = createAndSaveParticipationForExercise(exercise, login);
ModelingSubmission submission = ModelFactory.generateModelingSubmission(model, true);
submission = modelSubmissionService.save(submission, exercise, login);
Result result = new Result();
result = resultRepo.save(result);
result.setSubmission(submission);
submission.addResult(result);
participation.addResult(result);
studentParticipationRepo.save(participation);
modelingSubmissionRepo.save(submission);
resultRepo.save(result);
return submission;
}
use of de.tum.in.www1.artemis.domain.modeling.ModelingExercise in project Artemis by ls1intum.
the class DatabaseUtilService method createCourseWithTestModelingAndFileUploadExercisesAndSubmissions.
public Course createCourseWithTestModelingAndFileUploadExercisesAndSubmissions() throws Exception {
Course course = addCourseWithModelingAndTextAndFileUploadExercise();
course.setEndDate(ZonedDateTime.now().minusMinutes(5));
course = courseRepo.save(course);
var fileUploadExercise = findFileUploadExerciseWithTitle(course.getExercises(), "FileUpload");
createFileUploadSubmissionWithFile(fileUploadExercise, "uploaded-file.png");
var textExercise = findTextExerciseWithTitle(course.getExercises(), "Text");
var textSubmission = ModelFactory.generateTextSubmission("example text", Language.ENGLISH, true);
saveTextSubmission(textExercise, textSubmission, "student1");
var modelingExercise = findModelingExerciseWithTitle(course.getExercises(), "Modeling");
createAndSaveParticipationForExercise(modelingExercise, "student1");
String emptyActivityModel = FileUtils.loadFileFromResources("test-data/model-submission/empty-activity-diagram.json");
ModelingSubmission submission = ModelFactory.generateModelingSubmission(emptyActivityModel, true);
addSubmission(modelingExercise, submission, "student1");
return course;
}
use of de.tum.in.www1.artemis.domain.modeling.ModelingExercise in project Artemis by ls1intum.
the class DatabaseUtilService method createCourseWithExamAndExercises.
public Course createCourseWithExamAndExercises() throws IOException {
Course course = courseRepo.save(addEmptyCourse());
// Create a file upload exercise with a dummy submission file
var exerciseGroup1 = exerciseGroupRepository.save(new ExerciseGroup());
var fileUploadExercise = ModelFactory.generateFileUploadExerciseForExam(".png", exerciseGroup1);
fileUploadExercise = exerciseRepo.save(fileUploadExercise);
createFileUploadSubmissionWithFile(fileUploadExercise, "uploaded-file.png");
exerciseGroup1.addExercise(fileUploadExercise);
exerciseGroup1 = exerciseGroupRepository.save(exerciseGroup1);
// Create a text exercise with a dummy submission file
var exerciseGroup2 = exerciseGroupRepository.save(new ExerciseGroup());
var textExercise = ModelFactory.generateTextExerciseForExam(exerciseGroup2);
textExercise = exerciseRepo.save(textExercise);
var textSubmission = ModelFactory.generateTextSubmission("example text", Language.ENGLISH, true);
saveTextSubmission(textExercise, textSubmission, "student1");
exerciseGroup2.addExercise(textExercise);
exerciseGroup2 = exerciseGroupRepository.save(exerciseGroup2);
// Create a modeling exercise with a dummy submission file
var exerciseGroup3 = exerciseGroupRepository.save(new ExerciseGroup());
var modelingExercise = ModelFactory.generateModelingExerciseForExam(DiagramType.ClassDiagram, exerciseGroup2);
modelingExercise = exerciseRepo.save(modelingExercise);
String emptyActivityModel = FileUtils.loadFileFromResources("test-data/model-submission/empty-activity-diagram.json");
var modelingSubmission = ModelFactory.generateModelingSubmission(emptyActivityModel, true);
addSubmission(modelingExercise, modelingSubmission, "student1");
exerciseGroup3.addExercise(modelingExercise);
exerciseGroupRepository.save(exerciseGroup3);
Exam exam = addExam(course);
exam.setEndDate(ZonedDateTime.now().minusMinutes(5));
exam.addExerciseGroup(exerciseGroup1);
exam.addExerciseGroup(exerciseGroup2);
examRepository.save(exam);
return course;
}
Aggregations