コード例 #1
0
    /// <summary>
    /// Creates a <see cref="CompilationUnitSyntax"/> instance wrapping the given method.
    /// </summary>
    /// <param name="hierarchyInfo">The <see cref="HierarchyInfo"/> instance for the current type.</param>
    /// <param name="methodDeclaration">The <see cref="MethodDeclarationSyntax"/> item to insert.</param>
    /// <param name="canUseSkipLocalsInit">Whether <c>[SkipLocalsInit]</c> can be used.</param>
    /// <returns>A <see cref="CompilationUnitSyntax"/> object wrapping <paramref name="methodDeclaration"/>.</returns>
    private static CompilationUnitSyntax GetCompilationUnitFromMethod(
        HierarchyInfo hierarchyInfo,
        MethodDeclarationSyntax methodDeclaration,
        bool canUseSkipLocalsInit)
    {
        // Method attributes
        List <AttributeListSyntax> attributes = new()
        {
            AttributeList(SingletonSeparatedList(
                              Attribute(IdentifierName("global::System.CodeDom.Compiler.GeneratedCode")).AddArgumentListArguments(
                                  AttributeArgument(LiteralExpression(SyntaxKind.StringLiteralExpression, Literal(typeof(ID2D1ShaderGenerator).FullName))),
                                  AttributeArgument(LiteralExpression(SyntaxKind.StringLiteralExpression, Literal(typeof(ID2D1ShaderGenerator).Assembly.GetName().Version.ToString())))))),
            AttributeList(SingletonSeparatedList(Attribute(IdentifierName("global::System.Diagnostics.DebuggerNonUserCode")))),
            AttributeList(SingletonSeparatedList(Attribute(IdentifierName("global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage")))),
            AttributeList(SingletonSeparatedList(
                              Attribute(IdentifierName("global::System.ComponentModel.EditorBrowsable")).AddArgumentListArguments(
                                  AttributeArgument(ParseExpression("global::System.ComponentModel.EditorBrowsableState.Never"))))),
            AttributeList(SingletonSeparatedList(
                              Attribute(IdentifierName("global::System.Obsolete")).AddArgumentListArguments(
                                  AttributeArgument(LiteralExpression(
                                                        SyntaxKind.StringLiteralExpression,
                                                        Literal("This method is not intended to be used directly by user code"))))))
        };

        // Add [SkipLocalsInit] if the target project allows it
        if (canUseSkipLocalsInit)
        {
            attributes.Add(AttributeList(SingletonSeparatedList(Attribute(IdentifierName("global::System.Runtime.CompilerServices.SkipLocalsInit")))));
        }

        return(hierarchyInfo.GetSyntax(methodDeclaration.AddAttributeLists(attributes.ToArray())));
    }
}
コード例 #2
0
        public override TaskList GetTasks(HierarchyInfo item)
        {
            if (string.Equals(item.NodeType, HierarchyInfo.ServerConnection, StringComparison.Ordinal))
            {
                // Server task list
            }
            if (string.Equals(item.NodeType, HierarchyInfo.Site, StringComparison.Ordinal) ||
                string.Equals(item.NodeType, HierarchyInfo.Application, StringComparison.Ordinal))
            {
                var           siteName      = GetSiteName(item);
                var           virtualPath   = GetApplicationPath(Item);
                var           serverManager = new ServerManager();
                BpmOnlineSite site;
                try
                {
                    site = new BpmOnlineSite(serverManager, siteName, virtualPath);
                }
                catch (Exception)
                {
                    return(null);
                }
                if (site.ConnectionStringsConfig == null)
                {
                    return(null);
                }
                return((TaskList) new BpmOnlineHierarchyTaskList(_owner, site));
            }

            /*if (string.Equals(item.NodeType, HierarchyInfo.Application, StringComparison.Ordinal))
             * {
             *  // Application task list
             * }*/
            return((TaskList)null);
        }
コード例 #3
0
ファイル: LibraryManager.cs プロジェクト: PeezoSlug/PTVS
        public virtual void RegisterHierarchy(IVsHierarchy hierarchy)
        {
            if ((null == hierarchy) || _hierarchies.ContainsKey(hierarchy))
            {
                return;
            }

            var commonProject = hierarchy.GetProject()?.GetCommonProject();

            if (commonProject == null)
            {
                return;
            }

            RegisterLibrary();
            HierarchyListener listener = new HierarchyListener(hierarchy, this);
            var node = _hierarchies[hierarchy] = new HierarchyInfo(
                listener,
                new ProjectLibraryNode(commonProject)
                );

            _library.AddNode(node.ProjectLibraryNode);
            listener.StartListening(false);
            RegisterForRDTEvents();
        }
