/// <summary> /// Возвращает список кубов /// </summary> /// <returns></returns> public Dictionary <String, CubeDefInfo> GetCubes() { try { System.Diagnostics.Trace.TraceInformation("{0} Ranet.Olap.Core.Providers.OlapMetadataProvider Getting Cubes List Started", DateTime.Now.ToString()); Dictionary <String, CubeDefInfo> list = new Dictionary <String, CubeDefInfo>(); AdomdConnection conn = GetConnection(); foreach (CubeDef cube in conn.Cubes) { CubeDefInfo info = InfoHelper.CreateCubeInfo(cube); if (info != null) { if (!list.ContainsKey(info.Name)) { list.Add(info.Name, info); } } } return(list); } finally { System.Diagnostics.Trace.TraceInformation("{0} Ranet.Olap.Core.Providers.OlapMetadataProvider Getting Cubes List Completed", DateTime.Now.ToString()); } }
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)); }
private void ApplyItemsSelection() { CubeTreeNode node = null; node = Tree.SelectedItem as CubeTreeNode; //Запоминаем выбранный элемент m_SelectedInfo = node != null ? node.Info as CubeDefInfo : null; }
public void InitializeMetadata(CubeDefInfo cubeInfo) { List <CoordinateItem> list = new List <CoordinateItem>(); if (cubeInfo != null) { foreach (DimensionInfo dim_Info in cubeInfo.Dimensions) { foreach (HierarchyInfo hier_info in dim_Info.Hierarchies) { CoordinateItem item = new CoordinateItem(dim_Info.UniqueName, hier_info.UniqueName); item.Hierarchy_Custom_AllMemberUniqueName = hier_info.Custom_AllMemberUniqueName; item.DimensionCaption = dim_Info.Caption; item.HierarchyCaption = hier_info.Caption; if (m_Slice != null && m_Slice.ContainsKey(hier_info.UniqueName)) { MemberWrap wrap = m_Slice[hier_info.UniqueName]; item.SourceMember = wrap; item.DestMember = wrap; // Если в приемник попадает элемент типа ALL, то // пытаемся заменить его на DefaultMember. Если же DefaultMember совпадет в итоге с AllMember // то в приемник устанавливаем Unknown элемент if (!String.IsNullOrEmpty(hier_info.Custom_AllMemberUniqueName) && hier_info.Custom_AllMemberUniqueName == wrap.UniqueName) { if (!String.IsNullOrEmpty(hier_info.DefaultMember) && hier_info.DefaultMember == hier_info.Custom_AllMemberUniqueName) { MemberWrap unk_wrap = new MemberWrap(); unk_wrap.IsUnknownMember = true; item.DestMember = unk_wrap; } else { if (!String.IsNullOrEmpty(hier_info.DefaultMember)) { MemberWrap def_wrap = new MemberWrap(); def_wrap.IsDefaultMember = true; item.DestMember = def_wrap; } } } } list.Add(item); } } } m_Coordinates.Initialize(list); }
public CubeItemControl(CubeDefInfo info, bool useIcon) : base(useIcon) { if (info == null) { throw new ArgumentNullException("info"); } m_Info = info; Text = info.Caption; if (useIcon) { Icon = UriResources.Images.Cube16; } }
void OlapDataLoader_DataLoaded(object sender, DataLoaderEventArgs e) { bool stopWaiting = true; try { if (e.Error != null) { LogManager.LogError(this, e.Error.ToString()); return; } if (e.Result.ContentType == InvokeContentType.Error) { LogManager.LogError(this, e.Result.Content); return; } MdxQueryArgs mdx_args = e.UserState as MdxQueryArgs; if (mdx_args != null) { CellSetData cs_descr = CellSetData.Deserialize(e.Result.Content); InitializeTuple(cs_descr); // Зачитываем метаданные куба в целом stopWaiting = false; LogManager.LogInformation(this, this.Name + " - Loading cube metadata."); MetadataQuery args = CommandHelper.CreateGetCubeMetadataArgs(Connection, CubeName, MetadataQueryType.GetCubeMetadata_AllMembers); OlapDataLoader.LoadData(args, args); } MetadataQuery metadata_args = e.UserState as MetadataQuery; if (metadata_args != null) { CubeDefInfo cs_descr = XmlSerializationUtility.XmlStr2Obj <CubeDefInfo>(e.Result.Content); m_CopyControl.InitializeMetadata(cs_descr); } } finally { if (stopWaiting) { IsWaiting = false; } } }
public void InitializeMetadata(CubeDefInfo cubeInfo) { comboNonEmptyBehavior.ItemsSource = null; m_NonEmptyBehavoirSource.Clear(); if (cubeInfo != null) { foreach (var info in cubeInfo.Measures) { // Не выводим вычисляемые меры if (String.IsNullOrEmpty(info.Expression)) { m_NonEmptyBehavoirSource.Add(new ComboBoxItemData() { Text = info.Name }); } } } comboNonEmptyBehavior.ItemsSource = m_NonEmptyBehavoirSource; }
/// <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); } }
public void Initialize(CubeDefInfo cubeInfo) { m_CubeInfo = cubeInfo; CreateMeasures(); }
public void Initialize(CubeDefInfo cubeInfo, Top_FilterWrapper wrapper) { comboMeasure.Initialize(cubeInfo); Initialize(wrapper); }
public void Initialize(CubeDefInfo cubeInfo) { comboMeasure.Initialize(cubeInfo); }
public void Initialize(CubeDefInfo cubeInfo) { m_CubeInfo = cubeInfo; m_TopFilterControl.Initialize(cubeInfo); m_ValueFilterControl.Initialize(cubeInfo); }
public void Initialize(Dictionary <String, CalculationInfoBase> members, Dictionary <String, CalculationInfoBase> sets, CubeDefInfo cubeInfo, String measureGroupName) { m_Members = members; m_Sets = sets; m_ClearButton.IsEnabled = (Members.Count + Sets.Count) > 0; MemberCtrl.InitializeMetadata(cubeInfo); if (CubeBrowser.CubeInfo != cubeInfo) { CubeBrowser.Initialize(cubeInfo); } CubeBrowser.MeasureGroupName = measureGroupName; MemberCtrl.IsEnabled = SetCtrl.IsEnabled = false; foreach (CalculationInfoBase info in Members.Values) { CalcMemberInfo member = info as CalcMemberInfo; if (member != null) { // Добавляем в список стандартных пользовательские строки форматирования if (!String.IsNullOrEmpty(member.FormatString)) { if (!FormatStrings.Contains(member.FormatString)) { FormatStrings.Add(member.FormatString); } } } } MemberCtrl.FormatStrings = FormatStrings; MembersList.Initialize(members, sets); RefreshMetadataTree(); //CalcMemberInfo memberInfo = MembersList.CurrentObject as CalcMemberInfo; //if (memberInfo != null) //{ // MemberCtrl.Initialize(memberInfo); //} }
public void Initialize(CubeDefInfo cubeInfo) { Groups.Clear(); Groups.Add(RootGroup.Name, RootGroup); if (cubeInfo != null) { // Создаем описатели групп мер foreach (MeasureGroupInfo groupInfo in cubeInfo.MeasureGroups) { if (!Groups.ContainsKey(groupInfo.Name)) { Groups.Add(groupInfo.Name, new GroupInfo(groupInfo.Name, groupInfo.Caption)); } } foreach (MeasureInfo measureInfo in cubeInfo.Measures) { String groupName = measureInfo.MeasureGroup; // Если папка указана, то добавлем в иерархию (если она не привязана к группе, то она попадает в корневую коллекцию папкок) // DisplayFolder может содержать иерархию папок, разделенную "\\" if (!String.IsNullOrEmpty(measureInfo.DisplayFolder)) { // Определяем группу, в которую входит данная папка (группы может и не быть) GroupInfo groupInfo = null; if (!String.IsNullOrEmpty(groupName) && Groups.ContainsKey(groupName)) { groupInfo = Groups[groupName]; } // Разбиваем полный путь на составляющие и создаем папку для каждой из них String[] folders_names = measureInfo.DisplayFolder.Split(new String[] { "\\" }, StringSplitOptions.RemoveEmptyEntries); if (folders_names != null) { String folderName = String.Empty; FolderInfo prev_folderInfo = null; foreach (String folderCaption in folders_names) { // Создаем узел для группы if (!String.IsNullOrEmpty(folderCaption)) { // Получаем имя папки для данного уровня if (!String.IsNullOrEmpty(folderName)) { folderName += "\\"; } folderName += folderCaption; // Пытаемся найти папку с данным именем. Если она не найдена, то создаем ее FolderInfo folderInfo = GetFolder(groupInfo != null ? groupInfo.Name : String.Empty, folderName); if (folderInfo == null) { // Создаем данную папку folderInfo = new FolderInfo(folderName, folderCaption); // Если предыдущая папка в иерархии известна, то добавляем в нее if (prev_folderInfo != null) { prev_folderInfo.Folders.Add(folderName, folderInfo); } else { // Если группа известна то добавляем в группу в коллекцию корневых, иначе просто в коллекцию корневых папок if (groupInfo != null) { groupInfo.Folders.Add(folderName, folderInfo); } else { RootGroup.Folders.Add(folderName, folderInfo); } } } prev_folderInfo = folderInfo; } } } } } } }
public CubeTreeNode(CubeDefInfo info) : base(info) { Icon = UriResources.Images.Cube16; }