internal bool TryGetDimensionNodeForRole(string currentLanguage, string currentLabelRole, string roleId, out DimensionNode topLevelNode) { topLevelNode = null; DefinitionLink dl = definitionLinks[roleId] as DefinitionLink; if (dl != null) { string label = dl.Title; topLevelNode = new DimensionNode(label); topLevelNode.MyDefinitionLink = dl; if (dl.HypercubeLocatorsHrefs.Count > 0) { foreach (string hypercubeHref in dl.HypercubeLocatorsHrefs) { DimensionNode hyperCubeNode; if (dl.TryGetHypercubeNode(currentLanguage, currentLabelRole, this.definitionLinks, hypercubeHref, false, out hyperCubeNode)) { topLevelNode.AddChild(hyperCubeNode); } } } else { //we might have to build the dimension nodes by itself... if (dl.DimensionLocatorsHrefs.Count > 0) { foreach (string dimHref in dl.DimensionLocatorsHrefs) { DefinitionLocator dloc; if (!dl.TryGetLocator(dimHref, out dloc)) { return(false); } DimensionNode dn = dloc.CreateDimensionNode(currentLanguage, currentLabelRole, null, dimHref, dl, true, definitionLinks, null, null, true, false); if (dn != null) { topLevelNode.AddChild(dn); } } } } } return(topLevelNode != null); }
internal bool TryGetMeasureDimensionNodesForRole(string currentLanguage, string currentLabelRole, string roleId, Taxonomy tax, out DimensionNode topLevelNode) { topLevelNode = null; DefinitionLink dl = definitionLinks[roleId] as DefinitionLink; if (dl != null) { string label = dl.Title; topLevelNode = new DimensionNode(label); topLevelNode.MyDefinitionLink = dl; if (dl.HypercubeLocatorsHrefs.Count > 0) { foreach (string hypercubeHref in dl.HypercubeLocatorsHrefs) { List <DimensionNode> dns; dl.BuildMeasureElementTreeForHypercubeId(tax, hypercubeHref, false, out dns); if (dns != null) { foreach (DimensionNode dn in dns) { topLevelNode.AddChild(dn); } } } } } return(topLevelNode != null); }
internal bool TryGetMeasureDimensionNodesForRole(string currentLanguage, string currentLabelRole, string roleId, Taxonomy tax, out DimensionNode topLevelNode) { topLevelNode = null; DefinitionLink dl = definitionLinks[roleId] as DefinitionLink; if (dl != null) { string label = dl.Title; topLevelNode = new DimensionNode(label); topLevelNode.MyDefinitionLink = dl; if (dl.HypercubeLocatorsHrefs.Count > 0) { foreach (string hypercubeHref in dl.HypercubeLocatorsHrefs) { List<DimensionNode> dns ; dl.BuildMeasureElementTreeForHypercubeId( tax, hypercubeHref, false, out dns); if( dns != null) { foreach (DimensionNode dn in dns) { topLevelNode.AddChild(dn); } } } } } return topLevelNode != null; }
/// <summary> /// Retrieves the segment and scenario dimension nodes for display. /// </summary> internal bool TryGetDimensionNodesForDisplay(string currentLanguage, string currentLabelRole, Hashtable presentationLinks, bool isSegment, bool allDimensions, Dictionary<string, RoleType> roleTypesDt, out Dictionary<string, DimensionNode> dimensionNodes) { dimensionNodes = new Dictionary<string, DimensionNode>(); foreach (DefinitionLink dl in this.definitionLinks.Values) { string label = dl.Title; if (roleTypesDt != null) { RoleType rt; if (roleTypesDt.TryGetValue(label, out rt)) { if (!string.IsNullOrEmpty(rt.Definition)) { label = rt.Definition; } } } DimensionNode topLevelNode = new DimensionNode(label); topLevelNode.MyDefinitionLink = dl; if (isSegment) { foreach (string hypercubeHref in dl.HypercubeLocatorsHrefs) { if (!allDimensions) { if ( presentationLinks!= null && presentationLinks.Contains(dl.Role)) { //if the hyper cube is part of the segment list or //if it part of the scenario list do not show it here //as we are going to show it in the element pane.... if (dl.segmentHypercubesHRef.Contains(hypercubeHref) || dl.scenarioHypercubesHref.Contains(hypercubeHref)) continue; } } DimensionNode hyperCubeNode; if (dl.TryGetHypercubeNode(currentLanguage, currentLabelRole, this.definitionLinks, hypercubeHref,false, out hyperCubeNode)) { topLevelNode.AddChild(hyperCubeNode); } } } else { foreach (string hypercubeHref in dl.HypercubeLocatorsHrefs) { //we want to show all the scenario dimensions and //and all the dimensions that are not associated with the segment if (dl.scenarioHypercubesHref.Contains(hypercubeHref) || !dl.segmentHypercubesHRef.Contains(hypercubeHref)) { DimensionNode hyperCubeNode; if (dl.TryGetHypercubeNode(currentLanguage, currentLabelRole, this.definitionLinks, hypercubeHref,false, out hyperCubeNode)) { topLevelNode.AddChild(hyperCubeNode); } } } } if (topLevelNode.Children != null && topLevelNode.Children.Count > 0) { dimensionNodes.Add(dl.Role, topLevelNode); } } return true; }
internal bool TryGetDimensionNodeForRole(string currentLanguage, string currentLabelRole, string roleId, out DimensionNode topLevelNode ) { topLevelNode = null; DefinitionLink dl = definitionLinks[roleId] as DefinitionLink; if( dl != null ) { string label = dl.Title; topLevelNode = new DimensionNode(label); topLevelNode.MyDefinitionLink = dl; if (dl.HypercubeLocatorsHrefs.Count > 0) { foreach (string hypercubeHref in dl.HypercubeLocatorsHrefs) { DimensionNode hyperCubeNode; if (dl.TryGetHypercubeNode(currentLanguage, currentLabelRole, this.definitionLinks, hypercubeHref,false, out hyperCubeNode)) { topLevelNode.AddChild(hyperCubeNode); } } } else { //we might have to build the dimension nodes by itself... if (dl.DimensionLocatorsHrefs.Count > 0) { foreach (string dimHref in dl.DimensionLocatorsHrefs) { DefinitionLocator dloc; if (!dl.TryGetLocator(dimHref, out dloc)) return false; DimensionNode dn = dloc.CreateDimensionNode(currentLanguage, currentLabelRole, null, dimHref, dl, true, definitionLinks, null, null, true, false); if (dn != null) { topLevelNode.AddChild(dn); } } } } } return topLevelNode != null; }
/// <summary> /// Retrieves the segment and scenario dimension nodes for display. /// </summary> internal bool TryGetDimensionNodesForDisplay(string currentLanguage, string currentLabelRole, Hashtable presentationLinks, bool isSegment, bool allDimensions, Dictionary <string, RoleType> roleTypesDt, out Dictionary <string, DimensionNode> dimensionNodes) { dimensionNodes = new Dictionary <string, DimensionNode>(); foreach (DefinitionLink dl in this.definitionLinks.Values) { string label = dl.Title; if (roleTypesDt != null) { RoleType rt; if (roleTypesDt.TryGetValue(label, out rt)) { if (!string.IsNullOrEmpty(rt.Definition)) { label = rt.Definition; } } } DimensionNode topLevelNode = new DimensionNode(label); topLevelNode.MyDefinitionLink = dl; if (isSegment) { foreach (string hypercubeHref in dl.HypercubeLocatorsHrefs) { if (!allDimensions) { if (presentationLinks != null && presentationLinks.Contains(dl.Role)) { //if the hyper cube is part of the segment list or //if it part of the scenario list do not show it here //as we are going to show it in the element pane.... if (dl.segmentHypercubesHRef.Contains(hypercubeHref) || dl.scenarioHypercubesHref.Contains(hypercubeHref)) { continue; } } } DimensionNode hyperCubeNode; if (dl.TryGetHypercubeNode(currentLanguage, currentLabelRole, this.definitionLinks, hypercubeHref, false, out hyperCubeNode)) { topLevelNode.AddChild(hyperCubeNode); } } } else { foreach (string hypercubeHref in dl.HypercubeLocatorsHrefs) { //we want to show all the scenario dimensions and //and all the dimensions that are not associated with the segment if (dl.scenarioHypercubesHref.Contains(hypercubeHref) || !dl.segmentHypercubesHRef.Contains(hypercubeHref)) { DimensionNode hyperCubeNode; if (dl.TryGetHypercubeNode(currentLanguage, currentLabelRole, this.definitionLinks, hypercubeHref, false, out hyperCubeNode)) { topLevelNode.AddChild(hyperCubeNode); } } } } if (topLevelNode.Children != null && topLevelNode.Children.Count > 0) { dimensionNodes.Add(dl.Role, topLevelNode); } } return(true); }