Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="properties"></param>
        /// <param name="resources"></param>
        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 ConfigurationErrorsException("Invalid attribute on daoSessionHandler/property ");
                }
                _sqlMap = builder.Build(document, dataSource, useConfigFileWatcher, properties);
            }
            catch (Exception e)
            {
                throw new ConfigurationErrorsException(string.Format("DaoManager could not configure SqlMapDaoSessionHandler.Cause: {0}", e.Message), e);
            }
        }
Exemplo n.º 2
0
        public ISqlMapper GetSqlMapper(string databaseName)
        {
            var mapper = (ISqlMapper)CallContext.GetData(databaseName);

            if (mapper == null)
            {
                string ibatisSqlMapperCnfgFileName = FrameworkConfigInfo.GetIbatisSqlMapperFilePath(databaseName);
                if (String.IsNullOrEmpty(ibatisSqlMapperCnfgFileName))
                {
                    throw new YmkException("There is no configuration section of database: " + databaseName);
                }
                if (System.Web.HttpRuntime.AppDomainAppId != null)
                {
                    ibatisSqlMapperCnfgFileName = Server.MapPath(ibatisSqlMapperCnfgFileName);
                }

                //Read Original XML data and parser DTD
                XmlReaderSettings settings = new XmlReaderSettings();
                settings.DtdProcessing = DtdProcessing.Parse;
                XmlReader   reader = XmlTextReader.Create(ibatisSqlMapperCnfgFileName, settings);
                XmlDocument doc    = new XmlDocument();
                doc.Load(reader);
                reader.Close();


                //Load XML data again with DTD prohibit
                var stream = new System.IO.StringReader(doc.InnerXml);
                settings.DtdProcessing = DtdProcessing.Ignore;
                reader = XmlReader.Create(stream, settings);
                doc.Load(reader);
                reader.Close();
                stream.Close();

                DomSqlMapBuilder builder = new DomSqlMapBuilder();
                mapper = builder.Build(doc, false);
                CallContext.SetData(databaseName, mapper);
                //CallContext.SetData("dreamdb", mapper);
            }
            else
            {
                mapper = (ISqlMapper)CallContext.GetData(databaseName);
            }
            return(mapper);
        }