private SData LoadEntityFromDisk(Type t) { JEntity entityAttr = AttrHelper.GetClassAttribute <JEntity>(t); if (entityAttr.DsType != typeof(JsonDs)) { throw new InvalidOperationException("Not a json file stored entity"); } //long tstart = DateTime.Now.Ticks; SData sdata = new SData() { DataType = t }; Type lt = typeof(List <>); Type listType = lt.MakeGenericType(t); object list = null; string filename = GetDataFilePathForType(t); FileInfo fileInfo = new FileInfo(filename); if (fileInfo.Exists) { list = JsonSerializeHelper.LoadForType(filename, listType); } else { list = Activator.CreateInstance(listType); } foreach (var x in (IList)list) { INotifyPropertyChanged notifier = x as INotifyPropertyChanged; if (notifier != null) { notifier.PropertyChanged += Notifier_PropertyChanged; } } PropertyInfo pkProp = AttrHelper.GetProperty <JPrimaryKey>(t); if (pkProp != null) { foreach (var o in (IList)list) { object pk = pkProp.GetValue(o); try { sdata.PkCache.Add(pk, o); } catch (ArgumentException ex) { Log.ProcessDebug("Dublicate pk entity: " + t + " pk value: " + pk + " Error text: " + ex); } } } sdata.DataList = list; sdatas.Add(sdata); return(sdata); }
protected ToolStripMenuItem CreateMainMenuItemForEntityType(ToolStripMenuItem parentItem, Type t) { JEntity entityAttr = AttrHelper.GetClassAttribute <JEntity>(t); ToolStripMenuItem menuItem = new ToolStripMenuItem(); menuItem.Name = "menuItem_" + t.FullName; menuItem.Text = ModelHelper.GetEntityJDescriptionOrName(t); menuItem.Click += (s, em) => { CreateList(t); }; parentItem.DropDownItems.AddRange(new ToolStripItem[] { menuItem }); return(menuItem); }
/////////////////////////// /// /// <summary> /// Save all data to file system /// </summary> public void SaveAllEntitiesData(bool allways) { foreach (var s in sdatas) { Type entityType = s.DataType; JEntity entityAttr = AttrHelper.GetClassAttribute <JEntity>(entityType); if (s.Modified || allways) { SaveEntityData(s); } } foreach (var s in joinDatas) { if (s.Modified || allways) { SaveJoinEntityDataLocal(s); } } }
public bool IsCustomSetting() { if (this.ValueType != null) { if (DictId != null) { return(true); } else if (ValueType != typeof(string)) { JEntity entityAttr = AttrHelper.GetClassAttribute <JEntity>(ValueType); if (entityAttr != null) { return(true); } } } return(false); }
protected ToolStripMenuItem CreateMainMenuItemForWindowType(ToolStripMenuItem parentItem, string name, Type t) { JEntity entityAttr = AttrHelper.GetClassAttribute <JEntity>(t); ToolStripMenuItem menuItem = new ToolStripMenuItem(); menuItem.Name = "menuItem_" + t.FullName; menuItem.Text = name != null ? name : ModelHelper.GetEntityJDescriptionOrName(t); menuItem.Click += (s, em) => { try { AppManager.Instance.CreateContentAndProcessView(this, t, null); } catch (Exception ex) { Log.ShowError(ex); } }; parentItem.DropDownItems.AddRange(new ToolStripItem[] { menuItem }); return(menuItem); }
static protected bool IsShortTable(Type t) { JEntity entityAttr = AttrHelper.GetClassAttribute <JEntity>(t); return(entityAttr.ShortTable); }
/// <summary> /// Saves all user settings /// </summary> public void SaveConfig() { foreach (var s in settings.Values) { if (s.Value != null && s.ValueType == null) { s.ValueType = s.Value.GetType(); } if (s.Value != null) { if (s.ValueType != typeof(string)) { JEntity entityAttr = AttrHelper.GetClassAttribute <JEntity>(s.ValueType); if (entityAttr != null) { if (s.AllowMultiValues) { IList list = (IList)s.Value; IList values = (IList)Activator.CreateInstance(typeof(List <>).MakeGenericType(s.ValueType)); foreach (var realObject in list) { values.Add(AttrHelper.ReplaceObjectByPkOnlyObject(realObject)); } s.Value = values; } else { s.Value = AttrHelper.ReplaceObjectByPkOnlyObject(s.Value); } } else { TypeConverter converter = TypeDescriptor.GetConverter(s.ValueType); if (converter != null) { s.Value = converter.ConvertToString(s.Value); } } } } } string filename = Path.Combine(ProfileConfigDir, settingsFileName); FileInfo fileInfo = new FileInfo(filename); DirectoryInfo dir = fileInfo.Directory; if (dir.Exists == false) { Directory.CreateDirectory(dir.FullName); } List <JSetting> settingsList = new List <JSetting>(); foreach (var s in settings.Values) { if (!s.IsAttachedToComputer) { settingsList.Add(s); } } JsonSerializeHelper.SaveToFile(settingsList, filename); //stage 2 filename = Path.Combine(ComputerUserDir, settingsFileName); fileInfo = new FileInfo(filename); dir = fileInfo.Directory; if (dir.Exists == false) { Directory.CreateDirectory(dir.FullName); } settingsList = new List <JSetting>(); foreach (var s in settings.Values) { if (s.IsAttachedToComputer) { settingsList.Add(s); } } File.WriteAllText(filename, JsonSerializeHelper.SaveToString(settingsList), Encoding.UTF8);//short }
/// <summary> /// Loads all user settings. /// </summary> public void LoadConfig() { string filename = Path.Combine(ProfileConfigDir, settingsFileName); FileInfo fileInfo = new FileInfo(filename); DirectoryInfo dir = fileInfo.Directory; if (dir.Exists == false) { Directory.CreateDirectory(dir.FullName); } if (fileInfo.Exists) { List <JSetting> settingsList = null; settingsList = JsonSerializeHelper.LoadFromFile <List <JSetting> >(filename); foreach (var s in settingsList) { s.IsAttachedToComputer = false; settings.Add(s.Name, s); } } //Properties.Settings.Default path //https://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx //stage 2 if (ComputerUserDir != null) { filename = Path.Combine(ComputerUserDir, settingsFileName); fileInfo = new FileInfo(filename); dir = fileInfo.Directory; if (dir.Exists == false) { Directory.CreateDirectory(dir.FullName); } if (fileInfo.Exists) { List <JSetting> settingsList = null; settingsList = JsonSerializeHelper.LoadFromFile <List <JSetting> >(filename); foreach (var s in settingsList) { s.IsAttachedToComputer = true; settings[s.Name] = s; } } } foreach (JSetting setting in settings.Values) { if (setting.Value != null) { Type type = setting.ValueType; if (type != null) { if (type != typeof(string)) { JEntity entityAttr = AttrHelper.GetClassAttribute <JEntity>(type); if (entityAttr != null) { if (setting.AllowMultiValues) { IList list = (IList)setting.Value; IList values = (IList)Activator.CreateInstance(typeof(List <>).MakeGenericType(type)); foreach (var pkOnlyObject in list) { string str = JsonSerializeHelper.SaveToString(pkOnlyObject); object realObject = JsonSerializeHelper.LoadFromString(str, type); values.Add(realObject); } setting.Value = values; } else { setting.Value = JsonSerializeHelper.LoadFromString(JsonSerializeHelper.SaveToString(setting.Value), type); } } else { TypeConverter converter = TypeDescriptor.GetConverter(type); if (converter != null)//for system types (Font, etc.) { setting.Value = converter.ConvertFromString((string)setting.Value); } } } } } } CreateProperties(); }
public void ComplateSettingsRelations() { foreach (var s in settings.Values) { if (s.Value != null) { Type type = s.ValueType; if (type != null) { JEntity entityAttr = AttrHelper.GetClassAttribute <JEntity>(type); if (entityAttr != null)//todo list { PropertyInfo pkProp = AttrHelper.GetProperty <JPrimaryKey>(type); if (pkProp == null) { throw new Exception("Primary key not found in referenced entity"); } if (s.AllowMultiValues) { IList list = (IList)s.Value; IList values = (IList)Activator.CreateInstance(typeof(List <>).MakeGenericType(type)); foreach (var val in list) { object pvReal = null; object pkValue = pkProp.GetValue(val); if (pkValue != null) { try { pvReal = Dm.Instance.Find(type, pkValue); } catch (Exception ex) { PropertyInfo nameProp = AttrHelper.GetProperty <JNameProperty>(type); if (nameProp != null) { nameProp.SetValue(val, Resources.Dm_ErrorFinding + ex); } pvReal = val; } if (pvReal != null) { } else { //may be removed PropertyInfo nameProp = AttrHelper.GetProperty <JNameProperty>(type); if (nameProp != null) { nameProp.SetValue(val, Resources.Dm_NotFound); } pvReal = val; } } values.Add(pvReal); } s.Value = values; } else { object pvReal = null; object pkValue = pkProp.GetValue(s.Value); if (pkValue != null) { try { pvReal = Dm.Instance.Find(type, pkValue); } catch (Exception ex) { PropertyInfo nameProp = AttrHelper.GetProperty <JNameProperty>(type); if (nameProp != null) { nameProp.SetValue(s.Value, Resources.Dm_ErrorFinding + ex); } } if (pvReal != null) { s.Value = pvReal; } else { //may be removed PropertyInfo nameProp = AttrHelper.GetProperty <JNameProperty>(type); if (nameProp != null) { nameProp.SetValue(s.Value, Resources.Dm_NotFound); } } } } } } } } }