protected void process(ContainerUnloader container, Workspace workspace) { // Architecture GraphController graphController = Lookup.getDefault().lookup(GraphController.class); graphModel = graphController.getGraphModel(workspace); // Get graph Graph graph = graphModel.getGraph(); GraphFactory factory = graphModel.factory(); // Time Format & Time zone graphModel.setTimeFormat(container.getTimeFormat()); graphModel.setTimeZone(container.getTimeZone()); // Progress Progress.start(progressTicket, container.getNodeCount() + container.getEdgeCount()); // Attributes - Creates columns for properties flushColumns(container); // Counters int addedNodes = 0, addedEdges = 0; // Create all nodes ElementIdType elementIdType = container.getElementIdType(); for (NodeDraft draftNode : container.getNodes()) { String idString = draftNode.getId(); Object id = toElementId(elementIdType, idString); Node node = graph.getNode(id); if (node == null) { node = factory.newNode(id); addedNodes++; } flushToNode(draftNode, node); graph.addNode(node); Progress.progress(progressTicket); } // Create all edges and push to data structure for (EdgeDraft draftEdge : container.getEdges()) { String idString = draftEdge.getId(); Object id = toElementId(elementIdType, idString); String sourceId = draftEdge.getSource().getId(); String targetId = draftEdge.getTarget().getId(); Node source = graph.getNode(toElementId(elementIdType, sourceId)); Node target = graph.getNode(toElementId(elementIdType, targetId)); Object type = draftEdge.getType(); int edgeType = graphModel.addEdgeType(type); Edge edge = graph.getEdge(source, target, edgeType); if (edge == null) { switch (container.getEdgeDefault()) { case DIRECTED: edge = factory.newEdge(id, source, target, edgeType, draftEdge.getWeight(), true); break; case UNDIRECTED: edge = factory.newEdge(id, source, target, edgeType, draftEdge.getWeight(), false); break; case MIXED: boolean directed = draftEdge.getDirection() == null || !draftEdge.getDirection().equals(EdgeDirection.UNDIRECTED); edge = factory.newEdge(id, source, target, edgeType, draftEdge.getWeight(), directed); break; } addedEdges++; } flushToEdge(draftEdge, edge); graph.addEdge(edge); Progress.progress(progressTicket); } // Report int touchedNodes = container.getNodeCount(); int touchedEdges = container.getEdgeCount(); if (touchedNodes != addedNodes || touchedEdges != addedEdges) { Logger.getLogger(getClass().getSimpleName()) .log( Level.INFO, "# Nodes loaded: {0} ({1} added)", new Object[] {touchedNodes, addedNodes}); Logger.getLogger(getClass().getSimpleName()) .log( Level.INFO, "# Edges loaded: {0} ({1} added)", new Object[] {touchedEdges, addedEdges}); } else { Logger.getLogger(getClass().getSimpleName()) .log(Level.INFO, "# Nodes loaded: {0}", new Object[] {touchedNodes}); Logger.getLogger(getClass().getSimpleName()) .log(Level.INFO, "# Edges loaded: {0}", new Object[] {touchedEdges}); } Progress.finish(progressTicket); }
@Test public void testPNG() { try { // Init a project - and therefore a workspace ProjectController pc = Lookup.getDefault().lookup(ProjectController.class); pc.newProject(); Workspace workspace = pc.getCurrentWorkspace(); // Append container to graph structure String sample = "/org/gephi/desktop/welcome/samples/Les Miserables.gexf"; final InputStream stream = WelcomeTopComponent.class.getResourceAsStream(sample); ImportController importController = Lookup.getDefault().lookup(ImportController.class); FileImporter fileImporter = importController.getFileImporter(".gexf"); Container container = importController.importFile(stream, fileImporter); importController.process(container, new DefaultProcessor(), workspace); // Add self loop GraphController graphController = Lookup.getDefault().lookup(GraphController.class); Graph graph = graphController.getModel().getGraph(); Node node = graph.getNode(12); System.out.println("Self loop " + node.getNodeData().getLabel()); graph.addEdge(graphController.getModel().factory().newEdge(node, node, 31, true)); // Set label edges for (Edge edge : graphController.getModel().getGraph().getEdges()) { edge.getEdgeData().setLabel("Label test"); } // svg document // attribute ??? AttributeController attributeController = Lookup.getDefault().lookup(AttributeController.class); AttributeModel attributeModel = null; // preview PreviewController previewController = Lookup.getDefault().lookup(PreviewController.class); PreviewModel previewModel = previewController.getModel(workspace); PreviewProperties previewProperties = previewModel.getProperties(); previewController.refreshPreview(workspace); previewModel.getProperties().putValue("width", 1000); previewModel.getProperties().putValue("height", 1000); ProcessingTarget target = (ProcessingTarget) previewController.getRenderTarget(RenderTarget.PROCESSING_TARGET, workspace); previewProperties.putValue(LegendModel.LEGEND_PROPERTIES, new LegendModel(workspace)); LegendModel legendManager = previewProperties.getValue(LegendModel.LEGEND_PROPERTIES); Integer itemIndex = legendManager.getCurrentIndex(); // creating item Item item = addGroupsItem(itemIndex, graph, attributeModel); // Item item = addTextItem(itemIndex, graph, attributeModel); // add item LegendController.getInstance().addItemToLegendModel(workspace, item); // render previewController.refreshPreview(workspace); previewController.render(target); File fileToSave = new File("/Volumes/edubecks/edubecks/Untitled.png"); OutputStream fos = new FileOutputStream(fileToSave); Writer writer = new OutputStreamWriter(fos, "UTF-8"); // // saving // int width = 1000; // int height = 1000; // PGraphicsJava2D pg2 = (PGraphicsJava2D) target.getGraphics(); // BufferedImage img = new BufferedImage(width, height, // BufferedImage.TYPE_INT_ARGB); // // System.out.println("@Var: pg2.pixels: "+pg2.pixels); // img.setRGB(0, 0, width, height, pg2.pixels, 0, width); // ImageIO.write(img, "png", fileToSave); // stream.close(); PNGExporter pngExporter = new PNGExporter(); // pngExporter.setHeight(2000); // pngExporter.setWidth(2000); pngExporter.setWorkspace(workspace); pngExporter.setOutputStream(fos); pngExporter.execute(); } catch (Exception e) { Exceptions.printStackTrace(e); } }
public Graph retrieveGraph(GraphModel graphModel, boolean isFilterGraph) { Graph graph = graphModel.getGraph(); graph.clear(); Map<Integer, JsonObject> nMap; Map<Integer, JsonObject> eMap; if (!isFilterGraph) { nMap = nodesMap; eMap = edgesMap; } else { nMap = nodesMapFilter; eMap = edgesMapFilter; } for (Entry<Integer, JsonObject> enSet : nMap.entrySet()) { Map<String, Object> map = enSet.getValue().getMap(); Node node = graphModel.factory().newNode(enSet.getValue().getValue("id")); for (Entry<String, Object> attSet : map.entrySet()) { if (!attSet.getKey().equalsIgnoreCase("id") && !attSet.getKey().equalsIgnoreCase("x") && !attSet.getKey().equalsIgnoreCase("y") && !attSet.getKey().equalsIgnoreCase("cR") && !attSet.getKey().equalsIgnoreCase("size") && !attSet.getKey().equalsIgnoreCase("cG") && !attSet.getKey().equalsIgnoreCase("cB")) { node.setAttribute(attSet.getKey(), attSet.getValue()); } if (attSet.getKey().equalsIgnoreCase("x")) { node.setX((float) attSet.getValue()); } if (attSet.getKey().equalsIgnoreCase("y")) { node.setY((float) attSet.getValue()); } } node.setSize((float) Double.parseDouble(map.get("size").toString())); node.setColor( new Color( (float) Double.parseDouble(map.get("cR").toString()), (float) Double.parseDouble(map.get("cG").toString()), (float) Double.parseDouble(map.get("cB").toString()))); graph.addNode(node); } for (Entry<Integer, JsonObject> enSet : eMap.entrySet()) { Map<String, Object> map = enSet.getValue().getMap(); Edge edge = graphModel .factory() .newEdge( map.get("id"), graph.getNode(map.get("source")), graph.getNode(map.get("target")), 1, Double.parseDouble(map.get("weight").toString()), true); for (Entry<String, Object> attSet : map.entrySet()) { if (!attSet.getKey().equalsIgnoreCase("id") && !attSet.getKey().equalsIgnoreCase("source") && !attSet.getKey().equalsIgnoreCase("target") && !attSet.getKey().equalsIgnoreCase("size") && !attSet.getKey().equalsIgnoreCase("cR") && !attSet.getKey().equalsIgnoreCase("cG") && !attSet.getKey().equalsIgnoreCase("cB")) { edge.setAttribute(attSet.getKey(), attSet.getValue()); } } edge.setWeight(Double.parseDouble(map.get("size").toString())); edge.setColor( new Color( (float) Double.parseDouble(map.get("cR").toString()), (float) Double.parseDouble(map.get("cG").toString()), (float) Double.parseDouble(map.get("cB").toString()))); graph.addEdge(edge); } return graph; }