Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package de.bitocean.dspm.examples; import edu.uci.ics.jung.io.*; import edu.uci.ics.jung.io.graphml.*; import java.io.*; import org.apache.commons.collections15.Transformer; import edu.uci.ics.jung.graph.*; /** * This example shows how to read and map a graphml file into JUNG graph objects * @see http://ansaurus.com/question/2662046-how-do-i-use-graphmlreader2-in-jung * * @author actran * */ class Vertex { String id; String name; String expression; public String toString() { return "<node id=\"" + id + "\">\n\t<data key=\"name\">" + name + "</data>\n\t<data key=\"expression\">" + expression + "</data>\n</node>"; } } class Edge { String source; String target; double weight; public String toString() { return "<edge source=\"" + source + "\" target=\"" + target + "\">\n\t<data key=\"weight\">" + weight + "</data>\n</edge>"; } } public class JUNGExample { //public static final String GRAPHML_ACTIVITY_DEPENDENCY_FILE = "./data/DSPM_Demo/DSPM_01.graphml"; public static final String GRAPHML_ACTIVITY_DEPENDENCY_FILE = "./data/activity-dependency-graphml.xml"; public static void main(String[] args) throws GraphIOException, FileNotFoundException, IOException { Reader reader = new FileReader(GRAPHML_ACTIVITY_DEPENDENCY_FILE); BufferedReader br = new BufferedReader(reader); while (br.ready()) { System.out.println(br.readLine()); } Transformer<NodeMetadata, Vertex> vtrans = new Transformer<NodeMetadata, Vertex>() { public Vertex transform(NodeMetadata nmd) { Vertex v = new Vertex(); v.id = nmd.getId(); v.name = nmd.getProperty("name"); v.expression = nmd.getProperty("expression"); return v; } }; Transformer<EdgeMetadata, Edge> etrans = new Transformer<EdgeMetadata, Edge>() { public Edge transform(EdgeMetadata emd) { System.out.println(emd.toString()); Edge e = new Edge(); try { e.source = emd.getSource(); } catch (Exception ex) { } e.target = emd.getTarget(); e.weight = Double.parseDouble(emd.getProperty("weight")); return e; } }; Transformer<HyperEdgeMetadata, Edge> hetrans = new Transformer<HyperEdgeMetadata, Edge>() { public Edge transform(HyperEdgeMetadata emd) { Edge e = new Edge(); try { e.source = emd.getProperty("source"); } catch (Exception ex) { } e.target = emd.getProperty("target"); e.weight = Double.parseDouble(emd.getProperty("weight")); return e; } }; Transformer<GraphMetadata, DirectedSparseGraph<Vertex, Edge>> gtrans = new Transformer<GraphMetadata, DirectedSparseGraph<Vertex, Edge>>() { public DirectedSparseGraph<Vertex, Edge> transform(GraphMetadata gmd) { return new DirectedSparseGraph<Vertex, Edge>(); } }; GraphMLReader2<DirectedSparseGraph<Vertex, Edge>, Vertex, Edge> gmlr = //new GraphMLReader2<UndirectedSparseGraph<Vertex,Edge>, Vertex, Edge>(fileReader, graphTransformer, vertexTransformer, edgeTransformer, hyperEdgeTransformer) new GraphMLReader2<DirectedSparseGraph<Vertex, Edge>, Vertex, Edge>(reader, gtrans, vtrans, etrans, hetrans); DirectedSparseGraph<Vertex, Edge> g = gmlr.readGraph(); System.out.println("Number of vetex: " + g.getVertexCount()); System.out.println("Number of edges: " + g.getEdgeCount()); System.out.println("=========================="); System.out.println("Vertices"); System.out.println("=========================="); for (Vertex v : g.getVertices()) { System.out.println(v); } System.out.println("=========================="); System.out.println("Edges"); System.out.println("=========================="); for (Edge e : g.getEdges()) { System.out.println(e); } } }