package fi.otavanopisto.pyramus.json.projects; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; import fi.internetix.smvc.controllers.JSONRequestContext; import fi.otavanopisto.pyramus.dao.DAOFactory; import fi.otavanopisto.pyramus.dao.base.EducationalTimeUnitDAO; import fi.otavanopisto.pyramus.dao.base.TagDAO; import fi.otavanopisto.pyramus.dao.modules.ModuleDAO; import fi.otavanopisto.pyramus.dao.projects.ProjectDAO; import fi.otavanopisto.pyramus.dao.projects.ProjectModuleDAO; import fi.otavanopisto.pyramus.dao.users.StaffMemberDAO; import fi.otavanopisto.pyramus.domainmodel.base.EducationalTimeUnit; import fi.otavanopisto.pyramus.domainmodel.base.Tag; import fi.otavanopisto.pyramus.domainmodel.modules.Module; import fi.otavanopisto.pyramus.domainmodel.projects.Project; import fi.otavanopisto.pyramus.domainmodel.projects.ProjectModuleOptionality; import fi.otavanopisto.pyramus.domainmodel.users.User; import fi.otavanopisto.pyramus.framework.JSONRequestController; import fi.otavanopisto.pyramus.framework.UserRole; public class CreateProjectJSONRequestController extends JSONRequestController { public void process(JSONRequestContext jsonRequestContext) { StaffMemberDAO userDAO = DAOFactory.getInstance().getStaffMemberDAO(); ModuleDAO moduleDAO = DAOFactory.getInstance().getModuleDAO(); ProjectDAO projectDAO = DAOFactory.getInstance().getProjectDAO(); ProjectModuleDAO projectModuleDAO = DAOFactory.getInstance().getProjectModuleDAO(); EducationalTimeUnitDAO educationalTimeUnitDAO = DAOFactory.getInstance().getEducationalTimeUnitDAO(); TagDAO tagDAO = DAOFactory.getInstance().getTagDAO(); // Project String name = jsonRequestContext.getRequest().getParameter("name"); String description = jsonRequestContext.getRequest().getParameter("description"); String tagsText = jsonRequestContext.getString("tags"); Set<Tag> tagEntities = new HashSet<>(); if (!StringUtils.isBlank(tagsText)) { List<String> tags = Arrays.asList(tagsText.split("[\\ ,]")); for (String tag : tags) { if (!StringUtils.isBlank(tag)) { Tag tagEntity = tagDAO.findByText(tag.trim()); if (tagEntity == null) tagEntity = tagDAO.create(tag); tagEntities.add(tagEntity); } } } User loggedUser = userDAO.findById(jsonRequestContext.getLoggedUserId()); Long optionalStudiesLengthTimeUnitId = NumberUtils.createLong(jsonRequestContext.getRequest().getParameter( "optionalStudiesLengthTimeUnit")); EducationalTimeUnit optionalStudiesLengthTimeUnit = educationalTimeUnitDAO.findById(optionalStudiesLengthTimeUnitId); Double optionalStudiesLength = NumberUtils.createDouble(jsonRequestContext.getRequest().getParameter( "optionalStudiesLength")); Project project = projectDAO.create(name, description, optionalStudiesLength, optionalStudiesLengthTimeUnit, loggedUser); // Tags projectDAO.updateTags(project, tagEntities); // Project modules int rowCount = NumberUtils.createInteger( jsonRequestContext.getRequest().getParameter("modulesTable.rowCount")).intValue(); for (int i = 0; i < rowCount; i++) { String colPrefix = "modulesTable." + i; Long moduleId = NumberUtils.createLong(jsonRequestContext.getRequest().getParameter(colPrefix + ".moduleId")); Module module = moduleDAO.findById(moduleId); int optionality = new Integer(jsonRequestContext.getRequest().getParameter(colPrefix + ".optionality")) .intValue(); projectModuleDAO.create(project, module, ProjectModuleOptionality.getOptionality(optionality)); } String redirectURL = jsonRequestContext.getRequest().getContextPath() + "/projects/editproject.page?project=" + project.getId(); String refererAnchor = jsonRequestContext.getRefererAnchor(); if (!StringUtils.isBlank(refererAnchor)) redirectURL += "#" + refererAnchor; jsonRequestContext.setRedirectURL(redirectURL); } public UserRole[] getAllowedRoles() { return new UserRole[] { UserRole.MANAGER, UserRole.STUDY_PROGRAMME_LEADER, UserRole.ADMINISTRATOR }; } }