To support UI and gsh features to build visual representations of groups, stems, subject, loaders, and provisioners, the API will have a package to build the graph of edges and vertices. Wiki page describing functionality at https://spaces.at.internet2.edu/display/Grouper/Grouper+Visualization .
Feature is based on the work of Michael Gettes <email@example.com> in the grouper-graph project (https://github.com/gettes/grouper-graph)
Features will include:
- can start with a group, subject, or stem (including root stem) and show parent and child relationships of that object
- option to filter on how many levels of parents or children of the current group
- option to filter on how many children to display (e.g. if there are 1000's of them, just show a few)
- option to exclude specific stems
- option to exclude specific object types – stems, loaders, provisioners (maybe not groups)
- option to include membership counts with groups
- grouper.properties visualization.* section can define all relevant styles for object types – shape, font, color, etc.There can be a global default for each style property. The property can be overridden for specific object types. Then, Each visualization module (e.g. graphViz and text would be modules) can override properties further with a default style, and also with overrides per object type.
- when building the graph, it will calculate some statistics.
- each node will include its distance from the start node
- Max parent and child distance to assist in indentation
- Can obtain flat lists of all edges and nodes
- each node is a wrapper for its underlying grouper object, so all its properties can be accessed
- each edge will contain the fromObject and toObject
Since the package will exist in the grouper API module, visualization applications could be written using the API (groovy or Java), UI, or WS.