public Result getInteractionImage() throws IOException {
DynamicForm requestData = formFactory.form().bindFromRequest();
Integer lig_id = Integer.parseInt(requestData.get("lig_id"));
String typo = requestData.get("typo");
List<? extends InteractionHbond> interactions;
if(typo.equals("1")) {
interactions = ihbond.findByLigId(lig_id);
} else {
interactions = ivwd.findByLigId(lig_id);
}
//System.out.println(lig_id);
mxGraph graph = new mxGraph();
Object parent = graph.getDefaultParent();
Boolean first = Boolean.TRUE;
Object v1 = null;
Object v = null;
Integer y = 150;
graph.getModel().beginUpdate();
List<String> nBorList = new ArrayList<>();
for (InteractionHbond ib : interactions) {
for (Atom at : ib.getAtoms()) {
String[] neigRes = at.getNeigh_atom_str().split(" ");
if(first) {
String[] ligRes = at.getLig_atom_str().split(" ");
v1 = graph.insertVertex(parent, null, ligRes[0]+"_"+ligRes[1], 20, 20, 80,
30, "shape=ellipse;perimeter=ellipsePerimeter;strokeColor=blank;fillColor=violet");
first = Boolean.FALSE;
}
if(!nBorList.contains(neigRes[0]+"_"+neigRes[1])) {
nBorList.add(neigRes[0]+"_"+neigRes[1]);
v = graph.insertVertex(parent, null, neigRes[0]+"_"+neigRes[1], 240, y,
80, 30, "shape=ellipse;perimeter=ellipsePerimeter;strokeColor=black;fillColor=orange");
graph.insertEdge(parent, null, "", v1, v);
y +=50;
}
}
}
graph.getModel().endUpdate();
mxGraphComponent graphComponent = new mxGraphComponent(graph);
BufferedImage image = mxCellRenderer.createBufferedImage(graph, null, 1, Color.white, true, null);
ImageIO.write(image, "PNG", new File("public/metalweb/images/" + lig_id + "_" + typo + ".png"));
String img = "<img src=\"/assets/metalweb/images/" + lig_id + "_" + typo + ".png\" >";
return ok(img);
}