package fi.otavanopisto.pyramus.json.resources; 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.TagDAO; import fi.otavanopisto.pyramus.dao.resources.ResourceCategoryDAO; import fi.otavanopisto.pyramus.dao.resources.ResourceDAO; import fi.otavanopisto.pyramus.dao.resources.WorkResourceDAO; import fi.otavanopisto.pyramus.domainmodel.base.Tag; import fi.otavanopisto.pyramus.domainmodel.resources.ResourceCategory; import fi.otavanopisto.pyramus.domainmodel.resources.WorkResource; import fi.otavanopisto.pyramus.framework.JSONRequestController; import fi.otavanopisto.pyramus.framework.UserRole; public class CreateWorkResourceJSONRequestController extends JSONRequestController { public void process(JSONRequestContext jsonRequestContext) { ResourceDAO resourceDAO = DAOFactory.getInstance().getResourceDAO(); ResourceCategoryDAO resourceCategoryDAO = DAOFactory.getInstance().getResourceCategoryDAO(); WorkResourceDAO workResourceDAO = DAOFactory.getInstance().getWorkResourceDAO(); TagDAO tagDAO = DAOFactory.getInstance().getTagDAO(); String name = jsonRequestContext.getRequest().getParameter("name"); Double hourlyCost = NumberUtils.createDouble(jsonRequestContext.getRequest().getParameter("hourlyCost")); Double costPerUse = NumberUtils.createDouble(jsonRequestContext.getRequest().getParameter("costPerUse")); ResourceCategory resourceCategory = resourceCategoryDAO.findById(NumberUtils.createLong(jsonRequestContext.getRequest().getParameter("category"))); 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); } } } WorkResource workResource = workResourceDAO.create(name, resourceCategory, costPerUse, hourlyCost); resourceDAO.setResourceTags(workResource, tagEntities); String redirectURL = jsonRequestContext.getRequest().getContextPath() + "/resources/editworkresource.page?resource=" + workResource.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 }; } }