コード例 #4
0
        private HierarchyInfo BuildHierarchyInfo(TypeInfo root, HierarchyDef hierarchyDef)
        {
            var key    = BuildKeyInfo(root, hierarchyDef);
            var schema = hierarchyDef.Schema;

            // Optimization. It there is the only class in hierarchy then ConcreteTable schema is applied
            if (schema != InheritanceSchema.ConcreteTable)
            {
                var node = context.DependencyGraph.TryGetNode(hierarchyDef.Root);
                // No dependencies => no descendants
                if (node == null || node.IncomingEdges.Count(e => e.Kind == EdgeKind.Inheritance) == 0)
                {
                    schema = InheritanceSchema.ConcreteTable;
                }
            }

            var typeDiscriminatorField = hierarchyDef.Root.Fields.FirstOrDefault(f => f.IsTypeDiscriminator);
            var typeDiscriminatorMap   = typeDiscriminatorField != null ? new TypeDiscriminatorMap() : null;

            var hierarchy = new HierarchyInfo(root, key, schema, typeDiscriminatorMap)
            {
                Name = root.Name,
            };

            key.Hierarchy = hierarchy; // Setting backreference
            context.Model.Hierarchies.Add(hierarchy);
            return(hierarchy);
        }
コード例 #5
0
        String GetHierarchy(MetadataQuery args)
        {
            OlapMetadataProvider provider = new OlapMetadataProvider(new ConnectionInfo(args.Connection, GetConnectionString(args.Connection)));
            HierarchyInfo        info     = provider.GetHierarchy(args.CubeName, args.DimensionUniqueName, args.HierarchyUniqueName);

            return(XmlSerializationUtility.Obj2XmlStr(info, Common.Namespace));
        }
 private string GetApplicationPath(HierarchyInfo item, string currentApplicationPath)
 {
     if (string.Equals(item.NodeType, HierarchyInfo.Site, StringComparison.Ordinal))
     {
         return(currentApplicationPath);
     }
 }
コード例 #7
0
        public Dictionary <String, HierarchyInfo> GetHierarchies(String cubeName, string dimensionUniqueName)
        {
            try
            {
                System.Diagnostics.Trace.TraceInformation("{0} Ranet.Olap.Core.Providers.OlapMetadataProvider Get Hierarchies Started \r\n cubeName: '{1}' \r\n dimensionUniqueName: '{2}'",
                                                          DateTime.Now.ToString(), cubeName, dimensionUniqueName);

                Dictionary <String, HierarchyInfo> list = new Dictionary <String, HierarchyInfo>();
                AdomdConnection conn = GetConnection();

                Dimension dim = FindDimension(cubeName, dimensionUniqueName);
                if (dim != null)
                {
                    foreach (Hierarchy hierarchy in dim.Hierarchies)
                    {
                        HierarchyInfo info = InfoHelper.CreateHierarchyInfo(hierarchy);
                        if (info != null)
                        {
                            if (!list.ContainsKey(info.UniqueName))
                            {
                                list.Add(info.UniqueName, info);
                            }
                        }
                    }
                }

                return(list);
            }
            finally {
                System.Diagnostics.Trace.TraceInformation("{0} Ranet.Olap.Core.Providers.OlapMetadataProvider Get Hierarchies Completed \r\n", DateTime.Now.ToString());
            }
        }
 private string GetSiteName(HierarchyInfo item)
 {
     if (string.Equals(item.NodeType, HierarchyInfo.Site, StringComparison.Ordinal))
     {
         return(item.Text);
     }
     return(GetSiteName(item.Parent));
 }
コード例 #9
0
 public static void Dump(this HierarchyInfo target, int indent)
 {
     WriteLine(indent, "InheritanceSchema: " + target.InheritanceSchema);
     WriteLine(indent, "KeyFields:");
     foreach (var pair in target.Root.Fields.Where(f => f.IsPrimaryKey))
     {
         WriteLine(indent + 1, pair.Name + "(" + pair.ValueType + ") ");
     }
 }
