Пример #1
0
        public void TestGetMember()
        {
            HfmSession   hfmSession   = HfmHelper.CreateHfmSession();
            HfmDimension hfmDimension = hfmSession.GetDimension();
            var          ret          = hfmDimension.EnumMembers2(HfmDimensionType.Account);

            for (int index = 0; index < ret.Count && index < 20; index++)
            {
                DimensionMember member = ret[index];
                int             id     = hfmDimension.GetMemberID(HfmDimensionType.Account, member.MemberLabel);
                Assert.AreEqual(id, member.MemberID);
                string label = hfmDimension.GetMemberLabel(HfmDimensionType.Account, member.MemberID);
                Assert.AreEqual(label, member.MemberLabel);
            }
        }
Пример #2
0
        public List <DimensionMember> EnumMembers2(HfmDimensionType argDimensionType, string argMemberListName)
        {
            object count                 = null,
                   varMemberIDs          = null,
                   varParentIDs          = null,
                   valMemberLabels       = null,
                   varDescriptions       = null,
                   varNumChildren        = null,
                   varTotalMembersInEnum = null;

            HFMwDimension hfmwDimension = HfmDimensionTypeHelper.GetHFMwDimension(_HFMwSession, argDimensionType);

            count = hfmwDimension.EnumMembers2(tagPOVDEFAULTS.MEMBERNOTUSED, tagPOVDEFAULTS.MEMBERNOTUSED,
                                               tagPOVDEFAULTS.MEMBERNOTUSED,
                                               tagPOVDEFAULTS.MEMBERNOTUSED, argMemberListName, "", 0, 0,
                                               (int)tagWEBOM_METADATA_INFO_FLAGS.WEBOM_METADATA_INFO_ALL,
                                               ref varMemberIDs, ref varParentIDs, ref valMemberLabels, ref varDescriptions, ref varNumChildren,
                                               ref varTotalMembersInEnum);
            int total = (int)varTotalMembersInEnum;

            List <DimensionMember> retList = new List <DimensionMember>();

            for (int i = 0; i < total; i++)
            {
                DimensionMember dimensionMember = new DimensionMember();
                dimensionMember.MemberID = (int)((object[])varMemberIDs)[i];
                if (varParentIDs != null)
                {
                    dimensionMember.ParentID = (int)((object[])varParentIDs)[i];
                }
                dimensionMember.NumChildren = (int)((object[])varNumChildren)[i];
                dimensionMember.MemberLabel = ((object[])valMemberLabels)[i] as string;
                dimensionMember.Description = ((object[])varDescriptions)[i] as string;
                retList.Add(dimensionMember);
            }
            return(retList);
        }
