private static void LoadFromDisk(IEnumerable <Entity> list, nHydrateModel model, DiskModelYaml diskModel) { #region Load other parameter/field information foreach (var entity in diskModel.Entities) { var item = list.FirstOrDefault(x => x.Id == entity.Id); if (item == null) { item = new Entity(model.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, entity.Id) }); model.Entities.Add(item); } System.Windows.Forms.Application.DoEvents(); #region Properties item.Name = entity.Name; item.AllowCreateAudit = entity.AllowCreateAudit; item.AllowModifyAudit = entity.AllowModifyAudit; item.AllowTimestamp = entity.AllowTimestamp; item.CodeFacade = entity.CodeFacade; item.Immutable = entity.Immutable; item.IsAssociative = entity.IsAssociative; item.GeneratesDoubleDerived = entity.GeneratesDoubleDerived; item.IsTenant = entity.IsTenant; item.TypedEntity = entity.TypedTable.Convert <TypedEntityConstants>(); item.Schema = entity.Schema; item.Summary = entity.Summary; #endregion #region Fields var nameList = new List <string>(); var loopIndex = 0; foreach (var fieldNode in entity.Fields) { var field = item.Fields.FirstOrDefault(x => x.Id == fieldNode.Id); if (field == null) { field = new Field(item.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, fieldNode.Id) }); item.Fields.Add(field); } field.Name = fieldNode.Name; field.CodeFacade = fieldNode.CodeFacade; nameList.Add(field.Name.ToLower()); field.Nullable = fieldNode.Nullable; field.DataType = fieldNode.Datatype.Convert <DataTypeConstants>(); field.Identity = fieldNode.Identity.Convert <IdentityTypeConstants>(); field.DataFormatString = fieldNode.DataFormatString; field.Default = fieldNode.Default; field.DefaultIsFunc = fieldNode.DefaultIsFunc; field.Formula = fieldNode.Formula; field.IsIndexed = fieldNode.IsIndexed; field.IsPrimaryKey = fieldNode.IsPrimaryKey; field.IsCalculated = fieldNode.IsCalculated; field.IsUnique = fieldNode.IsUnique; field.Length = fieldNode.Length; field.Scale = fieldNode.Scale; field.SortOrder = loopIndex++; field.IsReadOnly = fieldNode.IsReadonly; field.Obsolete = fieldNode.Obsolete; field.Summary = fieldNode.Summary; } if (item.Fields.Remove(x => !nameList.Contains(x.Name.ToLower())) > 0) { item.nHydrateModel.IsDirty = true; } #endregion LoadEntityIndexes(item, diskModel); //Order fields (skip for model that did not have sort order when saved) var fc = new FieldOrderComparer(); if (item.Fields.Count(x => x.SortOrder > 0) > 0) { item.Fields.Sort(fc.Compare); } } //Must load relations AFTER ALL entities are loaded foreach (var item in model.Entities) { LoadEntityRelations(item, diskModel); LoadEntityStaticData(item, diskModel); } #endregion }
private static void LoadFromDisk(IEnumerable<Entity> list, nHydrateModel model, string rootFolder, Microsoft.VisualStudio.Modeling.Store store) { var folder = Path.Combine(rootFolder, FOLDER_ET); if (!Directory.Exists(folder)) return; #region Load other parameter/field information var fList = Directory.GetFiles(folder, "*.configuration.xml"); foreach (var f in fList) { var document = new XmlDocument(); try { document.Load(f); } catch (Exception ex) { //Do Nothing MessageBox.Show("The file '" + f + "' is not valid and could not be loaded!", "Load Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var fi = new FileInfo(f); var name = fi.Name.Substring(0, fi.Name.Length - ".configuration.xml".Length).ToLower(); var itemID = XmlHelper.GetAttributeValue(document.DocumentElement, "id", Guid.Empty); var item = list.FirstOrDefault(x => x.Id == itemID); if (item == null) { item = new Entity(model.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, XmlHelper.GetAttributeValue(document.DocumentElement, "id", Guid.NewGuid())) }); model.Entities.Add(item); } System.Windows.Forms.Application.DoEvents(); #region Properties item.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged); item.Name = XmlHelper.GetAttributeValue(document.DocumentElement, "name", item.Name); item.AllowAuditTracking = XmlHelper.GetAttributeValue(document.DocumentElement, "allowaudittracking", item.AllowAuditTracking); item.AllowCreateAudit = XmlHelper.GetAttributeValue(document.DocumentElement, "allowcreateaudit", item.AllowCreateAudit); item.AllowModifyAudit = XmlHelper.GetAttributeValue(document.DocumentElement, "allowmodifyaudit", item.AllowModifyAudit); item.AllowTimestamp = XmlHelper.GetAttributeValue(document.DocumentElement, "allowtimestamp", item.AllowTimestamp); item.CodeFacade = XmlHelper.GetAttributeValue(document.DocumentElement, "codefacade", item.CodeFacade); item.Immutable = XmlHelper.GetAttributeValue(document.DocumentElement, "immutable", item.Immutable); item.EnforcePrimaryKey = XmlHelper.GetAttributeValue(document.DocumentElement, "enforceprimarykey", item.EnforcePrimaryKey); item.IsAssociative = XmlHelper.GetAttributeValue(document.DocumentElement, "isassociative", item.IsAssociative); item.GeneratesDoubleDerived = XmlHelper.GetAttributeValue(document.DocumentElement, "generatesdoublederived", item.GeneratesDoubleDerived); item.IsGenerated = XmlHelper.GetAttributeValue(document.DocumentElement, "isgenerated", item.IsGenerated); item.IsTenant = XmlHelper.GetAttributeValue(document.DocumentElement, "isTenant", item.IsTenant); var tev = XmlHelper.GetAttributeValue(document.DocumentElement, "typedentity", item.TypedEntity.ToString()); TypedEntityConstants te; if (Enum.TryParse<TypedEntityConstants>(tev, true, out te)) item.TypedEntity = te; item.Schema = XmlHelper.GetAttributeValue(document.DocumentElement, "schema", item.Schema); item.Summary = XmlHelper.GetNodeValue(document.DocumentElement, "summary", item.Summary); item.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged); #endregion #region Fields var fieldsNodes = document.DocumentElement.SelectSingleNode("//fieldset"); if (fieldsNodes != null) { var nameList = new List<string>(); foreach (XmlNode n in fieldsNodes.ChildNodes) { var subItemID = XmlHelper.GetAttributeValue(n, "id", Guid.Empty); var field = item.Fields.FirstOrDefault(x => x.Id == subItemID); if (field == null) { field = new Field(item.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, XmlHelper.GetAttributeValue(n, "id", Guid.NewGuid())) }); item.Fields.Add(field); } field.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged); field.Name = XmlHelper.GetAttributeValue(n, "name", string.Empty); field.CodeFacade = XmlHelper.GetAttributeValue(n, "codefacade", field.CodeFacade); nameList.Add(field.Name.ToLower()); field.Nullable = XmlHelper.GetAttributeValue(n, "nullable", field.Nullable); var dtv = XmlHelper.GetAttributeValue(n, "datatype", field.DataType.ToString()); DataTypeConstants dt; if (Enum.TryParse<DataTypeConstants>(dtv, true, out dt)) field.DataType = dt; var itv = XmlHelper.GetAttributeValue(n, "identity", field.Identity.ToString()); IdentityTypeConstants it; if (Enum.TryParse<IdentityTypeConstants>(itv, true, out it)) field.Identity = it; field.DataFormatString = XmlHelper.GetNodeValue(n, "dataformatstring", field.DataFormatString); field.Default = XmlHelper.GetAttributeValue(n, "default", field.Default); field.DefaultIsFunc = XmlHelper.GetAttributeValue(n, "defaultisfunc", field.DefaultIsFunc); field.Formula = XmlHelper.GetAttributeValue(n, "formula", field.Formula); field.IsGenerated = XmlHelper.GetAttributeValue(n, "isgenerated", field.IsGenerated); field.IsIndexed = XmlHelper.GetAttributeValue(n, "isindexed", field.IsIndexed); field.IsPrimaryKey = XmlHelper.GetAttributeValue(n, "isprimarykey", field.IsPrimaryKey); field.IsCalculated = XmlHelper.GetAttributeValue(n, "Iscalculated", field.IsCalculated); field.IsUnique = XmlHelper.GetAttributeValue(n, "isunique", field.IsUnique); field.Length = XmlHelper.GetAttributeValue(n, "length", field.Length); field.Scale = XmlHelper.GetAttributeValue(n, "scale", field.Scale); field.SortOrder = XmlHelper.GetAttributeValue(n, "sortorder", field.SortOrder); field.IsReadOnly = XmlHelper.GetAttributeValue(n, "isreadonly", field.IsReadOnly); field.Category = XmlHelper.GetAttributeValue(n, "category", field.Category); field.Collate = XmlHelper.GetAttributeValue(n, "collate", field.Collate); field.FriendlyName = XmlHelper.GetAttributeValue(n, "friendlyname", field.FriendlyName); field.IsBrowsable = XmlHelper.GetAttributeValue(n, "isbrowsable", field.IsBrowsable); field.Max = XmlHelper.GetAttributeValue(n, "max", field.Max); field.Min = XmlHelper.GetAttributeValue(n, "min", field.Min); field.ValidationExpression = XmlHelper.GetAttributeValue(n, "validationexpression", field.ValidationExpression); field.Obsolete = XmlHelper.GetAttributeValue(n, "obsolete", field.Obsolete); field.Summary = XmlHelper.GetNodeValue(n, "summary", field.Summary); field.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged); } if (item.Fields.Remove(x => !nameList.Contains(x.Name.ToLower())) > 0) item.nHydrateModel.IsDirty = true; } #endregion #region Security var secNode = document.DocumentElement.SelectSingleNode("//security"); if (secNode != null) { var secItemID = XmlHelper.GetAttributeValue(secNode, "id", Guid.NewGuid()); var secFunction = new SecurityFunction(item.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, XmlHelper.GetAttributeValue(secNode, "id", secItemID)) }); item.SecurityFunction = secFunction; item.SecurityFunction.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged); item.SecurityFunction.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged); var ff = Path.Combine(folder, item.Name + ".security.sql"); if (File.Exists(ff)) item.SecurityFunction.SQL = File.ReadAllText(ff); //Parameters var parametersNodes = secNode.SelectSingleNode("//parameterset"); if (parametersNodes != null) { var nameList = new List<string>(); foreach (XmlNode n in parametersNodes.ChildNodes) { var subItemID = XmlHelper.GetAttributeValue(n, "id", Guid.Empty); var parameter = item.SecurityFunction.SecurityFunctionParameters.FirstOrDefault(x => x.Id == subItemID); if (parameter == null) { parameter = new SecurityFunctionParameter(item.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, XmlHelper.GetAttributeValue(n, "id", Guid.NewGuid())) }); item.SecurityFunction.SecurityFunctionParameters.Add(parameter); } parameter.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged); parameter.CodeFacade = XmlHelper.GetAttributeValue(n, "codefacade", parameter.CodeFacade); parameter.Name = XmlHelper.GetAttributeValue(n, "name", parameter.Name); nameList.Add(parameter.Name.ToLower()); parameter.Nullable = XmlHelper.GetAttributeValue(n, "nullable", parameter.Nullable); var dtv = XmlHelper.GetAttributeValue(n, "datatype", parameter.DataType.ToString()); DataTypeConstants dt; if (Enum.TryParse<DataTypeConstants>(dtv, true, out dt)) parameter.DataType = dt; parameter.Default = XmlHelper.GetAttributeValue(n, "default", parameter.Default); parameter.IsGenerated = XmlHelper.GetAttributeValue(n, "isgenerated", parameter.IsGenerated); parameter.Length = XmlHelper.GetAttributeValue(n, "length", parameter.Length); parameter.Scale = XmlHelper.GetAttributeValue(n, "scale", parameter.Scale); parameter.Summary = XmlHelper.GetNodeValue(n, "summary", parameter.Summary); parameter.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(FieldParameter_PropertyChanged); } if (item.SecurityFunction.SecurityFunctionParameters.Remove(x => !nameList.Contains(x.Name.ToLower())) > 0) item.nHydrateModel.IsDirty = true; } } #endregion LoadEntityIndexes(folder, item); //Order fields (skip for model that did not have sort order when saved) var fc = new FieldOrderComparer(); if (item.Fields.Count(x => x.SortOrder > 0) > 0) item.Fields.Sort(fc.Compare); } //Must load relations AFTER ALL entities are loaded foreach (var item in model.Entities) { LoadEntityRelations(folder, item); LoadModules(folder, item); LoadEntityStaticData(folder, item); LoadEntityMetaData(folder, item); LoadEntityComposites(folder, item); } #endregion }
private static void LoadFromDisk(IEnumerable <Entity> list, nHydrateModel model, string rootFolder, Microsoft.VisualStudio.Modeling.Store store) { var folder = Path.Combine(rootFolder, FOLDER_ET); if (!Directory.Exists(folder)) { return; } #region Load other parameter/field information var fList = Directory.GetFiles(folder, "*.configuration.xml"); foreach (var f in fList) { var document = new XmlDocument(); try { document.Load(f); } catch (Exception ex) { //Do Nothing MessageBox.Show("The file '" + f + "' is not valid and could not be loaded!", "Load Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var fi = new FileInfo(f); var name = fi.Name.Substring(0, fi.Name.Length - ".configuration.xml".Length).ToLower(); var itemID = XmlHelper.GetAttributeValue(document.DocumentElement, "id", Guid.Empty); var item = list.FirstOrDefault(x => x.Id == itemID); if (item == null) { item = new Entity(model.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, XmlHelper.GetAttributeValue(document.DocumentElement, "id", Guid.NewGuid())) }); model.Entities.Add(item); } System.Windows.Forms.Application.DoEvents(); #region Properties item.Name = XmlHelper.GetAttributeValue(document.DocumentElement, "name", item.Name); item.AllowCreateAudit = XmlHelper.GetAttributeValue(document.DocumentElement, "allowcreateaudit", item.AllowCreateAudit); item.AllowModifyAudit = XmlHelper.GetAttributeValue(document.DocumentElement, "allowmodifyaudit", item.AllowModifyAudit); item.AllowTimestamp = XmlHelper.GetAttributeValue(document.DocumentElement, "allowtimestamp", item.AllowTimestamp); item.CodeFacade = XmlHelper.GetAttributeValue(document.DocumentElement, "codefacade", item.CodeFacade); item.Immutable = XmlHelper.GetAttributeValue(document.DocumentElement, "immutable", item.Immutable); item.IsAssociative = XmlHelper.GetAttributeValue(document.DocumentElement, "isassociative", item.IsAssociative); item.GeneratesDoubleDerived = XmlHelper.GetAttributeValue(document.DocumentElement, "generatesdoublederived", item.GeneratesDoubleDerived); item.IsTenant = XmlHelper.GetAttributeValue(document.DocumentElement, "isTenant", item.IsTenant); var tev = XmlHelper.GetAttributeValue(document.DocumentElement, "typedentity", item.TypedEntity.ToString()); if (Enum.TryParse <TypedEntityConstants>(tev, true, out var te)) { item.TypedEntity = te; } item.Schema = XmlHelper.GetAttributeValue(document.DocumentElement, "schema", item.Schema); item.Summary = XmlHelper.GetNodeValue(document.DocumentElement, "summary", item.Summary); #endregion #region Fields var fieldsNodes = document.DocumentElement.SelectSingleNode("//fieldset"); if (fieldsNodes != null) { var nameList = new List <string>(); foreach (XmlNode n in fieldsNodes.ChildNodes) { var subItemID = XmlHelper.GetAttributeValue(n, "id", Guid.Empty); var field = item.Fields.FirstOrDefault(x => x.Id == subItemID); if (field == null) { field = new Field(item.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, XmlHelper.GetAttributeValue(n, "id", Guid.NewGuid())) }); item.Fields.Add(field); } field.Name = XmlHelper.GetAttributeValue(n, "name", string.Empty); field.CodeFacade = XmlHelper.GetAttributeValue(n, "codefacade", field.CodeFacade); nameList.Add(field.Name.ToLower()); field.Nullable = XmlHelper.GetAttributeValue(n, "nullable", field.Nullable); var dtv = XmlHelper.GetAttributeValue(n, "datatype", field.DataType.ToString()); if (Enum.TryParse <DataTypeConstants>(dtv, true, out var dt)) { field.DataType = dt; } var itv = XmlHelper.GetAttributeValue(n, "identity", field.Identity.ToString()); if (Enum.TryParse <IdentityTypeConstants>(itv, true, out var it)) { field.Identity = it; } field.DataFormatString = XmlHelper.GetNodeValue(n, "dataformatstring", field.DataFormatString); field.Default = XmlHelper.GetAttributeValue(n, "default", field.Default); field.DefaultIsFunc = XmlHelper.GetAttributeValue(n, "defaultisfunc", field.DefaultIsFunc); field.Formula = XmlHelper.GetAttributeValue(n, "formula", field.Formula); field.IsIndexed = XmlHelper.GetAttributeValue(n, "isindexed", field.IsIndexed); field.IsPrimaryKey = XmlHelper.GetAttributeValue(n, "isprimarykey", field.IsPrimaryKey); field.IsCalculated = XmlHelper.GetAttributeValue(n, "Iscalculated", field.IsCalculated); field.IsUnique = XmlHelper.GetAttributeValue(n, "isunique", field.IsUnique); field.Length = XmlHelper.GetAttributeValue(n, "length", field.Length); field.Scale = XmlHelper.GetAttributeValue(n, "scale", field.Scale); field.SortOrder = XmlHelper.GetAttributeValue(n, "sortorder", field.SortOrder); field.IsReadOnly = XmlHelper.GetAttributeValue(n, "isreadonly", field.IsReadOnly); field.Obsolete = XmlHelper.GetAttributeValue(n, "obsolete", field.Obsolete); field.Summary = XmlHelper.GetNodeValue(n, "summary", field.Summary); } if (item.Fields.Remove(x => !nameList.Contains(x.Name.ToLower())) > 0) { item.nHydrateModel.IsDirty = true; } } #endregion LoadEntityIndexes(folder, item); //Order fields (skip for model that did not have sort order when saved) var fc = new FieldOrderComparer(); if (item.Fields.Count(x => x.SortOrder > 0) > 0) { item.Fields.Sort(fc.Compare); } } //Must load relations AFTER ALL entities are loaded foreach (var item in model.Entities) { LoadEntityRelations(folder, item); LoadEntityStaticData(folder, item); } #endregion }
private static void LoadFromDisk(IEnumerable <Entity> list, nHydrateModel model, DiskModel diskModel) { #region Load other parameter/field information foreach (var entity in diskModel.Entities) { var itemID = new Guid(entity.id); var item = list.FirstOrDefault(x => x.Id == itemID); if (item == null) { item = new Entity(model.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, itemID) }); model.Entities.Add(item); } System.Windows.Forms.Application.DoEvents(); #region Properties item.Name = entity.name; item.AllowCreateAudit = entity.allowcreateaudit != 0; item.AllowModifyAudit = entity.allowmodifyaudit != 0; item.AllowTimestamp = entity.allowtimestamp != 0; item.CodeFacade = entity.codefacade; item.Immutable = entity.immutable != 0; item.IsAssociative = entity.isassociative != 0; item.GeneratesDoubleDerived = entity.generatesdoublederived != 0; item.IsTenant = entity.isTenant != 0; if (Enum.TryParse <TypedEntityConstants>(entity.typedentity, true, out var te)) { item.TypedEntity = te; } item.Schema = entity.schema; item.Summary = entity.summary; #endregion #region Fields var nameList = new List <string>(); foreach (var fieldNode in entity.fieldset) { var subItemID = new Guid(fieldNode.id); var field = item.Fields.FirstOrDefault(x => x.Id == subItemID); if (field == null) { field = new Field(item.Partition, new PropertyAssignment[] { new PropertyAssignment(ElementFactory.IdPropertyAssignment, subItemID) }); item.Fields.Add(field); } field.Name = fieldNode.name; field.CodeFacade = fieldNode.codefacade; nameList.Add(field.Name.ToLower()); field.Nullable = fieldNode.nullable != 0; if (Enum.TryParse <DataTypeConstants>(fieldNode.datatype, true, out var dt)) { field.DataType = dt; } if (Enum.TryParse <IdentityTypeConstants>(fieldNode.identity, true, out var it)) { field.Identity = it; } field.DataFormatString = fieldNode.dataformatstring; field.Default = fieldNode.@default; field.DefaultIsFunc = fieldNode.defaultisfunc != 0; field.Formula = fieldNode.formula; field.IsIndexed = fieldNode.isindexed != 0; field.IsPrimaryKey = fieldNode.isprimarykey != 0; field.IsCalculated = fieldNode.Iscalculated != 0; field.IsUnique = fieldNode.isunique != 0; field.Length = fieldNode.length; field.Scale = fieldNode.scale; field.SortOrder = fieldNode.sortorder; field.IsReadOnly = fieldNode.isreadonly != 0; field.Obsolete = fieldNode.obsolete != 0; field.Summary = fieldNode.summary; } if (item.Fields.Remove(x => !nameList.Contains(x.Name.ToLower())) > 0) { item.nHydrateModel.IsDirty = true; } #endregion LoadEntityIndexes(item, diskModel); //Order fields (skip for model that did not have sort order when saved) var fc = new FieldOrderComparer(); if (item.Fields.Count(x => x.SortOrder > 0) > 0) { item.Fields.Sort(fc.Compare); } } //Must load relations AFTER ALL entities are loaded foreach (var item in model.Entities) { LoadEntityRelations(item, diskModel); LoadEntityStaticData(item, diskModel); } #endregion }