Support storing of Enum
Support encoding of Calendar field type.
Support encoding of BigDecimal field type.
Support encoding of BigInteger field type.
Externalize query’s pagination key to string and re-internalize it later.
Support S3 field
Add simple S3 function to Jsoda.
Add S3 list iterator.
Support Atomic Counters in DynamoDB and emulate in SimpleDB
Support updateItem in DynamoDB and emulate in SimpleDB. setAction(AttributeAction)
Add JSON-Dao to support getting and putting data in JSON. Add toJson and fromJson util methods in Jsoda.
Custom marshaller beside JSON of field to marshal/de-marshal to string. Low priority.
Support batchGetItem in DynamoDB and emulate for SimpleDB. Is it needed? Low priority.
Index table for DynamoDB, for secondary index and query. Low priority.
TODOs for 0.9
Make Serializable optional. Revamp CachePolicy and Serializable class for caching.
Expose the dump method via Jsoda to aid debugging.
Support varargs and array in batchPut()
Support varargs and array in batchDelete()
Extendable annotation handling framework
Move data generation, cleansing, and data validation to annotation handling framework.
Data cleansing: Remove char (-), remove all digits, trim, touppoer, tolower, MaxValue, MinValue, AbsValue, Ceil/floor.
Add field validation: Required, MaxSize, MinSizexb, StartsWith, EndsWith, Contains, NotContains, RegexMatch, OneOf, MaskMatch, EmailMatch,
Refactor BuiltinFunc and ReflectUtil to wwutil.model
Add README.md for about and tutorial.
Support findBy a field
TODOs for 0.8
Refactor and migrate Jsoda into its own package
Add makeCacheKey in Jsoda and call it from other places instead of building cache keys all over the place
Add caching id/rangekey to CacheByName
Combine Dao.get(arg1) and Dao.get(arg1, arg2)
Support get by id/rangekey
Support DynamoDB delete
Support DynamoDB batch delete
Replace Column annotation with AttrName annotation
Support Long/Integer type Id
Force registration of model class with dbtype, to override dbtype annotation.
Dynamic registration at the first use of an object via its class.
Refactor utest to test both SimpleDB and DynamoDB at one place.
Add more vigorous unit tests.
Add dummy MemCacheable as the default cache service.
Refactor object caching service out of Jsoda
Refactor and clean up the Jsoda class.
Support delete by id/rangekey, int/long/Integer/Long
Unit test delete in SimpleDB and DynamoDB.
Support batchDelete on id/rangekey, int/long/Integer/Long
Refactor query construction. Pass Query object to DbService implementation class to generate native query.
Move SimpleDB query generation from Query to SimpleDBMgr.
Support mixing of Select Id, other_fields for SimpleDB query.
- Support standalone Select Id => Select itemName() as before.
- Support Select Id, other1, other2 => Select other1, other2. Fill in Id in post query processing.
Fill in Id/RangeKey in post query processing for DynamoDB when only other fields are selected.
Support select count(*) in Query, for SimpleDB.
Support select count(*) in Query, for DynamoDB.
Add unit test for select count(*) for different queries.
Add query support for DynamoDB.
Support scan in Query. For DynamoDB, if query has a filter on Id AND a filter on ARangeKey, do query. Otherwise, do scan.
Support building filter conditions in DynamoDB
Support condition comparison: EQ, NE, IN, LE, LT, GE, GT, BETWEEN, NOT_NULL, NULL, CONTAINS, NOT_CONTAINS, BEGINS_WITH
Add DSL methods to Query for comparison: EQ, NE, IN, LE, LT, GE, GT, BETWEEN, NOT_NULL, NULL, CONTAINS, NOT_CONTAINS, BEGINS_WITH
For DynamoDB, filter’s field must be the ARangeKey field
Support multi-operands for some of the comparison operator, like IN.
Add id and rangekey attributes to AttrFieldMap in Jsoda.
Support withConsistentRead in Query, for both SimpleDB and DynamoDB.
Support order by.
For DynamoDB, order by field must be the RangeKey field. Asc/Desc change the scan direction.
Add test for PrePersist and PostLoad
Add test for inherited model class
Migrate all annotations out of javax.persistence to remove dependency on ebj3-persistence.jar
Add PreValidation annotation.
Formalize order of operations in storing object: PrePersist, built-in basic value generators, built-in composite generators, PreValidation, built-in validation.
Strigify/de-strigify each supported data type in DataUtil.
Validate the list of supported field data types.
Support encoding of additional primitives data type like boolean, char, short.
Encode any other field object type other than in JSON
Support Set<ParamType> data type for field. Use Multi-Value for DynamoDB and JSON for SimpleDB.
Map Set<Integer>, Set<Long>, Set<Float>, Set<Double>, and Set<String> data type to DynamoDB Multi-Value.
Put different db objects into different namespaces of a cache, in case the same model is registered in more than one db.
Support and test putting null value on field, not saving the AttributeValue. Check with IS NULL and IS NOT NULL queries.
Integrate Apache Commons Logging
Iterator for query result. Add flag to disable caching objects in list result.
Query.hasNext(), Query.reset() to reset.