package edu.asu.spring.quadriga.web.workspace; import java.security.Principal; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import edu.asu.spring.quadriga.aspects.annotations.AccessPolicies; import edu.asu.spring.quadriga.aspects.annotations.CheckedElementType; import edu.asu.spring.quadriga.aspects.annotations.ElementAccessPolicy; import edu.asu.spring.quadriga.domain.workspace.IWorkSpace; import edu.asu.spring.quadriga.domain.workspace.IWorkspaceDictionary; import edu.asu.spring.quadriga.exceptions.QuadrigaAccessException; import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException; import edu.asu.spring.quadriga.service.workspace.IWorkspaceDictionaryManager; import edu.asu.spring.quadriga.service.workspace.IWorkspaceManager; import edu.asu.spring.quadriga.web.login.RoleNames; @Controller public class DeleteWorkspaceDictionaryController { @Autowired private IWorkspaceManager wsManager; @Autowired private IWorkspaceDictionaryManager workspaceDictionaryManager; /** * Retrieve all the dictionaries associated with workspace for deletion * * @param workspaceId * @param model * @return Stirng - URL to redirect on success or failure * @throws QuadrigaStorageException * @throws QuadrigaAccessException */ @AccessPolicies({ @ElementAccessPolicy(type = CheckedElementType.WORKSPACE, paramIndex = 1, userRole = { RoleNames.ROLE_WORKSPACE_COLLABORATOR_ADMIN }) }) @RequestMapping(value = "auth/workbench/workspace/{workspaceid}/deletedictionary", method = RequestMethod.GET) public String deleteWorkspaceDictionary(@PathVariable("workspaceid") String workspaceId, Model model, Principal principal) throws QuadrigaStorageException, QuadrigaAccessException { String userId = principal.getName(); List<IWorkspaceDictionary> dicitonaryList = workspaceDictionaryManager.listWorkspaceDictionary(workspaceId, userId); model.addAttribute("dicitonaryList", dicitonaryList); IWorkSpace workspace = wsManager.getWorkspaceDetails(workspaceId, userId); model.addAttribute("workspacedetails", workspace); model.addAttribute("workspaceId", workspaceId); return "auth/workbench/workspace/deletedictionaries"; } /** * Delete the association of selected dictionaries from the workspace. * * @param req * @param workspaceId * @param model * @return String - URL to redirect the page on success or failure * @throws QuadrigaStorageException * @throws QuadrigaAccessException */ @AccessPolicies({ @ElementAccessPolicy(type = CheckedElementType.WORKSPACE, paramIndex = 2, userRole = { RoleNames.ROLE_WORKSPACE_COLLABORATOR_ADMIN }) }) @RequestMapping(value = "auth/workbench/workspace/{workspaceid}/deletedictionaries", method = RequestMethod.POST) public String deleteWorkspaceDictionary(HttpServletRequest req, @PathVariable("workspaceid") String workspaceId, Model model, RedirectAttributes attr, Principal principal) throws QuadrigaStorageException, QuadrigaAccessException { String[] values = req.getParameterValues("selected"); if (values == null) { attr.addFlashAttribute("show_error_alert", true); attr.addFlashAttribute("error_alert_msg", "Please select a Dictionary."); return "redirect:/auth/workbench/workspace/" + workspaceId + "/deletedictionary"; } for (int i = 0; i < values.length; i++) { workspaceDictionaryManager.deleteWorkspaceDictionary(workspaceId, values[i]); } attr.addFlashAttribute("show_success_alert", true); attr.addFlashAttribute("success_alert_msg", "Dictionaries deleted from workspace successfully."); return "redirect:/auth/workbench/workspace/" + workspaceId; } }