A dataset can load data through it's data accessor (implementation of CCDataAccessor). It can export to different formats (e.g. jfreechart's xy data series, currently by code inside CCDataSet). You can also create a dataset from an array of data (through CCDataAccessorMem).
A CCDataAccessor supplies i) the raw data ii) information about the data (a CCDataInfo) which contains data like the start year, end year and how much data we have (i.e. is data annual, biannual, etc).
The next step I think for datasets is creating a dataset collection as in Jerome's UML model. This can just be an array of datasets or maybe to begin with just a class that takes an array of datasets as an arguments so the gui has one nice easy place to get data from and export them to one CSV file.
At the moment model classes implement a CCDataModel (even though most of the functions they implement are specific to that model). The idea of this was that you could create an array of data models and just cycle through them in order, running them, in theory making it easier to add more models later. Results are returned as a CCDataSet
CCConstants should contain all the (mainly hard coded) constants used in the model. This is so it is easier for GCI/user to change constants later.
A CCRevisionPoint is basically just a validating (not at the moment) data structure that all the user defined parameters can be stored for a given revision point. The impression I got from the blurb was that population convergence/cutoff parameters couldn't be modified so these might not be needed at every revision point but it makes it easier to have them here anyway.
I think we need a way of specifying country groups as it will save some calculation time if the data for countries in the same group is added up before calculations are done with the data. Also I expect some of the calculations can be optimised in the models I have already written. I am looking through deciding on precision etc trying to oleviate needless casts, possible approximations for the integral of stage 2 contraction up to 2100 (when stage 1 ends before then), may be change some of the regressions to linear, etc.. if you see anything taking a little more cpu time than it's fair share tell me. I also removed linear interpolation between data points so now there is definitely no point in e.g. creating annual data with binannual raw data.
Note all of this (or revisions) should be in jdoc soon.
always open to better ideas than the above and ready to receive criticism on
coding style,
Peter.