package edu.asu.spring.quadriga.web.workspace; import java.security.Principal; import java.util.Locale; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.ModelAttribute; 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.bind.annotation.RequestParam; 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.exceptions.QuadrigaAccessException; import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException; import edu.asu.spring.quadriga.service.workspace.IModifyWSManager; import edu.asu.spring.quadriga.web.login.RoleNames; import edu.asu.spring.quadriga.web.workspace.backing.ModifyWorkspaceForm; @Controller public class DeleteWSController { @Autowired private IModifyWSManager modifyWSManger; @Autowired private MessageSource messageSource; /** * This calls workspaceManager to delete the workspace submitted. * * @param projectid * @param req * @param model * @param principal * @return String - URL of the form * @throws QuadrigaStorageException * @author Karthikeyan Mohan * @throws QuadrigaAccessException */ @AccessPolicies({ @ElementAccessPolicy(type = CheckedElementType.WORKSPACE, paramIndex = 0, userRole = { RoleNames.ROLE_COLLABORATOR_OWNER, RoleNames.ROLE_PROJ_COLLABORATOR_ADMIN}) }) @RequestMapping(value = "auth/workbench/deleteSingleWorkspace/{workspaceid}", method = RequestMethod.GET) public String deleteSingleWorkspaceRequest(@RequestParam("projectId") String myprojectid, @Validated @ModelAttribute("workspaceform") ModifyWorkspaceForm workspaceForm, BindingResult result, @PathVariable("workspaceid") String workspaceid, Principal principal, RedirectAttributes redirectAttrs, Locale locale) throws QuadrigaStorageException, QuadrigaAccessException { modifyWSManger.deleteWorkspace(workspaceid); redirectAttrs.addFlashAttribute("show_success_alert", true); redirectAttrs.addFlashAttribute("success_alert_msg", messageSource.getMessage("workspace.delete.success", new String[] {}, locale)); return "redirect:/auth/workbench/projects/" + myprojectid; } }