示例#1
0
        /// <summary>
        /// Convert to <see cref="IComplexStructureReferenceObject"/>.
        /// </summary>
        /// <param name="reference">The reference.</param>
        /// <returns>The <see cref="IComplexStructureReferenceObject"/>.</returns>
        public static IComplexStructureReferenceObject ToComplex(this IStructureReference reference)
        {
            var maintainableRef = reference.MaintainableReference;
            IComplexTextReference id = null;
            if (maintainableRef.HasMaintainableId())
            {
                id = new ComplexTextReferenceCore(null, TextSearch.GetFromEnum(TextSearchEnumType.Equal), maintainableRef.MaintainableId);
            }

            IComplexTextReference agency = null;
            if (maintainableRef.HasAgencyId())
            {
                agency = new ComplexTextReferenceCore(null, TextSearch.GetFromEnum(TextSearchEnumType.Equal), maintainableRef.AgencyId);
            }

            IComplexVersionReference version = maintainableRef.HasVersion()
                                                   ? new ComplexVersionReferenceCore(TertiaryBool.ParseBoolean(false), maintainableRef.Version, null, null)
                                                   : new ComplexVersionReferenceCore(TertiaryBool.ParseBoolean(true), null, null, null);

            return new ComplexStructureReferenceCore(agency, id, version, reference.MaintainableStructureEnumType, null, null, null, null);
        }
        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);
            }
        }