package edu.asu.spring.quadriga.web.publicwebsite;
import javax.xml.bind.JAXBException;
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 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.workbench.IProject;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
import edu.asu.spring.quadriga.service.network.IJsonCreator;
import edu.asu.spring.quadriga.service.network.INetworkTransformationManager;
import edu.asu.spring.quadriga.service.network.domain.ITransformedNetwork;
import edu.asu.spring.quadriga.web.network.INetworkStatus;
@Controller
public class ExploreNetworksController {
@Autowired
private INetworkTransformationManager transformationManager;
@Autowired
private IJsonCreator jsonCreator;
/**
* This method gives the visualization of all the networks in a project
*
* @param projectUnixName
* The project unix name
* @param model
* Model
* @return view
* @throws JAXBException
* @throws QuadrigaStorageException
*/
@CheckPublicAccess
@InjectProjectByName
@RequestMapping(value = "sites/{projectUnixName}/networks", method = RequestMethod.GET)
public String visualizeAllNetworks(@ProjectIdentifier @PathVariable("projectUnixName") String projectUnixName, Model model,
@CheckAccess @InjectProject IProject project) throws JAXBException, QuadrigaStorageException {
ITransformedNetwork transformedNetwork = transformationManager
.getTransformedNetworkOfProject(project.getProjectId(), INetworkStatus.APPROVED);
String json = null;
if (transformedNetwork != null) {
json = jsonCreator.getJson(transformedNetwork.getNodes(), transformedNetwork.getLinks());
}
model.addAttribute("jsonstring", json);
model.addAttribute("networkid", "\"\"");
model.addAttribute("project", project);
model.addAttribute("unixName", projectUnixName);
return "sites/networks/explore";
}
}