terrestris/shogun — pull request #44 by marcjansen (2014-04-16 08:26:18+00:00)
Title: Merge the refactoring-branch into master

(This is a replacement for #43)

I think we should merge the `refactoring`-branch into master.

Changes in this branch which is the cleaned up counterpart of the [original refactoring-branch](https://github.com/terrestris/shogun/compare/refactoring).

* Update to Apache `commons-lang3` (mostly used for the model methods `toString`, `hashCode` & `equals`)
* `DatabaseDAO`
* enhance `getDataByFilter`
* support for `fields` and `ignoreFields`
* support for dotted filters
* dynamically control the fetch mode (`setEagerFetchModeForCollections`)
* add `initializeDeep` to avoid `failed to lazily initialize - no session or session was closed`
* add `hasUserRoleByUsernameAndRolename`
* various minor / cosmetic changes
* Filters
* add support for `NotLike`
* Requests
* support for `fields` and `ignoreFields`
* support for dotted filters
* Models
* BaseModel & friends
* implement generic `hashCode()` (subclasses override this)
* implement generic `equals(Object obj)` (subclasses override this)
* implement generic `toString` (subclasses override this)
* add `info()`
* collections as properties of models
* most use `FetchType.LAZY`
* are fetched using the most performant FetchMode (often `SUBSELECT`)
* some are now being serialize in a lean way
* `Group`
* available rolenames now live here as constants
* new field `roles`
* new field `deletable`
* `MapConfig`
* new field `resolutions`
* new field `scales`
* `MapLayer`
* new field `owner`
* new field `additionalOwners`
* removed field `users`
* `Role`
* enforce unique names
* `User`
* remove available rolename-constants (moved to `Group`)
* enforce unique names
* new field `user_firstname`
* new field `user_lastname`
* new field `user_title`
* new field `user_bureau`
* new field `user_department`
* new field `user_unit`
* new field `user_description`
* removed field `modules`
* removed field `mapLayers`
* removed field `mapConfigs`
* removed field `roles`
* removed field `user_module_list`
* new transient method `getRoles`
* new private method `hasRole`
* Database initialisation
* changed to match new model needs (see above)
* Spring Security
* `authentication-provider` changed to match new model structure (see above)
* JSON serialization
* add `LeanBaseModelListSerializer`
* add `LeanBaseModelSetSerializer`
* add many `TODO`s
* many whitespace changes

Please review.