internal CategorySchemeUtility(CategorySchemeTypes categorySchemeType, bool completeOrSummaryFlag, string agencyId, string language, Header header, string outputFolder, Dictionary<string, string> DictIndicator, Dictionary<string, string> DictIndicatorMapping, DIConnection DIConnection, DIQueries DIQueries)
            : base(agencyId, language, header, outputFolder)
        {
            this._categorySchemeType = categorySchemeType;
            this._completeOrSummaryFlag = completeOrSummaryFlag;
            this._diConnection = DIConnection;
            this._diQueries = DIQueries;

            if (string.IsNullOrEmpty(language))
            {
                this.Language = this._diQueries.LanguageCode.Substring(1);
                this._multiLanguageHandlingRequired = true;
            }
            else
            {
                if (this._diConnection.IsValidDILanguage(this._diQueries.DataPrefix, language))
                {
                    this.Language = language;
                    this._multiLanguageHandlingRequired = false;
                }
                else
                {
                    this.Language = this._diQueries.LanguageCode.Substring(1);
                    this._multiLanguageHandlingRequired = false;
                }
            }

            this._dictIndicator = DictIndicator;
            this._dictIndicatorMapping = DictIndicatorMapping;
        }
        private void Handle_All_Languages_For_Indicators(CategorySchemeTypes categorySchemeType, CategoryType Category, string IndicatorGId)
        {
            DataTable DtTable;
            DIQueries DIQueriesLanguage;
            string Query, Language;

            Query = string.Empty;

            if (this.MultiLanguageHandlingRequired)
            {
                foreach (DataRow LanguageRow in this.DIConnection.DILanguages(this.DIQueries.DataPrefix).Rows)
                {
                    Language = LanguageRow[DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Language.LanguageCode].ToString();

                    if (Language != this.DIQueries.LanguageCode.Substring(1))
                    {
                        DIQueriesLanguage = new DIQueries(this.DIQueries.DataPrefix, Language);
                        Query = DIQueriesLanguage.Indicators.GetIndicator(FilterFieldType.GId, IndicatorGId, FieldSelection.Light);

                        DtTable = this.DIConnection.ExecuteDataTable(Query);
                        if (DtTable.Rows.Count > 0)
                        {
                            Category.Name.Add(new TextType(Language, DtTable.Rows[0][Indicator.IndicatorName].ToString()));
                        }
                    }
                }
            }
        }
        private void Handle_All_Languages(CategorySchemeTypes categorySchemeType, CategoryType Category, string ICGId)
        {
            DataTable DtTable;
            string Query, Language;

            Query = string.Empty;

            if (this.MultiLanguageHandlingRequired)
            {
                foreach (DataRow LanguageRow in this.DIConnection.DILanguages(this.DIQueries.DataPrefix).Rows)
                {
                    Language = LanguageRow[DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Language.LanguageCode].ToString();
                    if (Language != this.DIQueries.LanguageCode.Substring(1))
                    {
                        Query = this.Get_Language_Specific_Query(categorySchemeType, FilterFieldType.GId, Constants.Apostophe + ICGId + Constants.Apostophe, Language);
                        DtTable = this.DIConnection.ExecuteDataTable(Query);
                        if (DtTable.Rows.Count > 0)
                        {
                            Category.Name.Add(new TextType(Language, DtTable.Rows[0][IndicatorClassifications.ICName].ToString()));
                        }
                    }
                }
            }
        }
        private string Get_Language_Specific_Query_For_Indicators(CategorySchemeTypes categorySchemeType, string filterText, string language)
        {
            string RetVal;
            DIQueries DIQueriesLanguage;

            RetVal = string.Empty;
            // 1. Creating language specific DIQueries object.
            DIQueriesLanguage = new DIQueries(this.DIQueries.DataPrefix, language);

            switch (categorySchemeType)
            {
                case CategorySchemeTypes.Sector:
                    RetVal = DIQueriesLanguage.Indicators.GetIndicatorByIC(ICType.Sector, filterText, FieldSelection.Light);
                    break;
                case CategorySchemeTypes.Goal:
                    RetVal = DIQueriesLanguage.Indicators.GetIndicatorByIC(ICType.Goal, filterText, FieldSelection.Light);
                    break;
                case CategorySchemeTypes.Theme:
                    RetVal = DIQueriesLanguage.Indicators.GetIndicatorByIC(ICType.Theme, filterText, FieldSelection.Light);
                    break;
                case CategorySchemeTypes.Source:
                    RetVal = DIQueriesLanguage.Indicators.GetIndicatorByIC(ICType.Source, filterText, FieldSelection.Light);
                    break;
                case CategorySchemeTypes.Convention:
                    RetVal = DIQueriesLanguage.Indicators.GetIndicatorByIC(ICType.Convention, filterText, FieldSelection.Light);
                    break;
                case CategorySchemeTypes.Framework:
                    RetVal = DIQueriesLanguage.Indicators.GetIndicatorByIC(ICType.CF, filterText, FieldSelection.Light);
                    break;
                case CategorySchemeTypes.Institution:
                    RetVal = DIQueriesLanguage.Indicators.GetIndicatorByIC(ICType.Institution, filterText, FieldSelection.Light);
                    break;
                default:
                    break;
            }

            return RetVal;
        }
        private string Get_File_Name(CategorySchemeTypes categorySchemeType)
        {
            string RetVal;

            RetVal = string.Empty;

            switch (categorySchemeType)
            {
                case CategorySchemeTypes.Sector:
                    RetVal = Constants.CategoryScheme.Sector.FileName;
                    break;
                case CategorySchemeTypes.Goal:
                    RetVal = Constants.CategoryScheme.Goal.FileName;
                    break;
                case CategorySchemeTypes.Theme:
                    RetVal = Constants.CategoryScheme.Theme.FileName;
                    break;
                case CategorySchemeTypes.Source:
                    RetVal = Constants.CategoryScheme.Source.FileName;
                    break;
                case CategorySchemeTypes.Convention:
                    RetVal = Constants.CategoryScheme.Convention.FileName;
                    break;
                case CategorySchemeTypes.Framework:
                    RetVal = Constants.CategoryScheme.Framework.FileName;
                    break;
                case CategorySchemeTypes.Institution:
                    RetVal = Constants.CategoryScheme.Institution.FileName;
                    break;
                default:
                    break;
            }

            return RetVal;
        }
        private void Add_Children_Categories(CategorySchemeTypes categorySchemeType, CategoryType ParentCategory, string ICParent_NId, DataTable DtICs)
        {
            CategoryType ChildCategory;
            string ICGId, ICNId, ICName, IndicatorNId, IndicatorGId, IndicatorName;
            DataTable DtIndicators;
            DataRow[] ICRows;

            ICRows = DtICs.Select(IndicatorClassifications.ICParent_NId + Constants.EqualsTo + ICParent_NId);

            if (ICRows.Length > 0)
            {
                foreach (DataRow DrICs in ICRows)
                {
                    ICNId = DrICs[IndicatorClassifications.ICNId].ToString();
                    ICGId = DrICs[IndicatorClassifications.ICGId].ToString();
                    ICName = DrICs[IndicatorClassifications.ICName].ToString();

                    ChildCategory = new CategoryType(ICGId, ICName, string.Empty, this.Language, null);
                    if (this.MultiLanguageHandlingRequired)
                    {
                        this.Handle_All_Languages(categorySchemeType, ChildCategory, ICGId);
                    }

                    this.Add_Annotation(ChildCategory, Constants.Annotations.CategoryType, Constants.Annotations.IC);
                    this.Add_Children_Categories(categorySchemeType, ChildCategory, ICNId, DtICs);
                    ParentCategory.Items.Add(ChildCategory);
                }
            }
            else
            {
                DtIndicators = this.DIConnection.ExecuteDataTable(this.Get_Language_Specific_Query_For_Indicators(categorySchemeType, ICParent_NId, this.Language));
                foreach (DataRow DrIndicators in DtIndicators.Rows)
                {
                    IndicatorNId = DrIndicators[Indicator.IndicatorNId].ToString();
                    IndicatorGId = DrIndicators[Indicator.IndicatorGId].ToString();
                    IndicatorName = DrIndicators[Indicator.IndicatorName].ToString();

                    if (this._dictIndicatorMapping == null || this._dictIndicatorMapping.Keys.Count == 0)
                    {
                        ChildCategory = new CategoryType(IndicatorGId, IndicatorName, string.Empty, this.Language, null);
                        if (this.MultiLanguageHandlingRequired)
                        {
                            this.Handle_All_Languages_For_Indicators(categorySchemeType, ChildCategory, IndicatorGId);
                        }

                        this.Add_Annotation(ChildCategory, Constants.Annotations.CategoryType, Constants.Annotations.Indicator);
                        ParentCategory.Items.Add(ChildCategory);
                    }
                    else
                    {
                        if (this._dictIndicatorMapping.ContainsKey(IndicatorGId))
                        {
                            ChildCategory = new CategoryType(this._dictIndicatorMapping[IndicatorGId], this._dictIndicator[this._dictIndicatorMapping[IndicatorGId]], string.Empty, Constants.DefaultLanguage, null);
                            this.Add_Annotation(ChildCategory, Constants.Annotations.CategoryType, Constants.Annotations.Indicator);
                            ParentCategory.Items.Add(ChildCategory);
                        }
                    }
                }
            }
        }
Esempio n. 7
0
        public static List<ArtefactInfo> Generate_CategoryScheme(SDMXSchemaType schemaType, CategorySchemeTypes categorySchemeType, string agencyId, string language, Header header, string outputFolder, Dictionary<string, string> DictIndicator, Dictionary<string, string> DictIndicatorMapping, DIConnection DIConnection, DIQueries DIQueries)
        {
            List<ArtefactInfo> RetVal;
            CategorySchemeUtility CategorySchemeUtility;

            RetVal = null;
            CategorySchemeUtility = null;

            try
            {
                CategorySchemeUtility = new CategorySchemeUtility(categorySchemeType, true, agencyId, language, header, outputFolder, DictIndicator, DictIndicatorMapping, DIConnection, DIQueries);
                RetVal = CategorySchemeUtility.Generate_Artefact();
                CategorySchemeUtility.Save_Artefacts(RetVal);
            }
            catch (Exception ex)
            {
                RetVal = null;
                throw ex;
            }
            finally
            {
            }

            return RetVal;
        }