Handling ICollection input

The ICollectionView handling in Kolbert reporting components integrates handling XML, XMLList, XMLListCollection, ICollectionView instances, Array, Object with children property or with custom tree data descriptor...
Navigation through these entities is simple using the DefaultTreeDescriptor or a custom TreeDataDescriptor and links are generated, on the fly, according to hierarchy of navigation.

In addition to this simple data parsing, Lab Components provides the ability to analyze deeply some ICollectionView instances by inspecting linkage properties between properties (for XML and other objects). This can be accomplished using the filter path ( or analysis path for Visualizer) and reporting functions. This feature have enabled Lab Components to analyze any data from different angles and with different interpretations while using the same data and modifying only on the filter path (or analysis path for Visualizer). The TreeMap component demo uses this feature to change data hierarchy without changing the data input.



XML files and some objects are generally encapsulated in a dummy root that is not needed for analysis and that prevent Lab components from showing disconnected entities that user want to display. The new version of Lab components, let developers choose to ignore or maintain the top root of a data input by setting the ignoreRoot to true or false.
The following example shows an XML template that can be extracted as a disconnected data graph (4 disconnected data graphs) by simply setting the ignore property of the lab component to true.

<entities name="I'm dummy, ignore me">
   <entity name="a">
     <entity name="a0">
     <entity name="a1">
   </entity>
   <entity name="b">
     <entity name="b0">
   </entity>
   <entity name="c">
     <entity name="c0">
     <entity name="c1">
     <entity name="c2">
     <entity name="c3">
   </entity>
   <entity name="d">
     <entity name="d0">
     <entity name="d1">
     <entity name="d2">
   </entity>
</entities>
...
...
labComponent.ignoreRoot=true;