package fi.otavanopisto.pyramus.views.system.setupwizard; import java.util.List; import fi.internetix.smvc.controllers.PageRequestContext; import fi.otavanopisto.pyramus.dao.DAOFactory; import fi.otavanopisto.pyramus.dao.base.SchoolDAO; import fi.otavanopisto.pyramus.dao.base.SchoolFieldDAO; import fi.otavanopisto.pyramus.domainmodel.base.BillingDetails; import fi.otavanopisto.pyramus.domainmodel.base.SchoolField; import fi.otavanopisto.pyramus.util.JSONArrayExtractor; public class SchoolsSetupWizardViewController extends SetupWizardController { public SchoolsSetupWizardViewController() { super("schools"); } @Override public void setup(PageRequestContext requestContext) throws SetupWizardException{ SchoolFieldDAO schoolFieldDAO = DAOFactory.getInstance().getSchoolFieldDAO(); List<SchoolField> schoolFields = schoolFieldDAO.listUnarchived(); setJsDataVariable(requestContext, "schoolFields", new JSONArrayExtractor("name", "id").extractString(schoolFields)); } @Override public void save(PageRequestContext requestContext) throws SetupWizardException { SchoolDAO schoolDAO = DAOFactory.getInstance().getSchoolDAO(); SchoolFieldDAO schoolFieldDAO = DAOFactory.getInstance().getSchoolFieldDAO(); int rowCount = requestContext.getInteger("schoolsTable.rowCount"); for (int i = 0; i < rowCount; i++) { String colPrefix = "schoolsTable." + i; String code = requestContext.getString(colPrefix + ".code"); String name = requestContext.getString(colPrefix + ".name"); Long fieldId = requestContext.getLong(colPrefix + ".field"); if (fieldId == null) { throw new SetupWizardException("School field is missing"); } SchoolField schoolField = schoolFieldDAO.findById(fieldId); if (schoolField == null) { throw new SetupWizardException("School field is missing"); } BillingDetails billingDetails = null; schoolDAO.create(code, name, schoolField, billingDetails); } } @Override public boolean isInitialized(PageRequestContext requestContext) throws SetupWizardException { SchoolDAO schoolDAO = DAOFactory.getInstance().getSchoolDAO(); return !schoolDAO.listUnarchived().isEmpty(); } }