Questions have yet been addressed:
• Why not set classes like NcArray, NcIndex, NcIteratorIndex, NcArrayIterator as a default implementation. Keeping interfaces Array, Index, IteratorIndex and ArrayIterator permit plug-in developers having a specific implementation.
<Question about packaging>
• As the plug-in knows the meaning of the data structure, it could also be possible for it to generate a dictionary according to the instantiated Dataset.
In the GumTreeDataModel branch we have developed we set a new method in Group that permits to generate the dictionary on the fly.
<Still hard to decide how the API looks like>
• Class Container should be able to return the Group or DataItem object corresponding to the given key. Such a method permits collecting some more information belonging to a key. For instance scanning attributes, or getting DataItem in neighbourhood.
<Dictionary and container utilities can be in a higher layer of service. For example, in our plan we want to move the dictionary into a different package that depends on the GDM model, as well as the container service. >
The following will be considered according to collaboration comments:
1. Group:getGroups() and Group:getDataItems() should return explicit types, List<Group> for example.
2. Use prefix 'I' in all the interfaces.
3. Add Container and Dictionary patterns in the utilities package.
4. Separate Factory class from the interface package, which will allow developer to use different implementations.