over 2 years ago
(Mon, Nov 30 2009)
The ESI$IndexedTable is a Block Transfer Object (BTO) that will be used as the fundamental data storage type in the EsiDB project. The EsiDB project's goal is to produce a modern database product. It will be used internally initially and then release as an Open Source add in product (library).
1) Existing Details – Make sure the existing details are complete and correct:
a) Documentation - Go through the IndexedTable class and document all objects and code bodies according to the conventions outlined in the EsiObjects Coding Conventions document.
b) Regression Test - Before expanding the functionality of IndexedTable, expand (rewrite) the regression test for the IndexedTable in the RegressionTest library.
c) Base 1 or 0 – Make sure the use of base 0 (internal) and 1 (external) is consistent and well documented.
d) Multiple Methods - There are two sets of methods that are a little confusing: Add* and Set* methods. Also, there are two of each, that is, SetRow and SetRowV for example. Determine whether there needs to be these combination's and if we can simplify them.
e) Indexing – Declaring Indices for columns seems to work. However, I'm not sure it has been implemented in all methods. The different combination of methods outlined in b) complicates things. Make sure indexing is implemented in all methods.
2) Enhancements – Add these new features.
a) Column Typing - Add typing to a column. Builtin's (page 36 of the EsiObjects Language Guide) and Normal classes should be selectable. All columns should be typable. If a type is not specified, it should default to a string type.
b) Column Type Validation – There should be a generic method that performs validation on a given column. It should act as if the column had a Property Sheet and the $Valid was coded. This should be accomplished in a general way that applies to any column type.
c) Criteria Iteration – Finish up the criteria iteration. Currently, the normal iterator is implemented (have not tested it). First, please test the normal iterator and write regression test for it. Then implement the criteria iterators. Try to reuse the Base$Criteria objects. If that appears problematic, reimplemented them. However, please implement all of the criteria implemented under Base$Criteria.
d) Event Processing – Event Processing should be integrated at the usual event points - storage, deletion, etc.
1) Existing Details – Make sure the existing details are complete and correct:
a) Documentation - Go through the IndexedTable class and document all objects and code bodies according to the conventions outlined in the EsiObjects Coding Conventions document.
b) Regression Test - Before expanding the functionality of IndexedTable, expand (rewrite) the regression test for the IndexedTable in the RegressionTest library.
c) Base 1 or 0 – Make sure the use of base 0 (internal) and 1 (external) is consistent and well documented.
d) Multiple Methods - There are two sets of methods that are a little confusing: Add* and Set* methods. Also, there are two of each, that is, SetRow and SetRowV for example. Determine whether there needs to be these combination's and if we can simplify them.
e) Indexing – Declaring Indices for columns seems to work. However, I'm not sure it has been implemented in all methods. The different combination of methods outlined in b) complicates things. Make sure indexing is implemented in all methods.
2) Enhancements – Add these new features.
a) Column Typing - Add typing to a column. Builtin's (page 36 of the EsiObjects Language Guide) and Normal classes should be selectable. All columns should be typable. If a type is not specified, it should default to a string type.
b) Column Type Validation – There should be a generic method that performs validation on a given column. It should act as if the column had a Property Sheet and the $Valid was coded. This should be accomplished in a general way that applies to any column type.
c) Criteria Iteration – Finish up the criteria iteration. Currently, the normal iterator is implemented (have not tested it). First, please test the normal iterator and write regression test for it. Then implement the criteria iterators. Try to reuse the Base$Criteria objects. If that appears problematic, reimplemented them. However, please implement all of the criteria implemented under Base$Criteria.
d) Event Processing – Event Processing should be integrated at the usual event points - storage, deletion, etc.