示例#1
0
        public void AddToContext(LogicalModel.ContextContainer logicalcontext, XbrlContext xbrlcontext)
        {
            var context = new LogicalModel.InstanceContext();

            context.ID = xbrlcontext.ID;
            if (!logicalcontext.Entitites.ContainsKey(xbrlcontext.Entity.ID))
            {
                logicalcontext.Entitites.Add(xbrlcontext.Entity.ID, xbrlcontext.Entity);
            }
            context.Entity   = logicalcontext.Entitites[xbrlcontext.Entity.ID];
            context.EntityID = xbrlcontext.Entity.ID;
            if (!logicalcontext.Periods.ContainsKey(xbrlcontext.Period.ID))
            {
                logicalcontext.Periods.Add(xbrlcontext.Period.ID, xbrlcontext.Period);
            }
            context.Period   = logicalcontext.Periods[xbrlcontext.Period.ID];
            context.PeriodID = xbrlcontext.Period.ID;

            if (xbrlcontext.Scenario != null)
            {
                foreach (var dim in xbrlcontext.Scenario.Dimensions)
                {
                    if (!logicalcontext.Parts.ContainsKey(dim.DomainMemberFullName))
                    {
                        logicalcontext.Parts.Add(dim.DomainMemberFullName, dim);
                    }
                    context.Dimensions.Add(logicalcontext.Parts[dim.DomainMemberFullName]);
                }
            }
            logicalcontext.Items.Add(context.ID, context);
        }
示例#2
0
        private void FixContextNamespaces(LogicalModel.InstanceContext ct, XmlNamespaceManager nsm, Dictionary <string, string> domainnsdictionary, List <string> dimensionnamespaces, StringBuilder logger)
        {
            var sb = new StringBuilder();

            foreach (var dim in ct.Dimensions)
            {
                var dparts = dim.DimensionItem.Split(':');
                if (Utilities.Xml.Namespaces.ContainsKey(dparts[0]))
                {
                    var dimnsuri   = Utilities.Xml.Namespaces[dparts[0]];
                    var dimelement = Taxonomy.DimensionItems.FirstOrDefault(i => i.NamespaceURI == dimnsuri);
                    dim.DimensionItem = string.Format("{0}:{1}", dimelement.Namespace, dparts[1]);

                    if (dim.IsTyped)
                    {
                        var parts = dim.Domain.Split(':');

                        var nsuri        = Utilities.Xml.Namespaces[parts[0]];
                        var tdecontainer = this.Taxonomy.TypedDimensions.FirstOrDefault(i => i.Value.FirstOrDefault(t => t.NamespaceURI == nsuri) != null);
                        var tde          = tdecontainer.Value.FirstOrDefault(t => t.NamespaceURI == nsuri);
                        dim.Domain = string.Format("{0}:{1}", tde.Namespace, parts[1]);
                    }
                    else
                    {
                        if (!domainnsdictionary.ContainsKey(dim.Domain))
                        {
                            var domainelement = this.Taxonomy.SchemaElements.FirstOrDefault(i => i.NamespaceURI == Utilities.Xml.Namespaces[dim.Domain]);
                            domainnsdictionary.Add(dim.Domain, domainelement.Namespace);
                        }
                        dim.Domain = domainnsdictionary[dim.Domain];
                    }
                }
                else
                {
                    sb.Append(String.Format("{0},", dim.DimensionItem));
                }
            }
            if (sb.Length > 0)
            {
                sb.Insert(0, String.Format("Context: {0} Dimensions: ", ct.ID));
                sb.Append("; ");
                logger.Append(sb.ToString());
            }
            ct.Dimensions = ct.Dimensions.OrderBy(i => i.DomainMemberFullName, StringComparer.Ordinal).ToList();
        }