package edu.asu.spring.quadriga.web.editing;
import java.security.Principal;
import javax.xml.bind.JAXBException;
import org.codehaus.jettison.json.JSONException;
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.domain.network.INetwork;
import edu.asu.spring.quadriga.exceptions.QStoreStorageException;
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;
@Controller
public class AnnotateNetworkController {
@Autowired
private INetworkManager networkManager;
@Autowired
private INetworkTransformationManager transformationManager;
@Autowired
private ID3Creator d3Creator;
/**
* Get the network displayed on to JSP by passing JSON string and allow to add annotations
* @author Lohith Dwaraka
* @param networkId
* @param model
* @param principal
* @return
* @throws QuadrigaStorageException
* @throws JAXBException
* @throws JSONException
* @throws QStoreStorageException
*/
@RequestMapping(value = "auth/editing/editnetworks/{networkId}", method = RequestMethod.GET)
public String visualizeAndEditNetworksByD3(@PathVariable("networkId") String networkId, ModelMap model, Principal principal) throws QuadrigaStorageException, JAXBException, JSONException, QStoreStorageException {
INetwork network = networkManager.getNetwork(networkId);
if(network==null){
return "auth/404";
}
ITransformedNetwork transformedNetwork = transformationManager.getTransformedNetwork(networkId);
String nwId = "\""+networkId+"\"";
model.addAttribute("networkid",nwId);
String json = null;
if(transformedNetwork!=null){
json = d3Creator.getD3JSON(transformedNetwork.getNodes(), transformedNetwork.getLinks());
}
model.addAttribute("network", network);
model.addAttribute("jsonstring",json);
return "auth/editing/editnetworks";
}
}