Пример #1
0
        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);
        }
Пример #2
0
        /// <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;
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        /// <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);
        }