Exemplo n.º 1
0
        /// <summary>
        /// Adding a new item to a chunk
        /// </summary>
        /// <param name="filepath">Path to a chunk file</param>
        /// <param name="db">Database</param>
        public static void AddItem( string filepath, DataBase db )
        {
            if ( db != null ) {
                var elem= new InnerChunkElement();
                var sw = new StreamWriter( File.Open( filepath, FileMode.Append ) );
                using (var json_writer = new JsonTextWriter(sw)) {
                    elem.ElementType = InnerChunkElement.ElemType.DB;
                    elem.ElemDB = null;
                    elem.ElemParentName = null;
                    elem.ElemParentHash = null;
                    elem.ElementName = (db).Name;
                    elem.Contents = JsonConvert.SerializeObject(db, Formatting.Indented);

                    sw.Write(JsonConvert.SerializeObject(elem, Formatting.Indented));
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Adding a new item to a chunk file in multithread mode
 /// </summary>
 /// <param name="filepath">path to a file</param>
 /// <param name="ds">datastructure</param>
 public static void AddItem( string filepath, IStructure ds )
 {
     if ( ds != null ) {
         var sw = new StreamWriter( File.Open( filepath, FileMode.Append ) );
         using (var json_writer = new JsonTextWriter(sw)) {
             var elem= new InnerChunkElement();
             if ( ds is Record ) {
                 elem.ElementType = InnerChunkElement.ElemType.RECORD;
                 elem.ElemParentName = ((Record)ds).OwnerDC.Name;
                 elem.ElemParentHash = ((Record)ds).OwnerDC.GetIndex().DwarfHashCode;
                 elem.Contents = JsonConvert.SerializeObject(ds, Formatting.Indented );
             } else if ( ds is DataContainer ) {
                 elem.ElementType = InnerChunkElement.ElemType.DATACONTAINER;
                 elem.ElemDB = ((DataContainer)ds).GetOwnerDB().Name;
                 elem.ElemParentName = null;
                 elem.ElemParentHash = null;
                 elem.ElementName = ((DataContainer)ds).Name;
                 var ds_sec = (DataContainer)ds;
                 elem.Contents = JsonConvert.SerializeObject(ds_sec, Formatting.Indented);
             }
             elem.ElementHash = ds.GetIndex().DwarfHashCode;
             sw.Write(JsonConvert.SerializeObject(elem, Formatting.Indented));
         }
     } else {
         Errors.Messages.DisplayError( "DataStructure object is null!", "", "", DateTime.Now);
     }
 }
Exemplo n.º 3
0
        private static InnerChunkElement FindItem( JsonTextReader jr, string hash )
        {
            var item = new InnerChunkElement();
            while ( jr.Read()) {
                item = json_serializer.Deserialize<InnerChunkElement>( jr );
                if ( item.ElementHash == hash ) {
                    return item;
                }
            }

            return null;
        }
Exemplo n.º 4
0
        /// <summary>
        /// Saving an existant item to a chunk file in multithread mode
        /// </summary>
        /// <param name="filepath">path to a file</param>
        /// <param name="ds">datastructure</param>
        public static void SaveItemContents( string filepath, IStructure ds )
        {
            var elem= new InnerChunkElement();
            if ( ds != null ) {
                var sw_read = new StreamReader( File.Open( filepath, FileMode.Open ) );
                InnerChunkElement icm = null;

                using ( var json_reader = new JsonTextReader(sw_read) ) {
                    icm = FindItem( json_reader, ds.GetIndex().DwarfHashCode );
                }

                if ( icm == null )
                {
                    Errors.Messages.DisplayError("Can't find such item!", "Saving an item", "", DateTime.Now);
                    return;
                }

                var sw_write = new StreamWriter( File.Open( filepath, FileMode.Append ) );
                using (var json_writer = new JsonTextWriter(sw_write)) {
                    if ( ds is Record ) {
                        icm.Contents = JsonConvert.SerializeObject(ds, Formatting.Indented );
                    } else if ( ds is DataContainer ) {
                        icm.Contents = JsonConvert.SerializeObject(ds as DataContainer, Formatting.Indented);
                    }
                    elem.ElementHash = ds.GetIndex().DwarfHashCode;
                    sw_write.Write(JsonConvert.SerializeObject(elem, Formatting.Indented));
                }
            } else {
                Errors.Messages.DisplayError( "DataStructure object is null!", "", "", DateTime.Now);
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Getting all records from a chunk
        /// </summary>
        /// <param name="filepath">path to file</param>
        /// <param name="dc_hash">DataContainer hash</param>
        public static List<Record> GetRecordsInFile( string filepath, string dc_hash )
        {
            var ret = new List<Record>();

            var tmp_path = CreateTemporaryFile( filepath );

            FileStream fstream = File.Open( tmp_path, FileMode.Open );

            using (var json_reader = new JsonTextReader(new StreamReader(fstream))) {
                json_reader.SupportMultipleContent = true;
                var item = new InnerChunkElement();
                while ( json_reader.Read() ) {
                    item = json_serializer.Deserialize<InnerChunkElement>( json_reader );
                    if ( item.ElementType == InnerChunkElement.ElemType.RECORD ) {
                        if ( item.ElemParentHash == dc_hash ) {
                            var ret_rec = JsonConvert.DeserializeObject<Record>( item.Contents );
                            ret.Add(ret_rec);
                        }
                    }
                }
            }

            DeleteTemporaryFile( tmp_path );
            return ret;
        }
Exemplo n.º 6
0
        /// <summary>
        /// Getting a DataContainer from the chunk
        /// </summary>
        /// <param name="filepath">path to file</param>
        /// <param name="dc_name">DC name</param>
        public static DataContainer GetDCInFile( string filepath, string dc_name )
        {
            var tmp_path = CreateTemporaryFile( filepath );

            using (var json_reader = new JsonTextReader(new StreamReader(File.Open( tmp_path, FileMode.Open )))) {
                json_reader.SupportMultipleContent = true;
                var item = new InnerChunkElement();
                while ( json_reader.Read() ) {
                    item = json_serializer.Deserialize<InnerChunkElement>( json_reader );
                    if ( item.ElementType == InnerChunkElement.ElemType.DATACONTAINER ) {
                        if ( item.ElementName == dc_name ) {
                            var ret_dc = JsonConvert.DeserializeObject<DataContainer>( item.Contents );
                            ret_dc.Name = dc_name;
                            ret_dc.BuildIndex();
                            return ret_dc;
                        }
                    }
                }
            }

            DeleteTemporaryFile( tmp_path );
            return null;
        }
Exemplo n.º 7
0
        public static IStructure FindItem( JsonReader json_reader, IStructure ds )
        {
            var item = new InnerChunkElement();
            while ( json_reader.Read() ) {
                item = json_serializer.Deserialize<InnerChunkElement>( json_reader );
                if ( item.ElementHash == ds.GetIndex().DwarfHashCode ) {
                    return ds;
                }
            }

            return null;
        }