public static MetadataQuery CreateGetCubesQueryArgs(String connectionString)
 {
     MetadataQuery args = new MetadataQuery();
     args.Connection = connectionString;
     args.QueryType = MetadataQueryType.GetCubes;
     return args;
 }
 public static MetadataQuery CreateGetKPIsQueryArgs(String connectionString, String cubeName)
 {
     MetadataQuery args = new MetadataQuery();
     args.Connection = connectionString;
     args.CubeName = cubeName;
     args.QueryType = MetadataQueryType.GetKPIs;
     return args;
 }
 public static MetadataQuery CreateGetCubeMetadataArgs(String connectionString, String cubeName, MetadataQueryType type)
 {
     MetadataQuery args = new MetadataQuery();
     args.Connection = connectionString;
     args.CubeName = cubeName;
     args.QueryType = type;
     return args;
 }
 public static MetadataQuery CreateGetMeasureQueryArgs(String connectionString, String cubeName, String measureUniqueName)
 {
     MetadataQuery args = new MetadataQuery();
     args.Connection = connectionString;
     args.CubeName = cubeName;
     args.QueryType = MetadataQueryType.GetMeasure;
     args.MeasureUniqueName = measureUniqueName;
     return args;
 }
 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);
 }
        String GetHierarchies(MetadataQuery args)
        {
            OlapMetadataProvider provider = new OlapMetadataProvider(new ConnectionInfo(args.Connection, GetConnectionString(args.Connection)));

            Dictionary<String, HierarchyInfo> list = provider.GetHierarchies(args.CubeName, args.DimensionUniqueName);

            return XmlSerializationUtility.Obj2XmlStr(list.Values.ToList(), Common.Namespace);
        }
        String GetCubes(MetadataQuery args)
        {
            OlapMetadataProvider provider = new OlapMetadataProvider(new ConnectionInfo(args.Connection, GetConnectionString(args.Connection)));

            Dictionary<String, CubeDefInfo> list = provider.GetCubes();

            return XmlSerializationUtility.Obj2XmlStr(list.Values.ToList(), Common.Namespace);
        }
        String GetCubeMetadata(MetadataQuery args)
        {
            OlapMetadataProvider provider = new OlapMetadataProvider(new ConnectionInfo(args.Connection, GetConnectionString(args.Connection)));

            CubeDefInfo info = provider.GetCubeMetadata(args.CubeName, args.QueryType);

            return XmlSerializationUtility.Obj2XmlStr(info, Common.Namespace);
        }
        String GetMeasureGroups(MetadataQuery args)
        {
            OlapMetadataProvider provider = new OlapMetadataProvider(new ConnectionInfo(args.Connection, GetConnectionString(args.Connection)));

            List<MeasureGroupInfo> list = provider.GetMeasureGroups(args.CubeName);

            return XmlSerializationUtility.Obj2XmlStr(list, Common.Namespace);
        }
        String GetLevelProperties(MetadataQuery args)
        {
            OlapMetadataProvider provider = new OlapMetadataProvider(new ConnectionInfo(args.Connection, GetConnectionString(args.Connection)));

            // Делать коллекцию с ключем "Имя свойства" нельзя, т.к. свойства KEY1, KEY2 и т.д. есть не у всех уровней и например в контроле выбора элемента измерения при построении уловия поиска придется проверять для каких уровней они есть, а для каких нету
            List<LevelPropertyInfo> list = new List<LevelPropertyInfo>();
            if (String.IsNullOrEmpty(args.LevelUniqueName))
            {
                Dictionary<String, LevelInfo> levels = provider.GetLevels(args.CubeName, args.DimensionUniqueName, args.HierarchyUniqueName);
                foreach (LevelInfo li in levels.Values)
                {
                    Dictionary<String, LevelPropertyInfo> properties = provider.GetLevelProperties(args.CubeName,
                        args.DimensionUniqueName,
                        args.HierarchyUniqueName,
                        li.UniqueName);
                    foreach (LevelPropertyInfo pi in properties.Values)
                    {
                        list.Add(pi);
                    }
                }
            }
            else
            {
                Dictionary<string, LevelPropertyInfo> properties = provider.GetLevelProperties(args.CubeName,
                        args.DimensionUniqueName,
                        args.HierarchyUniqueName,
                        args.LevelUniqueName);
                foreach (LevelPropertyInfo pi in properties.Values)
                {
                    list.Add(pi);
                }
            }

            return XmlSerializationUtility.Obj2XmlStr(list, Common.Namespace);
        }
 public static MetadataQuery CreateGetHierarchyQueryArgs(String connectionString, String cubeName, String dimensionUniqueName, String hierarchyUniqueName)
 {
     MetadataQuery args = new MetadataQuery();
     args.Connection = connectionString;
     args.CubeName = cubeName;
     args.DimensionUniqueName = dimensionUniqueName;
     args.HierarchyUniqueName = hierarchyUniqueName;
     args.QueryType = MetadataQueryType.GetHierarchy;
     return args;
 }
        //public static MemberChoiceQuery CreateGetChildrenMembersQueryArgs(String connectionString, String cubeName, String subCube, String hierarchyUniqueName, String memberUniqueName, String startLevelUniqueName, long begin, long count)
        //{
        //    MemberChoiceQuery args = new MemberChoiceQuery();
        //    args.Connection = connectionString;
        //    args.CubeName = cubeName;
        //    args.HierarchyUniqueName = hierarchyUniqueName;
        //    args.StartLevelUniqueName = startLevelUniqueName;
        //    args.QueryType = MemberChoiceQueryType.GetChildrenMembers;
        //    args.BeginIndex = begin;
        //    args.Count = count;
        //    args.MemberUniqueName = memberUniqueName;
        //    args.SubCube = subCube;
        //    return args;
        //}

        //public static MemberChoiceQuery CreateGetRootMembersArgs(String connectionString, String cubeName, String subCube, String hierarchyUniqueName, String startLevelUniqueName, long begin, long count)
        //{
        //    MemberChoiceQuery args = new MemberChoiceQuery();
        //    args.Connection = connectionString;
        //    args.CubeName = cubeName;
        //    args.HierarchyUniqueName = hierarchyUniqueName;
        //    args.StartLevelUniqueName = startLevelUniqueName;
        //    args.QueryType = MemberChoiceQueryType.GetRootMembers;
        //    args.BeginIndex = begin;
        //    args.Count = count;
        //    args.SubCube = subCube;
        //    return args;
        //}

        //public static MemberChoiceQuery CreateLoadSetWithAscendantsArgs(String connectionString, String cubeName, String subCube, String hierarchyUniqueName, String set)
        //{
        //    MemberChoiceQuery args = new MemberChoiceQuery();
        //    args.Connection = connectionString;
        //    args.CubeName = cubeName;
        //    args.HierarchyUniqueName = hierarchyUniqueName;
        //    args.QueryType = MemberChoiceQueryType.LoadSetWithAscendants;
        //    args.Set = set;
        //    args.SubCube = subCube;
        //    return args;
        //}

        //public static MemberChoiceQuery CreateGetRootMembersCountArgs(String connectionString, String cubeName, String subCube, String hierarchyUniqueName, String startLevelUniqueName)
        //{
        //    MemberChoiceQuery args = new MemberChoiceQuery();
        //    args.Connection = connectionString;
        //    args.CubeName = cubeName;
        //    args.HierarchyUniqueName = hierarchyUniqueName;
        //    args.StartLevelUniqueName = startLevelUniqueName;
        //    args.QueryType = MemberChoiceQueryType.GetRootMembersCount;
        //    args.SubCube = subCube;
        //    return args;
        //}

        //public static MemberChoiceQuery CreateGetMemberArgs(String connectionString, String cubeName, String subCube, String memberUniqueName)
        //{
        //    MemberChoiceQuery args = new MemberChoiceQuery();
        //    args.Connection = connectionString;
        //    args.CubeName = cubeName;
        //    args.MemberUniqueName = memberUniqueName;
        //    args.QueryType = MemberChoiceQueryType.GetMember;
        //    args.SubCube = subCube;
        //    return args;
        //}

        //public static MemberChoiceQuery CreateGetMembersArgs(String connectionString, String cubeName, String subCube, String set)
        //{
        //    MemberChoiceQuery args = new MemberChoiceQuery();
        //    args.Connection = connectionString;
        //    args.CubeName = cubeName;
        //    args.Set = set;
        //    args.QueryType = MemberChoiceQueryType.GetMembers;
        //    args.SubCube = subCube;
        //    return args;
        //}

        //public static MemberChoiceQuery CreateFindMembersArgs(String connectionString, String cubeName, String subCube, String hierarchyUniqueName, String startLevelUniqueName, FilterOperationBase filter)
        //{
        //    MemberChoiceQuery args = new MemberChoiceQuery();
        //    args.Connection = connectionString;
        //    args.CubeName = cubeName;
        //    args.HierarchyUniqueName = hierarchyUniqueName;
        //    args.StartLevelUniqueName = startLevelUniqueName;
        //    args.QueryType = MemberChoiceQueryType.FindMembers;
        //    args.SubCube = subCube;
        //    args.Filter = filter;
        //    return args;
        //}

        //public static MemberChoiceQuery CreateGetAscendantsArgs(String connectionString, String cubeName, String subCube, String hierarchyUniqueName, String startLevelUniqueName, String memberUniqueName)
        //{
        //    MemberChoiceQuery args = new MemberChoiceQuery();
        //    args.Connection = connectionString;
        //    args.CubeName = cubeName;
        //    args.HierarchyUniqueName = hierarchyUniqueName;
        //    args.StartLevelUniqueName = startLevelUniqueName;
        //    args.QueryType = MemberChoiceQueryType.GetAscendants;
        //    args.MemberUniqueName = memberUniqueName;
        //    args.SubCube = subCube;
        //    return args;
        //}

        public static MetadataQuery CreateLoadLevelPropertiesArgs(String connectionString, String cubeName, String dimensionUniqueName, String hierarchyUniqueName, String levelUniqueName)
        {
            MetadataQuery args = new MetadataQuery();
            args.Connection = connectionString;
            args.CubeName = cubeName;
            args.DimensionUniqueName = dimensionUniqueName;
            args.HierarchyUniqueName = hierarchyUniqueName;
            args.LevelUniqueName = levelUniqueName;
            args.QueryType = MetadataQueryType.GetLevelProperties;
            return args;
        }