Saturday, 15 May 2010

java - how to add links or update existing links property to a JUNG graph -



java - how to add links or update existing links property to a JUNG graph -

i have result set coming mysql database , trying build jung graph using these values. have instantiated empty graph as:

graph<node, edge> g = new sparsemultigraph<>();

then have added nodes (586). in process of adding links , things more complicated. construction of custom border simple, has "time" property like:

multiset<timestamp> time;

the result set links contains 3273684 entries in form:

id time sender receiver 12 2014-03-20 09:26:04.000 2 99

now, want create link node id 2 , node id 99 if link not exist, or add together timestamp existing link. is:

while (resultset.next()) { // retrieve sender node sender = findnode(resultset.getint("sender"), g); // retrieve receiver node receiver = findnode(resultset.getint("receiver"), g); // if linked if(g.ispredecessor(sender, receiver)){ // add together new timestamp existing link collection<edge> outedges = g.getoutedges(sender); // find right border for(edge e:outedges){ // if border connected receiver if(g.getdest(e).equals(receiver)){ // add together new timestamp border e.settime(resultset.gettimestamp("time")); } } } else { // else new link added info e = new information(); e.setid(resultset.getint("id")); e.settime(resultset.gettimestamp("time")); g.addedge(e, sender, receiver, edgetype.directed); } }

my problem slow, , not understand if normal, since result set quite big, or if missing clearer/faster way implement need.

for sake of clarity, findnode() method this:

private static node findnode(int aint, graph<node, edge>g) { for(node n:g.getvertices()){ if(n.getid()== aint){ homecoming n; } } homecoming null; }

this slow 2 reasons:

(1) don't have efficient way node given id. graph of size i'd recommend building map populate graph, , using map implement findnode().

(2) 1 time have 2 nodes , want border connects them (if any), utilize graph.findedge().

(1) far biggest reason code slow. (2) not help much, create code easier read , more elegant.

java mysql jung

No comments:

Post a Comment