コード例 #10
0
        /// <summary>
        /// Gets the name, file path, and OneNote hyperlink to the current page;
        /// used to build up Favorites
        /// </summary>
        /// <returns></returns>
        public HierarchyInfo GetPageInfo(string pageId = null)
        {
            if (pageId == null)
            {
                pageId = CurrentPageId;
            }

            var page = GetPage(pageId, PageDetail.Basic);

            if (page == null)
            {
                return(null);
            }

            var info = new HierarchyInfo
            {
                PageId = pageId,
                Name   = page.Root.Attribute("name")?.Value,
                Link   = GetHyperlink(page.PageId, string.Empty)
            };


            // path
            var builder = new StringBuilder();

            builder.Append($"/{info.Name}");

            var id = GetParent(pageId);

            while (!string.IsNullOrEmpty(id))
            {
                onenote.GetHierarchy(id, HierarchyScope.hsSelf, out var xml, XMLSchema.xs2013);
                var parent     = XElement.Parse(xml);
                var parentName = parent.Attribute("name")?.Value;

                if (parentName != null)
                {
                    builder.Insert(0, $"/{parentName}");
                }

                if (parent.Name.LocalName == "Section" && string.IsNullOrEmpty(info.SectionId))
                {
                    info.SectionId = parent.Attribute("ID").Value;
                }
                else if (parent.Name.LocalName == "Notebook")
                {
                    info.NotebookId = parent.Attribute("ID").Value;
                }

                id = GetParent(id);
            }

            info.Path = builder.ToString();

            return(info);
        }
コード例 #11
0
        void RegisterHierachry(SelectQuery parent, SelectQuery child, HierarchyInfo info)
        {
            _parents[child] = info;

            if (!_tree.TryGetValue(parent, out var list))
            {
                list = new List <SelectQuery>();
                _tree.Add(parent, list);
            }
            list.Add(child);
        }
コード例 #12
0
        /// <summary>
        /// Gets the name, file path, and OneNote hyperlink to the current section;
        /// used to build up Favorites
        /// </summary>
        /// <returns></returns>
        public HierarchyInfo GetSectionInfo()
        {
            var section = GetSection();

            if (section == null)
            {
                return(null);
            }

            var info = new HierarchyInfo
            {
                SectionId  = CurrentSectionId,
                NotebookId = CurrentNotebookId,
                Name       = section.Attribute("name")?.Value
            };

            // path
            var builder = new StringBuilder();

            builder.Append($"/{info.Name}");

            var id = GetParent(CurrentSectionId);

            while (!string.IsNullOrEmpty(id))
            {
                onenote.GetHierarchy(id, HierarchyScope.hsSelf, out var xml, XMLSchema.xs2013);
                var x = XElement.Parse(xml);
                var n = x.Attribute("name")?.Value;

                if (n != null)
                {
                    builder.Insert(0, $"/{n}");
                }

                id = GetParent(id);
            }

            info.Path = builder.ToString();

            var sectionId = section.Attribute("ID")?.Value;

            if (sectionId != null)
            {
                info.Link = GetHyperlink(sectionId, string.Empty);
            }

            return(info);
        }
        protected override void RefreshTree()
        {
            base.RefreshTree();

            if (CubeInfo != null)
            {
                // Если задано уникальное имя измерения, то создаем для данного измерения узел
                if (!String.IsNullOrEmpty(DimensionUniqueName))
                {
                    DimensionInfo info = CubeInfo.GetDimension(DimensionUniqueName);
                    if (info != null)
                    {
                        if (!String.IsNullOrEmpty(HierarchyUniqueName))
                        {
                            HierarchyInfo hierarchyInfo = info.GetHierarchy(HierarchyUniqueName);
                            if (hierarchyInfo != null)
                            {
                                HierarchyTreeNode hierarchyNode = AddHierarchyNode(null, hierarchyInfo);
                                CreateLevels(hierarchyNode, hierarchyInfo, false);
                                hierarchyNode.IsExpanded = true;
                                return;
                            }
                            else
                            {
                                LogManager.LogError(this, String.Format(Localization.MetadataResponseException_HierarchyByUniqueName_InDimension_NotFound, HierarchyUniqueName, DimensionUniqueName));
                            }
                        }
                        else
                        {
                            DimensionTreeNode dimNode = AddDimensionNode(null, info);
                            CreateHierarchies(dimNode, info, true);
                            dimNode.IsExpanded = true;
                            return;
                        }
                    }
                    else
                    {
                        LogManager.LogError(this, String.Format(Localization.MetadataResponseException_DimensionByUniqueName_InCube_NotFound, DimensionUniqueName, CubeName));
                    }
                }

                // Отображаем все измерения
                CreateDimensions(null, CubeInfo, true);
            }
        }
        public HierarchyTreeNode(HierarchyInfo info)
            : base(info)
        {
            switch (info.HierarchyOrigin)
            {
            case HierarchyInfoOrigin.AttributeHierarchy:
                Icon = UriResources.Images.AttributeHierarchy16;
                break;

            case HierarchyInfoOrigin.ParentChildHierarchy:
                Icon = UriResources.Images.ParentChildHierarchy16;
                break;

            case HierarchyInfoOrigin.UserHierarchy:
                Icon = UriResources.Images.UserHierarchy16;
                break;
            }
        }
