예제 #1
0
        public List <DimensionTreeModel> CreateTreeModel(HfmDimensionType argDimensionType)
        {
            List <DimensionTreeModel> treeModelList = new List <DimensionTreeModel>();
            var          dimensionList = EnumMembers2(argDimensionType);
            HsvMetadata  hsvMetadata   = _HsvSession.Metadata as HsvMetadata;
            IHsvTreeInfo treeInfo      = (IHsvTreeInfo)hsvMetadata.Dimension[(short)argDimensionType];
            int          order         = 0;

            foreach (var member in dimensionList)
            {
                object parentIds;
                treeInfo.EnumParents(member.MemberID, out parentIds);
                foreach (int parentId in (int[])parentIds)
                {
                    DimensionTreeModel treeModel = new DimensionTreeModel();
                    treeModel.Type = HfmDimensionTypeHelper.GetDimensionTypeName(argDimensionType);
                    if (parentId == -1)
                    {
                        treeModel.ParentCode = "ROOT";
                    }
                    else
                    {
                        string parentLabel;
                        treeInfo.GetLabel(parentId, out parentLabel);
                        treeModel.ParentCode = parentLabel;
                    }
                    treeModel.Code     = member.MemberLabel;
                    treeModel.CodeName = member.Description;
                    treeModel.Order    = ++order;
                    treeModelList.Add(treeModel);
                }
            }
            return(treeModelList);
        }
예제 #2
0
        private int MemberLabel2Id(HfmDimensionType argDimensionType, DataRow argDataRow)
        {
            string fieldName   = HfmDimensionTypeHelper.GetDimensionFieldName(argDimensionType);
            string memberLabel = argDataRow[fieldName].ToString();

            return(MemberLabel2Id(argDimensionType, memberLabel));
        }
예제 #3
0
        private List <HfmDimensionType> GetEmptyMembers(DataRow argDataRow)
        {
            List <HfmDimensionType> emptyMemberList = new List <HfmDimensionType>();

            foreach (var dimensionType in HfmDimensionTypeHelper.HfmDimensionFieldList)
            {
                string fieldName   = HfmDimensionTypeHelper.GetDimensionFieldName(dimensionType);
                string memberLabel = argDataRow[fieldName].ToString();
                if (string.IsNullOrEmpty(memberLabel))
                {
                    emptyMemberList.Add(dimensionType);
                }
            }
            return(emptyMemberList);
        }
예제 #4
0
        public DataTable ExpandData(DataRow argDataRow, DataTable argTempTable)
        {
            DataTable retDataTable = argTempTable.Clone();
            List <HfmDimensionType> emptyMemberList = GetEmptyMembers(argDataRow);

            if (emptyMemberList.Count == 0)
            {
                retDataTable.ImportRow(argDataRow);
                return(retDataTable);
            }

            Dictionary <HfmDimensionType, int> memberIdDictionary = GetMemberIds(argDataRow);
            HfmDimensionType emptyMember          = emptyMemberList[0];
            string           emptyMemberFieldName = HfmDimensionTypeHelper.GetDimensionFieldName(emptyMember);

            int[] memberIds = GetMembersThatHaveData(memberIdDictionary, emptyMember, argDataRow[emptyMemberFieldName].ToString());
            foreach (int memberId in memberIds)
            {
                string label = HfmSession.GetDimension().GetMemberLabel(emptyMember, memberId);
                //if (label == "[ICP None]" || label == "[None]")
                //{
                //    continue;
                //}

                argTempTable.ImportRow(argDataRow);
                argTempTable.Rows[argTempTable.Rows.Count - 1][emptyMemberFieldName] = label;
            }
            if (emptyMemberList.Count == 1)
            {
                retDataTable.Merge(argTempTable);
            }
            else
            {
                DataTable expandTable = ExpandData(argTempTable);
                retDataTable.Merge(expandTable);
            }
            return(retDataTable);
        }
예제 #5
0
        private Dictionary <HfmDimensionType, int> GetMemberIds(DataRow argDataRow)
        {
            Dictionary <HfmDimensionType, int> memberIdDictionary = new Dictionary <HfmDimensionType, int>();

            foreach (var dimensionType in HfmDimensionTypeHelper.HfmDimensionFieldList)
            {
                string member      = HfmDimensionTypeHelper.GetDimensionFieldName(dimensionType);
                string memberLabel = argDataRow[member].ToString();
                if (string.IsNullOrEmpty(memberLabel))
                {
                    memberIdDictionary.Add(dimensionType, (short)tagPOVDEFAULTS.MEMBERNOTUSED);
                }
                else
                {
                    memberIdDictionary.Add(dimensionType, MemberLabel2Id(dimensionType, memberLabel));
                }
            }
            string entityLabel = argDataRow[HfmDimensionTypeHelper.GetDimensionFieldName(HfmDimensionType.Entity)].ToString();

            this.HfmSession.GetDimension().GetDefaultParentID(entityLabel);
            memberIdDictionary.Add(HfmDimensionType.Parent, HfmSession.GetDimension().GetDefaultParentID(entityLabel));
            return(memberIdDictionary);
        }
