public DerivedBLInterface(DefaultBLInterface defaultInterface, BLModel parentModel) { this.DefaultInterface = defaultInterface; this.ParentModel = parentModel; this.coreInterface = defaultInterface.coreInterface; this.ShortName = $"{coreInterface.Name}_VERSION"; this.Name = ConvertName(coreInterface, parentModel.Config); this.FormerName = ConvertName(coreInterface.FormerName, coreInterface, parentModel.Config); ConvertAttributes(); // Laden von this.Attributes }
public BLModel(CoreModel coreModel) { this.Core = coreModel; this.Config = new BLConfig(coreModel.Config); this.Interfaces = new List <IBLInterface>(); CoreInterface finestTimeCoreAttribute = null; // Finest-Time-Attribute ermitteln und setzen if (coreModel.Interfaces.Where(i => i.IsFinestTime).Count() > 0) { finestTimeCoreAttribute = coreModel.Interfaces.Where(i => i.IsFinestTime).First(); this.FinestTimeAttribute = new DefaultBLInterface(finestTimeCoreAttribute, this); } else { this.FinestTimeAttribute = null; } foreach (var ifa in coreModel.Interfaces) { // Fallunterscheidung, da FinestTimeAttribute schon vorher initialisiert wurde. if (ifa == finestTimeCoreAttribute) { this.Interfaces.Add(this.FinestTimeAttribute); } else { var newIfa = new DefaultBLInterface(ifa, this); this.Interfaces.Add(newIfa); // Für historisierte Dimensionstabellen noch eine Derived-Table anlegen. if (ifa.Type == CoreInterfaceType.DIM_TABLE && ifa.IsHistorized) { this.Interfaces.Add(new DerivedBLInterface(newIfa, this)); } } } // Postprocessing zum Auflösen der Ref-Attribute etc. foreach (var ifa in Interfaces) { ifa.PostProcess(); } }