コード例 #1
0
        public Hierarchy <LayoutItem> GetInstanceExtensions(Table table)
        {
            if (table.ID.Contains("07"))
            {
            }
            if (ExtDictionary.Count == 0)
            {
                return(table.Extensions);
            }
            else
            {
                if (this.Extensions == null)
                {
                    var hlroot = new Hierarchy <LayoutItem>(table.Extensions.Item);
                    var ix     = 1;
                    foreach (var typedext in ExtDictionary)
                    {
                        var factstring = typedext.Key;
                        var typedfact  = new FactBase();
                        typedfact.SetFromString(factstring);
                        typedfact.SetTyped();

                        foreach (var ext in table.Extensions.Children)
                        {
                            var li_original = ext.Item;
                            var li_new      = LayoutItem.Copy(li_original);
                            foreach (var dim in li_new.Dimensions)
                            {
                                var instancedim = typedfact.Dimensions.FirstOrDefault(i => i.DimensionItem == dim.DimensionItem && i.Domain == dim.Domain);
                                if (instancedim != null)
                                {
                                    dim.DomainMember = instancedim.DomainMember;
                                }
                            }
                            var fact = new FactBase();
                            fact.Dimensions = li_new.Dimensions;
                            fact.Concept    = li_new.Concept;
                            fact.SetFactString();
                            li_new.FactString = fact.FactString;

                            Label extensionlabel = new Label();
                            var   code           = String.Format(Table.LabelCodeFormat, typedext.Value);
                            var   content        = String.Format(Table.ExtensionLableContentFormat, code);

                            extensionlabel.LabelID = code;
                            extensionlabel.Code    = code;
                            extensionlabel.Content = content;
                            if (fact.Dimensions.Count == 1)
                            {
                                extensionlabel      = table.Taxonomy.GetLabelForDimensionDomainMember(fact.Dimensions.FirstOrDefault());
                                extensionlabel.Code = code;
                            }

                            if (fact.Dimensions.Count > 1)
                            {
                                extensionlabel.Content = "";
                                extensionlabel.Code    = "";
                                foreach (var dim in fact.Dimensions)
                                {
                                    extensionlabel.Code    += dim.DomainMemberFullName + ",";
                                    extensionlabel.Content += table.Taxonomy.GetLabelForDimensionDomainMember(dim) + ",";
                                }
                            }
                            li_new.ID           = extensionlabel.LabelID;
                            li_new.LabelCode    = extensionlabel.Code;
                            li_new.LabelContent = extensionlabel.Content;

                            var hli = new Hierarchy <LayoutItem>(li_new);
                            hlroot.Children.Add(hli);
                            hli.Parent = hlroot;

                            ix++;
                        }
                    }
                    Extensions = hlroot;
                }
                return(Extensions);
            }
        }