A maintenance release with some API improvements, usability improvements, and some bug fixes.
Highlights: Being able to index fields and automatically perform some table structure updates when the classes change.
Change log:
- Modified SqlEntityData to allowing specifying the max string size for the StringIndex (default is still 50 characters)
- Modified StringTable to automatically upgrade the table if the specified max size is larger than the current column size.
- Added EntityData.removeComponents() and implementations to various default implementations. Allows removing more than one component at a time similar to the way setComponents() can set more than one at a time.
- Added SqlComponentFactory and refactored the SqlEntityData classes to use it. This allows overriding the default result set -> component creation to customize it for different object types.
- Modified Name to be able to auto-truncate if the name exceeds the storage limit (80 characters), else it will throw an illegal argument exception.
- Switched some SuppressWarnings("unchecked") with SafeVarargs.
- Added CreatedBy.filter() for easily creating a ComponentFilter for createdBy.
- Added an IndexedField annotation to mark fields that should use indexing when available.
- Updated the es.sql code to look for IndexedField and create indexes for types with IndexedField fields.
- Added basic support for primitive array types in the SQL layer.
- Fixed a bug in the SQL layer when saving components with no fields.
- Updated ComponentTable to automatically add new table fields with 'null' values.
- Updated FieldTypes.PrimitiveField to support null DB values default to 0.
- Added a Name.filter() convenience method.