List of usage examples for org.apache.commons.collections15 Transformer Transformer
Transformer
From source file:net.java.treaty.viz.ContractView.java
private void configureRenderer(RenderContext context) { context.setVertexLabelTransformer(new Transformer<Object, String>() { @Override/*w w w .jav a 2s .c o m*/ public String transform(Object v) { if (v instanceof CompositionNode) { CompositionNode c = (CompositionNode) v; return asHTMLLabel(c.type.toString(), 3); } else if (v instanceof EndNode) { EndNode en = (EndNode) v; return asHTMLLabel(en.type.toString(), 4); } else if (v instanceof ResourceNode) { ResourceNode en = (ResourceNode) v; if (en.isVirtual()) return "<virtual node>"; Resource r = en.resource; return asHTMLLabel(r.getId(), 2); } else if (v instanceof RelationshipConditionNode) { RelationshipConditionNode en = (RelationshipConditionNode) v; String uri = en.condition.getRelationship().toString(); String l = null; if (showConditionURINS) { l = uri; } else { int pos = uri.indexOf("#"); l = pos > -1 ? uri.substring(pos + 1) : uri; } return asHTMLLabel(l, 4); } else if (v instanceof ExistsConditionNode) { return asHTMLLabel("must exist", 4); } else if (v instanceof PropertyConditionNode) { PropertyConditionNode p = (PropertyConditionNode) v; String uri = p.condition.getOperator().toString(); String l = null; if (showConditionURINS) { l = uri; } else { int pos = uri.indexOf("#"); l = pos > -1 ? uri.substring(pos + 1) : uri; } return asHTMLLabel(l + " " + p.condition.getValue(), 4); } else return v.getClass().getName(); } private String asHTMLLabel(String s, int l) { StringBuffer b = new StringBuffer(); b.append("<html>"); for (int i = 0; i < l; i++) { b.append("<br/>"); } b.append(s); b.append("</html>"); return b.toString(); } private String asHTMLLabel(String s) { return asHTMLLabel(s, 1); } }); context.setVertexIconTransformer(new Transformer<Object, Icon>() { @Override public Icon transform(Object v) { if (v instanceof CompositionNode) { CompositionNode n = (CompositionNode) v; return getIcon(n.type); } else if (v instanceof EndNode) { EndNode en = (EndNode) v; return getIcon(en.connector, en.type); } else if (v instanceof ResourceNode) { ResourceNode en = (ResourceNode) v; if (en.isVirtual()) return null; return getIcon(en.resource); } else if (v instanceof RelationshipConditionNode) { return getIcon(((RelationshipConditionNode) v).condition); } else if (v instanceof PropertyConditionNode) { return getIcon(((PropertyConditionNode) v).condition); } else if (v instanceof ExistsConditionNode) { return getIcon(((ExistsConditionNode) v).condition); } return null; } }); context.setEdgeIncludePredicate(new Predicate<Context<Object, Edge>>() { @Override public boolean evaluate(Context<Object, Edge> edge) { return !isVirtualEdge(edge.element); } }); context.setVertexIncludePredicate(new Predicate<Context>() { @Override public boolean evaluate(Context vertex) { Object element = vertex.element; if (element instanceof Node) { return !isVirtualNode((Node) element); } return true; } }); context.setEdgeArrowPredicate(new Predicate() { @Override public boolean evaluate(Object o) { return false; } }); context.setEdgeDrawPaintTransformer(new Transformer<Edge, Paint>() { @Override public Paint transform(Edge e) { return getEdgePaint(graph.getSource(e), graph.getDest(e)); } }); context.setEdgeStrokeTransformer(new Transformer<Edge, Stroke>() { @Override public Stroke transform(Edge e) { return getEdgeStroke(graph.getSource(e), graph.getDest(e)); } }); // context.setEdgeShapeTransformer(new EdgeShape.Wedge<Object,Edge>(1)); context.setEdgeShapeTransformer(new EdgeShape.Line<Object, Edge>()); }
From source file:com.imag.nespros.gui.plugin.GraphEditor.java
public static void showEPGraph(DirectedSparseGraph<EPUnit, EventChannel> graph) { //System.out.println(EPGraph.getInstance().getGraph()); Layout<EPUnit, EventChannel> layout = new DAGLayout<>(graph); //Layout<EPUnit, EventChannel> layout = new SpringLayout2<>(EPGraph.getInstance().getGraph()); layout.setSize(new Dimension(800, 600)); // sets the initial size of the space // The BasicVisualizationServer<V,E> is parameterized by the edge types VisualizationViewer<EPUnit, EventChannel> vv = new VisualizationViewer<>(layout); vv.setPreferredSize(new Dimension(850, 650)); //Sets the viewing area size vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller() { @Override/* w w w . j a va 2 s. com*/ public String transform(Object v) { return ((EPUnit) v).getInfo(); } }); vv.getRenderContext().setEdgeLabelTransformer(new ToStringLabeller() { @Override public String transform(Object v) { return ((EventChannel) v).getTopic(); } }); vv.getRenderContext().setVertexFillPaintTransformer(new Transformer<EPUnit, Paint>() { @Override public Paint transform(EPUnit i) { if (i.isMapped()) { return Color.GREEN; } else { return Color.RED; } } }); DefaultModalGraphMouse graphMouse = new DefaultModalGraphMouse(); vv.setGraphMouse(graphMouse); graphMouse.setMode(ModalGraphMouse.Mode.PICKING); JFrame frame = new JFrame("Event Composition Graph"); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().add(vv); frame.pack(); frame.setVisible(true); }
From source file:com.rapidminer.gui.graphs.GraphViewer.java
public void setPaintEdgeLabels(boolean showEdgeLabels) { this.showEdgeLabels = showEdgeLabels; if (this.showEdgeLabels) { vv.getRenderContext().setEdgeLabelTransformer(new Transformer<E, String>() { @Override//from ww w . j a v a 2 s .c om public String transform(E object) { return graphCreator.getEdgeName(object); } }); } else { vv.getRenderContext().setEdgeLabelTransformer(new Transformer<E, String>() { @Override public String transform(E object) { return null; } }); } vv.repaint(); }
From source file:com.rapidminer.gui.graphs.GraphViewer.java
public void setPaintVertexLabels(boolean showVertexLabels) { this.showVertexLabels = showVertexLabels; if (this.showVertexLabels) { Renderer.Vertex<V, E> vertexRenderer = graphCreator.getVertexRenderer(); if (vertexRenderer != null) { vv.getRenderer().setVertexRenderer(vertexRenderer); }/*from ww w . j av a 2 s . c o m*/ vv.getRenderContext().setVertexShapeTransformer(new ExtendedVertexShapeTransformer<>(graphCreator)); vv.getRenderContext().setVertexLabelTransformer(new Transformer<V, String>() { @Override public String transform(V object) { return graphCreator.getVertexName(object); } }); } else { vv.getRenderer().setVertexRenderer(new BasicVertexRenderer<V, E>()); vv.getRenderContext().setVertexShapeTransformer(new BasicVertexShapeTransformer<V>()); vv.getRenderContext().setVertexLabelTransformer(new Transformer<V, String>() { @Override public String transform(V object) { return null; } }); } vv.repaint(); }
From source file:gui.images.ImageHubExplorer.java
/** * Add an array of images to the kNN graph visualizations. * * @param indexes int[] of image indexes to insert. *//*ww w .ja va 2s . com*/ private void addSelectedImagesToGraph(int[] indexes) { if (neighborStatsCalculated && neighborGraphs != null) { for (int index : indexes) { if (verticesHash.containsKey(index)) { // If the image is already contained in the graphs, skip it. continue; } // Create a new node to insert. ImageNode newVertex = new ImageNode(index, new ImageIcon(imgThumbPaths.get(index)), imgThumbPaths.get(index)); // Add the node to the vertex set. vertexIndexes.add(index); vertices.add(newVertex); for (int kTmp = 0; kTmp < 50; kTmp++) { neighborGraphs[kTmp].addVertex(newVertex); verticesHash.put(index, newVertex); verticesNodeIndexHash.put(index, vertices.size() - 1); graphVServers[kTmp].revalidate(); graphVServers[kTmp].repaint(); neighborGraphScrollPane.revalidate(); neighborGraphScrollPane.repaint(); } } // This might be improved. All edges are removed from the graphs // and then inserted anew. for (int kTmp = 0; kTmp < 50; kTmp++) { for (int i = 0; i < edges[kTmp].size(); i++) { neighborGraphs[kTmp].removeEdge(edges[kTmp].get(i)); } edges[kTmp] = new ArrayList<>(100); graphVServers[kTmp].revalidate(); graphVServers[kTmp].repaint(); neighborGraphScrollPane.revalidate(); neighborGraphScrollPane.repaint(); } NeighborSetFinder nsf = getNSF(); int[][] kneighbors = nsf.getKNeighbors(); float[][] kdistances = nsf.getKDistances(); // For all the neighborhood sizes in the range. for (int kTmp = 0; kTmp < 50; kTmp++) { for (int i = 0; i < vertices.size(); i++) { // For all the neighbors. for (int kN = 0; kN < kTmp + 1; kN++) { if (verticesHash.containsKey(kneighbors[vertexIndexes.get(i)][kN])) { NeighborLink newEdge = new NeighborLink(kdistances[vertexIndexes.get(i)][kN], vertices.get(i), verticesHash.get(kneighbors[vertexIndexes.get(i)][kN])); neighborGraphs[kTmp].addEdge(newEdge, vertices.get(i), verticesHash.get(kneighbors[vertexIndexes.get(i)][kN]), EdgeType.DIRECTED); edges[kTmp].add(newEdge); } } } graphVServers[kTmp].revalidate(); graphVServers[kTmp].repaint(); } // Determine how to display the nodes. Layout<ImageNode, NeighborLink> layout = new CircleLayout(neighborGraphs[neighborhoodSize - 1]); layout.setSize(new Dimension(500, 500)); layout.initialize(); VisualizationViewer<ImageNode, NeighborLink> vv = new VisualizationViewer<>(layout); vv.setPreferredSize(new Dimension(550, 550)); vv.setMinimumSize(new Dimension(550, 550)); vv.setDoubleBuffered(true); vv.setEnabled(true); graphVServers[neighborhoodSize - 1] = vv; vv.getRenderContext().setVertexIconTransformer(new IconTransformer<ImageNode, Icon>()); vv.getRenderContext().setVertexShapeTransformer(new ShapeTransformer<ImageNode, Shape>()); vv.getRenderContext().setEdgeArrowPredicate(new DirectionDisplayPredicate()); vv.getRenderContext().setEdgeLabelTransformer(new Transformer() { @Override public String transform(Object e) { return (e.toString()); } }); PluggableGraphMouse gm = new PluggableGraphMouse(); gm.add(new PickingGraphMousePlugin()); vv.setGraphMouse(gm); vv.setBackground(Color.WHITE); vv.setVisible(true); final PickedState<ImageNode> pickedState = vv.getPickedVertexState(); pickedState.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { Object subject = e.getItem(); if (subject instanceof ImageNode) { ImageNode vertex = (ImageNode) subject; if (pickedState.isPicked(vertex)) { setSelectedImageForIndex(vertex.id); } else { } } } }); vv.validate(); vv.repaint(); neighborGraphScrollPane.setViewportView(vv); neighborGraphScrollPane.revalidate(); neighborGraphScrollPane.repaint(); } }
From source file:com.imag.nespros.gui.plugin.GraphEditor.java
private void save(File file) throws IOException { PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file))); GraphMLWriter<Device, ComLink> graphWriter = new GraphMLWriter<Device, ComLink>(); graphWriter.addVertexData("x", null, "0", new Transformer<Device, String>() { public String transform(Device v) { //return Double.toString(layout.getX(v)); return Double.toString(vv.getModel().getGraphLayout().transform(v).getX()); }// www . j a va 2 s . co m }); graphWriter.addVertexData("y", null, "0", new Transformer<Device, String>() { public String transform(Device v) { //return Double.toString(layout.getY(v)); return Double.toString(vv.getModel().getGraphLayout().transform(v).getY()); } }); graphWriter.addVertexData("deviceName", null, "device", new Transformer<Device, String>() { public String transform(Device v) { return v.getDeviceName(); } }); graphWriter.addVertexData("cpuSpeed", null, "1", new Transformer<Device, String>() { public String transform(Device v) { return Double.toString(v.getCpuSpeed()); } }); graphWriter.addVertexData("totalMemory", null, "1", new Transformer<Device, String>() { public String transform(Device v) { return Integer.toString(v.getTotalMemory()); } }); graphWriter.addVertexData("deviceType", null, DeviceType.AMI.toString(), new Transformer<Device, String>() { public String transform(Device v) { return v.getDeviceType().toString(); } }); graphWriter.addEdgeData("latency", null, "1000", new Transformer<ComLink, String>() { public String transform(ComLink e) { return Integer.toString(e.getLatency()); } }); graphWriter.addEdgeData("ID", null, "link", new Transformer<ComLink, String>() { public String transform(ComLink e) { return e.getID(); } }); graphWriter.addEdgeData("down", null, "false", new Transformer<ComLink, String>() { public String transform(ComLink e) { return e.isDown() + ""; } }); graphWriter.save(graph, out); }
From source file:com.diversityarrays.kdxplore.trials.TrialExplorerPanel.java
private void askForTrialsThenDownload(DALClient client) { try {/*from w w w. j a va2 s . c o m*/ Transformer<BackgroundRunner, TrialSearchOptionsPanel> searchOptionsPanelFactory = new Transformer<BackgroundRunner, TrialSearchOptionsPanel>() { @Override public TrialSearchOptionsPanel transform(BackgroundRunner br) { return TrialSelectionSearchOptionsPanel.create(br); } }; final TrialSelectionDialog trialSelectionDialog = new TrialSelectionDialog( GuiUtil.getOwnerWindow(TrialExplorerPanel.this), "Choose Trials to Download", client, offlineData.getTrials(), searchOptionsPanelFactory); trialSelectionDialog.setVisible(true); if (trialSelectionDialog.trialRecords != null) { Closure<TrialLoaderResult> onTrialsAdded = new Closure<TrialLoaderResult>() { @Override public void execute(TrialLoaderResult trialLoaderResult) { handleTrialDataLoaded(trialLoaderResult); } }; boolean wantSpecimens = getSpecimensRequired(); Exception error = null; Optional<Optional<GeneralType>> opt_opt_mmt = Optional.empty(); try { opt_opt_mmt = MediaSampleRetriever.getCuratedSamplesMultimediaType(TrialExplorerPanel.this, offlineData.getKddartReferenceData()); } catch (MultimediaSourceMissingException e) { error = e; } if (!opt_opt_mmt.isPresent()) { MediaSampleRetriever.showMissingMultimedia(TrialExplorerPanel.this, error, "Can't upload"); return; } MultiTrialLoader multiTrialLoader = new MultiTrialLoader(TrialExplorerPanel.this, "Saving Trials for Offline access", true, client, dartSchemaHelper, wantSpecimens, pluginInfo.getBackgroundRunner(), pluginInfo.getBackgroundRunner(), pluginInfo.getMessageLogger(), offlineData.getKdxploreDatabase(), opt_opt_mmt.get(), DEFAULT_DOWNLOAD_TRAIT_NAME_STYLE, trialSelectionDialog.trialRecords, onTrialsAdded); backgroundRunner.runBackgroundTask(multiTrialLoader); } } catch (IOException e) { MsgBox.error(TrialExplorerPanel.this, e.getMessage(), "Problem Getting Trials"); } }
From source file:com.imag.nespros.gui.plugin.GraphEditor.java
private void load(File file) throws FileNotFoundException { DeviceFactory.resetCounters();/*from w w w .j a v a 2 s. com*/ ComLinkFactory.resetCounter(); BufferedReader fileReader = new BufferedReader(new FileReader(file)); Transformer<GraphMetadata, Graph<Device, ComLink>> graphTransformer = new Transformer<GraphMetadata, Graph<Device, ComLink>>() { @Override public Graph<Device, ComLink> transform(GraphMetadata metadata) { return new CustomUndirectedGraph<Device, ComLink>(); } }; Transformer<NodeMetadata, Device> vertexTransformer = new Transformer<NodeMetadata, Device>() { public Device transform(NodeMetadata metadata) { Device v; String deviceName = metadata.getProperty("deviceName"); double cpuSpeeed = Double.parseDouble(metadata.getProperty("cpuSpeed")); int totalMemory = Integer.parseInt(metadata.getProperty("totalMemory")); if (metadata.getProperty("deviceType").equals("Smart Meter")) { v = new AMIDevice(deviceName, cpuSpeeed, totalMemory); DeviceFactory.setAmiCount(DeviceFactory.getAmiCount() + 1); } else if (metadata.getProperty("deviceType").equals("SACOMUT")) { v = new SacomutDevice(deviceName, cpuSpeeed, totalMemory); DeviceFactory.setSacomutCount(DeviceFactory.getSacomutCount() + 1); } else if (metadata.getProperty("deviceType").equals("HTA Coordinator")) { v = new HTACoordDevice(deviceName, cpuSpeeed, totalMemory); DeviceFactory.setHtaCount(DeviceFactory.getHtaCount() + 1); } else if (metadata.getProperty("deviceType").equals("Utility")) { v = new UtilityDevice(deviceName, cpuSpeeed, totalMemory); DeviceFactory.setUtilityCount(DeviceFactory.getUtilityCount() + 1); } else if (metadata.getProperty("deviceType").equals("POSTE ASSERVI")) { v = new PADevice(deviceName, cpuSpeeed, totalMemory); DeviceFactory.setPaCount(DeviceFactory.getPaCount() + 1); } else { v = new DCDevice(deviceName, cpuSpeeed, totalMemory); DeviceFactory.setDcCount(DeviceFactory.getDcCount() + 1); } v.setX(Double.parseDouble(metadata.getProperty("x"))); v.setY(Double.parseDouble(metadata.getProperty("y"))); Random r = new Random(); int red = r.nextInt(255); int green = r.nextInt(255); int blue = r.nextInt(255); v.setPacketColor(new Color(red, green, blue)); return v; } }; Transformer<EdgeMetadata, ComLink> edgeTransformer = new Transformer<EdgeMetadata, ComLink>() { public ComLink transform(EdgeMetadata metadata) { int latency = Integer.parseInt(metadata.getProperty("latency")); String ID = metadata.getProperty("ID"); boolean ok = Boolean.getBoolean(metadata.getProperty("down")); ComLink e = new ComLink(ID); e.setLatency(latency); e.setDefinedlatency(latency); e.setDown(ok); ComLinkFactory.updateLinkCount(); return e; } }; Transformer<HyperEdgeMetadata, ComLink> hyperEdgeTransformer = new Transformer<HyperEdgeMetadata, ComLink>() { public ComLink transform(HyperEdgeMetadata metadata) { ComLink e = ComLinkFactory.getInstance().create(); return e; } }; GraphMLReader2<Graph<Device, ComLink>, Device, ComLink> graphReader = new GraphMLReader2<Graph<Device, ComLink>, Device, ComLink>( fileReader, graphTransformer, vertexTransformer, edgeTransformer, hyperEdgeTransformer); try { /* Get the new graph object from the GraphML file */ Graph<Device, ComLink> g = graphReader.readGraph(); Topology.getInstance().setGraph((CustomUndirectedGraph<Device, ComLink>) g); graph = g; } catch (GraphIOException ex) { } Layout l = new StaticLayout<Device, ComLink>(Topology.getInstance().getGraph(), new Transformer<Device, Point2D>() { @Override public Point2D transform(Device v) { Point2D p = new Point2D.Double(v.getX(), v.getY()); return p; } }); l.setInitializer(vv.getGraphLayout()); l.setSize(vv.getSize()); LayoutTransition<Device, ComLink> lt = new LayoutTransition<>(vv, vv.getGraphLayout(), l); Animator animator = new Animator(lt); animator.start(); vv.getRenderContext().getMultiLayerTransformer().setToIdentity(); //vv.getModel().setGraphLayout(l); vv.repaint(); }
From source file:gui.images.ImageHubExplorer.java
/** * Inserts the currently selected image into all kNN graphs for * visualization./*from w ww. j a va 2 s . co m*/ */ private void addSelectedImageToGraph() { if (neighborStatsCalculated && neighborGraphs != null && selectedImageHistory != null && selectedImageHistory.size() > 0) { int index = selectedImageHistory.get(selectedImageIndexInHistory); if (verticesHash.containsKey(index)) { // If it is already contained within the graphs, do nothing. return; } // Create a new node for the image. ImageNode newVertex = new ImageNode(index, new ImageIcon(imgThumbPaths.get(index)), imgThumbPaths.get(index)); vertexIndexes.add(index); vertices.add(newVertex); NeighborSetFinder nsf = getNSF(); int[][] kneighbors = nsf.getKNeighbors(); float[][] kdistances = nsf.getKDistances(); // For all relevant neighborhood sizes. for (int kTmp = 0; kTmp < 50; kTmp++) { neighborGraphs[kTmp].addVertex(newVertex); verticesHash.put(index, newVertex); verticesNodeIndexHash.put(index, vertices.size() - 1); // Re-draw all the edges. // This should be changed to only update the affected ones. for (int i = 0; i < edges[kTmp].size(); i++) { neighborGraphs[kTmp].removeEdge(edges[kTmp].get(i)); } for (int i = 0; i < vertices.size(); i++) { for (int kN = 0; kN < kTmp; kN++) { if (verticesHash.containsKey(kneighbors[vertexIndexes.get(i)][kN])) { NeighborLink newEdge = new NeighborLink(kdistances[vertexIndexes.get(i)][kN], vertices.get(i), verticesHash.get(kneighbors[vertexIndexes.get(i)][kN])); neighborGraphs[kTmp].addEdge(newEdge, vertices.get(i), verticesHash.get(kneighbors[vertexIndexes.get(i)][kN]), EdgeType.DIRECTED); edges[kTmp].add(newEdge); } } } graphVServers[kTmp].revalidate(); graphVServers[kTmp].repaint(); } // Set up how the nodes will be drawn. Layout<ImageNode, NeighborLink> layout = new CircleLayout(neighborGraphs[neighborhoodSize - 1]); layout.setSize(new Dimension(500, 500)); layout.initialize(); VisualizationViewer<ImageNode, NeighborLink> vv = new VisualizationViewer<>(layout); vv.setPreferredSize(new Dimension(550, 550)); vv.setMinimumSize(new Dimension(550, 550)); vv.setDoubleBuffered(true); vv.setEnabled(true); graphVServers[neighborhoodSize - 1] = vv; vv.getRenderContext().setVertexIconTransformer(new IconTransformer<ImageNode, Icon>()); vv.getRenderContext().setVertexShapeTransformer(new ShapeTransformer<ImageNode, Shape>()); vv.getRenderContext().setEdgeArrowPredicate(new DirectionDisplayPredicate()); vv.getRenderContext().setEdgeLabelTransformer(new Transformer() { @Override public String transform(Object e) { return (e.toString()); } }); PluggableGraphMouse gm = new PluggableGraphMouse(); gm.add(new PickingGraphMousePlugin()); vv.setGraphMouse(gm); vv.setBackground(Color.WHITE); vv.setVisible(true); final PickedState<ImageNode> pickedState = vv.getPickedVertexState(); pickedState.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { Object subject = e.getItem(); if (subject instanceof ImageNode) { ImageNode vertex = (ImageNode) subject; if (pickedState.isPicked(vertex)) { setSelectedImageForIndex(vertex.id); } } } }); // Refresh all the display components. vv.revalidate(); vv.repaint(); neighborGraphScrollPane.setViewportView(graphVServers[neighborhoodSize - 1]); neighborGraphScrollPane.revalidate(); neighborGraphScrollPane.repaint(); } }
From source file:main.java.edu.isistan.genCom.gui.Principal.java
/** * Persiste la red actual en un archivo XML utilizando la biblioteca GraphML * /*from w w w . j a v a2 s . c o m*/ * @param archivo * Nombre del archivo utilizado para persistir la red */ public void exportarRed() { // TODO Chequear que la red est cargada // TODO Abrir un dialog para solicitar el path del destino String archivo = "red.graphml"; try { GraphMLWriter<Investigador, String> graphWriter = new GraphMLWriter<Investigador, String>(); PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(archivo))); // Descripcin de los nodos graphWriter.addVertexData("investigador", null, "0", new Transformer<Investigador, String>() { @Override public String transform(Investigador i) { return i.toString(); } }); // Descripcin de los enlaces graphWriter.addEdgeData("relacion", null, "0", new Transformer<String, String>() { @Override public String transform(String r) { String result = r; return result; } }); graphWriter.save(this.redSocial.getRed(), out); } catch (Exception e) { System.out.println("Ocurri un error al persistir la red: " + e.getMessage()); } }