/// <summary> /// The main method. /// </summary> /// <param name="args"> /// The parameter is not used. /// </param> public static void Main(string[] args) { // Steps 1 - 4 are performed in the new class DatabaseRetrievalManager, an implementation of the ISdmxObjectRetrievalManager interface. // DatabaseRetrievalManager: Step 1. Creating an implementation of the ISdmxObjectRetrievalManager interface // DatabaseRetrievalManager: Step 2. Implementing ISdmxObjectRetrievalManager GetMaintainableObjects<> method. // DatabaseRetrievalManager: Step 3. Retrieving codelists from database. // DatabaseRetrievalManager: Step 4. Retrieving Codes from the database. // Step 5. Create a ISdmxObjectRetrievalManager instance ISdmxObjectRetrievalManager retrievalManager = new DatabaseRetrievalManager(); // Step 6. Create an IHeader instance. // Create a new HeaderImpl instance with ID “IDREF0001”, Sender ID “ZZ9” IHeader header = new HeaderImpl("IDREF001", "ZZ9"); // can be an instance or even a static field. // Step 7. Create the query IMaintainableRefObject query = new MaintainableRefObjectImpl("TEST_AGENCY", "TEST", "1.2"); // Step 8. Get the codelist objects var codelistObjects = retrievalManager.GetMaintainableObjects<ICodelistObject>(query); // Step 9. Build the immutable object container. // Create an immutable container with the header and the codelist objects. // Note that immutable container can be modified. ISdmxObjects immutableObjects = new SdmxObjectsImpl(header, codelistObjects); // Step 10. Create an instance of the IStructureWriterManager. IStructureWriterManager structureWriterManager = new StructureWriterManager(); // can be an instance or even static field. // Step 11. Create a SdmxStructureFormat instance with StructureOutputFormat SdmxV21StructureDocument // SDMX v2.1. Create a SdmxStructureFormat instance with StructureOutputFormat SdmxV21StructureDocument. It can also be an instance or even a static field. IStructureFormat formatV21 = new SdmxStructureFormat(StructureOutputFormat.GetFromEnum(StructureOutputFormatEnumType.SdmxV21StructureDocument)); // Step 12. Create a SdmxStructureFormat instance with StructureOutputFormat SdmxV2StructureDocument // SDMX v2.0. Create a SdmxStructureFormat instance with StructureOutputFormat SdmxV2StructureDocument. It can also be an instance or even a static field. IStructureFormat formatV20 = new SdmxStructureFormat(StructureOutputFormat.GetFromEnum(StructureOutputFormatEnumType.SdmxV2StructureDocument)); // Step 13. Write to the SDMX v2.1 structure file. using (Stream fileStream = File.Create(@"..\..\Exercise Output\outputv21.xml")) { // Write the objects in SDMX v2.1 format. Then flush the output. structureWriterManager.WriteStructures(immutableObjects, formatV21, fileStream); fileStream.Flush(); } // Step 14. Write to the SDMX v2.0 structure file. using (Stream fileStream = File.Create(@"..\..\Exercise Output\outputv20.xml")) { // Write the objects in SDMX v2.0 format. Then flush the output. structureWriterManager.WriteStructures(immutableObjects, formatV20, fileStream); fileStream.Flush(); } }
public void TestBase() { var receivers = BuildReceivers(); var sender = BuildSender(); DateTime prepared = DateTime.UtcNow; var reportingBegin = new DateTime(2000, 1, 1); var reportingEnd = new DateTime(2010, 12, 31); bool isTest = true; IHeader header = new HeaderImpl("TEST", prepared, reportingBegin, reportingEnd, receivers, sender, isTest); // Add DSD reference header.AddStructure(new DatasetStructureReferenceCore(new StructureReferenceImpl("DSD_AGENCY", "DSD_ID", "1.0", SdmxStructureEnumType.Dsd))); Assert.AreEqual("TEST", header.Id); Assert.AreEqual("TestSender", header.Sender.Id); Assert.AreEqual(1, header.Receiver.Count); }
public void TestDataWriterEngineDimensionAtObs(DataEnumType format, string dimAtObs) { string outfile = string.Format("{0}-{1}.xml", format, dimAtObs); DataType fromEnum = DataType.GetFromEnum(format); using (Stream writer = File.Create(outfile)) { IConceptSchemeMutableObject conceptScheme = new ConceptSchemeMutableCore { Id = "CONCEPTS_TEST", AgencyId = "TEST" }; conceptScheme.AddName("en", "Dummy concept scheme build for this tests"); ////conceptScheme.Annotations.Add(new AnnotationMutableCore() { Id = "ANNOTABLETEST", Title = "Test", Type = "ATYPE" }); conceptScheme.FinalStructure = TertiaryBool.GetFromEnum(TertiaryBoolEnumType.True); IConceptSchemeObject parent = conceptScheme.ImmutableInstance; IConceptObject freqConcept = CreateConcept(parent, "FREQ", "Frequency"); IConceptObject adjustmentConcept = CreateConcept(parent, "ADJUSTMENT", "The Adjustment"); IConceptObject activityConcpet = CreateConcept(parent, "STS_ACTIVITY", "Name of activity "); IConceptObject timeDimensionConcpet = CreateConcept(parent, "TIME_PERIOD", "Name of Time Period"); IConceptObject decimalsConcept = CreateConcept(parent, "DECIMALS", "Name of concept"); IConceptObject obsConcept = CreateConcept(parent, "OBS_VALUE", "Name of observation value"); ICodelistObject freqCl = CreateCodelist("CL_FREQ", "Freq codelist", "Q", "A", "M"); ICodelistObject adjCl = CreateCodelist("CL_ADJUSTMENT", "Adjustment codelist", "N", "S", "W"); ICodelistObject actCl = CreateCodelist("CL_ACTIVITY", "Activity codelist", "A", "B", "C"); ICodelistObject deciCl = CreateCodelist("CL_DECIMALS", "DECIMALS codelist", "1", "2", "0"); IDataStructureMutableObject mutable = new DataStructureMutableCore { Id = "TEST_DSD", AgencyId = "TEST" }; mutable.AddName("en", "FOO BAR"); mutable.AddDimension( new DimensionMutableCore { ConceptRef = freqConcept.AsReference, FrequencyDimension = true, Representation = new RepresentationMutableCore { Representation = freqCl.AsReference } }); mutable.AddDimension(new DimensionMutableCore { ConceptRef = adjustmentConcept.AsReference, Representation = new RepresentationMutableCore { Representation = adjCl.AsReference } }); mutable.AddDimension(new DimensionMutableCore { ConceptRef = activityConcpet.AsReference, Representation = new RepresentationMutableCore { Representation = actCl.AsReference } }); mutable.AddDimension(new DimensionMutableCore { ConceptRef = timeDimensionConcpet.AsReference, TimeDimension = true }); IList<string> dimList = new List<string> { freqConcept.Id, adjustmentConcept.Id, adjustmentConcept.Id }; var attributeMutableCore = new AttributeMutableCore { ConceptRef = decimalsConcept.AsReference, Representation = new RepresentationMutableCore { Representation = deciCl.AsReference }, AttachmentLevel = AttributeAttachmentLevel.DimensionGroup, AssignmentStatus = AttributeAssignmentStatus.Mandatory.ToString() }; attributeMutableCore.DimensionReferences.AddAll(dimList); mutable.AddAttribute(attributeMutableCore); mutable.PrimaryMeasure = new PrimaryMeasureMutableCore { ConceptRef = obsConcept.AsReference }; var manager = new DataWriterManager(); IDataWriterEngine dataWriter = manager.GetDataWriterEngine(new SdmxDataFormatCore(fromEnum), writer); IDataStructureObject dataStructureObject = mutable.ImmutableInstance; IList<IDatasetStructureReference> structures = new List<IDatasetStructureReference> { new DatasetStructureReferenceCore(null, dataStructureObject.AsReference, null, null, dimAtObs) }; IList<IParty> receiver = new List<IParty> { new PartyCore(new List<ITextTypeWrapper>(), "ZZ9", new List<IContact>(), null) }; var sender = new PartyCore(new List<ITextTypeWrapper> { new TextTypeWrapperImpl("en", "TEST SENDER", null) }, "ZZ1", null, null); IHeader header = new HeaderImpl( null, structures, null, DatasetAction.GetFromEnum(DatasetActionEnumType.Information), "TEST_DATAFLOW", "DATASET_ID", null, DateTime.Now, DateTime.Now, null, null, new List<ITextTypeWrapper> { new TextTypeWrapperImpl("en", "test header name", null) }, new List<ITextTypeWrapper> { new TextTypeWrapperImpl("en", "source 1", null) }, receiver, sender, true); dataWriter.WriteHeader(header); dataWriter.StartDataset(null, dataStructureObject, new DatasetHeaderCore(null, DatasetAction.GetFromEnum(DatasetActionEnumType.Information), structures.First())); var sw = new Stopwatch(); sw.Start(); var startTime = new DateTime(2005, 1, 1); var series = (from f in freqCl.Items from ad in adjCl.Items from ac in actCl.Items from t in Enumerable.Range(0, 100) select new { Freq = f.Id, Adj = ad.Id, Activity = ac.Id, Time = BuildPeriodResolver(f.Id, startTime)(t) }).OrderBy( arg => BuildOrderBy(arg.Freq, arg.Adj, arg.Activity, arg.Time, dimAtObs)).ToArray(); sw.Stop(); Trace.WriteLine(sw.Elapsed); sw.Reset(); sw.Start(); string lastKey = null; int i = 0; foreach (var key in series) { var currentKey = new List<string>(); string crossValue = null; if (!string.Equals(freqConcept.Id, dimAtObs)) { currentKey.Add(key.Freq); } else { crossValue = key.Freq; } if (!string.Equals(adjustmentConcept.Id, dimAtObs)) { currentKey.Add(key.Adj); } else { crossValue = key.Adj; } if (!string.Equals(activityConcpet.Id, dimAtObs)) { currentKey.Add(key.Activity); } else { crossValue = key.Activity; } if (!string.Equals(timeDimensionConcpet.Id, dimAtObs)) { currentKey.Add(key.Time); } else { crossValue = key.Time; } var currentKeyValues = string.Join(",", currentKey); if (lastKey == null || !lastKey.Equals(currentKeyValues)) { lastKey = currentKeyValues; i = 0; dataWriter.StartSeries(); if (!string.Equals(freqConcept.Id, dimAtObs)) { dataWriter.WriteSeriesKeyValue(freqConcept.Id, key.Freq); } if (!string.Equals(adjustmentConcept.Id, dimAtObs)) { dataWriter.WriteSeriesKeyValue(adjustmentConcept.Id, key.Adj); } if (!string.Equals(activityConcpet.Id, dimAtObs)) { dataWriter.WriteSeriesKeyValue(activityConcpet.Id, key.Activity); } if (!string.Equals(timeDimensionConcpet.Id, dimAtObs)) { dataWriter.WriteSeriesKeyValue(timeDimensionConcpet.Id, key.Time); } } dataWriter.WriteObservation(crossValue, i.ToString(CultureInfo.InvariantCulture)); i++; } dataWriter.Close(); sw.Stop(); Trace.WriteLine(sw.Elapsed); } if (fromEnum.BaseDataFormat.EnumType == BaseDataFormatEnumType.Generic) { var fileReadableDataLocation = new FileReadableDataLocation(outfile); XMLParser.ValidateXml(fileReadableDataLocation, fromEnum.SchemaVersion); } }
public void TestDataWriterEngineAllDimensions(DataEnumType format) { string outfile = string.Format("{0}-alldim.xml", format); DataType fromEnum = DataType.GetFromEnum(format); using (Stream writer = File.Create(outfile)) { IConceptSchemeMutableObject conceptScheme = new ConceptSchemeMutableCore { Id = "CONCEPTS_TEST", AgencyId = "TEST" }; conceptScheme.AddName("en", "Dummy concept scheme build for this tests"); ////conceptScheme.Annotations.Add(new AnnotationMutableCore() { Id = "ANNOTABLETEST", Title = "Test", Type = "ATYPE" }); conceptScheme.FinalStructure = TertiaryBool.GetFromEnum(TertiaryBoolEnumType.True); IConceptSchemeObject parent = conceptScheme.ImmutableInstance; IConceptObject freqConcept = CreateConcept(parent, "FREQ", "Frequency"); IConceptObject adjustmentConcept = CreateConcept(parent, "ADJUSTMENT", "The Adjustment"); IConceptObject activityConcpet = CreateConcept(parent, "STS_ACTIVITY", "Name of activity "); IConceptObject timeDimensionConcpet = CreateConcept(parent, "TIME_PERIOD", "Name of Time Period"); IConceptObject decimalsConcept = CreateConcept(parent, "DECIMALS", "Name of concept"); IConceptObject obsConcept = CreateConcept(parent, "OBS_VALUE", "Name of observation value"); ICodelistObject freqCl = CreateCodelist("CL_FREQ", "Freq codelist", "Q", "A", "M"); ICodelistObject adjCl = CreateCodelist("CL_ADJUSTMENT", "Adjustment codelist", "N", "S", "W"); ICodelistObject actCl = CreateCodelist("CL_ACTIVITY", "Activity codelist", "A", "B", "C"); ICodelistObject deciCl = CreateCodelist("CL_DECIMALS", "DECIMALS codelist", "1", "2", "0"); IDataStructureMutableObject mutable = new DataStructureMutableCore { Id = "TEST_DSD", AgencyId = "TEST" }; mutable.AddName("en", "FOO BAR"); mutable.AddDimension( new DimensionMutableCore { ConceptRef = freqConcept.AsReference, FrequencyDimension = true, Representation = new RepresentationMutableCore { Representation = freqCl.AsReference } }); mutable.AddDimension(new DimensionMutableCore { ConceptRef = adjustmentConcept.AsReference, Representation = new RepresentationMutableCore { Representation = adjCl.AsReference } }); mutable.AddDimension(new DimensionMutableCore { ConceptRef = activityConcpet.AsReference, Representation = new RepresentationMutableCore { Representation = actCl.AsReference } }); mutable.AddDimension(new DimensionMutableCore { ConceptRef = timeDimensionConcpet.AsReference, TimeDimension = true }); IList<string> dimList = new List<string> { freqConcept.Id, adjustmentConcept.Id, adjustmentConcept.Id }; var attributeMutableCore = new AttributeMutableCore { ConceptRef = decimalsConcept.AsReference, Representation = new RepresentationMutableCore { Representation = deciCl.AsReference }, AttachmentLevel = AttributeAttachmentLevel.DimensionGroup, AssignmentStatus = AttributeAssignmentStatus.Mandatory.ToString() }; attributeMutableCore.DimensionReferences.AddAll(dimList); mutable.AddAttribute(attributeMutableCore); mutable.PrimaryMeasure = new PrimaryMeasureMutableCore { ConceptRef = obsConcept.AsReference }; var manager = new DataWriterManager(); IDataWriterEngine dataWriter = manager.GetDataWriterEngine(new SdmxDataFormatCore(fromEnum), writer); IDataStructureObject dataStructureObject = mutable.ImmutableInstance; IList<IDatasetStructureReference> structures = new List<IDatasetStructureReference> { new DatasetStructureReferenceCore( null, dataStructureObject.AsReference, null, null, DatasetStructureReference.AllDimensions) }; IList<IParty> receiver = new List<IParty> { new PartyCore(new List<ITextTypeWrapper>(), "ZZ9", new List<IContact>(), null) }; var sender = new PartyCore(new List<ITextTypeWrapper> { new TextTypeWrapperImpl("en", "TEST SENDER", null) }, "ZZ1", null, null); IHeader header = new HeaderImpl( null, structures, null, DatasetAction.GetFromEnum(DatasetActionEnumType.Information), "TEST_DATAFLOW", "DATASET_ID", null, DateTime.Now, DateTime.Now, null, null, new List<ITextTypeWrapper> { new TextTypeWrapperImpl("en", "test header name", null) }, new List<ITextTypeWrapper> { new TextTypeWrapperImpl("en", "source 1", null) }, receiver, sender, true); dataWriter.WriteHeader(header); dataWriter.StartDataset(null, dataStructureObject, new DatasetHeaderCore(null, DatasetAction.GetFromEnum(DatasetActionEnumType.Information), structures.First())); var sw = new Stopwatch(); sw.Start(); var series = from f in freqCl.Items from ad in adjCl.Items from ac in actCl.Items select new { f, ad, ac }; sw.Stop(); Trace.WriteLine(sw.Elapsed); sw.Reset(); var startTime = new DateTime(2005, 1, 1); sw.Start(); foreach (var key in series) { dataWriter.StartSeries(); dataWriter.WriteSeriesKeyValue(freqConcept.Id, key.f.Id); dataWriter.WriteSeriesKeyValue(adjustmentConcept.Id, key.ad.Id); dataWriter.WriteSeriesKeyValue(activityConcpet.Id, key.ac.Id); Func<int, string> getPeriod = null; switch (key.f.Id) { case "Q": getPeriod = i => { DateTime months = startTime.AddMonths(3 * i); return DateUtil.FormatDate(months, TimeFormatEnumType.QuarterOfYear); }; dataWriter.WriteAttributeValue(decimalsConcept.Id, "1"); break; case "A": getPeriod = i => { DateTime months = startTime.AddMonths(12 * i); return DateUtil.FormatDate(months, TimeFormatEnumType.Year); }; dataWriter.WriteAttributeValue(decimalsConcept.Id, "0"); break; case "M": getPeriod = i => { DateTime months = startTime.AddMonths(i + 1); return DateUtil.FormatDate(months, TimeFormatEnumType.Month); }; dataWriter.WriteAttributeValue(decimalsConcept.Id, "2"); break; default: Assert.Fail("Test bug. Check CL_FREQ codes"); break; } for (int i = 0; i < 100; i++) { string period = getPeriod(i); dataWriter.WriteObservation(DimensionObject.TimeDimensionFixedId, period, i.ToString(CultureInfo.InvariantCulture)); } } dataWriter.Close(); sw.Stop(); Trace.WriteLine(sw.Elapsed); } if (fromEnum.BaseDataFormat.EnumType == BaseDataFormatEnumType.Generic) { var fileReadableDataLocation = new FileReadableDataLocation(outfile); XMLParser.ValidateXml(fileReadableDataLocation, fromEnum.SchemaVersion); } }
/// <summary> /// Gets the header. /// </summary> /// <param name="dataStructureObject">The data structure object.</param> /// <returns>The <see cref="IHeader"/>.</returns> private static IHeader GetHeader(IDataStructureObject dataStructureObject) { IList<IDatasetStructureReference> structures = new List<IDatasetStructureReference> { new DatasetStructureReferenceCore(dataStructureObject.AsReference) }; IList<IParty> receiver = new List<IParty> { new PartyCore(new List<ITextTypeWrapper>(), "ZZ9", new List<IContact>(), null) }; var sender = new PartyCore(new List<ITextTypeWrapper> { new TextTypeWrapperImpl("en", "TEST SENDER", null) }, "ZZ1", null, null); IHeader header = new HeaderImpl( null, structures, null, DatasetAction.GetFromEnum(DatasetActionEnumType.Information), "TEST_DATAFLOW", "DATASET_ID", null, DateTime.Now, DateTime.Now, null, null, new List<ITextTypeWrapper> { new TextTypeWrapperImpl("en", "test header name", null) }, new List<ITextTypeWrapper> { new TextTypeWrapperImpl("en", "source 1", null) }, receiver, sender, true); return header; }
public void TestDataWriterEngineMultiDataset(DataEnumType format) { string outfile = string.Format("{0}-multi.xml", format); DataType fromEnum = DataType.GetFromEnum(format); var objects = GetSdmxObjects(); IDataStructureObject dataStructureObject = objects.DataStructures.First(); var dataWriterManager = new DataWriterManager(); var startTime = new DateTime(2012, 1, 1); using (Stream writer = File.Create(outfile)) { using (IDataWriterEngine dataWriter = dataWriterManager.GetDataWriterEngine(new SdmxDataFormatCore(fromEnum), writer)) { var header = new HeaderImpl("IDTEST", "ZZ9"); dataWriter.WriteHeader(header); IDatasetHeader dataSetHeader = new DatasetHeaderCore( "UPDATE", DatasetAction.GetFromEnum(DatasetActionEnumType.Replace), new DatasetStructureReferenceCore(dataStructureObject.AsReference)); dataWriter.StartDataset(null, dataStructureObject, dataSetHeader); dataWriter.StartSeries(); dataWriter.WriteSeriesKeyValue("FREQ", "M"); dataWriter.WriteSeriesKeyValue("REF_AREA", "DE"); dataWriter.WriteSeriesKeyValue("ADJUSTMENT", "N"); dataWriter.WriteSeriesKeyValue("STS_INDICATOR", "PROD"); dataWriter.WriteSeriesKeyValue("STS_ACTIVITY", "NS0030"); dataWriter.WriteSeriesKeyValue("STS_INSTITUTION", "1"); dataWriter.WriteSeriesKeyValue("STS_BASE_YEAR", "2000"); var getPeriod1 = GetPeriodFunc("M", startTime); dataWriter.WriteAttributeValue("TIME_FORMAT", GetTimeFormat("M")); for (int i = 0; i < 5; i++) { string period = getPeriod1(i); dataWriter.WriteObservation(period, i.ToString(CultureInfo.InvariantCulture)); dataWriter.WriteAttributeValue("OBS_STATUS", "A"); } IDatasetHeader dataSetHeaderDelete = new DatasetHeaderCore( "DELETE", DatasetAction.GetFromEnum(DatasetActionEnumType.Delete), new DatasetStructureReferenceCore(dataStructureObject.AsReference)); dataWriter.StartDataset(null, dataStructureObject, dataSetHeaderDelete); dataWriter.StartSeries(); dataWriter.WriteSeriesKeyValue("FREQ", "M"); dataWriter.WriteSeriesKeyValue("REF_AREA", "DE"); dataWriter.WriteSeriesKeyValue("ADJUSTMENT", "N"); dataWriter.WriteSeriesKeyValue("STS_INDICATOR", "PROD"); dataWriter.WriteSeriesKeyValue("STS_ACTIVITY", "NS0030"); dataWriter.WriteSeriesKeyValue("STS_INSTITUTION", "1"); dataWriter.WriteSeriesKeyValue("STS_BASE_YEAR", "2000"); var getPeriod = GetPeriodFunc("M", new DateTime(2006, 1, 1)); for (int i = 0; i < 5; i++) { string period = getPeriod(i); dataWriter.WriteObservation(period, "NaN"); } dataWriter.Close(); } } if (fromEnum.BaseDataFormat.EnumType == BaseDataFormatEnumType.Generic) { var fileReadableDataLocation = new FileReadableDataLocation(outfile); XMLParser.ValidateXml(fileReadableDataLocation, fromEnum.SchemaVersion); } }
/// <summary> /// This method queries the mapping store for header information for a specific dataflow /// </summary> /// <param name="beginDate">For ReportingBegin element</param> /// <param name="endDate">For ReportingEnd element</param> /// <param name="dataflowReference">The dataflow reference.</param> /// <returns> /// A <see cref="IHeader" /> object. Otherwise null /// </returns> private IHeader GetHeader(DateTime? beginDate, DateTime? endDate, IMaintainableRefObject dataflowReference) { long headerSysId; string paramId = this._mappingStoreDb.BuildParameterName(ParameterNameConstants.IdParameter); string version1 = this._mappingStoreDb.BuildParameterName(ParameterNameConstants.VersionParameter1); string version2 = this._mappingStoreDb.BuildParameterName(ParameterNameConstants.VersionParameter2); string version3 = this._mappingStoreDb.BuildParameterName(ParameterNameConstants.VersionParameter3); string agency = this._mappingStoreDb.BuildParameterName(ParameterNameConstants.AgencyParameter); var sqlCommand = new StringBuilder(); sqlCommand.Append("SELECT HD.HEADER_ID, HD.TEST, HD.DATASET_AGENCY, HD.DF_ID "); sqlCommand.Append("FROM HEADER HD, DATAFLOW DF, ARTEFACT ART "); sqlCommand.Append("WHERE HD.DF_ID = DF.DF_ID "); sqlCommand.Append("AND DF.DF_ID = ART.ART_ID "); sqlCommand.AppendFormat("AND ART.ID = {0} ", paramId); sqlCommand.AppendFormat("AND dbo.isEqualVersion(ART.VERSION1,ART.VERSION2,ART.VERSION3,{0},{1},{2})=1 ", version1, version2, version3); sqlCommand.AppendFormat("AND ART.AGENCY = {0} ", agency); IDictionary<string, string> additionalAttributes = new Dictionary<string, string>(StringComparer.Ordinal); bool test; DateTime currentDate = DateTime.Now; var dataflowId = dataflowReference.MaintainableId; var dataflowAgency = dataflowReference.AgencyId; var version = dataflowReference.SplitVersion(3); using (DbCommand command = this._mappingStoreDb.GetSqlStringCommand(sqlCommand.ToString())) { this._mappingStoreDb.AddInParameter(command, ParameterNameConstants.IdParameter, DbType.String, dataflowId); this._mappingStoreDb.AddInParameter(command, ParameterNameConstants.VersionParameter1, DbType.Int64, version[0].HasValue ? version[0].Value : 0); this._mappingStoreDb.AddInParameter(command, ParameterNameConstants.VersionParameter2, DbType.Int64, version[1].HasValue ? version[1].Value : 0); this._mappingStoreDb.AddInParameter(command, ParameterNameConstants.VersionParameter3, DbType.Int64, version[2].HasValue ? (object)version[2].Value : null); this._mappingStoreDb.AddInParameter(command, ParameterNameConstants.AgencyParameter, DbType.String, dataflowAgency); using (IDataReader dataReader = this._mappingStoreDb.ExecuteReader(command)) { // we expect only 1 record here if (dataReader.Read()) { headerSysId = DataReaderHelper.GetInt64(dataReader, "HEADER_ID"); test = DataReaderHelper.GetBoolean(dataReader, "TEST"); additionalAttributes.Add("DataSetAgency", DataReaderHelper.GetString(dataReader, "DATASET_AGENCY")); _log.DebugFormat(CultureInfo.InvariantCulture, "Found header information in mapping store for Dataflow {0}", dataflowId); } else { _log.DebugFormat(CultureInfo.InvariantCulture, "No header information found in mapping store for Dataflow {0}", dataflowId); return null; } } } string datasetId = BuildDatasetId(dataflowId, currentDate); // DatasetAction: Information (case that is response to a query) DatasetAction datasetAction = DatasetAction.GetAction("Information"); IHeader ret = new HeaderImpl(additionalAttributes, null, null, datasetAction, dataflowId, datasetId, null, currentDate, currentDate, beginDate, endDate, null, null, null, null, test); PopulateHeaderLocalisedStrings(this._mappingStoreDb, headerSysId, ret); PoulateHeaderSendersAndReceivers(this._mappingStoreDb, headerSysId, ret); if (ret.Sender != null) { DateTime extracted = ret.Extracted.HasValue ? ret.Extracted.Value : currentDate; ret.DatasetId = BuildDatasetId(ret.Id, extracted, ret.Sender.Id); } return ret; }
/// <summary> /// Initializes a new instance of the <see cref="TestDataRetrieverSdmxV21"/> class. /// </summary> public TestMaxAllowedObservations() { this._dataQueryParseManager = new DataQueryParseManager(SdmxSchemaEnumType.Null); this._defaultHeader = new HeaderImpl("TestMaxAllowedObservations", "ZZ9"); }
public void TestMinimum() { IHeader header = new HeaderImpl("TEST", "ZZ"); Assert.AreEqual("TEST", header.Id); Assert.AreEqual("ZZ", header.Sender.Id); }