Пример #3
0
        static void Main(string[] args)
        {
            // Preparation of Meta Data
            MetaDataManager metaDataManager = new MetaDataManager();
            List <Segment>  segments        = metaDataManager.GetSegments();

            Dictionary <Segment, HierarchyMetaData> metaData = new Dictionary <Segment, HierarchyMetaData>();

            foreach (Segment segment in segments)
            {
                metaData.Add(segment, new HierarchyMetaData(metaDataManager.GetHierarchyMembers(segment.Id)));
            }

            //List<TimeHierarchy> timeHierarchies = metaDataManager.GetTimeHierarchies();
            //Utility.PopulateLRValues(timeHierarchies);

            List <DimensionSelection> selections = new List <DimensionSelection>()
            {
                new DimensionSelection()
                {
                    SegmentID = 1, SelectedMembers = new List <int>()
                    {
                        1
                    }, Option = ExtendedMemberOption.SelectedAndAllChildern
                },
                new DimensionSelection()
                {
                    SegmentID = 2, SelectedMembers = new List <int>()
                    {
                        1
                    }, Option = ExtendedMemberOption.SelectedAndAllChildern
                }
                //,new DimensionSelection(){ SegmentID = 3, SelectedMembers = new List<int>(){ 1 }, Option = ExtendedMemberOption.SelectedAndAllChildern }
                //,new DimensionSelection(){ SegmentID = 4, SelectedMembers = new List<int>(){ 1 }, Option = ExtendedMemberOption.SelectedAndAllChildern }
            };

            selections = metaDataManager.ApplyDefaultSegmentMemberIDs(segments, selections);

            List <GLRecord> lstGLRecord = metaDataManager.GetSourceData();
            Dictionary <DimensionSelection, IAggregation <ExtendedHierarchyMember> > selectionAggregations = new Dictionary <DimensionSelection, IAggregation <ExtendedHierarchyMember> >();

            foreach (DimensionSelection selection in selections)
            {
                AggregationFactory <ExtendedHierarchyMember> aggregationFactory = new AggregationFactory <ExtendedHierarchyMember>(selection.SelectedMembers, metaData[segments.FirstOrDefault(x => x.Id == selection.SegmentID)].Members.ToList());
                IAggregation <ExtendedHierarchyMember>       aggregation        = aggregationFactory.Create(selection.Option);
                lstGLRecord.RemoveAll(x => !aggregation.RelevantLeafIDs.Contains(x.GLMembers.SegmentValues.FirstOrDefault(z => z.Key == selection.SegmentID).Value));
                selectionAggregations.Add(selection, aggregation);
            }

            foreach (KeyValuePair <DimensionSelection, IAggregation <ExtendedHierarchyMember> > selectionAggregation in selectionAggregations)
            {
                DimensionAggregationFactory <ExtendedHierarchyMember, HierarchyMemberAncestor> dimensionAggregationFactory =
                    new DimensionAggregationFactory <ExtendedHierarchyMember, HierarchyMemberAncestor>(selectionAggregation.Key.SegmentID, lstGLRecord, selectionAggregation.Value, metaData[segments.FirstOrDefault(x => x.Id == selectionAggregation.Key.SegmentID)].MemberAncestors.ToList());

                switch (selectionAggregation.Key.Option)
                {
                case ExtendedMemberOption.Leaves:
                default:
                    break;

                case ExtendedMemberOption.Selected:
                    if (lstGLRecord.Select(x => x.GLMembers.SegmentValues.FirstOrDefault(z => z.Key == selectionAggregation.Key.SegmentID).Value).Except(selectionAggregation.Value.DisplayMembers.Select(x => x.Id)).Count() > 0)
                    {
                        foreach (ExtendedHierarchyMember extendedHierarchyMember in selectionAggregation.Value.DisplayMembers)
                        {
                            DimensionMember dimensionMember = new DimensionMember(extendedHierarchyMember);
                            dimensionMember.Accept(dimensionAggregationFactory.Create(CompositionType.Part));
                        }
                    }
                    break;

                case ExtendedMemberOption.Children:
                case ExtendedMemberOption.AllChildren:
                case ExtendedMemberOption.SelectedAndChildren:
                case ExtendedMemberOption.SelectedAndAllChildern:
                case ExtendedMemberOption.SelectedAndLeaves:
                case ExtendedMemberOption.SelectedAndParents:
                    int maxDepth = selectionAggregation.Value.DisplayMembers.Where(x => x.MemberType == MemberType.Rollup).Max(z => z.Level);
                    int minDepth = selectionAggregation.Value.DisplayMembers.Where(x => x.MemberType == MemberType.Rollup).Min(z => z.Level);
                    for (int level = maxDepth; level >= minDepth; level--)
                    {
                        foreach (ExtendedHierarchyMember extendedHierarchyMember in selectionAggregation.Value.DisplayMembers.Where(x => x.MemberType == MemberType.Rollup && x.Level == level))
                        {
                            if (!selectionAggregation.Value.DisplayMembers.Any(x => x.MemberType == MemberType.Rollup && (x.ParentId == extendedHierarchyMember.Id)))
                            {
                                DimensionMember dimensionMember = new DimensionMember(extendedHierarchyMember);
                                dimensionMember.Accept(dimensionAggregationFactory.Create(CompositionType.Part));
                            }
                            else
                            {
                                DimensionWholePartHierarchy dimensionWholePartHierarchy = new DimensionWholePartHierarchy(selectionAggregation.Value.DisplayMembers.Where(x => x.ParentId == extendedHierarchyMember.Id || x.Id == extendedHierarchyMember.Id).ToList());
                                dimensionWholePartHierarchy.Accept(dimensionAggregationFactory.Create(CompositionType.Composite));
                            }
                        }
                    }
                    break;
                }
                lstGLRecord.RemoveAll(x => selectionAggregation.Value.PostProcessDeleteMemberIDs.Contains(x.GLMembers.SegmentValues.FirstOrDefault(z => z.Key == selectionAggregation.Key.SegmentID).Value));
            }

            Utility.Export(lstGLRecord, segments, metaData);
        }
Пример #4
0
        private List <LogicalModel.Base.QualifiedItem> GetMembers(DimensionMember FilterMember)
        {
            var result        = new List <Hierarchy <LogicalModel.Base.QualifiedItem> >();
            var resultx       = new List <LogicalModel.Base.QualifiedItem>();
            var hierarchynode = Taxonomy.Hierarchies.FirstOrDefault(i => i.Item.Role == FilterMember.ArcRole);
            var membernode    = hierarchynode.FirstOrDefault(i => i.Item.FullName == FilterMember.QName.Content);
            var axes          = FilterMember.Axis.ToLower();

            switch (axes)
            {
            case "ancestor":
                result = membernode.Parents();
                break;

            case "ancestor-or-self":
                result = membernode.Parents();
                result.Add(membernode);
                break;

            case "attribute":
                throw new NotImplementedException("Dimension Filter Member axis " + axes + " is not implemented!");

            case "child":
                result = membernode.Children;
                break;

            case "descendant":
                result = membernode.Descendant();
                break;

            case "descendant-or-self":
                result = membernode.All();
                break;

            case "following":
                throw new NotImplementedException("Dimension Filter Member axis " + axes + " is not implemented!");

            case "following-sibling":
                throw new NotImplementedException("Dimension Filter Member axis " + axes + " is not implemented!");

            case "namespace":
                throw new NotImplementedException("Dimension Filter Member axis " + axes + " is not implemented!");

            case "parent":
                result.Add(membernode.Parent);
                break;

            case "preceding":
                throw new NotImplementedException("Dimension Filter Member axis " + axes + " is not implemented!");

            case "preceding-sibling":
                throw new NotImplementedException("Dimension Filter Member axis " + axes + " is not implemented!");

            case "self":
                result.Add(membernode);

                break;

            default:
                Console.WriteLine("Default case");
                break;
            }
            resultx = result.Select(i => i.Item).ToList();
            return(resultx);
        }