예제 #1
0
        /// <summary>
        /// Configura o catalogo que será usado no sistema.
        /// </summary>
        protected override void ConfigureAggregateCatalog()
        {
            base.ConfigureAggregateCatalog();

            this.AggregateCatalog.Catalogs.Add(new MefContrib.Hosting.Conventions.ConventionCatalog(
                                                   new Colosoft.Mef.PartConventionBuilder()

                                                   .Add <Colosoft.Business.EntityEventManager, Colosoft.Business.IEntityEventManager>()
                                                   .Add <Colosoft.Logging.DebugLogger, Colosoft.Logging.ILogger>()
                                                   .Add <Colosoft.Web.Security.UserContextConfigurator, Colosoft.Security.IUserContextConfigurator>()
                                                   .AddImportingConstructor <Colosoft.Business.BusinessValidationManager, Colosoft.Validation.IValidationManager>()

                                                   .Add <Colosoft.Business.BusinessEntityTypeLoader, Colosoft.Business.IBusinessEntityTypeLoader>()
                                                   .AddImportingConstructor <Colosoft.Business.BusinessEntityTypeManager,
                                                                             Colosoft.Business.IEntityTypeManager>()

                                                   .AddImportingConstructor <Colosoft.Business.EntityManager,
                                                                             Colosoft.Business.IEntityManager>()

                                                   .Add <Colosoft.Data.Database.Generic.PersistenceTransactionExecuter, Colosoft.Data.IPersistenceTransactionExecuter>(true)
                                                   .AddImportingConstructor <Colosoft.Query.Database.Generic.ProviderLocator, Colosoft.Query.IProviderLocator>()
                                                   .AddImportingConstructor <Colosoft.Query.Database.SqlSourceContext, Colosoft.Query.ISourceContext>()

                                                   .Add <Colosoft.Data.Caching.Local.DataEntriesRepository, Colosoft.Data.Caching.IDataEntriesRepository>()

                                                   .AddImportingConstructor <Colosoft.Data.Schema.RecordKeyFactory, Colosoft.Query.IRecordKeyFactory>()

                                                   .Add <Colosoft.Security.Captcha.CaptchaImpl, Colosoft.Security.CaptchaSupport.ICaptcha>()

                                                   .AddImportingConstructor <Integracao.ProvedorIntegradores, Integracao.IProvedorIntegradores>()));

            this.AggregateCatalog.Catalogs.Add(new Colosoft.Mef.InstanceCatalog()
                                               .Add <Colosoft.Data.Caching.IDataCacheManager>(new Lazy <Colosoft.Data.Caching.IDataCacheManager>(() =>
            {
                var manager = new Colosoft.Data.Caching.DataCacheManager(
                    this.Container.GetExportedValue <Colosoft.Query.ISourceContext>(),
                    this.Container.GetExportedValue <Colosoft.Data.Schema.ITypeSchema>(),
                    new DataEntryDownloader(),
                    this.Container.GetExportedValue <Colosoft.Data.Caching.IDataEntriesRepository>(),
                    this.Container.GetExportedValue <Colosoft.Data.Caching.ICacheLoaderObserver>(),
                    this.Container.GetExportedValue <Colosoft.Logging.ILogger>());

                return(manager);
            }))

                                               .Add <Integracao.GerenciadorIntegradores>(new Lazy <Integracao.GerenciadorIntegradores>(this.CarregarGerenciadorIntegradores))

                                               .Add <Colosoft.Data.IPersistenceContext>(new Lazy <Colosoft.Data.IPersistenceContext>(() =>
            {
                var typeSchema = this.Container.GetExportedValue <Colosoft.Data.Schema.ITypeSchema>();
                return(this.CreateDatabasePersistenceContext(typeSchema));
            }))

                                               .Add <Colosoft.Caching.CacheDataSource>(new Lazy <Colosoft.Caching.CacheDataSource>(() =>
            {
                var cacheManager = this.Container.GetExportedValue <Colosoft.Data.Caching.IDataCacheManager>();
                var typeSchema   = this.Container.GetExportedValue <Colosoft.Data.Schema.ITypeSchema>();
                return(new Colosoft.Caching.CacheDataSource(cacheManager, typeSchema));
            })));
        }
