internal static DefinitionLocatorRelationshipInfo CreateObj(string label, string priority, float origOrder, float orderArg, string prefLabel, bool isProhibited, string targetRole, bool?isClosed, bool?isUsable, bool?isall, bool?isScenario, bool?isRequiresElement, bool?isDefault, DimensionNode.NodeType nodeType) { DefinitionLocatorRelationshipInfo obj = new DefinitionLocatorRelationshipInfo(); obj.Label = label; obj.IsProhibited = isProhibited; obj.PrefLabel = prefLabel; obj.Order = orderArg; obj.OrigOrder = origOrder; obj.Priority = Convert.ToInt32(priority); obj.NodeInfo = DefinitionNodeInfoBase.CreateDefinitionNodeInfo(isClosed, isUsable, isall, isScenario, isDefault, isRequiresElement, targetRole, nodeType); if (prefLabel != null) { int lastSlash = prefLabel.LastIndexOf("/") + 1; obj.PrefLabel = prefLabel.Substring(lastSlash, prefLabel.Length - lastSlash); } return(obj); }
/// <summary> /// Creates a new instance of <see cref="DefinitionLocatorRelationshipInfo"/>. /// </summary> public DefinitionLocatorRelationshipInfo(DimensionNode.NodeType nodeType) { switch (nodeType) { case DimensionNode.NodeType.Dimension: this.NodeInfo = new DefinitionNodeInfoDimension(null); break; case DimensionNode.NodeType.Hypercube: this.NodeInfo = new DefinitionNodeInfoHypercube(); break; case DimensionNode.NodeType.Item: this.NodeInfo = new DefinitionNodeInfoMember(); break; } }
internal void AddChild(DefinitionLocator childPl, float orderArg, string prefLabel, string targetRole, bool?isClosed, bool?isUsable, bool?isall, bool?isScenario, bool?isDefault, bool?isRequiresElement, DimensionNode.NodeType nodeType, string priority, bool isProhibited) { childPl.AddParent(this); if (this.childLocatorsByHRef == null) { this.childLocatorsByHRef = new HybridDictionary(); this.childDisplayOrder = new HybridDictionary(); } float dispOrder = orderArg; DefinitionLocatorRelationshipInfo newRelation = DefinitionLocatorRelationshipInfo.CreateObj(prefLabel, priority, orderArg, dispOrder, prefLabel, isProhibited, targetRole, isClosed, isUsable, isall, isScenario, isRequiresElement, isDefault, nodeType); ChildDefinitionLocator cpl = childLocatorsByHRef[childPl.HRef] as ChildDefinitionLocator; if (cpl == null) { // doesn't exist in either the href table or the order table cpl = new ChildDefinitionLocator(childPl.HRef, newRelation); childLocatorsByHRef.Add(childPl.HRef, cpl); // keep these separate so they don't impact each other ChildDefinitionLocator cplOrder = new ChildDefinitionLocator(cpl); } else { // the cpl already exists, append the existing relation info cpl.AddRelationship(newRelation); } }
/// <summary> /// /// </summary> /// <param name="isClosed"></param> /// <param name="isUsable"></param> /// <param name="isall"></param> /// <param name="isScenario"></param> /// <param name="isDefault"></param> /// <param name="isRequired"></param> /// <param name="targetRole"></param> /// <param name="nodeType"></param> /// <returns></returns> public static DefinitionNodeInfoBase CreateDefinitionNodeInfo(bool?isClosed, bool?isUsable, bool?isall, bool?isScenario, bool?isDefault, bool?isRequired, string targetRole, DimensionNode.NodeType nodeType) { DefinitionNodeInfoBase ret = null; switch (nodeType) { case DimensionNode.NodeType.Dimension: ret = new DefinitionNodeInfoDimension(targetRole); break; case DimensionNode.NodeType.Hypercube: ret = new DefinitionNodeInfoHypercube(isClosed, isall, isScenario, targetRole); break; case DimensionNode.NodeType.Item: ret = new DefinitionNodeInfoMember(isUsable, isDefault, isRequired, targetRole); break; } return(ret); }