Exemplo n.º 1
0
        /// <summary>
        /// Gets the SOAP operation.
        /// </summary>
        /// <param name="dataFormat">
        /// The data format.
        /// </param>
        /// <param name="sdmxSchema">
        /// The SDMX schema.
        /// </param>
        /// <returns>
        /// The <see cref="SoapOperation"/>.
        /// </returns>
        public static SoapOperation GetSoapOperation(this BaseDataFormat dataFormat, SdmxSchemaEnumType sdmxSchema)
        {
            switch (sdmxSchema)
            {
            case SdmxSchemaEnumType.Edi:
            case SdmxSchemaEnumType.Ecv:
            case SdmxSchemaEnumType.Csv:
            case SdmxSchemaEnumType.Json:
                return(SoapOperation.Null);
            }

            switch (dataFormat.EnumType)
            {
            case BaseDataFormatEnumType.Generic:
                return(SoapOperation.GetGenericData);

            case BaseDataFormatEnumType.Compact:
                return(sdmxSchema == SdmxSchemaEnumType.VersionTwoPointOne ? SoapOperation.GetStructureSpecificData : SoapOperation.GetCompactData);

            case BaseDataFormatEnumType.Utility:
                return(sdmxSchema == SdmxSchemaEnumType.VersionTwoPointOne ? SoapOperation.Null : SoapOperation.GetUtilityData);

            case BaseDataFormatEnumType.CrossSectional:
                return(sdmxSchema == SdmxSchemaEnumType.VersionTwoPointOne ? SoapOperation.Null : SoapOperation.GetCrossSectionalData);
            }

            return(SoapOperation.Null);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets the simple data controller for SDMX v2.0 SOAP or REST.
        /// </summary>
        /// <param name="dataFormat">
        /// The compact data format.
        /// </param>
        /// <param name="sdmxSchema">
        /// The SDMX schema V20.
        /// </param>
        /// <param name="principal">
        /// The principal.
        /// </param>
        /// <returns>
        /// The <see cref="IController{XmlNode,XmlWriter}"/>.
        /// </returns>
        private SimpleDataController <XmlWriter> GetSimpleDataController(BaseDataFormat dataFormat, SdmxSchema sdmxSchema, DataflowPrincipal principal)
        {
            DataRequestValidator dataRequestValidator;
            IResponseGenerator <XmlWriter, IDataQuery> simpleDataResponseGenerator;

            if (dataFormat.EnumType == BaseDataFormatEnumType.CrossSectional)
            {
                if (sdmxSchema.EnumType != SdmxSchemaEnumType.VersionTwo)
                {
                    throw new SdmxSemmanticException("Impossible request. Requested CrossSectional for SDMX v2.1.");
                }

                var dataWriterBuilder = new CrossDataWriterBuilder();
                simpleDataResponseGenerator = new SimpleCrossDataResponseGenerator <XmlWriter>(this._retrievalWithCrossWriter, dataWriterBuilder);
                dataRequestValidator        = new DataRequestValidator(_crossSectional, _sdmxSchemaV20);
            }
            else
            {
                var dataWriterBuilder = new DataWriterBuilder(dataFormat, sdmxSchema);
                simpleDataResponseGenerator = new SimpleDataResponseGenerator <XmlWriter>(this.GetDataRetrievalWithWriter(sdmxSchema.EnumType), dataWriterBuilder);
                dataRequestValidator        = new DataRequestValidator(dataFormat, sdmxSchema);
            }

            var dataController = new DataController <IDataQuery, XmlWriter>(simpleDataResponseGenerator);
            IDataflowLogManager dataflowLogManager = new DataflowLogManager(dataFormat);
            var requestLogDataController           = new RequestLogDataController <IDataQuery, XmlWriter>(dataController, dataflowLogManager);

            var validatingDataController = new ValidatingDataController <IDataQuery, XmlWriter>(requestLogDataController, dataRequestValidator);
            var authDataController       = new AuthDataController <IDataQuery, XmlWriter>(validatingDataController, principal);

            var simpleDataController = new SimpleDataController <XmlWriter>(authDataController, this._mappingStoreSdmxObjectRetrievalManager);

            return(simpleDataController);
        }
Exemplo n.º 3
0
        /// <summary>
        /// The handle data request.
        /// </summary>
        /// <param name="request">
        /// The request.
        /// </param>
        /// <param name="baseDataFormat">
        /// The base data format.
        /// </param>
        /// <returns>
        /// The <see cref="Message"/>.
        /// </returns>
        private Message HandleDataRequest(Message request, BaseDataFormatEnumType baseDataFormat)
        {
            var dataFormat = BaseDataFormat.GetFromEnum(baseDataFormat);
            var response   = dataFormat.GetSoapOperationResponse(SdmxSchemaEnumType.VersionTwoPointOne).ToString();
            var controller = this._controllerBuilder.BuildDataV21Advanced(HttpContext.Current.User as DataflowPrincipal, dataFormat);

            return(HandleRequest(request, controller, new XmlQualifiedName(response, Ns), dataFormat.GetSoapOperation(SdmxSchemaEnumType.VersionTwoPointOne)));
        }
Exemplo n.º 4
0
 /// <summary>
 ///     Initializes static members of the <see cref="ControllerBuilder" /> class.
 /// </summary>
 static ControllerBuilder()
 {
     _log = LogManager.GetLogger(typeof(ControllerBuilder));
     _compactDataFormat = BaseDataFormat.GetFromEnum(BaseDataFormatEnumType.Compact);
     _genericDataFormat = BaseDataFormat.GetFromEnum(BaseDataFormatEnumType.Generic);
     _crossSectional    = BaseDataFormat.GetFromEnum(BaseDataFormatEnumType.CrossSectional);
     _sdmxSchemaV20     = SdmxSchema.GetFromEnum(SdmxSchemaEnumType.VersionTwo);
     _sdmxSchemaV21     = SdmxSchema.GetFromEnum(SdmxSchemaEnumType.VersionTwoPointOne);
 }
Exemplo n.º 5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DataflowLogManager" /> class.
        /// </summary>
        /// <param name="dataFormat">The data format.</param>
        public DataflowLogManager(BaseDataFormat dataFormat)
        {
            if (dataFormat == null)
            {
                throw new ArgumentNullException("dataFormat");
            }

            this._dataFormat = dataFormat;
            this._separator = ConfigurationManager.AppSettings["log.df.file.separator"] ?? ";";
        }
Exemplo n.º 6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DataflowLogManager" /> class.
        /// </summary>
        /// <param name="dataFormat">The data format.</param>
        public DataflowLogManager(BaseDataFormat dataFormat)
        {
            if (dataFormat == null)
            {
                throw new ArgumentNullException("dataFormat");
            }

            this._dataFormat = dataFormat;
            this._separator  = ConfigurationManager.AppSettings["log.df.file.separator"] ?? ";";
        }
Exemplo n.º 7
0
        /// <summary>
        /// Gets the Advanced (SDMX v2.1 SOAP) data controller.
        /// </summary>
        /// <param name="dataFormat">
        /// The compact data format.
        /// </param>
        /// <param name="sdmxSchema">
        /// The SDMX schema V20.
        /// </param>
        /// <param name="principal">
        /// The principal.
        /// </param>
        /// <returns>
        /// The <see cref="IController{XmlNode,XmlWriter}"/>.
        /// </returns>
        private IController <Message, XmlWriter> GetAdvancedDataController(BaseDataFormat dataFormat, SdmxSchema sdmxSchema, DataflowPrincipal principal)
        {
            var dataWriterBuilder     = new DataWriterBuilder(dataFormat, sdmxSchema);
            var dataResponseGenerator = new AdvancedDataResponseGenerator <XmlWriter>(this._advancedRetrievalWithWriter, dataWriterBuilder);
            var operation             = dataFormat.GetSoapOperation(SdmxSchemaEnumType.VersionTwoPointOne);

            var dataController = new DataController <IComplexDataQuery, XmlWriter>(dataResponseGenerator);
            IDataflowLogManager dataflowLogManager = new DataflowLogManager(dataFormat);
            var requestLogDataController           = new RequestLogDataController <IComplexDataQuery, XmlWriter>(dataController, dataflowLogManager);

            var validatingDataController = new ValidatingDataController <IComplexDataQuery, XmlWriter>(requestLogDataController, new DataRequestValidator(dataFormat, sdmxSchema));
            var authDataController       = new AuthDataController <IComplexDataQuery, XmlWriter>(validatingDataController, principal);

            return(new AdvancedDataController <XmlWriter>(operation, authDataController, this._mappingStoreSdmxObjectRetrievalManager));
        }
Exemplo n.º 8
0
        /// <summary>
        /// The handle data request.
        /// </summary>
        /// <param name="request">
        /// The request.
        /// </param>
        /// <param name="baseDataFormat">
        /// The base data format.
        /// </param>
        /// <returns>
        /// The <see cref="Message"/>.
        /// </returns>
        private Message HandleDataRequest(Message request, BaseDataFormatEnumType baseDataFormat)
        {
            var dataFormat = BaseDataFormat.GetFromEnum(baseDataFormat);
            var operation  = dataFormat.GetSoapOperation(SdmxSchemaEnumType.VersionTwo);

            try
            {
                var response   = operation.GetResponse().ToString();
                var controller = this._controllerBuilder.BuildDataV20FromMessage(HttpContext.Current.User as DataflowPrincipal, dataFormat);
                return(HandleRequest(request, controller, new XmlQualifiedName(response, this.Ns), operation));
            }
            catch (FaultException <SdmxFault> )
            {
                throw;
            }
            catch (Exception e)
            {
                _log.Error(operation.ToString(), e);
                throw _messageFaultBuilder.BuildException(e, operation.ToString());
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// The process request.
        /// </summary>
        /// <param name="flowRef">
        /// The flow ref.
        /// </param>
        /// <param name="key">
        /// The key.
        /// </param>
        /// <param name="providerRef">
        /// The provider ref.
        /// </param>
        /// <param name="ctx">
        /// The ctx.
        /// </param>
        /// <returns>
        /// The <see cref="Message"/>.
        /// </returns>
        /// <exception cref="WebFaultException{T}">
        /// </exception>
        private Message ProcessRequest(string flowRef, string key, string providerRef, WebOperationContext ctx)
        {
            var requestAccept = ctx.IncomingRequest.Accept;

            Logger.Info("Got request Content type= " + requestAccept);

            IList <ContentType> acceptHeaderElements = ctx.IncomingRequest.GetAcceptHeaderElements();

            var defaultMediaType = DataMediaType.GetFromEnum(DataMediaEnumType.GenericData).MediaType;
            var contentType      = RestUtils.GetContentType(ctx, h => DataMediaType.GetTypeFromName(h.MediaType) != null, defaultMediaType);

            string requestedVersion = HeaderUtils.GetVersionFromAccept(acceptHeaderElements, contentType.MediaType);

            var datamediaType = DataMediaType.GetTypeFromName(contentType.MediaType);
            var selectedMediaTypeWithVersion = datamediaType.GetMediaTypeVersion(requestedVersion);

            if (selectedMediaTypeWithVersion == null)
            {
                Logger.Error("Cannot serve content type: " + requestAccept);
                throw new WebFaultException <string>("Cannot serve content type: " + requestAccept, HttpStatusCode.NotAcceptable);
            }

            Logger.Debug("Select mediatype with version if required: " + selectedMediaTypeWithVersion);

            BaseDataFormat format  = DataMediaType.GetTypeFromName(selectedMediaTypeWithVersion.MediaType).Format;
            SdmxSchema     version = GetVersionFromMediaType(selectedMediaTypeWithVersion, format);

            Logger.Info("Selected representation info for the controller: format =" + format + " , smdx_schema=" + version);
            IRestDataQuery query   = this.BuildQueryBean(flowRef, key, providerRef, ctx.IncomingRequest.UriTemplateMatch.QueryParameters);
            HttpContext    context = HttpContext.Current;

            var controller          = this._controllerBuilder.BuildDataRest(context.User as DataflowPrincipal, format, version);
            var streamController    = controller.ParseRequest(query);
            var charSetEncoding     = RestUtils.GetCharSetEncoding(contentType);
            var responseContentType = RestUtils.GetContentType(contentType, selectedMediaTypeWithVersion);

            selectedMediaTypeWithVersion.CharSet = charSetEncoding.WebName;
            return(ctx.CreateStreamResponse(stream => RestUtils.StreamXml(version, stream, streamController, charSetEncoding), responseContentType));
        }
Exemplo n.º 10
0
        /// <summary>
        /// Gets the simple data controller for SDMX v2.0 SOAP or REST.
        /// </summary>
        /// <param name="dataFormat">
        /// The compact data format.
        /// </param>
        /// <param name="sdmxSchema">
        /// The SDMX schema V20.
        /// </param>
        /// <param name="principal">
        /// The principal.
        /// </param>
        /// <returns>
        /// The <see cref="IController{XmlNode,XmlWriter}"/>.
        /// </returns>
        private SimpleDataController<XmlWriter> GetSimpleDataController(BaseDataFormat dataFormat, SdmxSchema sdmxSchema, DataflowPrincipal principal)
        {
            DataRequestValidator dataRequestValidator;
            IResponseGenerator<XmlWriter, IDataQuery> simpleDataResponseGenerator;
            if (dataFormat.EnumType == BaseDataFormatEnumType.CrossSectional)
            {
                if (sdmxSchema.EnumType != SdmxSchemaEnumType.VersionTwo)
                {
                    throw new SdmxSemmanticException("Impossible request. Requested CrossSectional for SDMX v2.1.");
                }

                var dataWriterBuilder = new CrossDataWriterBuilder();
                simpleDataResponseGenerator = new SimpleCrossDataResponseGenerator<XmlWriter>(this._retrievalWithCrossWriter, dataWriterBuilder);
                dataRequestValidator = new DataRequestValidator(_crossSectional, _sdmxSchemaV20);
            }
            else
            {
                var dataWriterBuilder = new DataWriterBuilder(dataFormat, sdmxSchema);
                simpleDataResponseGenerator = new SimpleDataResponseGenerator<XmlWriter>(this.GetDataRetrievalWithWriter(sdmxSchema.EnumType), dataWriterBuilder);
                dataRequestValidator = new DataRequestValidator(dataFormat, sdmxSchema);
            }

            var dataController = new DataController<IDataQuery, XmlWriter>(simpleDataResponseGenerator);
            IDataflowLogManager dataflowLogManager = new DataflowLogManager(dataFormat);
            var requestLogDataController = new RequestLogDataController<IDataQuery, XmlWriter>(dataController, dataflowLogManager);

            var validatingDataController = new ValidatingDataController<IDataQuery, XmlWriter>(requestLogDataController, dataRequestValidator);
            var authDataController = new AuthDataController<IDataQuery, XmlWriter>(validatingDataController, principal);

            var simpleDataController = new SimpleDataController<XmlWriter>(authDataController, this._mappingStoreSdmxObjectRetrievalManager);

            return simpleDataController;
        }
Exemplo n.º 11
0
 /// <summary>
 /// Builds the generic data controller for SDMX V21.
 /// </summary>
 /// <param name="principal">
 /// The principal.
 /// </param>
 /// <param name="dataFormat">
 /// The data format.
 /// </param>
 /// <returns>
 /// The <see cref="IController{XmlNode,XmlWriter}"/>.
 /// </returns>
 public IController<Message, XmlWriter> BuildDataV21Advanced(DataflowPrincipal principal, BaseDataFormat dataFormat)
 {
     var sdmxSchema = _sdmxSchemaV21;
     return this.GetAdvancedDataController(dataFormat, sdmxSchema, principal);
 }
Exemplo n.º 12
0
 /// <summary>
 /// Builds the generic data controller for SDMX V21.
 /// </summary>
 /// <param name="principal">
 /// The principal.
 /// </param>
 /// <param name="baseDataFormat">
 /// The base data format.
 /// </param>
 /// <param name="sdmxSchema">
 /// The SDMX schema.
 /// </param>
 /// <returns>
 /// The <see cref="IController{XmlNode,XmlWriter}"/>.
 /// </returns>
 /// <exception cref="SdmxSemmanticException">
 /// Impossible request. Requested CrossSectional for SDMX v2.1.
 /// </exception>
 public IController<IRestDataQuery, XmlWriter> BuildDataRest(DataflowPrincipal principal, BaseDataFormat baseDataFormat, SdmxSchema sdmxSchema)
 {
     return this.GetSimpleDataController(baseDataFormat, sdmxSchema, principal);
 }
Exemplo n.º 13
0
        //private static readonly BaseDataFormat _jsonDataFormat;

        /// <summary>
        /// Builds the json data controller for SDMX V21.
        /// </summary>
        /// <param name="principal">
        /// The principal.
        /// </param>
        /// <param name="baseDataFormat">
        /// The base data format.
        /// </param>
        /// <param name="sdmxSchema">
        /// The SDMX schema.
        /// </param>
        /// <returns>
        /// The <see cref="IController{XmlNode,XmlWriter}"/>.
        /// </returns>
        /// <exception cref="SdmxSemmanticException">
        /// Impossible request. Requested CrossSectional for SDMX v2.1.
        /// </exception>
        public IController<IRestDataQuery, Newtonsoft.Json.JsonTextWriter> BuildJsonDataRest(DataflowPrincipal principal, BaseDataFormat baseDataFormat, SdmxSchema sdmxSchema)
        {
            return this.GetSdmxJsonDataController(baseDataFormat, sdmxSchema, principal);
        }
Exemplo n.º 14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DataMediaType"/> class.
 /// </summary>
 /// <param name="enumType">
 /// The enum type.
 /// </param>
 /// <param name="mediaTypeName">
 /// The media type name.
 /// </param>
 /// <param name="format">
 /// The format.
 /// </param>
 private DataMediaType(DataMediaEnumType enumType, string mediaTypeName, BaseDataFormat format)
     : base(enumType)
 {
     this._mediaTypeName = mediaTypeName;
     this._format        = format;
 }
Exemplo n.º 15
0
 public IController<Message, DsplTextWriter> BuildDsplDataFromMessage(DataflowPrincipal principal, BaseDataFormat baseDataFormat)
 {
     return this.GetDsplDataController(principal);
 }
Exemplo n.º 16
0
        /// <summary>
        /// Builds the DSPL data controller for SDMX V21.
        /// </summary>
        /// <param name="principal">
        /// The principal.
        /// </param>
        /// <param name="baseDataFormat">
        /// The base data format.
        /// </param>
        /// <param name="sdmxSchema">
        /// The SDMX schema.
        /// </param>
        /// <returns>
        /// The <see cref="IController{XmlNode,XmlWriter}"/>.
        /// </returns>
        /// <exception cref="SdmxSemmanticException">
        /// Impossible request. Requested CrossSectional for SDMX v2.1.
        /// </exception>
        public IController<IRestDataQuery, DsplTextWriter> BuildDsplDataRest(DataflowPrincipal principal, BaseDataFormat baseDataFormat, SdmxSchema sdmxSchema)
        {
            DsplDataController<DsplTextWriter> dsplDataController;

            var dataWriterBuilder = new DsplDataWriterBuilder(baseDataFormat, sdmxSchema);            
            var dsplDataResponseGenerator = new DsplDataResponseGenerator<DsplTextWriter>(this.GetDataRetrievalWithWriter(sdmxSchema.EnumType), dataWriterBuilder);
            dsplDataController = new DsplDataController<DsplTextWriter>(dsplDataResponseGenerator, new DataRequestValidator(baseDataFormat, sdmxSchema), principal);

            return dsplDataController;

        }
        /// <summary>
        /// The get version from media type.
        /// </summary>
        /// <param name="selectedMediaTypeWithVersion">
        /// The selected media type with version.
        /// </param>
        /// <param name="format">
        /// The format.
        /// </param>
        /// <returns>
        /// The <see cref="SdmxSchema"/>.
        /// </returns>
        private static SdmxSchema GetVersionFromMediaType(ContentType selectedMediaTypeWithVersion, BaseDataFormat format)
        {
            SdmxSchema version = null;

            switch (format.EnumType)
            {
                case BaseDataFormatEnumType.Edi:
                    version = SdmxSchema.GetFromEnum(SdmxSchemaEnumType.Edi);
                    break;
                case BaseDataFormatEnumType.Csv:
                    version = SdmxSchema.GetFromEnum(SdmxSchemaEnumType.Csv);
                    break;
                default:
                    version = RestUtils.GetVersionFromMediaType(selectedMediaTypeWithVersion);
                    break;
            }

            return version;
        }
        internal string InitializingFromDataBase()
        {
            _baseDataFormat = new DataBase();

            return(_baseDataFormat.ExtractFromDb(_expression));
        }
Exemplo n.º 19
0
        /// <summary>
        /// Gets the simple data controller for SDMX v2.0 SOAP or REST.
        /// </summary>
        /// <param name="dataFormat">
        /// The compact data format.
        /// </param>
        /// <param name="sdmxSchema">
        /// The SDMX schema V20.
        /// </param>
        /// <param name="principal">
        /// The principal.
        /// </param>
        /// <returns>
        /// The <see cref="IController{XmlNode,XmlWriter}"/>.
        /// </returns>
        private SimpleDataController<XmlWriter> GetSimpleDataController(BaseDataFormat dataFormat, SdmxSchema sdmxSchema, DataflowPrincipal principal)
        {
            SimpleDataController<XmlWriter> simpleDataController;
            if (dataFormat.EnumType == BaseDataFormatEnumType.CrossSectional)
            {
                if (sdmxSchema.EnumType != SdmxSchemaEnumType.VersionTwo)
                {
                    throw new SdmxSemmanticException("Impossible request. Requested CrossSectional for SDMX v2.1.");
                }

                var dataWriterBuilder = new CrossDataWriterBuilder();
                var simpleDataResponseGenerator = new SimpleCrossDataResponseGenerator<XmlWriter>(this._retrievalWithCrossWriter, dataWriterBuilder);
                simpleDataController = new SimpleDataController<XmlWriter>(simpleDataResponseGenerator, new DataRequestValidator(_crossSectional, _sdmxSchemaV20), principal);
            }
            else
            {
                var dataWriterBuilder = new DataWriterBuilder(dataFormat, sdmxSchema);
                var simpleDataResponseGenerator = new SimpleDataResponseGenerator<XmlWriter>(this.GetDataRetrievalWithWriter(sdmxSchema.EnumType), dataWriterBuilder);
                simpleDataController = new SimpleDataController<XmlWriter>(simpleDataResponseGenerator, new DataRequestValidator(dataFormat, sdmxSchema), principal);
            }

            return simpleDataController;
        }
Exemplo n.º 20
0
 /// <summary>
 /// Builds the generic data controller for SDMX V21.
 /// </summary>
 /// <param name="principal">
 /// The principal.
 /// </param>
 /// <param name="baseDataFormat">
 /// The base data format.
 /// </param>
 /// <param name="sdmxSchema">
 /// The SDMX schema.
 /// </param>
 /// <returns>
 /// The <see cref="IController{XmlNode,XmlWriter}"/>.
 /// </returns>
 /// <exception cref="SdmxSemmanticException">
 /// Impossible request. Requested CrossSectional for SDMX v2.1.
 /// </exception>
 public IController <IRestDataQuery, XmlWriter> BuildDataRest(DataflowPrincipal principal, BaseDataFormat baseDataFormat, SdmxSchema sdmxSchema)
 {
     return(this.GetSimpleDataController(baseDataFormat, sdmxSchema, principal));
 }
Exemplo n.º 21
0
        private SdmxJsonDataController<Newtonsoft.Json.JsonTextWriter> GetSdmxJsonDataController(BaseDataFormat dataFormat, SdmxSchema sdmxSchema, DataflowPrincipal principal)
        {
            SdmxJsonDataController<Newtonsoft.Json.JsonTextWriter> sdmxjsonDataController;

            var dataWriterBuilder = new SdmxJsonDataWriterBuilder(dataFormat, sdmxSchema);

            var sdmxjsonDataResponseGenerator = new SdmxJsonDataResponseGenerator<Newtonsoft.Json.JsonTextWriter>(this.SdmxJsonGetDataRetrievalWithWriter(), dataWriterBuilder);
            
            sdmxjsonDataController = new SdmxJsonDataController<Newtonsoft.Json.JsonTextWriter>(sdmxjsonDataResponseGenerator, new DataRequestValidator(dataFormat, sdmxSchema), principal);

            return sdmxjsonDataController;
        }
Exemplo n.º 22
0
 /// <summary>
 /// Builds the generic data controller for SDMX V21.
 /// </summary>
 /// <param name="principal">
 /// The principal.
 /// </param>
 /// <param name="baseDataFormat">
 /// The base data format.
 /// </param>
 /// <returns>
 /// The <see cref="IController{XElement,XmlWriter}"/>.
 /// </returns>
 /// <exception cref="SdmxSemmanticException">
 /// Impossible request. Requested CrossSectional for SDMX v2.1.
 /// </exception>
 public IController <Message, XmlWriter> BuildDataV20FromMessage(DataflowPrincipal principal, BaseDataFormat baseDataFormat)
 {
     return(this.GetSimpleDataController(baseDataFormat, _sdmxSchemaV20, principal));
 }
Exemplo n.º 23
0
 /// <summary>
 /// Builds the generic data controller for SDMX V21.
 /// </summary>
 /// <param name="principal">
 /// The principal.
 /// </param>
 /// <param name="baseDataFormat">
 /// The base data format.
 /// </param>
 /// <returns>
 /// The <see cref="IController{XElement,XmlWriter}"/>.
 /// </returns>
 /// <exception cref="SdmxSemmanticException">
 /// Impossible request. Requested CrossSectional for SDMX v2.1.
 /// </exception>
 public IController<Message, XmlWriter> BuildDataV20FromMessage(DataflowPrincipal principal, BaseDataFormat baseDataFormat)
 {
     return this.GetSimpleDataController(baseDataFormat, _sdmxSchemaV20, principal);
 }
Exemplo n.º 24
0
        /// <summary>
        /// Builds the generic data controller for SDMX V21.
        /// </summary>
        /// <param name="principal">
        /// The principal.
        /// </param>
        /// <param name="dataFormat">
        /// The data format.
        /// </param>
        /// <returns>
        /// The <see cref="IController{XmlNode,XmlWriter}"/>.
        /// </returns>
        public IController <Message, XmlWriter> BuildDataV21Advanced(DataflowPrincipal principal, BaseDataFormat dataFormat)
        {
            var sdmxSchema = _sdmxSchemaV21;

            return(this.GetAdvancedDataController(dataFormat, sdmxSchema, principal));
        }
Exemplo n.º 25
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DataWriterBuilder"/> class.
 /// </summary>
 /// <param name="dataFormat">
 /// The data Format.
 /// </param>
 /// <param name="sdmxSchema">
 /// The sdmx Schema.
 /// </param>
 public DataWriterBuilder(BaseDataFormat dataFormat, SdmxSchema sdmxSchema)
 {
     this._dataFormat = dataFormat;
     this._sdmxSchema = sdmxSchema;
 }
        /// <summary>
        /// Builds the CSV ziped data controller for SDMX V21.
        /// </summary>
        /// <param name="principal">
        /// The principal.
        /// </param>
        /// <param name="baseDataFormat">
        /// The base data format.
        /// </param>
        /// <param name="sdmxSchema">
        /// The SDMX schema.
        /// </param>
        /// <returns>
        /// The <see cref="IController{XmlNode,XmlWriter}"/>.
        /// </returns>
        /// <exception cref="SdmxSemmanticException">
        /// Impossible request. Requested CrossSectional for SDMX v2.1.
        /// </exception>
        public IController<IRestDataQuery, CsvZipTextWriter> BuildCsvZipDataRest(DataflowPrincipal principal, BaseDataFormat baseDataFormat, SdmxSchema sdmxSchema)
        {
            CsvZipDataController<CsvZipTextWriter> CsvZipDataController;

            var dataWriterBuilder = new CsvZipDataWriterBuilder(baseDataFormat, sdmxSchema);
            var CsvZipDataResponseGenerator = new CsvZipDataResponseGenerator<CsvZipTextWriter>(this.GetDataRetrievalWithWriter(sdmxSchema.EnumType), dataWriterBuilder);
            CsvZipDataController = new CsvZipDataController<CsvZipTextWriter>(CsvZipDataResponseGenerator, new DataRequestValidator(baseDataFormat, sdmxSchema), principal);

            return CsvZipDataController;

        }
Exemplo n.º 27
0
 /// <summary>
 /// Gets the SOAP operation response.
 /// </summary>
 /// <param name="dataFormat">
 /// The data format.
 /// </param>
 /// <param name="sdmxSchema">
 /// The SDMX schema.
 /// </param>
 /// <returns>
 /// The SOAP operation response.
 /// </returns>
 public static SoapOperationResponse GetSoapOperationResponse(this BaseDataFormat dataFormat, SdmxSchemaEnumType sdmxSchema)
 {
     return(dataFormat.GetSoapOperation(sdmxSchema).GetResponse());
 }
        /// <summary>
        /// Gets the CsvZip data controller for SDMX v2.0 SOAP or REST.
        /// </summary>
        /// <param name="dataFormat">
        /// The compact data format.
        /// </param>
        /// <param name="sdmxSchema">
        /// The SDMX schema V20.
        /// </param>
        /// <param name="principal">
        /// The principal.
        /// </param>
        /// <returns>
        /// The <see cref="IController{XmlNode,XmlWriter}"/>.
        /// </returns>
        private CsvZipDataController<CsvZipTextWriter> GetCsvZipDataController(BaseDataFormat dataFormat, SdmxSchema sdmxSchema, DataflowPrincipal principal)
        {
            CsvZipDataController<CsvZipTextWriter> CsvZipDataController;

            var dataWriterBuilder = new CsvZipDataWriterBuilder(dataFormat, sdmxSchema);
            var CsvZipDataResponseGenerator = new CsvZipDataResponseGenerator<CsvZipTextWriter>(this.GetDataRetrievalWithWriter(sdmxSchema.EnumType), dataWriterBuilder);
            CsvZipDataController = new CsvZipDataController<CsvZipTextWriter>(CsvZipDataResponseGenerator, new DataRequestValidator(dataFormat, sdmxSchema), principal);

            return CsvZipDataController;
        }
Exemplo n.º 29
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DataRequestValidator"/> class.
 ///     Initializes a new instance of the <see cref="T:System.Object"/> class.
 /// </summary>
 /// <param name="format">
 /// The format.
 /// </param>
 /// <param name="schema">
 /// The schema.
 /// </param>
 public DataRequestValidator(BaseDataFormat format, SdmxSchema schema)
 {
     this._format = format;
     this._schema = schema;
 }
Exemplo n.º 30
0
        /// <summary>
        /// Gets the Advanced (SDMX v2.1 SOAP) data controller.
        /// </summary>
        /// <param name="dataFormat">
        /// The compact data format.
        /// </param>
        /// <param name="sdmxSchema">
        /// The SDMX schema V20.
        /// </param>
        /// <param name="principal">
        /// The principal.
        /// </param>
        /// <returns>
        /// The <see cref="IController{XmlNode,XmlWriter}"/>.
        /// </returns>
        private IController<Message, XmlWriter> GetAdvancedDataController(BaseDataFormat dataFormat, SdmxSchema sdmxSchema, DataflowPrincipal principal)
        {
            var dataWriterBuilder = new DataWriterBuilder(dataFormat, sdmxSchema);
            var dataResponseGenerator = new AdvancedDataResponseGenerator<XmlWriter>(this._advancedRetrievalWithWriter, dataWriterBuilder);
            var operation = dataFormat.GetSoapOperation(SdmxSchemaEnumType.VersionTwoPointOne);

            var dataController = new DataController<IComplexDataQuery, XmlWriter>(dataResponseGenerator);
            IDataflowLogManager dataflowLogManager = new DataflowLogManager(dataFormat);
            var requestLogDataController = new RequestLogDataController<IComplexDataQuery, XmlWriter>(dataController, dataflowLogManager);

            var validatingDataController = new ValidatingDataController<IComplexDataQuery, XmlWriter>(requestLogDataController, new DataRequestValidator(dataFormat, sdmxSchema));
            var authDataController = new AuthDataController<IComplexDataQuery, XmlWriter>(validatingDataController, principal);

            return new AdvancedDataController<XmlWriter>(operation, authDataController, this._mappingStoreSdmxObjectRetrievalManager);
        }
 public IController<Message, CsvZipTextWriter> BuildCsvZipDataFromMessage(DataflowPrincipal principal, BaseDataFormat baseDataFormat)
 {
     return this.GetCsvZipDataController(baseDataFormat, _sdmxSchemaV20, principal);
 }
Exemplo n.º 32
0
 /// <summary>
 ///     Initializes static members of the <see cref="ControllerBuilder" /> class.
 /// </summary>
 static ControllerBuilder()
 {
     _compactDataFormat = BaseDataFormat.GetFromEnum(BaseDataFormatEnumType.Compact);
     _genericDataFormat = BaseDataFormat.GetFromEnum(BaseDataFormatEnumType.Generic);
     _crossSectional = BaseDataFormat.GetFromEnum(BaseDataFormatEnumType.CrossSectional);
     _sdmxSchemaV20 = SdmxSchema.GetFromEnum(SdmxSchemaEnumType.VersionTwo);
     _sdmxSchemaV21 = SdmxSchema.GetFromEnum(SdmxSchemaEnumType.VersionTwoPointOne);
 }
Exemplo n.º 33
0
        /// <summary>
        /// The get version from media type.
        /// </summary>
        /// <param name="selectedMediaTypeWithVersion">
        /// The selected media type with version.
        /// </param>
        /// <param name="format">
        /// The format.
        /// </param>
        /// <returns>
        /// The <see cref="SdmxSchema"/>.
        /// </returns>
        private static SdmxSchema GetVersionFromMediaType(ContentType selectedMediaTypeWithVersion, BaseDataFormat format)
        {
            SdmxSchema version = null;

            switch (format.EnumType)
            {
            case BaseDataFormatEnumType.Edi:
                version = SdmxSchema.GetFromEnum(SdmxSchemaEnumType.Edi);
                break;

            case BaseDataFormatEnumType.Csv:
                version = SdmxSchema.GetFromEnum(SdmxSchemaEnumType.Csv);
                break;

            default:
                version = RestUtils.GetVersionFromMediaType(selectedMediaTypeWithVersion);
                break;
            }

            return(version);
        }
Exemplo n.º 34
0
 /// <summary>
 /// Gets the Advanced (SDMX v2.1 SOAP) data controller.
 /// </summary>
 /// <param name="dataFormat">
 /// The compact data format.
 /// </param>
 /// <param name="sdmxSchema">
 /// The SDMX schema V20.
 /// </param>
 /// <param name="principal">
 /// The principal.
 /// </param>
 /// <returns>
 /// The <see cref="IController{XmlNode,XmlWriter}"/>.
 /// </returns>
 private IController<Message, XmlWriter> GetAdvancedDataController(BaseDataFormat dataFormat, SdmxSchema sdmxSchema, DataflowPrincipal principal)
 {
     var dataWriterBuilder = new DataWriterBuilder(dataFormat, sdmxSchema);
     var dataResponseGenerator = new AdvancedDataResponseGenerator<XmlWriter>(this._advancedRetrievalWithWriter, dataWriterBuilder);
     var operation = dataFormat.GetSoapOperation(SdmxSchemaEnumType.VersionTwoPointOne);
     var dataController = new AdvancedDataController<XmlWriter>(dataResponseGenerator, new DataRequestValidator(dataFormat, sdmxSchema), principal, operation);
     return dataController;
 }
Exemplo n.º 35
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DataRequestValidator"/> class.
 ///     Initializes a new instance of the <see cref="T:System.Object"/> class.
 /// </summary>
 /// <param name="format">
 /// The format.
 /// </param>
 /// <param name="schema">
 /// The schema.
 /// </param>
 public DataRequestValidator(BaseDataFormat format, SdmxSchema schema)
 {
     this._format = format;
     this._schema = schema;
 }
        internal string InitializingFromXml(string methodOfExtraction)
        {
            _baseDataFormat = new Xml();

            return(Constants.Url == methodOfExtraction ? (new Xml().DataExtractionFromUrl(_expression)) : (new Xml().DataExtractionFromLocal(_expression)));
        }