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
        }
示例#2
0
        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();
            }
        }