public void TestDetail(SdmxStructureEnumType sdmxStructure, StructureReferenceDetailEnumType detail) { var agency = new ComplexTextReferenceCore(null, TextSearch.GetFromEnum(TextSearchEnumType.Equal), "TEST"); var id = new ComplexTextReferenceCore(null, TextSearch.GetFromEnum(TextSearchEnumType.Equal), "TEST"); IComplexVersionReference versionRef = new ComplexVersionReferenceCore(TertiaryBool.ParseBoolean(false), "1.0", null, null); var complexStructureReferenceCore = new ComplexStructureReferenceCore(agency, id, versionRef, SdmxStructureType.GetFromEnum(sdmxStructure), null, null, null, null); var complexStructureQueryMetadataCore = new ComplexStructureQueryMetadataCore( true, ComplexStructureQueryDetail.GetFromEnum(ComplexStructureQueryDetailEnumType.Full), ComplexMaintainableQueryDetail.GetFromEnum(ComplexMaintainableQueryDetailEnumType.Full), StructureReferenceDetail.GetFromEnum(detail), new [] { SdmxStructureType.GetFromEnum(sdmxStructure) }); IComplexStructureQuery complexStructureQuery = new ComplexStructureQueryCore(complexStructureReferenceCore, complexStructureQueryMetadataCore); var builder = new ComplexStructureQueryBuilderV21(); var structureQuery = builder.BuildComplexStructureQuery(complexStructureQuery); var fileName = string.Format("test-ComplexStructureQueryBuilderV21-{0}-{1}.xml", sdmxStructure.ToString(), detail.ToString()); structureQuery.Save(fileName); using (var readable = new FileReadableDataLocation(fileName)) { XMLParser.ValidateXml(readable, SdmxSchemaEnumType.VersionTwoPointOne); } }
/// <summary> /// list of Metadata type referenced /// a tree of references /// * Categorisation /// * CategoryScheme Dataflow /// * Dsd /// * Codelist Concept /// </summary> /// <param name="startMetaType">Metadata type to found reference</param> /// <param name="refType">StructureReferenceDetailEnumType</param> /// <param name="specificRef">List of Structure required for references</param> /// <returns>list of Metadata type referenced</returns> public static List <ReferenceTreeEnum> GetReferences(ReferenceTreeEnum startMetaType, StructureReferenceDetailEnumType refType, List <SdmxStructureType> specificRef) { List <ReferenceTreeEnum> references = new List <ReferenceTreeEnum>(); switch (refType) { case StructureReferenceDetailEnumType.All: GetDescendants(startMetaType, ref references); references.AddRange(GetParentsAndSibling(startMetaType)); break; case StructureReferenceDetailEnumType.Children: references = GetChildren(startMetaType); break; case StructureReferenceDetailEnumType.Descendants: GetDescendants(startMetaType, ref references); break; case StructureReferenceDetailEnumType.Parents: references = GetParent(startMetaType); break; case StructureReferenceDetailEnumType.ParentsSiblings: references = GetParentsAndSibling(startMetaType); break; case StructureReferenceDetailEnumType.Specific: references = GetSpecificRef(startMetaType, specificRef); break; case StructureReferenceDetailEnumType.None: case StructureReferenceDetailEnumType.Null: break; } references = DeleteDuplexAndOrder(references); return(references); }
public void TestGetMaintainables( SdmxStructureEnumType structureEnumType, StructureQueryDetailEnumType detail, StructureReferenceDetailEnumType refDetailEnum, SdmxStructureEnumType specificStructure) { var mutableSearchManager = this.GetMutableSearchManager(this._connectionString); var refDetail = StructureReferenceDetail.GetFromEnum(refDetailEnum); var sdmxStructureType = SdmxStructureType.GetFromEnum(specificStructure == SdmxStructureEnumType.HierarchicalCodelist && structureEnumType == SdmxStructureEnumType.CodeList ? SdmxStructureEnumType.HierarchicalCodelist : SdmxStructureEnumType.Categorisation); IStructureReference reference = new StructureReferenceImpl(new MaintainableRefObjectImpl(), sdmxStructureType); SdmxStructureType structureType = SdmxStructureType.GetFromEnum(structureEnumType); IRestStructureQuery query = new RESTStructureQueryCore( StructureQueryDetail.GetFromEnum(StructureQueryDetailEnumType.Full), StructureReferenceDetail.GetFromEnum(StructureReferenceDetailEnumType.Specific), structureType, reference, false); var allObjects = mutableSearchManager.GetMaintainables(query).GetMaintainables(structureType); var referenceLevel = StructureReferenceDetail.GetFromEnum(refDetailEnum); _log.DebugFormat(CultureInfo.InvariantCulture, "Structure type: {0}, Detail: {1}, Reference : {2}", structureType, detail, refDetail); foreach (var maintainableMutableObject in allObjects) { if ("MA".Equals(maintainableMutableObject.AgencyId)) { continue; } var structureReference = _fromMutable.Build(maintainableMutableObject); _log.DebugFormat(CultureInfo.InvariantCulture, "Checking maintainable : {0}", structureReference); var mockQuery = new RESTStructureQueryCore(StructureQueryDetail.GetFromEnum(detail), referenceLevel, SdmxStructureType.GetFromEnum(specificStructure), structureReference, false); switch (refDetail.EnumType) { case StructureReferenceDetailEnumType.Null: break; case StructureReferenceDetailEnumType.None: { var mutableObject = GetMutables(mutableSearchManager, mockQuery, maintainableMutableObject); Assert.IsTrue(mutableObject.GetMaintainables(structureType).All(o => o.StructureType.EnumType == structureType.EnumType)); } break; case StructureReferenceDetailEnumType.Parents: { var mutableObject = GetMutables(mutableSearchManager, mockQuery, maintainableMutableObject); ValidateParents(mutableObject, structureType, detail != StructureQueryDetailEnumType.Full, structureReference); } break; case StructureReferenceDetailEnumType.ParentsSiblings: { var mutableObject = GetMutables(mutableSearchManager, mockQuery, maintainableMutableObject); ValidateParentsAndSiblings(mutableObject, structureType, detail != StructureQueryDetailEnumType.Full); } break; case StructureReferenceDetailEnumType.Children: { var mutableObject = GetMutables(mutableSearchManager, mockQuery, maintainableMutableObject); ValidateChildren(mutableObject, structureType, detail != StructureQueryDetailEnumType.Full); } break; case StructureReferenceDetailEnumType.Descendants: { var mutableObject = GetMutables(mutableSearchManager, mockQuery, maintainableMutableObject); ValidateDescendants(mutableObject, structureType, detail != StructureQueryDetailEnumType.Full); } break; case StructureReferenceDetailEnumType.All: { var mutableObject = GetMutables(mutableSearchManager, mockQuery, maintainableMutableObject); ValidateAll(mutableObject, structureType, detail != StructureQueryDetailEnumType.Full); } break; case StructureReferenceDetailEnumType.Specific: { if (specificStructure != SdmxStructureEnumType.Categorisation || detail == StructureQueryDetailEnumType.Full) { var specificStructureReference = SdmxStructureType.GetFromEnum(specificStructure); var specificQuery = new RESTStructureQueryCore(StructureQueryDetail.GetFromEnum(detail), referenceLevel, specificStructureReference, structureReference, false); var mutablesWithSpecific = GetMutables(mutableSearchManager, specificQuery, maintainableMutableObject); ValidateSpecific(mutablesWithSpecific, structureType, detail != StructureQueryDetailEnumType.Full, specificStructureReference, structureReference); } } break; default: throw new ArgumentOutOfRangeException(); } } }
public void TestGetMaintainablesAuthResult(SdmxStructureEnumType structureEnumType, StructureQueryDetailEnumType detail, StructureReferenceDetailEnumType refDetailEnum) { var mutableSearchManager = this.GetAuthMutableSearchManager(this._connectionString); var refDetail = StructureReferenceDetail.GetFromEnum(refDetailEnum); var structureType = SdmxStructureType.GetFromEnum(structureEnumType); IStructureReference reference = new StructureReferenceImpl(new MaintainableRefObjectImpl(), structureType); switch (structureType.EnumType) { case SdmxStructureEnumType.Dataflow: case SdmxStructureEnumType.Dsd: var allowedDataflows = (from x in this._fullRetrievalManager.GetMutableDataflowObjects(new MaintainableRefObjectImpl(), false, false) select _fromMutable.Build(x).MaintainableReference).ToArray(); var list = this._fullRetrievalManager.GetMutableMaintainables(reference, false, false); var queryMetadataMock = new Mock<IStructureQueryMetadata>(); queryMetadataMock.Setup(query => query.IsReturnLatest).Returns(false); queryMetadataMock.Setup(query => query.SpecificStructureReference).Returns((SdmxStructureType)null); queryMetadataMock.Setup(query => query.StructureReferenceDetail).Returns(refDetail); queryMetadataMock.Setup(query => query.StructureQueryDetail).Returns(StructureQueryDetail.GetFromEnum(detail)); var mockQuery = new Mock<IRestStructureQuery>(); mockQuery.Setup(query => query.StructureReference).Returns(reference); mockQuery.Setup(query => query.StructureQueryMetadata).Returns(() => queryMetadataMock.Object); _log.DebugFormat(CultureInfo.InvariantCulture, "Structure type: {0}, Detail: {1}, Reference : {2}", structureType, detail, refDetail); foreach (var maintainableMutableObject in list) { switch (refDetail.EnumType) { case StructureReferenceDetailEnumType.Null: break; case StructureReferenceDetailEnumType.None: { var mutableObject = mutableSearchManager.GetMaintainables(mockQuery.Object, allowedDataflows); Assert.IsNotNull(mutableObject, _fromMutable.Build(maintainableMutableObject).ToString()); Assert.IsNotEmpty(mutableObject.AllMaintainables, _fromMutable.Build(maintainableMutableObject).ToString()); } break; case StructureReferenceDetailEnumType.Parents: { var mutableObject = mutableSearchManager.GetMaintainables(mockQuery.Object, allowedDataflows); Assert.IsNotNull(mutableObject, _fromMutable.Build(maintainableMutableObject).ToString()); Assert.IsNotEmpty(mutableObject.AllMaintainables, _fromMutable.Build(maintainableMutableObject).ToString()); } break; case StructureReferenceDetailEnumType.ParentsSiblings: break; case StructureReferenceDetailEnumType.Children: { var mutableObject = mutableSearchManager.GetMaintainables(mockQuery.Object, allowedDataflows); Assert.IsNotNull(mutableObject, _fromMutable.Build(maintainableMutableObject).ToString()); Assert.IsNotEmpty(mutableObject.AllMaintainables, _fromMutable.Build(maintainableMutableObject).ToString()); } break; case StructureReferenceDetailEnumType.Descendants: break; case StructureReferenceDetailEnumType.All: break; case StructureReferenceDetailEnumType.Specific: { queryMetadataMock.Setup(query => query.StructureReferenceDetail).Returns(StructureReferenceDetail.GetFromEnum(StructureReferenceDetailEnumType.None)); var mutableObject = mutableSearchManager.GetMaintainables(mockQuery.Object, allowedDataflows); queryMetadataMock.Setup(query => query.StructureReferenceDetail).Returns(refDetail); Assert.IsNotNull(mutableObject, _fromMutable.Build(maintainableMutableObject).ToString()); Assert.IsNotEmpty(mutableObject.AllMaintainables, _fromMutable.Build(maintainableMutableObject).ToString()); } break; default: throw new ArgumentOutOfRangeException(); } } break; } }
private string GetStructureQueryFormat(IStructureReference dataflowRef, string version,StructureQueryDetailEnumType structureQueryDetail, StructureReferenceDetailEnumType structureReference ) { IStructureQueryFormat<string> structureQueryFormat = new RestQueryFormat(); IStructureQueryFactory factory = new RestStructureQueryFactory(); IStructureQueryBuilderManager structureQueryBuilderManager = new StructureQueryBuilderManager(factory); bool returnLatest = version == null; SdmxStructureType specificStructureReference = structureReference == StructureReferenceDetailEnumType.Specific? SdmxStructureType.GetFromEnum(SdmxStructureEnumType.CodeList) : null; IRestStructureQuery structureQuery = new RESTStructureQueryCore(StructureQueryDetail.GetFromEnum(structureQueryDetail), StructureReferenceDetail.GetFromEnum(structureReference), specificStructureReference, dataflowRef, returnLatest); string request = structureQueryBuilderManager.BuildStructureQuery(structureQuery, structureQueryFormat); return request; }
public void TestRestStructureQueryIsMaintainable(string agency, string id, string version, StructureQueryDetailEnumType structureQueryDetail, StructureReferenceDetailEnumType structureReferenceDetail) { var dataflowRef = new StructureReferenceImpl(SdmxStructureType.GetFromEnum(SdmxStructureEnumType.Dataflow)) { MaintainableId = id, AgencyId = agency, Version = version, }; bool returnLatest = version == null; IRestStructureQuery structureQuery; Assert.Throws<SdmxSemmanticException>(() => structureQuery = new RESTStructureQueryCore(StructureQueryDetail.GetFromEnum(structureQueryDetail), StructureReferenceDetail.GetFromEnum(structureReferenceDetail), SdmxStructureType.GetFromEnum(SdmxStructureEnumType.Code), dataflowRef, returnLatest)); Assert.Throws<SdmxSemmanticException>(() => structureQuery = new RESTStructureQueryCore(StructureQueryDetail.GetFromEnum(structureQueryDetail), StructureReferenceDetail.GetFromEnum(structureReferenceDetail), SdmxStructureType.GetFromEnum(SdmxStructureEnumType.Category), dataflowRef, returnLatest)); Assert.Throws<SdmxSemmanticException>(() => structureQuery = new RESTStructureQueryCore(StructureQueryDetail.GetFromEnum(structureQueryDetail), StructureReferenceDetail.GetFromEnum(structureReferenceDetail), SdmxStructureType.GetFromEnum(SdmxStructureEnumType.Dimension), dataflowRef, returnLatest)); }
public void TestRestStructureQueryExpectedResultTest2(string agency, string id, string version, string expectedResult, StructureQueryDetailEnumType structureQueryDetail, StructureReferenceDetailEnumType structureReferenceDetail) { var dataflowRef = new StructureReferenceImpl(SdmxStructureType.GetFromEnum(SdmxStructureEnumType.Dataflow)) { MaintainableId = id, AgencyId = agency, Version = version, }; string request = GetStructureQueryFormat(dataflowRef, version, structureQueryDetail, structureReferenceDetail); Assert.IsNotNull(request); Assert.AreEqual(request, expectedResult); }