/*
* 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);
}
}
}