예제 #2
0
        /// <summary>
        /// Configura o catalogo que será usado no sistema.
        /// </summary>
        protected override void ConfigureAggregateCatalog()
        {
            base.ConfigureAggregateCatalog();

            this.AggregateCatalog.Catalogs.Add(new MefContrib.Hosting.Conventions.ConventionCatalog(
                                                   new Colosoft.Mef.PartConventionBuilder()

                                                   .Add <Colosoft.Business.EntityEventManager, Colosoft.Business.IEntityEventManager>()
                                                   .Add <Colosoft.Logging.DebugLogger, Colosoft.Logging.ILogger>()
                                                   .Add <Colosoft.Web.Security.UserContextConfigurator, Colosoft.Security.IUserContextConfigurator>()
                                                   .AddImportingConstructor <Colosoft.Business.BusinessValidationManager, Colosoft.Validation.IValidationManager>()
                                                   .Add <Colosoft.Business.BusinessEntityTypeLoader, Colosoft.Business.IBusinessEntityTypeLoader>()
                                                   .AddImportingConstructor <Colosoft.Business.BusinessEntityTypeManager, Colosoft.Business.IEntityTypeManager>()
                                                   .AddImportingConstructor <Colosoft.Business.EntityManager, Colosoft.Business.IEntityManager>()
                                                   .Add <Colosoft.Data.Database.Generic.PersistenceTransactionExecuter, Colosoft.Data.IPersistenceTransactionExecuter>(true)
                                                   .AddImportingConstructor <Colosoft.Query.Database.Generic.ProviderLocator, Colosoft.Query.IProviderLocator>()
                                                   .AddImportingConstructor <Colosoft.Query.Database.SqlSourceContext, Colosoft.Query.ISourceContext>()
                                                   .Add <Colosoft.Data.Caching.Local.DataEntriesRepository, Colosoft.Data.Caching.IDataEntriesRepository>()
                                                   .AddImportingConstructor <Colosoft.Data.Schema.RecordKeyFactory, Colosoft.Query.IRecordKeyFactory>()
                                                   .Add <Colosoft.Security.Captcha.CaptchaImpl, Colosoft.Security.CaptchaSupport.ICaptcha>()

                                                   .AddImportingConstructor <Integracao.ProvedorIntegradores, Integracao.IProvedorIntegradores>()));

            this.AggregateCatalog.Catalogs.Add(new Colosoft.Mef.InstanceCatalog()
                                               .Add <Colosoft.Data.Caching.IDataCacheManager>(new Lazy <Colosoft.Data.Caching.IDataCacheManager>(() =>
            {
                var manager = new Colosoft.Data.Caching.DataCacheManager(
                    this.Container.GetExportedValue <Colosoft.Query.ISourceContext>(),
                    this.Container.GetExportedValue <Colosoft.Data.Schema.ITypeSchema>(),
                    new DataEntryDownloader(),
                    this.Container.GetExportedValue <Colosoft.Data.Caching.IDataEntriesRepository>(),
                    this.Container.GetExportedValue <Colosoft.Data.Caching.ICacheLoaderObserver>(),
                    this.Container.GetExportedValue <Colosoft.Logging.ILogger>());

                return(manager);
            }))

                                               .Add <Integracao.GerenciadorIntegradores>(new Lazy <Integracao.GerenciadorIntegradores>(this.CarregarGerenciadorIntegradores))

                                               .Add <Colosoft.Data.IPersistenceContext>(new Lazy <Colosoft.Data.IPersistenceContext>(() =>
            {
                var typeSchema = this.Container.GetExportedValue <Colosoft.Data.Schema.ITypeSchema>();
                return(this.CreateDatabasePersistenceContext(typeSchema));
            }))

                                               .Add <Colosoft.Caching.CacheDataSource>(new Lazy <Colosoft.Caching.CacheDataSource>(() =>
            {
                var cacheManager = this.Container.GetExportedValue <Colosoft.Data.Caching.IDataCacheManager>();
                var typeSchema   = this.Container.GetExportedValue <Colosoft.Data.Schema.ITypeSchema>();
                return(new Colosoft.Caching.CacheDataSource(cacheManager, typeSchema));
            })));

            using (var textReader = new System.IO.StreamReader(HttpContext.Current.Server.MapPath("~/Mef.config")))
            {
                var reader = System.Xml.XmlReader.Create(textReader, new System.Xml.XmlReaderSettings
                {
                    IgnoreWhitespace = true,
                });
                reader.Read();
                var configurableCatalog =
                    new MefContrib.Models.Provider.DefinitionProviderPartCatalog
                    <MefContrib.Models.Provider.Definitions.Configurable.ConfigurableDefinitionProvider>(reader);

                this.AggregateCatalog.Catalogs.Add(configurableCatalog);
            }

            // Recupera o diretório onde o site está em execução
            var directory = HttpContext.Current.Server.MapPath("~/bin");

            // Localiza os assemblies
            foreach (var i in System.IO.Directory.GetFiles(directory)
                     .Where(f => f.EndsWith(".dll", StringComparison.InvariantCultureIgnoreCase)))
            {
                var assembly = System.Reflection.Assembly.Load(System.IO.Path.GetFileNameWithoutExtension(i));

                if (assembly != null)
                {
                    this.AggregateCatalog.Catalogs.Add(new System.ComponentModel.Composition.Hosting.AssemblyCatalog(assembly));
                }
            }

            this.AggregateCatalog.Catalogs.Add(new MefContrib.Hosting.Conventions.ConventionCatalog(
                                                   new Colosoft.Mef.PartConventionBuilder()
                                                   .AddImportingConstructor <Colosoft.Query.Database.MySql.MySqlDataSource, Colosoft.Query.Database.SqlQueryDataSource>()
                                                   .AddImportingConstructor <Colosoft.Query.Database.MySql.MySqlDataSource, Colosoft.Query.IQueryDataSource>()
                                                   .Add <Colosoft.Data.Database.MySql.MySqlPrimaryKeyRepository, Colosoft.Data.Database.MySql.IMySqlPrimaryKeyRepository>()));

            this.AggregateCatalog.Catalogs.Add(new Colosoft.Mef.InstanceCatalog()

                                               .Add <Colosoft.Data.Schema.ITypeSchema>(new Lazy <Colosoft.Data.Schema.ITypeSchema>(() =>
            {
                // Carrega o esquema dos metadados do GDA
                return(Colosoft.Data.Schema.GDA.Metadata.MetadataTypeSchema.Load(typeof(Glass.Data.Model.Pedido).Assembly));
            })));
        }