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.base.EducationalTimeUnitDAO; import fi.otavanopisto.pyramus.domainmodel.base.EducationalTimeUnit; import fi.otavanopisto.pyramus.framework.JSONRequestController; import fi.otavanopisto.pyramus.framework.PyramusStatusCode; import fi.otavanopisto.pyramus.framework.UserRole; public class SaveTimeUnitsJSONRequestController extends JSONRequestController { public void process(JSONRequestContext jsonRequestContext) { EducationalTimeUnitDAO educationalTimeUnitDAO = DAOFactory.getInstance().getEducationalTimeUnitDAO(); DefaultsDAO defaultsDAO = DAOFactory.getInstance().getDefaultsDAO(); EducationalTimeUnit baseTimeUnit = null; int rowCount = jsonRequestContext.getInteger("timeUnitsTable.rowCount").intValue(); for (int i = 0; i < rowCount; i++) { EducationalTimeUnit timeUnit; String colPrefix = "timeUnitsTable." + i; Long timeUnitId = jsonRequestContext.getLong(colPrefix + ".timeUnitId"); Boolean baseUnit = "1".equals(jsonRequestContext.getString(colPrefix + ".baseUnit")); Double baseUnits = jsonRequestContext.getDouble(colPrefix + ".baseUnits"); String name = jsonRequestContext.getRequest().getParameter(colPrefix + ".name"); String symbol = jsonRequestContext.getRequest().getParameter(colPrefix + ".symbol"); if (baseUnit) { baseUnits = new Double(1); } if (timeUnitId == -1) { timeUnit = educationalTimeUnitDAO.create(baseUnits, name, symbol); } else { timeUnit = educationalTimeUnitDAO.findById(timeUnitId); educationalTimeUnitDAO.update(timeUnit, baseUnits, name, symbol); } if (baseUnit) { if (baseTimeUnit != null) throw new SmvcRuntimeException(PyramusStatusCode.UNDEFINED, "Two or more baseTimeUnits defined"); baseTimeUnit = timeUnit; } } if (baseTimeUnit != null) { if (!baseTimeUnit.equals(defaultsDAO.getDefaults().getBaseTimeUnit())) { defaultsDAO.updateDefaultBaseTimeUnit(baseTimeUnit); } } jsonRequestContext.setRedirectURL(jsonRequestContext.getReferer(true)); } public UserRole[] getAllowedRoles() { return new UserRole[] { UserRole.MANAGER, UserRole.STUDY_PROGRAMME_LEADER, UserRole.ADMINISTRATOR }; } }