/// <summary>
        ///     Writes the data.
        /// </summary>
        /// <param name="dataQuery">The data query.</param>
        /// <param name="dataWriter">The data writer.</param>
        private static void WriteData(IBaseDataQuery dataQuery, IDataWriterEngine dataWriter)
        {
            if (dataQuery.DataQueryDetail.EnumType == DataQueryDetailEnumType.NoData || dataQuery.DataQueryDetail.EnumType == DataQueryDetailEnumType.Full)
            {
                if (dataQuery.Dataflow.Id.Equals("TEST_GROUPS"))
                {
                    dataWriter.StartGroup("Sibling");
                    dataWriter.WriteGroupKeyValue("REF_AREA", "LU");
                    dataWriter.WriteGroupKeyValue("ADJUSTMENT", "N");
                    dataWriter.WriteGroupKeyValue("STS_INDICATOR", "PROD");
                    dataWriter.WriteGroupKeyValue("STS_ACTIVITY", "NS0030");
                    dataWriter.WriteGroupKeyValue("STS_INSTITUTION", "1");
                    dataWriter.WriteGroupKeyValue("STS_BASE_YEAR", "2000");

                    dataWriter.WriteAttributeValue("DECIMALS", "1");
                    dataWriter.WriteAttributeValue("UNIT", "UNIT");
                }
            }

            // TODO support dimension at observation != TIME_PERIOD
            dataWriter.StartSeries();
            dataWriter.WriteSeriesKeyValue("FREQ", "M");
            dataWriter.WriteSeriesKeyValue("REF_AREA", "LU");
            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");
            if (dataQuery.DataQueryDetail.EnumType == DataQueryDetailEnumType.NoData || dataQuery.DataQueryDetail.EnumType == DataQueryDetailEnumType.Full)
            {
                dataWriter.WriteAttributeValue("TIME_FORMAT", "P1M");
            }

            var startDate = new DateTime(2010, 01, 01);
            if (dataQuery.DataQueryDetail.EnumType == DataQueryDetailEnumType.Full || dataQuery.DataQueryDetail.EnumType == DataQueryDetailEnumType.DataOnly)
            {
                int firstObsCount = 5;
                if (dataQuery.FirstNObservations.HasValue)
                {
                    firstObsCount = Math.Min(firstObsCount, dataQuery.FirstNObservations.Value);
                }

                for (int i = 0; i < firstObsCount; i++)
                {
                    dataWriter.WriteObservation(startDate.AddMonths(i), "1.0", TimeFormat.GetFromEnum(TimeFormatEnumType.Month));
                    if (dataQuery.DataQueryDetail.EnumType == DataQueryDetailEnumType.Full)
                    {
                        dataWriter.WriteAttributeValue("OBS_STATUS", "A");
                    }
                }

                if (dataQuery.LastNObservations.HasValue)
                {
                    int lastObsStart = Math.Max(5 - dataQuery.LastNObservations.Value, firstObsCount);

                    for (int i = lastObsStart; i < 5; i++)
                    {
                        dataWriter.WriteObservation(startDate.AddMonths(i), "1.0", TimeFormat.GetFromEnum(TimeFormatEnumType.Month));
                        if (dataQuery.DataQueryDetail.EnumType == DataQueryDetailEnumType.Full)
                        {
                            dataWriter.WriteAttributeValue("OBS_STATUS", "A");
                        }
                    }
                }
            }
        }