package edu.asu.spring.quadriga.web.publicwebsite; 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.CheckAccess; import edu.asu.spring.quadriga.aspects.annotations.CheckPublicAccess; import edu.asu.spring.quadriga.aspects.annotations.InjectProject; import edu.asu.spring.quadriga.aspects.annotations.InjectProjectByName; import edu.asu.spring.quadriga.aspects.annotations.ProjectIdentifier; import edu.asu.spring.quadriga.domain.network.INetwork; import edu.asu.spring.quadriga.domain.workbench.IProject; import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException; import edu.asu.spring.quadriga.service.network.IJsonCreator; 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; @Controller public class VisualizeNetworkController { @Autowired private INetworkTransformationManager transformationManager; @Autowired private IJsonCreator jsonCreator; @Autowired private INetworkManager networkmanager; /** * This method gives the visualization of the network with the given network * id * * @param networkId * network id of the network that has to be visualized * @param model * ModelMap object to map values to view * @param principal * current session user * @return returns a string to access the visualize network page of the * project external website * @throws QuadrigaStorageException * Database storage exception thrown * @throws JAXBException * JAXB exception while getting the JSON */ @CheckPublicAccess @InjectProjectByName @RequestMapping(value = "sites/{projectUnixName}/networks/{networkId}", method = RequestMethod.GET) public String visualizeNetworks(@ProjectIdentifier @PathVariable("projectUnixName") String unixName, @PathVariable("networkId") String networkId, ModelMap model, Principal principal, @CheckAccess @InjectProject IProject project) throws QuadrigaStorageException, JAXBException { INetwork network = networkmanager.getNetwork(networkId); if (network == null) { return "public/404"; } model.addAttribute("project", project); model.addAttribute("network", network); model.addAttribute("unixName", unixName); ITransformedNetwork transformedNetwork = transformationManager.getTransformedNetwork(networkId); // test the transformed networks String nwId = "\"" + networkId + "\""; model.addAttribute("networkid", nwId); String json = null; if (transformedNetwork != null) { json = jsonCreator.getJson(transformedNetwork.getNodes(), transformedNetwork.getLinks()); } model.addAttribute("jsonstring", json); return "sites/networks/visualize"; } }