コード例 #15
0
ファイル: LibraryManager.cs プロジェクト: PeezoSlug/PTVS
        public virtual void UnregisterHierarchy(IVsHierarchy hierarchy)
        {
            if ((null == hierarchy) || !_hierarchies.ContainsKey(hierarchy))
            {
                return;
            }
            HierarchyInfo info = _hierarchies[hierarchy];

            if (null != info)
            {
                info.Listener.Dispose();
            }
            _hierarchies.Remove(hierarchy);
            _library.RemoveNode(info.ProjectLibraryNode);
            if (0 == _hierarchies.Count)
            {
                UnregisterRDTEvents();
            }
            lock (_files)
            {
                ModuleId[] keys = new ModuleId[_files.Keys.Count];
                _files.Keys.CopyTo(keys, 0);
                foreach (ModuleId id in keys)
                {
                    if (hierarchy.Equals(id.Hierarchy))
                    {
                        _library.RemoveNode(_files[id]);
                        _files.Remove(id);
                    }
                }
            }
            // Remove the document listeners.
            uint[] docKeys = new uint[_documents.Keys.Count];
            _documents.Keys.CopyTo(docKeys, 0);
            foreach (uint id in docKeys)
            {
                TextLineEventListener docListener = _documents[id];
                if (hierarchy.Equals(docListener.FileID.Hierarchy))
                {
                    _documents.Remove(id);
                    docListener.Dispose();
                }
            }
        }
コード例 #16
0
ファイル: DBSkill.cs プロジェクト: wuhuolong/MaxBooks
        /// <summary>
        /// 从技能ID获取父/子技能关系
        /// </summary>
        /// <param name="skill_id"></param>
        /// <returns></returns>
        public HierarchyInfo GetHierarchyInfo(uint skill_id)
        {
            HierarchyInfo info = null;

            if (!mSkillHierarchyInfos.TryGetValue(skill_id, out info))
            {
                var skill_info = DBSkillSev.Instance.GetSkillInfo(skill_id);

                // 有子技能
                if (skill_info != null && skill_info.ParentSkillId != 0)
                {
                    info          = new HierarchyInfo();
                    info.ParentID = skill_info.ParentSkillId;

                    // 计算当前子技能的序号
                    var parent_skill_info = DBSkillSev.Instance.GetSkillInfo(skill_info.ParentSkillId);
                    if (parent_skill_info != null)
                    {
                        int index          = 0;
                        var cur_skill_info = parent_skill_info;
                        while (cur_skill_info.ChildSkillId != 0 && cur_skill_info.Id != skill_info.Id)
                        {
                            cur_skill_info = DBSkillSev.Instance.GetSkillInfo(cur_skill_info.ChildSkillId);
                            if (cur_skill_info == null)
                            {
                                GameDebug.LogError("cur_skill_info is null, id:" + cur_skill_info.ParentSkillId);
                                break;
                            }

                            index++;
                        }
                        info.HierarchyIndex = index;
                    }
                    else
                    {
                        GameDebug.LogError("parent_skill_info is null, id:" + skill_info.ParentSkillId);
                    }

                    mSkillHierarchyInfos[skill_id] = info;
                }
            }

            return(info);
        }
コード例 #17
0
        public override TaskList GetTasks(HierarchyInfo item)
        {
            var connection  = (Connection)_owner.ServiceProvider.GetService(typeof(Connection));
            var a           = ((Microsoft.Web.Management.Iis.WebObjects.WebObjectsHierarchyProvider.ServerContentInfo)(item)).NavigatorPath;
            var siteName    = connection.ConfigurationPath.SiteName;
            var virtualPath = connection.ConfigurationPath.ApplicationPath +
                              connection.ConfigurationPath.FolderPath;

            if (string.Equals(item.NodeType, HierarchyInfo.ServerConnection, StringComparison.Ordinal))
            {
                // Server task list
            }
            if (string.Equals(item.NodeType, HierarchyInfo.Site, StringComparison.Ordinal) ||
                string.Equals(item.NodeType, HierarchyInfo.Application, StringComparison.Ordinal))
            {
                var           serverManager = new ServerManager();
                BpmOnlineSite site;
                try
                {
                    site = new BpmOnlineSite(serverManager, siteName, virtualPath);
                }
                catch (Exception)
                {
                    return(null);
                }
                if (site.ConnectionStringsConfig == null)
                {
                    return(null);
                }
                return((TaskList) new BpmOnlineHierarchyTaskList(_owner, site));
            }

            /*if (string.Equals(item.NodeType, HierarchyInfo.Application, StringComparison.Ordinal))
             * {
             *  // Application task list
             * }*/
            return((TaskList)null);
        }
