#region Apache Notice
/*****************************************************************************
* $Header: $
* $Revision$
* $Date$
*
* iBATIS.NET Data Mapper
* Copyright (C) 2004 - Gilles Bayon
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
********************************************************************************/
#endregion
#region Using
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Xml;
using IBatisNet.Common;
using IBatisNet.Common.Exceptions;
using IBatisNet.Common.Utilities;
using IBatisNet.DataAccess.Interfaces;
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.Configuration;
#endregion
namespace IBatisNet.DataAccess.DaoSessionHandlers
{
///
/// Summary description for SqlMapDaoSessionHandler.
///
public class SqlMapDaoSessionHandler : IDaoSessionHandler
{
#region Fields
private ISqlMapper _sqlMap;
#endregion
#region Properties
///
///
///
public ISqlMapper SqlMap
{
get { return _sqlMap; }
}
#endregion
#region Constructor (s) / Destructor
///
///
///
public SqlMapDaoSessionHandler()
{
}
#endregion
#region Methods
///
///
///
///
///
public void Configure(NameValueCollection properties, IDictionary resources)
{
DomSqlMapBuilder builder = new DomSqlMapBuilder();
XmlDocument document = null;
try
{
DataSource dataSource = (DataSource) resources["DataSource"];
bool useConfigFileWatcher = (bool) resources["UseConfigFileWatcher"];
if (resources.Contains("resource")||resources.Contains("sqlMapConfigFile"))
{
string fileName = string.Empty;
if (resources.Contains("resource"))
{
fileName = (string) resources["resource"];
}else
{
fileName = (string) resources["sqlMapConfigFile"];
}
if (useConfigFileWatcher == true)
{
ConfigWatcherHandler.AddFileToWatch( Resources.GetFileInfo( fileName ) );
}
document = Resources.GetResourceAsXmlDocument(fileName);
}
else if ( resources.Contains("url") )
{
document = Resources.GetUrlAsXmlDocument( (string) resources["url"] );
}
else if ( resources.Contains("embedded") )
{
document = Resources.GetEmbeddedResourceAsXmlDocument( (string) resources["embedded"] );
}
else
{
throw new ConfigurationException("Invalid attribute on daoSessionHandler/property ");
}
_sqlMap = builder.Build( document, dataSource, useConfigFileWatcher, properties);
}
catch(Exception e)
{
throw new ConfigurationException(string.Format("DaoManager could not configure SqlMapDaoSessionHandler.Cause: {0}", e.Message),e);
}
}
///
///
///
///
///
public DaoSession GetDaoSession(DaoManager daoManager)
{
return (new SqlMapDaoSession(daoManager, _sqlMap));
}
#endregion
}
}