fenix-framework/fenix-framework — pull request #52 by nmldiegues (2013-02-06 22:38:49+00:00)
Title: Nmld collections indexed relations merge

This pull request contains three main contributions:

* Generalization of all collection modules as ADTs. They now implement the semantics of a map and the RelationAwareSet uses that to abstract a Set. Note that the domain-object-* collections modules were removed --- The code generators now use the ADTs instead.
* Indexed relations. These are a superset of the previous indexed slots, and thus the latter were removed. This changes the code produced and DML for anyone that depended on the previous indexes. This corresponds to a joint work with sergiofbsilva and allows indexing each relation by a slot of the "many"-entity. It supports multi-values per key and everything is determined statically by the code generators, meaning you only pay for what you request (the case with multi-values per key has a slight overhead, but only occurs when the index is specified in that way). These indexes are structurally maintained in the actual relation collection, meaning that unique-key-value indexes present no overhead with regard to no indexes at all.
* Test modules for the indexes and collections backing up the relations *-to-many.

Minor changes correspond to several bug fixes in the DML collections; refactoring code in the Fenix Transaction classes; JVSTM backend now also providing a JPA Transaction; harmonization of the usage of DAP throughout the code generators; and the new code style formatter for the Fenix Framework.

This latter contribution uses the same formatter as Fenix at CIIST/DSI/IST. The most important point is the agreement on using indentation with 4 spaces. The code was not formatted in this way (yet) as my intent is to do that in a future push to prevent this pull request from being a nightmare of lines of code changed. Still, I am aware that there are some lines that change due to indentation, but it should still be possible to easily figure out those when reviewing as they were kept to a minimum (as possible). Hopefully this stops being an issue in a very near future with this new step of having a common code style.