package fi.otavanopisto.pyramus.views.system.setupwizard; import fi.internetix.smvc.controllers.PageRequestContext; 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; public class TimeUnitsSetupWizardViewController extends SetupWizardController { public TimeUnitsSetupWizardViewController() { super("timeunits"); } @Override public void setup(PageRequestContext requestContext) throws SetupWizardException { } @Override public void save(PageRequestContext requestContext) throws SetupWizardException { EducationalTimeUnitDAO educationalTimeUnitDAO = DAOFactory.getInstance().getEducationalTimeUnitDAO(); DefaultsDAO defaultsDAO = DAOFactory.getInstance().getDefaultsDAO(); EducationalTimeUnit baseTimeUnit = null; int rowCount = requestContext.getInteger("timeUnitsTable.rowCount").intValue(); for (int i = 0; i < rowCount; i++) { String colPrefix = "timeUnitsTable." + i; Boolean baseUnit = "1".equals(requestContext.getString(colPrefix + ".baseUnit")); Double baseUnits = requestContext.getDouble(colPrefix + ".baseUnits"); String name = requestContext.getRequest().getParameter(colPrefix + ".name"); String symbol = requestContext.getRequest().getParameter(colPrefix + ".symbol"); if (baseUnit) { baseUnits = new Double(1); } EducationalTimeUnit timeUnit = educationalTimeUnitDAO.create(baseUnits, name, symbol); if (baseUnit) { if (baseTimeUnit != null) { throw new SetupWizardException("Two or more base time units defined"); } else { baseTimeUnit = timeUnit; } } } if (baseTimeUnit != null) { defaultsDAO.updateDefaultBaseTimeUnit(baseTimeUnit); } else { throw new SetupWizardException("Base time unit is not defined"); } } @Override public boolean isInitialized(PageRequestContext requestContext) throws SetupWizardException { EducationalTimeUnitDAO educationalTimeUnitDAO = DAOFactory.getInstance().getEducationalTimeUnitDAO(); return !educationalTimeUnitDAO.listUnarchived().isEmpty(); } }