Ejemplo n.º 1
0
        public void ReadXml(XmlReader reader)
        {
            var xmlReader = new CremaXmlReader(this);

            xmlReader.Read(reader);
        }
Ejemplo n.º 2
0
        public void ReadXml(XmlReader reader, ItemName itemName)
        {
            var xmlReader = new CremaXmlReader(this, itemName);

            xmlReader.Read(reader);
        }
Ejemplo n.º 3
0
        public void ReadXml(Stream stream)
        {
            var xmlReader = new CremaXmlReader(this);

            xmlReader.Read(stream);
        }
Ejemplo n.º 4
0
        public void ReadXml(Stream stream, ItemName itemName)
        {
            var xmlReader = new CremaXmlReader(this, itemName);

            xmlReader.Read(stream);
        }
Ejemplo n.º 5
0
        public void ReadXml(string filename, ItemName itemName)
        {
            var xmlReader = new CremaXmlReader(this, itemName);

            xmlReader.Read(filename);
        }
Ejemplo n.º 6
0
        public void ReadXml(string filename)
        {
            var reader = new CremaXmlReader(this);

            reader.Read(filename);
        }
Ejemplo n.º 7
0
        public void ReadXml(TextReader writer)
        {
            var xmlReader = new CremaXmlReader(this);

            xmlReader.Read(writer);
        }
Ejemplo n.º 8
0
        public void ReadXml(string fileName)
        {
            var xmlReader = new CremaXmlReader(this);

            xmlReader.Read(fileName);
        }
Ejemplo n.º 9
0
        public void ReadMany(string[] typeFiles, string[] tableFiles, bool schemaOnly)
        {
#if USE_PARALLEL
            Parallel.ForEach(typeFiles, item =>
            {
                this.ReadType(item);
            });
#else
            foreach (var item in typeFiles)
            {
                this.ReadType(item);
            }
#endif

            var readInfos = new List <CremaXmlReadInfo>(tableFiles.Length);
            Parallel.ForEach(tableFiles, item =>
            {
                var info = new CremaXmlReadInfo(item);
                lock (readInfos)
                {
                    readInfos.Add(info);
                }
            });

#if USE_PARALLEL
            Parallel.ForEach(readInfos.Where(i => i.IsInherited == false), item =>
            {
                this.ReadXmlSchema(item.SchemaPath, item.ItemName);
            });
            Parallel.ForEach(readInfos.Where(i => i.IsInherited), item =>
            {
                this.ReadXmlSchema(item.SchemaPath, item.ItemName);
            });
#else
            foreach (var item in readInfos.Where(i => i.IsInherited == false))
            {
                this.ReadXmlSchema(item.SchemaPath, item.ItemName);
            }
            foreach (var item in readInfos.Where(i => i.IsInherited))
            {
                this.ReadXmlSchema(item.SchemaPath, item.ItemName);
            }
#endif

            //if (schemaOnly == false)
            //{
            this.BeginLoad();

#if USE_PARALLEL
            readInfos.Sort((x, y) => y.XmlSize.CompareTo(x.XmlSize));

            var threadcount = 8;
            var query       = from item in readInfos
                              let key = readInfos.IndexOf(item) % threadcount
                                        group item by key into g
                                        select g;

            var parallellist = new List <CremaXmlReadInfo>(readInfos.Count);

            foreach (var item in query)
            {
                parallellist.AddRange(item);
            }

            try
            {
                Parallel.ForEach(parallellist, new ParallelOptions {
                    MaxDegreeOfParallelism = threadcount
                }, item =>
                {
                    var xmlReader = new CremaXmlReader(this, item.ItemName)
                    {
                        OmitContent = schemaOnly == true
                    };
                    xmlReader.Read(item.XmlPath);
                });
            }
            catch (AggregateException e)
            {
                throw e.InnerException;
            }
#else
            foreach (var item in readInfos)
            {
                var xmlReader = new CremaXmlReader(this, item.ItemName)
                {
                    OmitContent = schemaOnly == true
                };
                xmlReader.Read(item.XmlPath);
            }
#endif
            this.EndLoad();
            //}
            this.Tables.Sort();
        }