예제 #6
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);
        }
예제 #7
0
        public void GetCells(DataTable argDataTable)
        {
            try
            {
                if (argDataTable == null || argDataTable.Rows.Count == 0)
                {
                    return;
                }
                int    Count                 = argDataTable.Rows.Count;
                int[]  varalScenario         = new int[Count];
                int[]  varalYear             = new int[Count];
                int[]  varalPeriod           = new int[Count];
                int[]  varalView             = new int[Count];
                int[]  varalEntity           = new int[Count];
                int[]  varalParent           = new int[Count];
                int[]  varalValue            = new int[Count];
                int[]  varalAccount          = new int[Count];
                int[]  varalICP              = new int[Count];
                int[]  varalCustom1          = new int[Count];
                int[]  varalCustom2          = new int[Count];
                int[]  varalCustom3          = new int[Count];
                int[]  varalCustom4          = new int[Count];
                var    hfmDimension          = this.HfmSession.GetDimension();
                string entityFieldName       = HfmDimensionTypeHelper.GetDimensionFieldName(HfmDimensionType.Entity);
                string entityParentFieldName = HfmDimensionTypeHelper.GetDimensionFieldName(HfmDimensionType.Parent);
                for (int i = 0; i < Count; i++)
                {
                    DataRow dataRow = argDataTable.Rows[i];
                    varalScenario[i] = MemberLabel2Id(HfmDimensionType.Scenario, dataRow);
                    varalYear[i]     = MemberLabel2Id(HfmDimensionType.Year, dataRow);
                    varalPeriod[i]   = MemberLabel2Id(HfmDimensionType.Period, dataRow);
                    varalView[i]     = MemberLabel2Id(HfmDimensionType.View, dataRow);
                    varalEntity[i]   = MemberLabel2Id(HfmDimensionType.Entity, dataRow);
                    string entityLabel = dataRow[entityFieldName].ToString();
                    string parentLabel = dataRow[entityParentFieldName].ToString();
                    if (!string.IsNullOrEmpty(parentLabel))
                    {
                        varalParent[i] = MemberLabel2Id(HfmDimensionType.Entity, parentLabel);
                    }
                    else
                    {
                        varalParent[i] = hfmDimension.GetDefaultParentID(entityLabel);
                    }

                    varalValue[i]   = MemberLabel2Id(HfmDimensionType.Value, dataRow);
                    varalAccount[i] = MemberLabel2Id(HfmDimensionType.Account, dataRow);
                    varalICP[i]     = MemberLabel2Id(HfmDimensionType.Icp, dataRow);
                    varalCustom1[i] = MemberLabel2Id(HfmDimensionType.Custom1, dataRow);
                    varalCustom2[i] = MemberLabel2Id(HfmDimensionType.Custom2, dataRow);
                    varalCustom3[i] = MemberLabel2Id(HfmDimensionType.Custom3, dataRow);
                    varalCustom4[i] = MemberLabel2Id(HfmDimensionType.Custom4, dataRow);
                }
                object pvaradData   = null;
                object pvaralStatus = null;

                _HsvSession.Data.GetCells(varalScenario, varalYear, varalPeriod, varalView, varalEntity, varalParent,
                                          varalValue, varalAccount, varalICP, varalCustom1, varalCustom2, varalCustom3, varalCustom4,
                                          out pvaradData, out pvaralStatus);

                for (int i = 0; i < Count; i++)
                {
                    DataRow dataRow = argDataTable.Rows[i];
                    dataRow["VALUE"] = ((double[])pvaradData)[i];
                    if ((((int[])pvaralStatus)[i] & (int)tagCALCSTATUSLOWBITS.CELLSTATUS_NODATA) ==
                        (int)tagCALCSTATUSLOWBITS.CELLSTATUS_NODATA)
                    {
                        dataRow["STATE"] = -1;
                    }
                    else
                    {
                        dataRow["STATE"] = ((Int32[])pvaralStatus)[i];
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(HfmCommon.GetHfmErrorMessage(ex.Message));
            }
        }