/// <summary> /// Handles the Category element child elements /// </summary> /// <param name="parent"> /// The parent category of this category element /// </param> /// <param name="localName"> /// The name of the current xml element /// </param> /// <returns> /// The <see cref="StructureReaderBaseV20.ElementActions"/>. /// </returns> private ElementActions HandleChildElements(ICategoryMutableObject parent, object localName) { ElementActions actions = null; if (NameTableCache.IsElement(localName, ElementNameTable.Category)) { ICategoryMutableObject category = HandleCategory(this.Attributes); parent.AddItem(category); actions = this.AddNameableAction(category, this.HandleChildElements); } else if (NameTableCache.IsElement(localName, ElementNameTable.DataflowRef)) { IReferenceInfo reference = new ReferenceInfo(SdmxStructureEnumType.Dataflow) { ReferenceFrom = parent }; this._currentDataflowReference = reference; actions = this.AddSimpleAction(reference, this.HandleTextChildElement); } return actions; }
/// <summary> /// Handles the HierarchicalCodelist element child elements /// </summary> /// <param name="parent"> /// The parent IHierarchicalCodelistMutableObject object /// </param> /// <param name="localName"> /// The name of the current xml element /// </param> /// <returns> /// The <see cref="StructureReaderBaseV20.ElementActions"/>. /// </returns> private ElementActions HandleChildElements(IHierarchicalCodelistMutableObject parent, object localName) { ElementActions actions = null; if (NameTableCache.IsElement(localName, ElementNameTable.CodelistRef)) { var codelistRefMutableCore = new CodelistRefMutableCore(); parent.AddCodelistRef(codelistRefMutableCore); this._currentCodelistRef = codelistRefMutableCore; IReferenceInfo reference = new ReferenceInfo(SdmxStructureEnumType.CodeList); this._currentReference = reference; actions = this.BuildElementActions(codelistRefMutableCore, DoNothingComplex, HandleTextChildElement); } else if (NameTableCache.IsElement(localName, ElementNameTable.Hierarchy)) { var hc = new HierarchyMutableCore(); ParseAttributes(hc, this.Attributes); this._currentHierarchy = hc; //// TODO java 0.9.9 no isFinal ////hc.IsFinal = Helper.TrySetFromAttribute(this.Attributes, AttributeNameTable.isFinal, hc.IsFinal); parent.AddHierarchies(hc); actions = this.AddNameableAction(hc, this.HandleChildElements); } return actions; }
/// <summary> /// Handle QueryStructureRequest Child elements /// </summary> /// <param name="parent"> /// The parent IQueryStructureRequestInfo object /// </param> /// <param name="localName"> /// The name of the current xml element /// </param> /// <returns> /// The <see cref="StructureReaderBaseV20.ElementActions"/>. /// </returns> private ElementActions HandleChildElements(IQueryStructureRequestInfo parent, object localName) { SdmxStructureEnumType sdmxStructure; if (NameTableCache.IsElement(localName, ElementNameTable.DataflowRef)) { IDataflowReferenceInfo dataflowReferenceInfo = new DataflowReferenceInfo(); parent.References.Add(dataflowReferenceInfo); return this.AddReferenceAction(dataflowReferenceInfo, this.HandleChildElements, this.HandleTextChildElement); } if (NameTableCache.IsElement(localName, ElementNameTable.MetadataflowRef)) { sdmxStructure = SdmxStructureEnumType.MetadataFlow; } else if (NameTableCache.IsElement(localName, ElementNameTable.CodelistRef)) { sdmxStructure = SdmxStructureEnumType.CodeList; } else if (NameTableCache.IsElement(localName, ElementNameTable.HierarchicalCodelistRef)) { sdmxStructure = SdmxStructureEnumType.HierarchicalCodelist; } else if (NameTableCache.IsElement(localName, ElementNameTable.CategorySchemeRef)) { sdmxStructure = SdmxStructureEnumType.CategoryScheme; } else if (NameTableCache.IsElement(localName, ElementNameTable.KeyFamilyRef)) { sdmxStructure = SdmxStructureEnumType.Dsd; } else if (NameTableCache.IsElement(localName, ElementNameTable.MetadataStructureRef)) { sdmxStructure = SdmxStructureEnumType.Msd; } else { return null; } IReferenceInfo referenceInfo = new ReferenceInfo(sdmxStructure); parent.References.Add(referenceInfo); return this.AddReferenceAction(referenceInfo, DoNothingComplex, this.HandleTextChildElement); }
/// <summary> /// Handles the Dataflow element child elements /// </summary> /// <param name="parent"> /// The parent IDataflowMutableObject object /// </param> /// <param name="localName"> /// The name of the current xml element /// </param> /// <returns> /// The <see cref="StructureReaderBaseV20.ElementActions"/>. /// </returns> private ElementActions HandleChildElements(IDataflowMutableObject parent, object localName) { ElementActions actions = null; if (NameTableCache.IsElement(localName, ElementNameTable.KeyFamilyRef)) { IReferenceInfo reference = new ReferenceInfo(SdmxStructureEnumType.Dsd); this._currentReferenceInfo = reference; actions = this.AddReferenceAction(reference, DoNothingComplex, this.HandleTextChildElementKeyFamily); } else if (NameTableCache.IsElement(localName, ElementNameTable.CategoryRef)) { IReferenceInfo reference = new ReferenceInfo(SdmxStructureEnumType.Category); this._currentReferenceInfo = reference; this._currentCategoryIds.Clear(); actions = this.AddReferenceAction(reference, this.HandleChildElementsCategory, this.HandleTextChildElementCategoryRef); } return actions; }