private PropertiesOptimization CreateOptimization(string key, Dictionary <string, SortedDictionary <Guid, DomainClass> > dict, Dictionary <string, List <DomainProperty> > dictProperties, bool isInheritance) { PropertiesOptimization pO = new PropertiesOptimization(this.MetaModel, this.ModelContext); pO.InvolvedProperties.AddRange(dictProperties[key]); foreach (Guid id in dict[key].Keys) { pO.InvolvedClasses.Add(dict[key][id]); if (isInheritance) { // add inheritance relationship ReadOnlyCollection <DomainClassReferencesBaseClass> col = DomainRoleInfo.GetElementLinks <DomainClassReferencesBaseClass>(dict[key][id], DomainClassReferencesBaseClass.DerivedClassDomainRoleId); pO.InvolvedInheritancesRelationships.Add(col[0]); } } if (isInheritance) { pO.Description = "Move properties from derived class to basis class:"; } else { pO.Description = "Creates a new base class containing properties for derived classes:"; } pO.Title = "Properties Optimization"; pO.IsInheritance = isInheritance; if (pO.IsInheritance) { // add base class DomainClass d = dict[key][dict[key].Keys.ElementAt(0)]; pO.BaseClass = d.BaseClass; bool bCreateIntermediate = false; if (pO.InvolvedClasses.Count != d.DerivedClasses.Count) { bCreateIntermediate = true; } pO.CreateIntermediate = bCreateIntermediate; pO.InvolvedClasses.Add(d.BaseClass); } return(pO); }
private PropertiesOptimization CreateOptimization(string key, Dictionary<string, SortedDictionary<Guid, DomainClass>> dict, Dictionary<string, List<DomainProperty>> dictProperties, bool isInheritance) { PropertiesOptimization pO = new PropertiesOptimization(this.MetaModel, this.ModelContext); pO.InvolvedProperties.AddRange(dictProperties[key]); foreach (Guid id in dict[key].Keys) { pO.InvolvedClasses.Add(dict[key][id]); if (isInheritance) { // add inheritance relationship ReadOnlyCollection<DomainClassReferencesBaseClass> col = DomainRoleInfo.GetElementLinks<DomainClassReferencesBaseClass>(dict[key][id], DomainClassReferencesBaseClass.DerivedClassDomainRoleId); pO.InvolvedInheritancesRelationships.Add(col[0]); } } if (isInheritance) pO.Description = "Move properties from derived class to basis class:"; else pO.Description = "Creates a new base class containing properties for derived classes:"; pO.Title = "Properties Optimization"; pO.IsInheritance = isInheritance; if (pO.IsInheritance) { // add base class DomainClass d = dict[key][dict[key].Keys.ElementAt(0)]; pO.BaseClass = d.BaseClass; bool bCreateIntermediate = false; if (pO.InvolvedClasses.Count != d.DerivedClasses.Count) bCreateIntermediate = true; pO.CreateIntermediate = bCreateIntermediate; pO.InvolvedClasses.Add(d.BaseClass); } return pO; }