private DIExcel GenerateDSDWorksheet(DIExcel ReportExcel, int SheetIndex, SDMXApi_2_0.Message.StructureType CompleteStructure) { int i, j; IWorksheet DSDWorkSheet = null; int rowindex = 0; string Language, AttributeImportance; Language = string.Empty; AttributeImportance = string.Empty; try { // Language = CompleteStructure.Concepts.Concept[0].Name[0].lang; if (CompleteStructure.Concepts.Concept.Count > 0) { Language = CompleteStructure.Concepts.Concept[0].Name[0].lang; } else if (CompleteStructure.Concepts.ConceptScheme.Count > 0) { Language = CompleteStructure.Concepts.ConceptScheme[0].Name[0].lang; } DSDWorkSheet = ReportExcel.GetWorksheet(0); ReportExcel.RenameWorkSheet(0, "DSD"); rowindex = rowindex + 1; this.WriteValueInCell(ReportExcel, "Data Structure Definition", rowindex, 1, 14, true, 30, 0, 0); rowindex = rowindex + 2; //Binding Dimensions this.WriteValueInCell(ReportExcel, "Dimensions", rowindex, 1, 12, true, 30, 0, 0); rowindex = rowindex + 2; if (CompleteStructure.Concepts.Concept.Count > 0) { for (i = 0; i < CompleteStructure.KeyFamilies[0].Components.Dimension.Count; i++) { for (j = 0; j < CompleteStructure.Concepts.Concept.Count; j++) { if (CompleteStructure.Concepts.Concept[j].id == CompleteStructure.KeyFamilies[0].Components.Dimension[i].conceptRef) { this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.Concept[j].Name, Language), rowindex, 1, 10, false, 30, 0, 0); this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.Concept[j].Description, Language), rowindex, 2, 10, false, 250, 0, 0); rowindex = rowindex + 1; break; } } } } else if (CompleteStructure.Concepts.ConceptScheme.Count > 0) { for (i = 0; i < CompleteStructure.KeyFamilies[0].Components.Dimension.Count; i++) { for (j = 0; j < CompleteStructure.Concepts.ConceptScheme.Count; j++) { for (int k = 0; k < CompleteStructure.Concepts.ConceptScheme[j].Concept.Count; k++) { if (CompleteStructure.Concepts.ConceptScheme[j].Concept[k].id == CompleteStructure.KeyFamilies[0].Components.Dimension[i].conceptRef) { this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.ConceptScheme[j].Concept[k].Name, Language), rowindex, 1, 10, false, 30, 0, 0); this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.ConceptScheme[j].Concept[k].Description, Language), rowindex, 2, 10, false, 250, 0, 0); rowindex = rowindex + 1; break; } } } } } //Binding Time Dimension if (CompleteStructure.Concepts.Concept.Count > 0) { for (j = 0; j < CompleteStructure.Concepts.Concept.Count; j++) { if (CompleteStructure.Concepts.Concept[j].id == CompleteStructure.KeyFamilies[0].Components.TimeDimension.conceptRef) { this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.Concept[j].Name, Language), rowindex, 1, 10, false, 30, 0, 0); this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.Concept[j].Description, Language), rowindex, 2, 10, false, 250, 0, 0); rowindex = rowindex + 1; break; } } } else if (CompleteStructure.Concepts.ConceptScheme.Count > 0) { for (j = 0; j < CompleteStructure.Concepts.ConceptScheme.Count; j++) { for (int k = 0; k < CompleteStructure.Concepts.ConceptScheme[j].Concept.Count; k++) { if (CompleteStructure.Concepts.ConceptScheme[j].Concept[k].id == CompleteStructure.KeyFamilies[0].Components.TimeDimension.conceptRef) { this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.ConceptScheme[j].Concept[k].Name, Language), rowindex, 1, 10, false, 30, 0, 0); this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.ConceptScheme[j].Concept[k].Description, Language), rowindex, 2, 10, false, 250, 0, 0); rowindex = rowindex + 1; break; } } } } rowindex = rowindex + 2; //Binding Attributes this.WriteValueInCell(ReportExcel, "Attributes", rowindex, 1, 12, true, 30, 0, 0); rowindex = rowindex + 2; if (CompleteStructure.Concepts.Concept.Count > 0) { for (i = 0; i < CompleteStructure.KeyFamilies[0].Components.Attribute.Count; i++) { for (j = 0; j < CompleteStructure.Concepts.Concept.Count; j++) { if (CompleteStructure.Concepts.Concept[j].id == CompleteStructure.KeyFamilies[0].Components.Attribute[i].conceptRef) { this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.Concept[j].Name, Language), rowindex, 1, 10, false, 30, 0, 0); this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.Concept[j].Description, Language), rowindex, 2, 10, false, 250, 0, 0); rowindex = rowindex + 1; this.WriteValueInCell(ReportExcel, "Attachment Level : " + CompleteStructure.KeyFamilies[0].Components.Attribute[i].attachmentLevel, rowindex, 1, 10, false, 30, 0, 0); if (CompleteStructure.KeyFamilies[0].Components.Attribute[i].assignmentStatus == SDMXApi_2_0.Structure.AssignmentStatusType.Mandatory) { AttributeImportance = "Mandatory : " + "Yes"; } else { AttributeImportance = "Mandatory : " + "No"; } this.WriteValueInCell(ReportExcel, AttributeImportance, rowindex, 2, 10, false, 30, 0, 0); rowindex = rowindex + 2; break; } } } } else if (CompleteStructure.Concepts.ConceptScheme.Count > 0) { for (i = 0; i < CompleteStructure.KeyFamilies[0].Components.Attribute.Count; i++) { for (j = 0; j < CompleteStructure.Concepts.ConceptScheme.Count; j++) { for (int k = 0; k < CompleteStructure.Concepts.ConceptScheme[j].Concept.Count; k++) { if (CompleteStructure.Concepts.ConceptScheme[j].Concept[k].id == CompleteStructure.KeyFamilies[0].Components.Attribute[i].conceptRef) { this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.ConceptScheme[j].Concept[k].Name, Language), rowindex, 1, 10, false, 30, 0, 0); this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.ConceptScheme[j].Concept[k].Description, Language), rowindex, 2, 10, false, 250, 0, 0); rowindex = rowindex + 1; this.WriteValueInCell(ReportExcel, "Attachment Level : " + CompleteStructure.KeyFamilies[0].Components.Attribute[i].attachmentLevel, rowindex, 1, 10, false, 30, 0, 0); if (CompleteStructure.KeyFamilies[0].Components.Attribute[i].assignmentStatus == SDMXApi_2_0.Structure.AssignmentStatusType.Mandatory) { AttributeImportance = "Mandatory : " + "Yes"; } else { AttributeImportance = "Mandatory : " + "No"; } this.WriteValueInCell(ReportExcel, AttributeImportance, rowindex, 2, 10, false, 30, 0, 0); rowindex = rowindex + 2; break; } } } } } rowindex = rowindex + 1; //Binding Measure this.WriteValueInCell(ReportExcel, "Measure", rowindex, 1, 12, true, 30, 0, 0); rowindex = rowindex + 1; if (CompleteStructure.Concepts.Concept.Count > 0) { for (j = 0; j < CompleteStructure.Concepts.Concept.Count; j++) { if (CompleteStructure.Concepts.Concept[j].id == CompleteStructure.KeyFamilies[0].Components.PrimaryMeasure.conceptRef) { this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.Concept[j].Name, Language), rowindex, 1, 10, false, 30, 0, 0); this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.Concept[j].Description, Language), rowindex, 2, 10, false, 250, 0, 0); rowindex = rowindex + 1; break; } } } else if (CompleteStructure.Concepts.ConceptScheme.Count > 0) { for (j = 0; j < CompleteStructure.Concepts.ConceptScheme.Count; j++) { if (CompleteStructure.Concepts.ConceptScheme[j].id == CompleteStructure.KeyFamilies[0].Components.PrimaryMeasure.conceptSchemeRef) { for (int k = 0; k < CompleteStructure.Concepts.ConceptScheme[j].Concept.Count; k++) { if (CompleteStructure.Concepts.ConceptScheme[j].Concept[k].id == CompleteStructure.KeyFamilies[0].Components.PrimaryMeasure.conceptRef) { this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.ConceptScheme[j].Concept[k].Name, Language), rowindex, 1, 10, false, 30, 0, 0); this.WriteValueInCell(ReportExcel, GetLangSpecificValueFor_Version_2_0(CompleteStructure.Concepts.ConceptScheme[j].Concept[k].Description, Language), rowindex, 2, 10, false, 250, 0, 0); rowindex = rowindex + 1; break; } } } } } } catch (Exception ex) { Global.CreateExceptionString(ex, null); throw ex; } finally { } return ReportExcel; }
private DIExcel GenerateDimensionAndAttributesComparison(string hlngcodedb,SDMXObjectModel.Message.StructureType DSD1, SDMXObjectModel.Message.StructureType DSD2, DIExcel ReportExcel, Dictionary<string, string> dictMappedIndicators, List<String> ListOfMissingDimensions, List<String> AdditionalDSD1DimensionList, Dictionary<string, string> dictMappedAttributes, List<String> ListOfMissingAttributes, List<String> AdditionalDSD1AttributeList) { int rowindex = 0; string DimensionName = string.Empty; string AttributeName = string.Empty; int SNo; SDMXObjectModel.Structure.DataStructureComponentsType DSD1DSComponents; SDMXObjectModel.Structure.DataStructureComponentsType DSD2DSComponents; SDMXObjectModel.Structure.StructuresType ConceptsObjDSD1; SDMXObjectModel.Structure.StructuresType ConceptsObjDSD2; IWorksheet WorkbookSheet = null; try { DSD1DSComponents = (SDMXObjectModel.Structure.DataStructureComponentsType)(DSD1.Structures.DataStructures[0].Item); DSD2DSComponents = (SDMXObjectModel.Structure.DataStructureComponentsType)(DSD2.Structures.DataStructures[0].Item); ConceptsObjDSD1 = DSD1.Structures; ConceptsObjDSD2 = DSD2.Structures; ReportExcel.RenameWorkSheet(0, "Dimensions"); // Writing into Dimensions Worksheet // Writing Matched Dimensions that exist in both DSD1 and DSD2 rowindex = rowindex + 1; WorkbookSheet = ReportExcel.GetWorksheet(0); this.WriteValueInCell(ReportExcel, "Matched Dimensions", rowindex, 1, 14, true, 10, 0, 0); WorkbookSheet.Cells[rowindex, 1, rowindex, 2].Merge(); rowindex = rowindex + 2; this.WriteValueInCell(ReportExcel, "S.No.", rowindex, 1, 12, true, 10, 0, 0); this.WriteValueInCell(ReportExcel, "ID", rowindex, 2, 12, true, 60, 0, 0); this.WriteValueInCell(ReportExcel, "Name", rowindex,3, 12, true, 70, 0, 0); rowindex = rowindex + 1; SNo = 0; foreach (string MatchedDimension in dictMappedIndicators.Keys) { if(!(AdditionalDSD1DimensionList.Contains(MatchedDimension))) { SNo = SNo + 1; this.WriteValueInCell(ReportExcel, SNo.ToString(), rowindex, 1, 10, false, 10, 0, 0); DimensionName = string.Empty; DimensionName = GetLanguageBasedConceptNameFromConceptScheme(ConceptsObjDSD1, MatchedDimension, hlngcodedb); this.WriteValueInCell(ReportExcel, MatchedDimension, rowindex, 2, 10, false, 60, 0, 0); if (DimensionName != string.Empty) { this.WriteValueInCell(ReportExcel,DimensionName, rowindex, 3, 10, false, 70, 0, 0); } rowindex = rowindex + 1; } } // Writing Missing Dimensions that exist in DSD2 but not in DSD1 rowindex = rowindex + 2; this.WriteValueInCell(ReportExcel, "Missing Dimensions", rowindex, 1, 14, true, 10, 0, 0); WorkbookSheet.Cells[rowindex, 1, rowindex, 2].Merge(); rowindex = rowindex + 2; this.WriteValueInCell(ReportExcel, "S.No.", rowindex, 1, 12, true, 10, 0, 0); this.WriteValueInCell(ReportExcel, "ID", rowindex, 2, 12, true, 60, 0, 0); this.WriteValueInCell(ReportExcel, "Name", rowindex, 3, 12, true, 70, 0, 0); rowindex = rowindex + 1; SNo = 0; foreach (string MissingDimension in ListOfMissingDimensions) { SNo = SNo + 1; this.WriteValueInCell(ReportExcel, SNo.ToString(), rowindex, 1, 10, false, 10, 0, 0); DimensionName = string.Empty; DimensionName = GetLanguageBasedConceptNameFromConceptScheme(ConceptsObjDSD2, MissingDimension, hlngcodedb); this.WriteValueInCell(ReportExcel, MissingDimension, rowindex, 2, 10, false, 60, 0, 0); if (DimensionName != string.Empty) { this.WriteValueInCell(ReportExcel, DimensionName, rowindex, 3, 10, false, 70, 0, 0); } rowindex = rowindex + 1; } // Writing Additional Dimensions that exist in DSD1 but not in DSD2 rowindex = rowindex + 2; this.WriteValueInCell(ReportExcel, "Additional Dimensions", rowindex, 1, 14, true, 10, 0, 0); WorkbookSheet.Cells[rowindex, 1, rowindex, 2].Merge(); rowindex = rowindex + 2; this.WriteValueInCell(ReportExcel, "S.No.", rowindex, 1, 12, true, 10, 0, 0); this.WriteValueInCell(ReportExcel, "ID", rowindex, 2, 12, true, 60, 0, 0); this.WriteValueInCell(ReportExcel, "Name", rowindex, 3, 12, true, 70, 0, 0); rowindex = rowindex + 1; SNo = 0; foreach (string AdditionalDimension in AdditionalDSD1DimensionList) { SNo = SNo + 1; this.WriteValueInCell(ReportExcel, SNo.ToString(), rowindex, 1, 10, false, 10, 0, 0); DimensionName = string.Empty; DimensionName = GetLanguageBasedConceptNameFromConceptScheme(ConceptsObjDSD1, AdditionalDimension, hlngcodedb); this.WriteValueInCell(ReportExcel, AdditionalDimension, rowindex, 2, 10, false, 60, 0, 0); if (DimensionName != string.Empty) { this.WriteValueInCell(ReportExcel, DimensionName, rowindex, 3, 10, false, 70, 0, 0); } rowindex = rowindex + 1; } // Writing into Attributes Worksheet ReportExcel.InsertWorkSheet("Attributes"); WorkbookSheet = ReportExcel.GetWorksheet(1); // Writing Matched Attributes that exist in both DSD1 and DSD2 rowindex = 1; this.WriteValueInCell(ReportExcel, "Matched Attributes", rowindex, 1, 14, true, 10, 0, 1); WorkbookSheet.Cells[rowindex, 1, rowindex, 2].Merge(); rowindex = rowindex + 2; this.WriteValueInCell(ReportExcel, "S.No.", rowindex, 1, 12, true, 10, 0,1); this.WriteValueInCell(ReportExcel, "ID", rowindex, 2, 12, true, 60, 0, 1); this.WriteValueInCell(ReportExcel, "Name", rowindex, 3, 12, true, 70, 0, 1); rowindex = rowindex + 1; SNo = 0; foreach (string MatchedAttribute in dictMappedAttributes.Keys) { if (!(AdditionalDSD1AttributeList.Contains(MatchedAttribute))) { SNo = SNo + 1; this.WriteValueInCell(ReportExcel, SNo.ToString(), rowindex, 1, 10, false,10, 0, 1); AttributeName = string.Empty; AttributeName = GetLanguageBasedConceptNameFromConceptScheme(ConceptsObjDSD1, MatchedAttribute, hlngcodedb); this.WriteValueInCell(ReportExcel, MatchedAttribute, rowindex, 2, 10, false, 60, 0, 1); if (AttributeName != string.Empty) { this.WriteValueInCell(ReportExcel, AttributeName, rowindex, 3, 10, false, 70, 0, 1); } rowindex = rowindex + 1; } } // Writing Missing Attributes that exist in DSD2 but not in DSD1 rowindex = rowindex + 2; this.WriteValueInCell(ReportExcel, "Missing Attributes", rowindex, 1, 14, true, 10, 0, 1); WorkbookSheet.Cells[rowindex, 1, rowindex, 2].Merge(); rowindex = rowindex + 2; this.WriteValueInCell(ReportExcel, "S.No.", rowindex, 1, 12, true, 10, 0, 1); this.WriteValueInCell(ReportExcel, "ID", rowindex, 2, 12, true, 60, 0,1); this.WriteValueInCell(ReportExcel, "Name", rowindex, 3, 12, true, 70, 0, 1); rowindex = rowindex + 1; SNo = 0; foreach (string MissingAttribute in ListOfMissingAttributes) { SNo = SNo + 1; this.WriteValueInCell(ReportExcel, SNo.ToString(), rowindex, 1, 10, false, 10, 0, 1); AttributeName = string.Empty; AttributeName = GetLanguageBasedConceptNameFromConceptScheme(ConceptsObjDSD2, MissingAttribute, hlngcodedb); this.WriteValueInCell(ReportExcel, MissingAttribute, rowindex, 2, 10, false, 60, 0, 1); if (AttributeName != string.Empty) { this.WriteValueInCell(ReportExcel, AttributeName, rowindex, 3, 10, false, 70, 0, 1); } rowindex = rowindex + 1; } // Writing Additional Attributes that exist in DSD1 but not in DSD2 rowindex = rowindex + 2; this.WriteValueInCell(ReportExcel, "Additional Attributes", rowindex, 1, 14, true, 10, 0, 1); WorkbookSheet.Cells[rowindex, 1, rowindex, 2].Merge(); rowindex = rowindex + 2; this.WriteValueInCell(ReportExcel, "S.No.", rowindex, 1, 12, true, 10, 0, 1); this.WriteValueInCell(ReportExcel, "ID", rowindex, 2, 12, true, 60, 0, 1); this.WriteValueInCell(ReportExcel, "Name", rowindex, 3, 12, true, 70, 0, 1); rowindex = rowindex + 1; SNo = 0; foreach (string AdditionalAttribute in AdditionalDSD1AttributeList) { SNo = SNo + 1; this.WriteValueInCell(ReportExcel, SNo.ToString(), rowindex, 1, 10, false, 10, 0, 1); AttributeName = string.Empty; AttributeName = GetLanguageBasedConceptNameFromConceptScheme(ConceptsObjDSD1, AdditionalAttribute, hlngcodedb); this.WriteValueInCell(ReportExcel, AdditionalAttribute, rowindex, 2, 10, false, 60, 0, 1); if (AttributeName != string.Empty) { this.WriteValueInCell(ReportExcel, AttributeName, rowindex, 3, 10, false, 70, 0, 1); } rowindex = rowindex + 1; } } catch (Exception ex) { Global.CreateExceptionString(ex, null); throw ex; } finally { } return ReportExcel; }