package edu.asu.spring.quadriga.service.network.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import edu.asu.spring.quadriga.service.network.IJsonCreator;
import edu.asu.spring.quadriga.transform.Link;
import edu.asu.spring.quadriga.transform.Node;
import edu.asu.spring.quadriga.transform.PredicateNode;
@Service
public class CytoscapeJsonCreator implements IJsonCreator {
/* (non-Javadoc)
* @see edu.asu.spring.quadriga.service.network.impl.JsonCreator#getJson(java.util.Map, java.util.List)
*/
@Override
public String getJson(Map<String, Node> nodes, List<Link> links) {
StringBuffer sb = new StringBuffer();
sb.append("[");
List<Node> nodeList = new ArrayList<Node>(nodes.values());
for (Node node : nodeList) {
sb.append("{ ");
sb.append("data: ");
sb.append("{ ");
sb.append("id: '" + node.getId() + "', ");
sb.append("conceptName: '" + node.getLabel() + "', ");
sb.append("conceptUri: '" + node.getConceptId() + "', ");
sb.append("conceptId: '" + node.getConceptIdShort() + "', ");
sb.append("group: ");
if (node instanceof PredicateNode) {
sb.append("0");
} else {
sb.append("1");
}
sb.append(", ");
sb.append("sourceReference: '" + node.getSourceReference() + "', ");
sb.append("statementIds: [");
for (int j = 0; j < node.getStatementIds().size(); j++) {
sb.append("'");
sb.append(node.getStatementIds().get(j));
sb.append("'");
if(j < node.getStatementIds().size()-1){
sb.append(",");
}
}
sb.append("], ");
sb.append(" }");
sb.append(" },\n");
}
for (Link link : links) {
sb.append("{ ");
sb.append("data: ");
sb.append("{ ");
sb.append("id: '" + links.indexOf(link) + "', ");
sb.append("source: ");
sb.append("'" + link.getSubject().getId() + "', ");
sb.append("target: ");
sb.append("'" + link.getObject().getId() + "', ");
sb.append("label: '" + link.getLabel() + "', ");
sb.append("sourceReference: '" + link.getSourceReference() + "', ");
sb.append("statementIds: ['" + link.getStatementId() + "'] ");
sb.append(" }");
sb.append(" },\n");
}
sb.append("]");
return sb.toString();
}
}