コード例 #18
0
 void RegisterHierachry(SelectQuery parent, SelectQuery child, HierarchyInfo info)
 {
     _parents ![child] = info;
コード例 #19
0
        String BuildFilterCondition(String cubeName, String hierarchyUniqueName, FilterOperationBase filter)
        {
            StringBuilder builder = new StringBuilder();

            if (filter != null)
            {
                // Опрерация
                FilterOperation operation = filter as FilterOperation;
                if (operation != null)
                {
                    List <String> operands = new List <string>();
                    foreach (FilterOperationBase child in operation.Children)
                    {
                        String x = BuildFilterCondition(cubeName, hierarchyUniqueName, child);
                        if (!String.IsNullOrEmpty(x))
                        {
                            operands.Add(String.Format("({0})", x));
                        }
                    }

                    if (operands.Count > 1)
                    {
                        builder.Append("(");
                    }
                    for (int i = 0; i < operands.Count; i++)
                    {
                        if (i > 0)
                        {
                            builder.AppendFormat(" {0} ", operation.Operation.ToString());
                        }
                        builder.Append(operands[i]);
                    }
                    if (operands.Count > 1)
                    {
                        builder.Append(")");
                    }
                }

                FilterOperand operand = filter as FilterOperand;
                if (operand != null)
                {
                    // Если свойство не является общим для всех уровней - (общие: Caption, UniqueName, Name)
                    // То при формировании нужно обязательно проверять чтобы текущий уровень был именно тем, на котором это свойство есть
                    // Исключение составляют случаи когда измерение Parent-Child
                    bool isParentChild = false;
                    try
                    {
                        OlapMetadataProvider provider  = new OlapMetadataProvider(QueryExecuter.Connection);
                        HierarchyInfo        hierarchy = provider.GetHierarchy(cubeName, String.Empty, hierarchyUniqueName);
                        if (hierarchy != null && hierarchy.HierarchyOrigin == HierarchyInfoOrigin.ParentChildHierarchy)
                        {
                            isParentChild = true;
                        }
                    }
                    catch { }

                    // Свойство с одним и тем же именем может присутствовать на нескольких уровнях. В данном случае operand.PropertyLevels содержит коллекцию уникальных имен уровней. Их все нужно учесть
                    if (operand.PropertyLevels.Count != 0 && !isParentChild)
                    {
                        int i = 0;
                        builder.Append("(");
                        foreach (String levelUniqueName in operand.PropertyLevels)
                        {
                            if (i > 0)
                            {
                                builder.Append("or ");
                            }
                            builder.AppendFormat("({0}.Level is {1}) ", hierarchyUniqueName, levelUniqueName);
                            i++;
                        }
                        builder.Append(")");
                        builder.Append(" and ");
                    }
                    switch (operand.Condition)
                    {
                    case ConditionTypes.Equal:
                        builder.AppendFormat("{0}.Properties(\"{1}\")='{2}'", hierarchyUniqueName, operand.Property, operand.Value);
                        break;

                    case ConditionTypes.Contains:
                        builder.AppendFormat("InStr({0}.Properties(\"{1}\"),'{2}') <> 0", hierarchyUniqueName, operand.Property, operand.Value);
                        break;

                    case ConditionTypes.BeginWith:
                        //Позиция при использовании InStr начинается с 1
                        builder.AppendFormat("InStr({0}.Properties(\"{1}\"),'{2}') = 1", hierarchyUniqueName, operand.Property, operand.Value);
                        break;
                    }
                }
            }
            return(builder.ToString());
        }
コード例 #20
0
 public Hierarchy_AreaItemWrapper(HierarchyInfo info)
     : base(info)
 {
     UniqueName = info.UniqueName;
 }
コード例 #21
0
 public override HierarchyInfo[] GetChildren(HierarchyInfo item)
 {
     return((HierarchyInfo[])null);
 }
 private string GetApplicationPath(HierarchyInfo item)
 {
     throw new NotImplementedException();
 }
コード例 #23
0
    /// <summary>
    /// Creates a <see cref="CompilationUnitSyntax"/> instance wrapping the given method.
    /// </summary>
    /// <param name="hierarchyInfo">The <see cref="HierarchyInfo"/> instance for the current type.</param>
    /// <param name="methodDeclaration">The <see cref="MethodDeclarationSyntax"/> item to insert.</param>
    /// <param name="canUseSkipLocalsInit">Whether <c>[SkipLocalsInit]</c> can be used.</param>
    /// <returns>A <see cref="CompilationUnitSyntax"/> object wrapping <paramref name="methodDeclaration"/>.</returns>
    private static CompilationUnitSyntax GetCompilationUnitFromMethod(
        HierarchyInfo hierarchyInfo,
        MethodDeclarationSyntax methodDeclaration,
        bool canUseSkipLocalsInit)
    {
        // Method attributes
        List <AttributeListSyntax> attributes = new()
        {
            AttributeList(SingletonSeparatedList(
                              Attribute(IdentifierName("global::System.CodeDom.Compiler.GeneratedCode")).AddArgumentListArguments(
                                  AttributeArgument(LiteralExpression(SyntaxKind.StringLiteralExpression, Literal(typeof(IShaderGenerator).FullName))),
                                  AttributeArgument(LiteralExpression(SyntaxKind.StringLiteralExpression, Literal(typeof(IShaderGenerator).Assembly.GetName().Version.ToString())))))),
            AttributeList(SingletonSeparatedList(Attribute(IdentifierName("global::System.Diagnostics.DebuggerNonUserCode")))),
            AttributeList(SingletonSeparatedList(Attribute(IdentifierName("global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage")))),
            AttributeList(SingletonSeparatedList(
                              Attribute(IdentifierName("global::System.ComponentModel.EditorBrowsable")).AddArgumentListArguments(
                                  AttributeArgument(ParseExpression("global::System.ComponentModel.EditorBrowsableState.Never"))))),
            AttributeList(SingletonSeparatedList(
                              Attribute(IdentifierName("global::System.Obsolete")).AddArgumentListArguments(
                                  AttributeArgument(LiteralExpression(
                                                        SyntaxKind.StringLiteralExpression,
                                                        Literal("This method is not intended to be used directly by user code"))))))
        };

        // Add [SkipLocalsInit] if the target project allows it
        if (canUseSkipLocalsInit)
        {
            attributes.Add(AttributeList(SingletonSeparatedList(Attribute(IdentifierName("global::System.Runtime.CompilerServices.SkipLocalsInit")))));
        }

        // Create the partial shader type declaration with the given method implementation.
        // This code produces a struct declaration as follows:
        //
        // partial struct <SHADER_TYPE>
        // {
        //     <METHOD>
        // }
        StructDeclarationSyntax structDeclarationSyntax =
            StructDeclaration(hierarchyInfo.Names[0])
            .AddModifiers(Token(SyntaxKind.PartialKeyword))
            .AddMembers(methodDeclaration.AddAttributeLists(attributes.ToArray()));

        TypeDeclarationSyntax typeDeclarationSyntax = structDeclarationSyntax;

        // Add all parent types in ascending order, if any
        foreach (string parentType in hierarchyInfo.Names.AsSpan().Slice(1))
        {
            typeDeclarationSyntax =
                ClassDeclaration(parentType)
                .AddModifiers(Token(SyntaxKind.PartialKeyword))
                .AddMembers(typeDeclarationSyntax);
        }

        // Create the compilation unit with disabled warnings, target namespace and generated type.
        // This will produce code as follows:
        //
        // #pragma warning disable
        //
        // namespace <NAMESPACE>;
        //
        // <TYPE_HIERARCHY>
        return
            (CompilationUnit().AddMembers(
                 FileScopedNamespaceDeclaration(IdentifierName(hierarchyInfo.Namespace))
                 .AddMembers(typeDeclarationSyntax)
                 .WithNamespaceKeyword(Token(TriviaList(
                                                 Trivia(PragmaWarningDirectiveTrivia(Token(SyntaxKind.DisableKeyword), true))),
                                             SyntaxKind.NamespaceKeyword,
                                             TriviaList())))
             .NormalizeWhitespace(eol: "\n"));
    }
}
コード例 #24
0
 private string GetSiteName(HierarchyInfo item)
 {
     throw new NotImplementedException();
 }
