/// <summary>
        /// Initializes a new instance of the <see cref="MappingStoreRetrievalManager"/> class.
        /// </summary>
        /// <param name="mappingStoreDB">
        /// The mapping Store DB.
        /// </param>
        public MappingStoreRetrievalManager(Database mappingStoreDB)
        {
            if (mappingStoreDB == null)
            {
                throw new ArgumentNullException("mappingStoreDB");
            }

            this._retrievalEngineContainer = new RetrievalEngineContainer(mappingStoreDB);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="AuthAdvancedStructureRetriever"/> class.
        /// </summary>
        /// <param name="retrievalManager">
        /// The retrieval manager. It can be null in which case the <see cref="AdvancedStructureRetriever"/> will be used.
        /// </param>
        /// <param name="mappingStoreDatabase">
        /// The mapping Store Database.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="mappingStoreDatabase"/> is null.
        /// </exception>
        public AuthAdvancedStructureRetriever(IAdvancedSdmxMutableObjectRetrievalManager retrievalManager, Database mappingStoreDatabase) 
        {
            if (mappingStoreDatabase == null)
            {
                throw new ArgumentNullException("mappingStoreDatabase");
            }

            this._retrievalManager = retrievalManager ?? new AdvancedStructureRetriever(mappingStoreDatabase);
            this._retrievalEngineContainer = new RetrievalEngineContainer(mappingStoreDatabase);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="AdvancedStructureRetriever"/> class.
        /// </summary>
        /// <param name="mappingStoreDB">
        /// The mapping store database.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="mappingStoreDB"/> is null
        /// </exception>
        public AdvancedStructureRetriever(Database mappingStoreDB)
        {
            if (mappingStoreDB == null)
            {
                throw new ArgumentNullException("mappingStoreDB");
            }

            this._mappingStoreDB = mappingStoreDB;
            this._retrievalEngineContainer = new RetrievalEngineContainer(this._mappingStoreDB);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="AdvancedStructureRetriever"/> class.
        /// </summary>
        /// <param name="mappingStoreConnectionStringSettings">
        /// The mapping store connection string settings.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="mappingStoreConnectionStringSettings"/> is null
        /// </exception>
        public AdvancedStructureRetriever(ConnectionStringSettings mappingStoreConnectionStringSettings)
        {
            if (mappingStoreConnectionStringSettings == null)
            {
                throw new ArgumentNullException("mappingStoreConnectionStringSettings");
            }

            this._mappingStoreDB = new Database(mappingStoreConnectionStringSettings);
            this._retrievalEngineContainer = new RetrievalEngineContainer(this._mappingStoreDB);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="AuthMappingStoreRetrievalManager"/> class.
 /// </summary>
 /// <param name="mappingStoreDB">
 /// The mapping store DB.
 /// </param>
 /// <param name="retrievalManager">
 /// The retrieval manager.
 /// </param>
 public AuthMappingStoreRetrievalManager(Database mappingStoreDB, ISdmxMutableObjectRetrievalManager retrievalManager)
 {
     this._retrievalManager = retrievalManager ?? new MappingStoreRetrievalManager(mappingStoreDB);
     this._retrievalEngineContainer = new RetrievalEngineContainer(mappingStoreDB);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="AuthMappingStoreRetrievalManager"/> class.
 /// </summary>
 /// <param name="mappingStoreSettings">
 /// The mapping store DB.
 /// </param>
 /// <param name="retrievalManager">
 /// The retrieval manager.
 /// </param>
 public AuthMappingStoreRetrievalManager(ConnectionStringSettings mappingStoreSettings, ISdmxMutableObjectRetrievalManager retrievalManager)
 {
     var mappingStoreDB = new Database(mappingStoreSettings);
     this._retrievalManager = retrievalManager ?? new MappingStoreRetrievalManager(mappingStoreDB);
     this._retrievalEngineContainer = new RetrievalEngineContainer(mappingStoreDB);
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="AuthCrossReferenceRetrievalManager"/> class.
        /// </summary>
        /// <param name="retrievalManager">
        /// The retrieval manager
        /// </param>
        /// <param name="connectionStringSettings">
        /// The connection String Settings.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="retrievalManager"/> is null
        /// -or-
        /// <paramref name="connectionStringSettings"/> is null
        /// </exception>
        public AuthCrossReferenceRetrievalManager(
            IAuthSdmxMutableObjectRetrievalManager retrievalManager, ConnectionStringSettings connectionStringSettings)
        {
            if (retrievalManager == null)
            {
                throw new ArgumentNullException("retrievalManager");
            }

            if (connectionStringSettings == null)
            {
                throw new ArgumentNullException("connectionStringSettings");
            }

            this._retrievalManager = retrievalManager;
            this._retrievalEngineContainer = new RetrievalEngineContainer(new Database(connectionStringSettings));
            this._fromMutable = new StructureReferenceFromMutableBuilder();
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="AuthCrossReferenceRetrievalManager"/> class.
        /// </summary>
        /// <param name="retrievalAdvancedManager">The retrieval advanced manager.</param>
        /// <param name="mappingStoreDatabase">The mapping store database.</param>
        /// <exception cref="System.ArgumentNullException">
        /// retrievalAdvancedManager
        /// or
        /// mappingStoreDatabase
        /// </exception>
        public AuthCrossReferenceRetrievalManager(IAuthAdvancedSdmxMutableObjectRetrievalManager retrievalAdvancedManager, Database mappingStoreDatabase)
        {
            if (retrievalAdvancedManager == null)
            {
                throw new ArgumentNullException("retrievalAdvancedManager");
            }

            if (mappingStoreDatabase == null)
            {
                throw new ArgumentNullException("mappingStoreDatabase");
            }

            this._retrievalAdvancedManager = retrievalAdvancedManager;
            this._retrievalEngineContainer = new RetrievalEngineContainer(mappingStoreDatabase);
            this._fromMutable = new StructureReferenceFromMutableBuilder();
        }