<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Repository Framework</title><link>https://sourceforge.net/p/snifflib/wiki/Repository%2520Framework/</link><description>Recent changes to Repository Framework</description><atom:link href="https://sourceforge.net/p/snifflib/wiki/Repository%20Framework/feed" rel="self"/><language>en</language><lastBuildDate>Sun, 03 Feb 2013 02:02:56 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/snifflib/wiki/Repository%20Framework/feed" rel="self" type="application/rss+xml"/><item><title>WikiPage Repository Framework modified by Daniel P. Dougherty</title><link>https://sourceforge.net/p/snifflib/wiki/Repository%2520Framework/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v44
+++ v45
@@ -1,5 +1,5 @@
 *Disclaimer:*
-*You don't need to use any classes discussed here.  While it's not at all necessary to use any classes from the Repository Framework, the Snifflib library does provide for you ready-made long-term persistence solutions for many of its core classes (e.g. [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html)) through the Repository Framework.*  
+*You don't need to use any classes discussed here.  While it's not at all necessary to use any classes from the Repository Framework, the Snifflib library does provide for you ready-made long-term persistence solutions for many of its core classes (e.g. [DblMatrix](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html)) through the Repository Framework.*

 *You should consider using the Repository Framework if you...*

@@ -21,44 +21,44 @@

 The repository framework is a programming paradigm (pattern) focused on accessing distributed and possible asynchronous (transient) data.  It provides an alternate approach to long-term persistence which differs from exhaustive serialization via the JavaBeans paradigm and is easily prototyped for different back-end storage solutions (a.k.a. repositories).  The storage classes implementing the repository framework are plain JAVA objects whose class methods can be overridden in the standard way to optimize the efficiency of the chosen back-end.  Such optimizations might included taking advantage of [SQL Joins](http://en.wikipedia.org/wiki/Join_(SQL)), [SQL indexing](http://en.wikipedia.org/wiki/Database_index), or [random access](http://en.wikipedia.org/wiki/Random_access) of XML files from disk.  The developer is free at a later time to go back to fine-tune class method implementations to suit their application's or client's needs.  *Note that many such optimizations are done server-side (e.g. SQL indexing) and so shouldn't require modifying the implementation and even less so the interface definition.*   The goal is to prototype first, optimize later.

-A key design goal of the [repository framework](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/package-tree.html) is to allow a developer to get up and running with basic prototypes on their local machine first without needing to, for example, set up dedicated SQL servers for their application.  By focusing first on design, [programming to interfaces](http://en.wikipedia.org/wiki/Interface_(computing)#Programming_to_the_interface), and reaching consensus about what instance information actually needs to be persisted faster prototyping can be realized.
+A key design goal of the [repository framework](http://snifflib.sourceforge.net//api/com/mockturtlesolutions/snifflib/reposconfig/database/package-tree.html) is to allow a developer to get up and running with basic prototypes on their local machine first without needing to, for example, set up dedicated SQL servers for their application.  By focusing first on design, [programming to interfaces](http://en.wikipedia.org/wiki/Interface_(computing)#Programming_to_the_interface), and reaching consensus about what instance information actually needs to be persisted faster prototyping can be realized.

-Then, once their project's interface definition begins to take form, and perhaps a few GUI prototypes developed too, developers may choose to additionally allow for distributed remote storage solutions by implementing extensions of [RepositoryStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorage.html).  Snifflib already supplies default prototypes for the following  
+Then, once their project's interface definition begins to take form, and perhaps a few GUI prototypes developed too, developers may choose to additionally allow for distributed remote storage solutions by implementing extensions of [RepositoryStorage](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorage.html).  Snifflib already supplies default prototypes for the following  

-* [DOM](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorageDOM.html)
-* [PostgreSQL](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStoragePostgreSQL.html)
-* [MySQL](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorageSQL.html)
-* [SQLite](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorageSQLite.html)
-* [XML](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorageXML.html)
+* [DOM](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorageDOM.html)
+* [PostgreSQL](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStoragePostgreSQL.html)
+* [MySQL](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorageSQL.html)
+* [SQLite](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorageSQLite.html)
+* [XML](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorageXML.html)

 ####Reposconfig Package####

-The core repository framework classes and interfaces are located in the [reposconfig package](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/package-tree.html).  A developer using the Snifflib library can easily extend, override, and otherwise enhance and customize these core classes and interfaces to suit specific needs.  However, for many common uses the default implementations provided (DOM and XML interfaces in particular) should allow programmers to get some working prototypes up and running on their local machine.  
+The core repository framework classes and interfaces are located in the [reposconfig package](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/reposconfig/database/package-tree.html).  A developer using the Snifflib library can easily extend, override, and otherwise enhance and customize these core classes and interfaces to suit specific needs.  However, for many common uses the default implementations provided (DOM and XML interfaces in particular) should allow programmers to get some working prototypes up and running on their local machine.  

 ####Configs####

-Connectivity to any such back-end is configured through a class implementing  the [RepositoryConfiguration interface](http://mockturtlesolutions/api/com/mockturtlesolutions/snifflib/reposconfig/database/ReposConfiguration.html).  The Snifflib library already implements this class for many commonly usage cases.  These include,
+Connectivity to any such back-end is configured through a class implementing  the [RepositoryConfiguration interface](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/reposconfig/database/ReposConfiguration.html).  The Snifflib library already implements this class for many commonly usage cases.  These include,

-* [Vectors and Matrices](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixConfig.html)
-* [Parameter Sets](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/statmodeltools/database/ParameterSetConfig.html)
-* [Groovy Scripts](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/groovytools/database/GroovyScriptConfig.html)
-* [Dictionary Words](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/semantics/database/WordStorageConfig.html)
-* [Dynamical System Models](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/xppauttools/database/XppOdeConfig.html)
+* [Vectors and Matrices](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixConfig.html)
+* [Parameter Sets](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/statmodeltools/database/ParameterSetConfig.html)
+* [Groovy Scripts](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/groovytools/database/GroovyScriptConfig.html)
+* [Dictionary Words](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/semantics/database/WordStorageConfig.html)
+* [Dynamical System Models](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/xppauttools/database/XppOdeConfig.html)
 * others...

 Generically, we will refer to any such a class providing connectivity to a back-end as a *Config*. 

 ####The RepositoryStorage Interface####

-Any storage classes will need to implement the [RepositoryStorage interface](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorage.html) which provides a minimal set of methods relating to [provenance](http://en.wikipedia.org/wiki/Provenance) as well as commenting on the [Five W's](http://en.wikipedia.org/wiki/Five_Ws) of a particular storage instance.  
+Any storage classes will need to implement the [RepositoryStorage interface](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorage.html) which provides a minimal set of methods relating to [provenance](http://en.wikipedia.org/wiki/Provenance) as well as commenting on the [Five W's](http://en.wikipedia.org/wiki/Five_Ws) of a particular storage instance.  

-Storage classes must extend the RepositoryStorage interface to provide the information *essential* for persisting a storage instance.  For example, the [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html) class provides additional methods for persisting an instance of the [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html) class. The method [getMatrixSize()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html#getMatrixSize()) returns the dimensions of the possibly high-dimensional matrix which a back-end can use to determine how much memory or storage to allocate.  [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html) also specifies convenience methods like [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html#copyFromDblMatrix(com.mockturtlesolutions.snifflib.datatypes.DblMatrix)).  This method overwrites an existing persisted storage's contents with the contents of a runtime instance of the [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html) class.
+Storage classes must extend the RepositoryStorage interface to provide the information *essential* for persisting a storage instance.  For example, the [DblMatrixStorage](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html) class provides additional methods for persisting an instance of the [DblMatrix](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html) class. The method [getMatrixSize()](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html#getMatrixSize()) returns the dimensions of the possibly high-dimensional matrix which a back-end can use to determine how much memory or storage to allocate.  [DblMatrixStorage](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html) also specifies convenience methods like [copyFromDblMatrix()](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html#copyFromDblMatrix(com.mockturtlesolutions.snifflib.datatypes.DblMatrix)).  This method overwrites an existing persisted storage's contents with the contents of a runtime instance of the [DblMatrix](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html) class.

 ####When to Delegate to a TransferAgent####

-Depending on the circumstances, you might want to use a [delegation pattern](http://en.wikipedia.org/wiki/Delegation_pattern) in your storage classes.  In fact, a higher level method like [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) may only need to call other lower-level methods already specified in the relevant RepositoryStorage interface (i.e. [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html)).  Since the storage interfaces for each specific back-end (e.g. [DblMatrixDOM](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixDOM.html), [DblMatrixXML](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html),[DblMatrixPostgreSQL](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixPostgreSQL.html)) will also need to implement this method, it may make sense to delegate method  calls in each storage class to a generic class implementing this method.  We will call such a generic workhorse a *TransferAgent*.
+Depending on the circumstances, you might want to use a [delegation pattern](http://en.wikipedia.org/wiki/Delegation_pattern) in your storage classes.  In fact, a higher level method like [copyFromDblMatrix()](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) may only need to call other lower-level methods already specified in the relevant RepositoryStorage interface (i.e. [DblMatrixStorage](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html)).  Since the storage interfaces for each specific back-end (e.g. [DblMatrixDOM](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixDOM.html), [DblMatrixXML](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html),[DblMatrixPostgreSQL](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixPostgreSQL.html)) will also need to implement this method, it may make sense to delegate method  calls in each storage class to a generic class implementing this method.  We will call such a generic workhorse a *TransferAgent*.

-For our current example, the class [DblMatrixTransferAgent](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html) implements the method [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) using only methods specified in [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html).  Calls to the [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) method of [DblMatrixDOM](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixDOM.html), [DblMatrixXML](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html), or [DblMatrixPostgreSQL](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixPostgreSQL.html)  are delegated to the same [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix(com.mockturtlesolutions.snifflib.datatypes.DblMatrix)) implemented in [DblMatrixTransferAgent](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html). The code in the generic implementation ensures the incumbent low-level calls are actually carried out by the appropriate target storage class instance's methods.  
+For our current example, the class [DblMatrixTransferAgent](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html) implements the method [copyFromDblMatrix()](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) using only methods specified in [DblMatrixStorage](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html).  Calls to the [copyFromDblMatrix()](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) method of [DblMatrixDOM](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixDOM.html), [DblMatrixXML](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html), or [DblMatrixPostgreSQL](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixPostgreSQL.html)  are delegated to the same [copyFromDblMatrix()](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix(com.mockturtlesolutions.snifflib.datatypes.DblMatrix)) implemented in [DblMatrixTransferAgent](http://snifflib.sourceforge.net/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html). The code in the generic implementation ensures the incumbent low-level calls are actually carried out by the appropriate target storage class instance's methods.  

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Daniel P. Dougherty</dc:creator><pubDate>Sun, 03 Feb 2013 02:02:56 -0000</pubDate><guid>https://sourceforge.net27603da4e5f602e158d01cfd892280334e740490</guid></item><item><title>WikiPage Repository Framework modified by Daniel P. Dougherty</title><link>https://sourceforge.net/p/snifflib/wiki/Repository%2520Framework/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v43
+++ v44
@@ -56,7 +56,7 @@
 Storage classes must extend the RepositoryStorage interface to provide the information *essential* for persisting a storage instance.  For example, the [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html) class provides additional methods for persisting an instance of the [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html) class. The method [getMatrixSize()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html#getMatrixSize()) returns the dimensions of the possibly high-dimensional matrix which a back-end can use to determine how much memory or storage to allocate.  [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html) also specifies convenience methods like [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html#copyFromDblMatrix(com.mockturtlesolutions.snifflib.datatypes.DblMatrix)).  This method overwrites an existing persisted storage's contents with the contents of a runtime instance of the [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html) class.

-####Delegating to a TransferAgent####
+####When to Delegate to a TransferAgent####

 Depending on the circumstances, you might want to use a [delegation pattern](http://en.wikipedia.org/wiki/Delegation_pattern) in your storage classes.  In fact, a higher level method like [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) may only need to call other lower-level methods already specified in the relevant RepositoryStorage interface (i.e. [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html)).  Since the storage interfaces for each specific back-end (e.g. [DblMatrixDOM](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixDOM.html), [DblMatrixXML](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html),[DblMatrixPostgreSQL](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixPostgreSQL.html)) will also need to implement this method, it may make sense to delegate method  calls in each storage class to a generic class implementing this method.  We will call such a generic workhorse a *TransferAgent*.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Daniel P. Dougherty</dc:creator><pubDate>Sun, 13 Jan 2013 02:31:12 -0000</pubDate><guid>https://sourceforge.netb85dc2eedf1ddd7ddbf809d18eb1119e114db07a</guid></item><item><title>WikiPage Repository Framework modified by Daniel P. Dougherty</title><link>https://sourceforge.net/p/snifflib/wiki/Repository%2520Framework/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v42
+++ v43
@@ -1,12 +1,12 @@
 *Disclaimer:*
-*You don't need to use any classes discussed here.  While it's not at all necessary to use any classes from the Repository Framework, the Snifflib library does provide for you ready-made long-term [persistence](http://en.wikipedia.org/wiki/Persistence_(computer_science)) solutions for many of its core classes (e.g. [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html)) through the Repository Framework.  You can also extend these classes and interfaces to persist your own classes using various repository back-ends.*  
+*You don't need to use any classes discussed here.  While it's not at all necessary to use any classes from the Repository Framework, the Snifflib library does provide for you ready-made long-term persistence solutions for many of its core classes (e.g. [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html)) through the Repository Framework.*

 *You should consider using the Repository Framework if you...*

 * *desire a pure JAVA long-term persistence solution*
 * *want to focus on getting up-and-running* 
-* *want to allow for gradual adoption of fancier back-ends (e.g. host a remote SQL database) at a later date*
-* *want a coherent interface specification towards which to develop your own code*
+* *want to allow for gradual adoption of fancier back-ends (e.g. host a remote SQL database)*
+* *want coherent interface specification towards which to develop your code*
 * *want to customize your own persistence methods like set/get or search/query for your own usage cases*
 * *don't want/need existing persistence frameworks (e.g. JAVABeans, exhaustive serialization etc.)*
 * *want to bring long-term persistence capabilities to an existing library*
@@ -56,24 +56,9 @@
 Storage classes must extend the RepositoryStorage interface to provide the information *essential* for persisting a storage instance.  For example, the [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html) class provides additional methods for persisting an instance of the [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html) class. The method [getMatrixSize()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html#getMatrixSize()) returns the dimensions of the possibly high-dimensional matrix which a back-end can use to determine how much memory or storage to allocate.  [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html) also specifies convenience methods like [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixStorage.html#copyFromDblMatrix(com.mockturtlesolutions.snifflib.datatypes.DblMatrix)).  This method overwrites an existing persisted storage's contents with the contents of a runtime instance of the [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html) class.

-####Choosing to Delegate to a TransferAgent####
+####Delegating to a TransferAgent####

-Depending on the circumstances, you might want to use a [delegation pattern](http://en.wikipedia.org/wiki/Delegation_pattern) in your storage classes.  In fact, for the DblMatrix example just discussed, a higher level method like [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) may only need to call other lower-level methods already specified in the relevant RepositoryStorage interface (i.e. [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html)).  Since the storage interfaces for each specific back-end (e.g. [DblMatrixDOM](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixDOM.html), [DblMatrixXML](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html),[DblMatrixPostgreSQL](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixPostgreSQL.html)) must also implement this same interface, it may make sense to delegate incoming method calls to a generic class implementing the high-level method.  We will call such a generic workhorse a *TransferAgent*.
+Depending on the circumstances, you might want to use a [delegation pattern](http://en.wikipedia.org/wiki/Delegation_pattern) in your storage classes.  In fact, a higher level method like [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) may only need to call other lower-level methods already specified in the relevant RepositoryStorage interface (i.e. [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html)).  Since the storage interfaces for each specific back-end (e.g. [DblMatrixDOM](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixDOM.html), [DblMatrixXML](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html),[DblMatrixPostgreSQL](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixPostgreSQL.html)) will also need to implement this method, it may make sense to delegate method  calls in each storage class to a generic class implementing this method.  We will call such a generic workhorse a *TransferAgent*.

 For our current example, the class [DblMatrixTransferAgent](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html) implements the method [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) using only methods specified in [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html).  Calls to the [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) method of [DblMatrixDOM](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixDOM.html), [DblMatrixXML](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html), or [DblMatrixPostgreSQL](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixPostgreSQL.html)  are delegated to the same [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix(com.mockturtlesolutions.snifflib.datatypes.DblMatrix)) implemented in [DblMatrixTransferAgent](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html). The code in the generic implementation ensures the incumbent low-level calls are actually carried out by the appropriate target storage class instance's methods.  

-####Connections are Managed by RepositoryConnectivity Instances####
-
-To review, the contents of a class instance to be persisted is stored by the appropriate [RepositoryStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorage.html) instance.  However, the connections themselves to the various back-ends require extraneous information such as
-
-* exchange of user name and password
-* handles to the connection/port
-* file paths assigned to store a database on disk
-* create storage using the back-end's API (e.g. [JDBC](http://www.oracle.com/technetwork/java/overview-141217.html), [asynchronous file I/O](https://en.wikipedia.org/wiki/Asynchronous_I/O) etc.)
-* reconstituting a runtime storage from a persisted one  
-
-The instances which manage all these details implement (or extend) the [RepositoryConnectivity](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryConnectivity.html) interface.  Continuing with our previous example, connections to repositories storing DblMatrix's is managed by classes extending [DblMatrixConnectivity](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixConnectivity.html) which itself extends[RepositoryConnectivity](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryConnectivity.html).  For our DblMatrix example, these would include classes like
-
-* [DblMatrixSQLConnection](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixSQLConnection.html)
-* [DblMatrixXMLConnection](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXMLConnection.html)
-* [DblMatrixSQLiteConnection](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixSQLiteConnection.html)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Daniel P. Dougherty</dc:creator><pubDate>Sun, 13 Jan 2013 02:30:16 -0000</pubDate><guid>https://sourceforge.net884ae597feaeb850409518f090ded67dbaa03c17</guid></item><item><title>WikiPage Repository Framework modified by Daniel P. Dougherty</title><link>https://sourceforge.net/p/snifflib/wiki/Repository%2520Framework/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v41
+++ v42
@@ -1,5 +1,5 @@
 *Disclaimer:*
-*You don't need to use any classes discussed here.  While it's not at all necessary to use any classes from the Repository Framework, the Snifflib library does provide for you ready-made long-term persistence solutions for many of its core classes (e.g. [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html)) through the Repository Framework.  You can also extend these classes and interfaces to persist your own classes.*  
+*You don't need to use any classes discussed here.  While it's not at all necessary to use any classes from the Repository Framework, the Snifflib library does provide for you ready-made long-term [persistence](http://en.wikipedia.org/wiki/Persistence_(computer_science)) solutions for many of its core classes (e.g. [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html)) through the Repository Framework.  You can also extend these classes and interfaces to persist your own classes using various repository back-ends.*

 *You should consider using the Repository Framework if you...*

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Daniel P. Dougherty</dc:creator><pubDate>Sun, 13 Jan 2013 02:13:47 -0000</pubDate><guid>https://sourceforge.net265f19c270c63a70538c18ae1917f9657a67f50f</guid></item><item><title>WikiPage Repository Framework modified by Daniel P. Dougherty</title><link>https://sourceforge.net/p/snifflib/wiki/Repository%2520Framework/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v40
+++ v41
@@ -1,5 +1,5 @@
 *Disclaimer:*
-*You don't need to use any classes discussed here.  While it's not at all necessary to use any classes from the Repository Framework, the Snifflib library does provide for you ready-made long-term persistence solutions for many of its core classes (e.g. [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html)) through the Repository Framework.  You can also extend these classes and interfaces for your own classes.*  
+*You don't need to use any classes discussed here.  While it's not at all necessary to use any classes from the Repository Framework, the Snifflib library does provide for you ready-made long-term persistence solutions for many of its core classes (e.g. [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html)) through the Repository Framework.  You can also extend these classes and interfaces to persist your own classes.*

 *You should consider using the Repository Framework if you...*

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Daniel P. Dougherty</dc:creator><pubDate>Sun, 13 Jan 2013 02:10:28 -0000</pubDate><guid>https://sourceforge.net614e5b6f6b8abdab32c9968bbbcc13b5963413cd</guid></item><item><title>WikiPage Repository Framework modified by Daniel P. Dougherty</title><link>https://sourceforge.net/p/snifflib/wiki/Repository%2520Framework/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Daniel P. Dougherty</dc:creator><pubDate>Sun, 13 Jan 2013 02:09:47 -0000</pubDate><guid>https://sourceforge.netef9020d1ce61014e7ddc5a35652e1428d0f101ae</guid></item><item><title>WikiPage Repository Framework modified by Daniel P. Dougherty</title><link>https://sourceforge.net/p/snifflib/wiki/Repository%2520Framework/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v38
+++ v39
@@ -1,5 +1,5 @@
 *Disclaimer:*
-*You don't need to use any classes discussed here.  While it's not at all necessary to use any classes from the Repository Framework, the Snifflib library does provide for you ready-made long-term persistence solutions for many of its core classes (e.g. [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html)) through the Repository Framework.*  
+*You don't need to use any classes discussed here.  While it's not at all necessary to use any classes from the Repository Framework, the Snifflib library does provide for you ready-made long-term persistence solutions for many of its core classes (e.g. [DblMatrix](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/DblMatrix.html)) through the Repository Framework.  You can also extend these classes and interfaces for your own classes.*

 *You should consider using the Repository Framework if you...*

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Daniel P. Dougherty</dc:creator><pubDate>Sun, 13 Jan 2013 02:09:27 -0000</pubDate><guid>https://sourceforge.net615bb9a2c8b93a88e8ed8b1ae795046b8276bb2c</guid></item><item><title>WikiPage Repository Framework modified by Daniel P. Dougherty</title><link>https://sourceforge.net/p/snifflib/wiki/Repository%2520Framework/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v37
+++ v38
@@ -62,7 +62,7 @@

 For our current example, the class [DblMatrixTransferAgent](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html) implements the method [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) using only methods specified in [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html).  Calls to the [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) method of [DblMatrixDOM](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixDOM.html), [DblMatrixXML](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html), or [DblMatrixPostgreSQL](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixPostgreSQL.html)  are delegated to the same [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix(com.mockturtlesolutions.snifflib.datatypes.DblMatrix)) implemented in [DblMatrixTransferAgent](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html). The code in the generic implementation ensures the incumbent low-level calls are actually carried out by the appropriate target storage class instance's methods.  

-####Connections are Managed By RepositoryConnectivity Instances####
+####Connections are Managed by RepositoryConnectivity Instances####

 To review, the contents of a class instance to be persisted is stored by the appropriate [RepositoryStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorage.html) instance.  However, the connections themselves to the various back-ends require extraneous information such as

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Daniel P. Dougherty</dc:creator><pubDate>Sun, 13 Jan 2013 02:08:30 -0000</pubDate><guid>https://sourceforge.net66e7c7a1ddc553f3c49a86a13ca75bd4a424e8dc</guid></item><item><title>WikiPage Repository Framework modified by Daniel P. Dougherty</title><link>https://sourceforge.net/p/snifflib/wiki/Repository%2520Framework/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v36
+++ v37
@@ -62,7 +62,7 @@

 For our current example, the class [DblMatrixTransferAgent](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html) implements the method [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) using only methods specified in [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html).  Calls to the [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) method of [DblMatrixDOM](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixDOM.html), [DblMatrixXML](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html), or [DblMatrixPostgreSQL](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixPostgreSQL.html)  are delegated to the same [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix(com.mockturtlesolutions.snifflib.datatypes.DblMatrix)) implemented in [DblMatrixTransferAgent](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html). The code in the generic implementation ensures the incumbent low-level calls are actually carried out by the appropriate target storage class instance's methods.  

-####Connectivity to Repositories are Managed By RepositoryConnectivity Instances####
+####Connections are Managed By RepositoryConnectivity Instances####

 To review, the contents of a class instance to be persisted is stored by the appropriate [RepositoryStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorage.html) instance.  However, the connections themselves to the various back-ends require extraneous information such as

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Daniel P. Dougherty</dc:creator><pubDate>Sun, 13 Jan 2013 02:08:04 -0000</pubDate><guid>https://sourceforge.nete9b60a21b619517c0c32109b4ecd2f8a4fbc0e51</guid></item><item><title>WikiPage Repository Framework modified by Daniel P. Dougherty</title><link>https://sourceforge.net/p/snifflib/wiki/Repository%2520Framework/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v35
+++ v36
@@ -62,7 +62,7 @@

 For our current example, the class [DblMatrixTransferAgent](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html) implements the method [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) using only methods specified in [DblMatrixStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html).  Calls to the [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix) method of [DblMatrixDOM](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixDOM.html), [DblMatrixXML](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixXML.html), or [DblMatrixPostgreSQL](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixPostgreSQL.html)  are delegated to the same [copyFromDblMatrix()](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html#copyFromDblMatrix(com.mockturtlesolutions.snifflib.datatypes.DblMatrix)) implemented in [DblMatrixTransferAgent](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/datatypes/database/DblMatrixTransferAgent.html). The code in the generic implementation ensures the incumbent low-level calls are actually carried out by the appropriate target storage class instance's methods.  

-####Connectivity to Repositories Managed By RepositoryConnectivity Instances####
+####Connectivity to Repositories are Managed By RepositoryConnectivity Instances####

 To review, the contents of a class instance to be persisted is stored by the appropriate [RepositoryStorage](http://mockturtlesolutions.com/api/com/mockturtlesolutions/snifflib/reposconfig/database/RepositoryStorage.html) instance.  However, the connections themselves to the various back-ends require extraneous information such as

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Daniel P. Dougherty</dc:creator><pubDate>Sun, 13 Jan 2013 02:07:30 -0000</pubDate><guid>https://sourceforge.net06573f8d5feb63d6ebac35441361383b15999b21</guid></item></channel></rss>