package edu.asu.spring.quadriga.web.editing; import java.security.Principal; import javax.xml.bind.JAXBException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; 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.network.INetwork; import edu.asu.spring.quadriga.exceptions.QuadrigaAccessException; import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException; import edu.asu.spring.quadriga.service.network.ID3Creator; import edu.asu.spring.quadriga.service.network.INetworkManager; import edu.asu.spring.quadriga.service.network.INetworkTransformationManager; import edu.asu.spring.quadriga.service.network.domain.ITransformedNetwork; import edu.asu.spring.quadriga.web.login.RoleNames; @Controller public class VisualizeNetworkEditingController { @Autowired private INetworkManager networkManager; @Autowired private INetworkTransformationManager transformationManager; @Autowired private ID3Creator d3Creator; /** * Get the network displayed on to JSP by passing JSON string on editing * page * * @author Lohith Dwaraka * @param networkId * @param model * @param principal * @return * @throws QuadrigaStorageException * @throws JAXBException */ @AccessPolicies({ @ElementAccessPolicy(type = CheckedElementType.PROJECT, paramIndex = 0, userRole = { RoleNames.ROLE_PROJ_COLLABORATOR_EDITOR }), @ElementAccessPolicy(type = CheckedElementType.WORKSPACE, paramIndex = 0, userRole = { RoleNames.ROLE_WORKSPACE_COLLABORATOR_ADMIN, RoleNames.ROLE_WORKSPACE_COLLABORATOR_CONTRIBUTOR }), @ElementAccessPolicy(type = CheckedElementType.NETWORK, paramIndex = 1, userRole = {}) }) @RequestMapping(value = "auth/editing/visualize/{networkId}", method = RequestMethod.GET) public String visualizeNetworks(@PathVariable("networkId") String networkId, ModelMap model, Principal principal) throws QuadrigaStorageException, JAXBException, QuadrigaAccessException { INetwork network = networkManager.getNetwork(networkId); if (network == null) { return "auth/accessissue"; } ITransformedNetwork transformedNetwork = transformationManager.getTransformedNetwork(networkId); String nwId = "\"" + networkId + "\""; model.addAttribute("networkid", nwId); String json = ""; if (transformedNetwork != null) { json = d3Creator.getD3JSON(transformedNetwork.getNodes(), transformedNetwork.getLinks()); } model.addAttribute("network", network); model.addAttribute("jsonstring", json); return "auth/editing/visualize"; } }