ActionMessages errors = this.validate(problemForm, context);
if (errors.size() > 0) {
return this.handleFailure(mapping, context, errors);
}
ProblemPersistence problemPersistence = PersistenceManager.getInstance().getProblemPersistence();
AbstractContest contest = context.getContest();
Problem problem = problemForm.toProblem();
if (problemForm.isUseContestDefault()) {
problem.getLimit().setId(contest.getLimit().getId());
}
long userId = context.getUserSecurity().getId();
// create problem
problemPersistence.createProblem(problem, userId);
// cprete problem reference, i.e. text, input, output, checker, judge solution, checker source
this.createReference(ReferenceType.DESCRIPTION, problemForm.getDescription(), problem.getId(), userId);
this.createReference(ReferenceType.INPUT, problemForm.getInputData(), problem.getId(), userId);
this.createReference(ReferenceType.OUTPUT, problemForm.getOutputData(), problem.getId(), userId);