private ZipFileResultEntry[] SerializePerTable(SerializationSet serializationSet, DataRequest request)
        {
            var filteredMetaDataList = new List <SerializationSet>();

            foreach (var table in serializationSet.Tables)
            {
                var filteredMetaData = serializationSet.Filter(table.Name);
                filteredMetaData = ReplaceOptionProcessor.Process(filteredMetaData, request);

                if (filteredMetaData.Tables.Any())
                {
                    filteredMetaDataList.Add(filteredMetaData);
                }
            }

            var entries = new List <ZipFileResultEntry>();

            foreach (var dataSet in filteredMetaDataList)
            {
                var filename = $"{dataSet.Tables[0].Name}.{request.Ext}";
                var serializationSetStream = new MemoryStream();
                var serializer             = this.GetDataSerializer(request.OutputType);
                serializer.Serialize(serializationSetStream, dataSet);

                entries.Add(new ZipFileResultEntry(filename, serializationSetStream));
            }

            return(entries.ToArray());
        }
Exemple #2
0
        private void SerializeAll(SerializationSet metaData)
        {
            var serializer       = this.GetDataSerializer(this.OutputType);
            var filteredMetaData = ReplaceOptionProcessor.Process(metaData);

            serializer.Serialize(this.Filename, filteredMetaData);
        }
Exemple #3
0
        public SerializationSet Serialize(TagInfo tags, string filterExpression, bool isDevmode, long revision)
        {
            this.Dispatcher.VerifyAccess();

            if (filterExpression == null)
            {
                throw new ArgumentNullException(nameof(filterExpression));
            }

            if (revision == -1)
            {
                var cacheKey = tags.ToString() + filterExpression;

                if (isDevmode == false && this.caches.ContainsKey(cacheKey) == true)
                {
                    return(this.caches[cacheKey]);
                }

                var dataSet = new SerializationSet()
                {
                    Name     = this.DataBaseName,
                    Revision = this.Revision,
                };

                var tableItems = this.ReadTables(isDevmode);
                dataSet.Tables = tableItems.Cast <SerializationTable>().ToArray();

                var typeItems = this.ReadTypes(isDevmode);
                dataSet.Types = typeItems.Cast <SerializationType>().ToArray();

                dataSet = dataSet.Filter(tags);
                if (filterExpression != string.Empty)
                {
                    dataSet = dataSet.Filter(filterExpression);
                }

                if (isDevmode == false)
                {
                    this.caches[cacheKey] = dataSet;
                }

                return(dataSet);
            }
            else
            {
                var dataSet       = this.DataBase.GetDataSet(this.authentication, revision);
                var serializedSet = new SerializationSet(dataSet)
                {
                    Name     = this.DataBaseName,
                    Revision = this.Revision,
                };
                serializedSet = serializedSet.Filter(tags);
                if (filterExpression != string.Empty)
                {
                    serializedSet = serializedSet.Filter(filterExpression);
                }
                return(serializedSet);
            }
        }
Exemple #4
0
        public void Serialize(Stream stream, SerializationSet dataSet)
        {
            this.stringsIndex = 0;

            var fileHeader   = new BinaryFileHeader();
            var tables       = dataSet.Tables;
            var tableIndexes = new List <BinaryTableIndex>(tables.Length);

            var writer = new BinaryWriter(stream);

            writer.WriteValue(fileHeader);

            fileHeader.MagicValue  = BinaryFileHeader.DefaultMagicValue;
            fileHeader.IndexOffset = stream.Position;

            writer.Seek(Marshal.SizeOf(typeof(BinaryTableIndex)) * tables.Length, SeekOrigin.Current);
            fileHeader.TypesHashValue  = this.GetStringID(dataSet.TypesHashValue);
            fileHeader.TablesHashValue = this.GetStringID(dataSet.TablesHashValue);
            fileHeader.Tags            = this.GetStringID(dataSet.Tags.ToLower());
            fileHeader.TablesOffset    = stream.Position;
            fileHeader.TableCount      = tables.Length;
            fileHeader.Revision        = (int)dataSet.Revision;
            fileHeader.Name            = this.GetStringID(dataSet.Name);

            var t = new Dictionary <string, Stream>();

            tables.ToList().ForEach(item =>
            {
                var memory    = new MemoryStream();
                var formatter = new OrderedBinaryDataSerializer();
                formatter.SerializeTable(memory, item, dataSet.Types);
                memory.Position = 0;
                lock (t)
                {
                    t.Add(item.Name, memory);
                }
            });

            foreach (var item in tables)
            {
                var tableIndex = new BinaryTableIndex()
                {
                    TableName = this.GetStringID(item.Name),
                    Offset    = stream.Position
                };
                tableIndexes.Add(tableIndex);
                t[item.Name].CopyTo(stream);
            }

            fileHeader.StringResourcesOffset = stream.Position;
            writer.WriteResourceStrings(this.strings.ToArray <int, string>());

            writer.Seek(0, SeekOrigin.Begin);
            writer.WriteValue(fileHeader);

            writer.Seek((int)fileHeader.IndexOffset, SeekOrigin.Begin);
            writer.WriteArray(tableIndexes.ToArray());
        }
        private Stream SerializeAll(SerializationSet serializationSet, DataRequest request)
        {
            var serializationSetStream = new MemoryStream();

            var serializer = this.GetDataSerializer(request.OutputType);

            serializer.Serialize(serializationSetStream, serializationSet);

            return(serializationSetStream);
        }
