@ -7,10 +7,20 @@ using Yavsc.Model.FrontOffice;
namespace SalesCatalog.XmlImplementation
namespace SalesCatalog.XmlImplementation
{
{
/// <summary>
/// Xml catalog provider.
/// In charge of getting the catalog data,
/// returning a Catalog object from GetCatalog
/// </summary>
public class XmlCatalogProvider : CatalogProvider
public class XmlCatalogProvider : CatalogProvider
{
{
#region implemented abstract members of SalesCatalog.CatalogProvider
#region implemented abstract members of SalesCatalog.CatalogProvider
/// <summary>
/// Gets the catalog, loading it from
/// the file system at a first call,
/// and when its last write time has changed.
/// </summary>
/// <returns>The catalog.</returns>
public override Catalog GetCatalog ( )
public override Catalog GetCatalog ( )
{
{
// Assert fileName != null
// Assert fileName != null
@ -22,17 +32,36 @@ namespace SalesCatalog.XmlImplementation
LoadCatalog ( ) ;
LoadCatalog ( ) ;
return catInstance ;
return catInstance ;
}
}
/// <summary>
/// The catalog instance.
/// </summary>
protected XmlCatalog catInstance = null ;
protected XmlCatalog catInstance = null ;
/// <summary>
/// The last modification date of the file loaded.
/// </summary>
protected DateTime lastModification = new DateTime ( 0 ) ;
protected DateTime lastModification = new DateTime ( 0 ) ;
/// <summary>
/// The name of the file loaded.
/// </summary>
protected string fileName = null ;
protected string fileName = null ;
# endregion
# endregion
/// <summary>
/// Initialize the catalog
/// using the specified name and config.
/// </summary>
/// <param name="name">Name.</param>
/// <param name="config">Config.</param>
public override void Initialize ( string name , System . Collections . Specialized . NameValueCollection config )
public override void Initialize ( string name , System . Collections . Specialized . NameValueCollection config )
{
{
fileName = config [ "connection" ] ;
if ( config [ "connection" ] = = null )
throw new Exception ( "the 'connection' parameter is null " +
"(it should be the absolute path to the xml catalog)" ) ;
string basedir = AppDomain . CurrentDomain . BaseDirectory ;
// config ["connection"] starts with "~/"
fileName = Path . Combine ( basedir , config [ "connection" ] . Substring ( 2 ) ) ;
LoadCatalog ( ) ;
LoadCatalog ( ) ;
}
}
private void LoadCatalog ( )
private void LoadCatalog ( )
{
{
try {
try {