Here is a set of interfaces that would allow reading partial data from the AIDA Store.
AIDA object would now have to manage its own data - retrieve missing data from the Store when needed, allow data parts that are not currently in use to be Garbage-Collected, backup temporary data to the Store.
Code Block |
---|
/** * Since the AIDA IManagedObjects in ITree don't know their own paths, * we have to pass the object to the Store. Store must be able to determine * the ITree path of the object and path (or some sort of ID) of the corresponding * data in the storage */ public interface IPartialDataStore extends OnDemandStore { /** * To be used with any simple AIDA object that has no * internal structure, like: ICloud, IDataPointSet, IHstogram */ IPatialData partialDatareadPartialData(ObjectIManagedObject aidaObject, int row); /** * To be used with AIDA objects that has internal structure, * like: ITuple */ IComplexPatialData complexPartialDatareadComplexPartialData(ObjectIManagedObject aidaObject, String pathInObject, int[] rows); /** * Writes partial data to the Store. * This method might be called by the implementation of the particular * IManagedObject when part of its data is Garbage-Collected and Finalized */ void writePartialData(IManagedObject mo, IPartialData pd) throws IOException; /** * Writes complex partial data to the Store * This method might be called by the implementation of the particular * IManagedObject when part of its data is Garbage-Collected and Finalized */ void writeComplexPartialData(IManagedObject mo, IComplexPartialData pd) throws IOException; } public interface IPatialData { int startIndex(); int endIndex(); String type(); Object data(); } public interface IComplexPatialData { int[] startIndices(); int[] endIndices(); String pathInObject(); String type(); Object data(); } |
...