Thursday, March 31, 2016

Java Graph visualization and EMF


The begining

I'm actually working in a integration test team. The main goal of this team is to make software parts assembly ant then test them in a nominal to limit way.
To acheive this task they build data :  for input, result validation  and non-regression test data. This team work with (space) flight dynamics algorithm and the manipulated data are
  • numerous
  • have to make a consistent whole
These datas are in fact organized as a graph and a tree view does not always fit to validate/control these data...

One solution : a graph view

We work with an EMF (Eclipse Modeling Framework) data implementation. So I start reusing a generic editor  (based on a reflexive item provider, the source could be found here) and adapt it to fit our needs. But I feel that is not enough to validate, saw data.
At this point I remembered my work on  graph database named OrientDb. This tool has a graph editor and it was cool to see cross references ans so on...
So I searched a java graph visualization tool. I found fast JUNG (Java Universal Network/Graph Framework) that fit my "first order" needs :
  • easily managed graph
  • many provided layout (see KKlayout, FRLayout, SpringLayout, CirculeLayout and more...)

Usage

 The usage is quite easy, JUNG provide a sample project that is very usefull and run quite well.

Eclipse view Integration

My integration is actually very direct. I use  :
  • the AWT_SWT eclipse bridge to integrate visualisation in a view
  • a command in the generic editor popup menu to invoke an handler that call  the refresh and the show graph view.
  • rely on reflexive content provider to build the graph
  • set a color for each datatype (we have about 1000)
TODO Png

Next

  • More integration to allow highlight from generic editor to graph view and opposite
  • set a short name for vertices and tool tip for contents
  • set edge view depending of containment or not
  • Optimize memory usage (actually no more than one hundred vertices... due to sharing memory with eclipse ? )



No comments:

Post a Comment