コード例 #25
0
        public void RegisterHierarchy(IVsHierarchy hierarchy)
        {
            if ((null == hierarchy) || _hierarchies.ContainsKey(hierarchy)) {
                return;
            }

            RegisterLibrary();
            var commonProject = hierarchy.GetProject().GetCommonProject();
            HierarchyListener listener = new HierarchyListener(hierarchy, this);
            var node = _hierarchies[hierarchy] = new HierarchyInfo(
                listener,
                new ProjectLibraryNode(commonProject)
            );
            _library.AddNode(node.ProjectLibraryNode);
            listener.StartListening(true);
            RegisterForRDTEvents();
        }
コード例 #26
0
        private static Func <TypeInfo, List <IndexInfo>, Dictionary <TypeInfo, IndexInfo>, IndexInfo> GetClusteredIndexChooser(HierarchyInfo hierarchy)
        {
            switch (hierarchy.InheritanceSchema)
            {
            case InheritanceSchema.ConcreteTable:
                return(ChooseClusteredIndexConcreteTable);

            case InheritanceSchema.ClassTable:
                return(ChooseClusteredIndexClassTable);

            case InheritanceSchema.SingleTable:
                return(ChooseClusteredIndexSingleTable);

            default:
                throw new ArgumentOutOfRangeException("entityType.Hierarchy.InheritanceSchema");
            }
        }
