@Override public OperationResult run(Connection conn) throws SQLException { // First, find the user User user = Queries.getUser(conn, spec.getUsername(), this); if (user == null) { return new OperationResult(false, "Unknown user " + spec.getUsername()); } // Create the CourseRegistration CourseRegistration reg = new CourseRegistration(); reg.setUserId(user.getId()); reg.setCourseId(spec.getCourseId()); reg.setRegistrationType(spec.getRegistrationType()); reg.setSection(spec.getSection()); // Insert the CourseRegistration DBUtil.storeModelObject(conn, reg); Course course = null; try { course = DBUtil.loadModelObjectForId(conn, Course.SCHEMA, spec.getCourseId()); } catch (NoSuchUniqueIdException e) { logger.error("Could not find course for id={}", spec.getCourseId()); } return new OperationResult( true, "Added user " + spec.getUsername() + " to course" + (course != null ? " " + course.getNameAndTitle() : "")); }
@Override public void startImportAllProblemsFromCourse(Course source, Course dest) throws CloudCoderAuthenticationException { User authenticatedUser = ServletUtil.checkClientIsAuthenticated( getThreadLocalRequest(), GetCoursesAndProblemsServiceImpl.class); // Make sure that the authenticated user is registered as an instructor for // both the source and destination courses. boolean sourceInstructor = false, destInstructor = false; List<? extends Object[]> courses = Database.getInstance().getCoursesForUser(authenticatedUser); for (Object[] triple : courses) { CourseRegistration reg = (CourseRegistration) triple[2]; if (reg.getCourseId() == source.getId() && reg.getRegistrationType().isInstructor()) { sourceInstructor = true; } if (reg.getCourseId() == dest.getId() && reg.getRegistrationType().isInstructor()) { destInstructor = true; } } // Create a FutureImportCourseResult FutureImportCourseResult result = new FutureImportCourseResult(); getThreadLocalRequest() .getSession() .setAttribute(SessionAttributeKeys.FUTURE_IMPORT_COURSE_RESULT_KEY, result); if (!sourceInstructor || !destInstructor) { result.set(new OperationResult(false, "Permission denied (not an instructor)")); return; } // Start the actual operation result.start(source, dest, authenticatedUser); }