Exemple #6
0
 private void Serialize(SerializationSet metaData)
 {
     if (DataSplitSetting.Split)
     {
         this.SerializePerTable(metaData);
     }
     else
     {
         this.SerializeAll(metaData);
     }
 }
Exemple #7
0
        private IDataSet GetSerializedDataSet(SerializationSet generationData)
        {
            var serializer = this.fixture.CremaHost.GetService <IEnumerable <IDataSerializer> >().First(o => o.Name == "bin");
            var ms         = new MemoryStream();

            serializer.Serialize(ms, generationData);
            ms.Position = 0;
            var dataSet = CremaReader.Read(ms);

            return(dataSet);
        }
Exemple #8
0
 public static SerializationSetResponse ConvertFrom(SerializationSet serializationSet)
 {
     return(new SerializationSetResponse
     {
         Name = serializationSet.Name,
         Tags = serializationSet.Tags,
         Revision = serializationSet.Revision,
         TypesHashValue = serializationSet.TypesHashValue,
         TablesHashValue = serializationSet.TablesHashValue,
         Types = serializationSet.Types.Select(SerializationTypeResponse.ConvertFrom).ToArray(),
         Tables = serializationSet.Tables.Select(SerializationTableResponse.ConvertFrom).ToArray()
     });
 }
Exemple #9
0
        public static SerializationSet Process(SerializationSet serializationSet)
        {
            if (ReplaceSettings.ReplaceRevision != long.MinValue)
            {
                serializationSet.Revision = ReplaceSettings.ReplaceRevision;
            }

            if (ReplaceSettings.ReplaceHashValue != null)
            {
                serializationSet.TablesHashValue = ReplaceSettings.ReplaceHashValue;
                serializationSet.TypesHashValue  = ReplaceSettings.ReplaceHashValue;
            }

            return(serializationSet);
        }
        public static SerializationSet Process(SerializationSet serializationSet, DataRequest request)
        {
            if (request.ReplaceRevision != null)
            {
                serializationSet.Revision = request.ReplaceRevision ?? -1;
            }

            if (request.ReplaceHashValue != null)
            {
                serializationSet.TablesHashValue = request.ReplaceHashValue;
                serializationSet.TypesHashValue  = request.ReplaceHashValue;
            }

            return(serializationSet);
        }
Exemple #11
0
        private void SerializePerTable(SerializationSet metaData)
        {
            var filteredMetaDataList = new List <SerializationSet>();

            foreach (var table in metaData.Tables)
            {
                var filteredMetaData = metaData.Filter(table.Name);
                filteredMetaData = ReplaceOptionProcessor.Process(filteredMetaData);

                if (filteredMetaData.Tables.Any())
                {
                    filteredMetaDataList.Add(filteredMetaData);
                }
            }

            foreach (var dataSet in filteredMetaDataList)
            {
                var filepath   = Path.Combine(this.Filename, $"{dataSet.Tables[0].Name}.{DataSplitSetting.Ext}");
                var serializer = this.GetDataSerializer(this.OutputType);
                serializer.Serialize(filepath, dataSet);
            }
        }