package fi.otavanopisto.pyramus.json.settings; import fi.internetix.smvc.SmvcRuntimeException; import fi.internetix.smvc.controllers.JSONRequestContext; import fi.otavanopisto.pyramus.dao.DAOFactory; import fi.otavanopisto.pyramus.dao.base.DefaultsDAO; import fi.otavanopisto.pyramus.dao.courses.CourseStateDAO; import fi.otavanopisto.pyramus.domainmodel.courses.CourseState; import fi.otavanopisto.pyramus.framework.JSONRequestController; import fi.otavanopisto.pyramus.framework.PyramusStatusCode; import fi.otavanopisto.pyramus.framework.UserRole; public class SaveCourseStatesJSONRequestController extends JSONRequestController { public void process(JSONRequestContext jsonRequestContext) { CourseStateDAO courseStateDAO = DAOFactory.getInstance().getCourseStateDAO(); DefaultsDAO defaultsDAO = DAOFactory.getInstance().getDefaultsDAO(); CourseState initialCourseState = null; int rowCount = jsonRequestContext.getInteger("courseStatesTable.rowCount").intValue(); for (int i = 0; i < rowCount; i++) { CourseState courseState; String colPrefix = "courseStatesTable." + i; Long courseStateId = jsonRequestContext.getLong(colPrefix + ".courseStateId"); Boolean initialState = "1".equals(jsonRequestContext.getString(colPrefix + ".initialState")); String name = jsonRequestContext.getRequest().getParameter(colPrefix + ".name"); if (courseStateId == -1) { courseState = courseStateDAO.create(name); } else { courseState = courseStateDAO.findById(courseStateId); courseStateDAO.update(courseState, name); } if (initialState) { if (initialCourseState != null) throw new SmvcRuntimeException(PyramusStatusCode.UNDEFINED, "Two or more initialCourseStates defined"); initialCourseState = courseState; } } if (initialCourseState != null) { if (!initialCourseState.equals(defaultsDAO.getDefaults().getInitialCourseState())) { defaultsDAO.updateDefaultInitialCourseState(initialCourseState); } } jsonRequestContext.setRedirectURL(jsonRequestContext.getReferer(true)); } public UserRole[] getAllowedRoles() { return new UserRole[] { UserRole.MANAGER, UserRole.STUDY_PROGRAMME_LEADER, UserRole.ADMINISTRATOR }; } }