public new void Add(IStructure dta_struct) { string new_index_hash = dta_struct.GetIndex().DwarfHashCode; if (dta_struct is Record) { items_dict.TryAdd(new_index_hash, dta_struct); Modified = true; } }
public bool TryRemove(IStructure data) { if (items_dict.ContainsKey(data.GetIndex().DwarfHashCode)) { IStructure dummy = null; return items_dict.TryRemove(data.GetIndex().DwarfHashCode, out dummy); } return false; }
/// <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); } }
/// <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); } }
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; }