Provide better control over the execution order of attribute profiles
The current implementation for ordering the attribute profiles uses the natural ordering from ADOxx maps, which order their keys based on string comparison of the ASCII(?) character values. This is unfortunately different from how the ADOxx user interface shows the order of attribute profiles.
This could be further improved. Some ideas for solutions, some better than others:
- Implement a string sorting algorithm that sorts an array of strings the same way that the ADOxx GUI does. This would allow the user to influence the order through the names of the attribute profiles and keep track of the order using existing GUI elements.
- Add an attribute "order" to the attribute profiles and base the execution order based on those first, and then the order of the name second.
- Extend the attribute profiles to also contain a "dependency" list. This could then be used to build an order in which to execute the attribute profiles (handle loops in dependency accordingly). This would eliminate having to think about how the attribute profiles are ordered in the GUI. The dependency list could be a record of strings or a longstring where each identifier is specified in a separate line. The identifiers could be either the attribute profile names (problematic if they are renamed) or better extend the attribute profiles to also have an "identifier" (string) attribute where a module could specify a unique identifier, e.g. a URL. It could be taken one step further and besides the identifier the modules could also specify the version number and for example use the "ADOxx Version Check" module to compare if supported versions are available. This third solution might actually be better to be used in the "ExtensionManagement" part of the "ADOxx Add-on Extension" module.