Esempio n. 1
0
        private CachedSchema NewCachedSchema(string name, SchemaSource source)
        {
            XElement config = InstanceConfigGetter.GetConfig(name);

            CachedSchema cachedSchema;

            if (source == SchemaSource.DbSchemaProvider)
            {
                cachedSchema = new CachedSchema()
                {
                    DbSchema = GetDbSchemaProvider(name, config).GetDbSchema()
                };
            }
            else
            {
                cachedSchema = new CachedSchema(Cache[name]);
            }
            if (source <= SchemaSource.DbSchemaReviser)
            {
                cachedSchema.RevisedDbSchema = GetDbSchemaReviser(config).Revise(cachedSchema.DbSchema);
            }
            if (source <= SchemaSource.Mapper)
            {
                cachedSchema.MappedSchema = GetMapper(config).Map(cachedSchema.RevisedDbSchema);
            }
            if (source <= SchemaSource.SchemaReviser)
            {
                XElement revisedSchema = GetSchemaReviser(config).Revise(cachedSchema.MappedSchema);
                DateTime utcNow        = DateTime.UtcNow;
                cachedSchema.RevisedSchema = revisedSchema;
            }

            return(cachedSchema);
        }
Esempio n. 2
0
        protected SchemaDeltaFinder CreateSchemaDeltaFinder(string name)
        {
            XElement config = InstanceConfigGetter.GetConfig(name);

            if (config.Element("schemaDeltaFinder") == null)
            {
                return(new ConfigSchemaDeltaFinder(name, string.Empty, string.Empty));
            }

            XElement xSchemaDeltaFinder = new XElement(config.Element("schemaDeltaFinder"));

            xSchemaDeltaFinder.Element("name").SetAttributeValue("value", name);

            string type = xSchemaDeltaFinder.Attribute("type").Value.Split(',')[0].Trim();

            switch (type)
            {
            case "XData.Data.Schema.ConfigSchemaDeltaFinder":
                string excludedAttributes = xSchemaDeltaFinder.Element("excludedAttributes").Attribute("value").Value;
                string separator          = xSchemaDeltaFinder.Element("separator").Attribute("value").Value;
                return(new ConfigSchemaDeltaFinder(name, excludedAttributes, separator));

            default:
                break;
            }

            ObjectCreator objectCreator = new ObjectCreator(xSchemaDeltaFinder);
            object        obj           = objectCreator.CreateInstance();

            return(obj as SchemaDeltaFinder);
        }
Esempio n. 3
0
        public void Update(string name)
        {
            XElement config = InstanceConfigGetter.GetConfig(name);

            lock (LockObj)
            {
                Cache[name] = config;
            }
        }