コード例 #27
0
 /// <inheritdoc/>
 /// <exception cref="NotSupportedException">Method is not supported.</exception>
 protected override IPathNode VisitHierarchyInfo(HierarchyInfo hierarchy)
 {
     throw new NotSupportedException();
 }
 private string GetApplicationPath(HierarchyInfo item, string currentApplicationPath)
 {
 }
コード例 #29
0
        /// <summary>
        /// Возвращает список кубов
        /// </summary>
        /// <returns></returns>
        public CubeDefInfo  GetCubeMetadata(String cubeName, MetadataQueryType type)
        {
            try
            {
                System.Diagnostics.Trace.TraceInformation("{0} Ranet.Olap.Core.Providers.OlapMetadataProvider Getting Cube '{1}' Metadata Started",
                                                          DateTime.Now.ToString(), cubeName);

                CubeDef cube = FindCube(cubeName);
                if (cube != null)
                {
                    CubeDefInfo cube_info = InfoHelper.CreateCubeInfo(cube);
                    foreach (Dimension dim in cube.Dimensions)
                    {
                        DimensionInfo dim_info = InfoHelper.CreateDimensionInfo(dim);
                        cube_info.Dimensions.Add(dim_info);

                        foreach (Hierarchy hierarchy in dim.Hierarchies)
                        {
                            HierarchyInfo hier_info = InfoHelper.CreateHierarchyInfo(hierarchy);
                            dim_info.Hierarchies.Add(hier_info);

                            foreach (Level level in hierarchy.Levels)
                            {
                                LevelInfo level_info = InfoHelper.CreateLevelInfo(level);
                                hier_info.Levels.Add(level_info);
                            }

                            //AdomdConnection conn = GetConnection(ConnectionString);

                            //// Для каждой иерархии пытаемся определить элемент, который имеет тип MemberTypeEnum.All
                            //try
                            //{
                            //    AdomdRestrictionCollection restrictions = new AdomdRestrictionCollection();
                            //    restrictions.Add("CATALOG_NAME", conn.Database);
                            //    restrictions.Add("CUBE_NAME", OlapHelper.ConvertToNormalStyle(cubeName));
                            //    restrictions.Add("DIMENSION_UNIQUE_NAME", dim.UniqueName);
                            //    restrictions.Add("HIERARCHY_UNIQUE_NAME", hierarchy.UniqueName);
                            //    restrictions.Add("MEMBER_TYPE", 2/*MemberTypeEnum.All*/);

                            //    DataSet ds = conn.GetSchemaDataSet("MDSCHEMA_MEMBERS", restrictions);
                            //    if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                            //    {
                            //        DataTable table = ds.Tables[0];
                            //        if (table.Columns.Contains("MEMBER_UNIQUE_NAME"))
                            //        {
                            //            object obj = ds.Tables[0].Rows[0]["MEMBER_UNIQUE_NAME"];
                            //            if (obj != null)
                            //                hier_info.Custom_AllMemberUniqueName = obj.ToString();
                            //        }
                            //    }
                            //}catch
                            //{
                            //}

                            //// Для каждой иерархии пытаемся определить элемент, который имеет тип MemberTypeEnum.Unknown
                            //try
                            //{
                            //    AdomdRestrictionCollection restrictions = new AdomdRestrictionCollection();
                            //    restrictions.Add("CATALOG_NAME", conn.Database);
                            //    restrictions.Add("CUBE_NAME", OlapHelper.ConvertToNormalStyle(cubeName));
                            //    restrictions.Add("DIMENSION_UNIQUE_NAME", dim.UniqueName);
                            //    restrictions.Add("HIERARCHY_UNIQUE_NAME", hierarchy.UniqueName);
                            //    restrictions.Add("MEMBER_TYPE", 0 /*MemberTypeEnum.Unknown.All*/);

                            //    DataSet ds = conn.GetSchemaDataSet("MDSCHEMA_MEMBERS", restrictions);
                            //    if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                            //    {
                            //        DataTable table = ds.Tables[0];
                            //        if (table.Columns.Contains("MEMBER_UNIQUE_NAME"))
                            //        {
                            //            object obj = ds.Tables[0].Rows[0]["MEMBER_UNIQUE_NAME"];
                            //            if (obj != null)
                            //                hier_info.Custom_UnknownMemberUniqueName = obj.ToString();
                            //        }
                            //    }
                            //}
                            //catch
                            //{
                            //}
                        }
                    }

                    foreach (Kpi kpi in cube.Kpis)
                    {
                        KpiInfo kpi_info = InfoHelper.CreateKpiInfo(kpi);
                        cube_info.Kpis.Add(kpi_info);
                    }

                    foreach (Measure measure in cube.Measures)
                    {
                        MeasureInfo measure_info = InfoHelper.CreateMeasureInfo(measure);
                        cube_info.Measures.Add(measure_info);
                    }

                    foreach (NamedSet set in cube.NamedSets)
                    {
                        NamedSetInfo set_info = InfoHelper.CreateNamedSetInfo(set);
                        cube_info.NamedSets.Add(set_info);
                    }

                    if (type == MetadataQueryType.GetCubeMetadata_AllMembers)
                    {
                        AdomdConnection conn = GetConnection();
                        // Для каждой иерархии пытаемся определить элемент, который имеет тип MemberTypeEnum.All
                        try
                        {
                            AdomdRestrictionCollection restrictions = new AdomdRestrictionCollection();
                            restrictions.Add("CATALOG_NAME", conn.Database);
                            restrictions.Add("CUBE_NAME", OlapHelper.ConvertToNormalStyle(cubeName));
                            restrictions.Add("MEMBER_TYPE", 2 /*MemberTypeEnum.All*/);

                            DataSet ds = conn.GetSchemaDataSet("MDSCHEMA_MEMBERS", restrictions);
                            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                            {
                                DataTable table = ds.Tables[0];
                                if (table.Columns.Contains("MEMBER_UNIQUE_NAME") &&
                                    table.Columns.Contains("HIERARCHY_UNIQUE_NAME") &&
                                    table.Columns.Contains("DIMENSION_UNIQUE_NAME"))
                                {
                                    foreach (DataRow row in ds.Tables[0].Rows)
                                    {
                                        String dimension_UniqueName = row["DIMENSION_UNIQUE_NAME"] != null ? row["DIMENSION_UNIQUE_NAME"].ToString() : String.Empty;
                                        String hierarchy_UniqueName = row["HIERARCHY_UNIQUE_NAME"] != null ? row["HIERARCHY_UNIQUE_NAME"].ToString() : String.Empty;
                                        String member_UniqueName    = row["MEMBER_UNIQUE_NAME"] != null ? row["MEMBER_UNIQUE_NAME"].ToString() : String.Empty;

                                        if (!String.IsNullOrEmpty(dimension_UniqueName) &&
                                            !String.IsNullOrEmpty(hierarchy_UniqueName) &&
                                            !String.IsNullOrEmpty(member_UniqueName))
                                        {
                                            DimensionInfo dimension = cube_info.GetDimension(dimension_UniqueName);
                                            if (dimension != null)
                                            {
                                                HierarchyInfo hierarchy = dimension.GetHierarchy(hierarchy_UniqueName);
                                                if (hierarchy != null)
                                                {
                                                    hierarchy.Custom_AllMemberUniqueName = member_UniqueName;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            //throw ex;
                        }
                    }

                    cube_info.MeasureGroups = GetMeasureGroups(cubeName);

                    return(cube_info);
                }

                return(null);
            }
            finally {
                System.Diagnostics.Trace.TraceInformation("{0} Ranet.Olap.Core.Providers.OlapMetadataProvider Getting Cube '{1}' Metadata Completed",
                                                          DateTime.Now.ToString(), cubeName);
            }
        }
コード例 #30
0
 private string GetApplicationPath(HierarchyInfo item)
 {
 }