Beispiel #1
0
 public ReaderLoadTest(ReaderAdapter adapter, BlockingQueue <QueryDescription> queries)
     : base(adapter)
 {
     Contract.Requires(queries != null);
     _adapter = adapter;
     _queries = queries;
 }
 private DatabaseReader(string name, string connectionString, SchemaParameters schemaParameters)
 {
     _db = new DatabaseSchema(connectionString, name);
     _schemaParameters = schemaParameters;
     _schemaParameters.DatabaseSchema = _db;
     _readerAdapter = ReaderAdapterFactory.Create(_schemaParameters);
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="DatabaseReader"/> class from a DbConnection.
        /// </summary>
        /// <param name="connection">The connection.</param>
        public DatabaseReader(System.Data.Common.DbConnection connection)
        {
            var name = connection.GetType().Namespace;

            _db = new DatabaseSchema(connection.ConnectionString, name);
            _schemaParameters = new SchemaParameters(connection)
            {
                DatabaseSchema = _db
            };
            _readerAdapter = ReaderAdapterFactory.Create(_schemaParameters);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="DatabaseReader"/> class for one of the standard providers.
 /// </summary>
 /// <param name="connectionString">The connection string.</param>
 /// <param name="sqlType">Type of the SQL.</param>
 public DatabaseReader(string connectionString, SqlType sqlType)
 {
     if (connectionString == null)
     {
         throw new ArgumentNullException("connectionString");
     }
     _schemaParameters = new SchemaParameters(connectionString, sqlType);
     _readerAdapter    = ReaderAdapterFactory.Create(_schemaParameters);
     //_schemaReader = SchemaReaderFactory.Create(connectionString, sqlType);
     _db = new DatabaseSchema(connectionString, _schemaParameters.ProviderName);
     _schemaParameters.DatabaseSchema = _db;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="DatabaseReader"/> class for one of the standard providers.
        /// </summary>
        /// <param name="connectionString">The connection string.</param>
        /// <param name="sqlType">Type of the SQL.</param>
        /// <param name="additionalParameters"></param>
        public DatabaseReader(string connectionString, SqlType sqlType, int commandTimeout, IAdditionalProperties additionalParameters = null)
        {
            if (connectionString == null)
            {
                throw new ArgumentNullException("connectionString");
            }
            _schemaParameters = new SchemaParameters(connectionString, sqlType);
            _readerAdapter    = ReaderAdapterFactory.Create(_schemaParameters, commandTimeout);
            _readerAdapter.AdditionalParameters = additionalParameters;

            //_schemaReader = SchemaReaderFactory.Create(connectionString, sqlType);
            _db = new DatabaseSchema(connectionString, _schemaParameters.ProviderName);
            _schemaParameters.DatabaseSchema = _db;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DatabaseReader"/> class using an existing <see cref="DatabaseSchema"/>.
        /// </summary>
        /// <param name="databaseSchema">The database schema. Can be a subclassed version.</param>
        public DatabaseReader(DatabaseSchema databaseSchema)
        {
            if (databaseSchema == null)
            {
                throw new ArgumentNullException("databaseSchema");
            }
            if (databaseSchema.ConnectionString == null)
            {
                throw new ArgumentException("No connectionString");
            }

            _schemaParameters = new SchemaParameters(databaseSchema.ConnectionString, databaseSchema.Provider);
            _schemaParameters.DatabaseSchema = databaseSchema;
            _schemaParameters.Owner          = databaseSchema.Owner;
            _readerAdapter = ReaderAdapterFactory.Create(_schemaParameters);
            _db            = databaseSchema;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DatabaseReader"/> class using an existing <see cref="DatabaseSchema"/>.
        /// </summary>
        /// <param name="databaseSchema">The database schema. Can be a subclassed version.</param>
        /// <param name="commandTimeout"></param>
        /// <param name="additionalParameters"></param>
        public DatabaseReader(DatabaseSchema databaseSchema, int commandTimeout, IAdditionalProperties additionalParameters = null)
        {
            if (databaseSchema == null)
            {
                throw new ArgumentNullException("databaseSchema");
            }
            if (databaseSchema.ConnectionString == null)
            {
                throw new ArgumentException("No connectionString");
            }

            _schemaParameters = new SchemaParameters(databaseSchema.ConnectionString, databaseSchema.Provider);
            _schemaParameters.DatabaseSchema = databaseSchema;
            _schemaParameters.Owner          = databaseSchema.Owner;
            _readerAdapter = ReaderAdapterFactory.Create(_schemaParameters, commandTimeout);
            _readerAdapter.AdditionalParameters = additionalParameters;
            _db = databaseSchema;
        }
        protected override MetricsUnit GetSampleMetrics()
        {
            try
            {
                // load sample file, read only one row in order to create metrics table by sample metric unit
                ReaderAdapter.Init(FileManager.Open(Configuration.SampleFilePath), Configuration);
                ReaderAdapter.Reader.Read();

                CurrentMetricsUnit = new MetricsUnit {
                    GetEdgeField = GetEdgeField, Output = new DeliveryOutput()
                };
                MetricsMappings.Apply(CurrentMetricsUnit);
                return(CurrentMetricsUnit);
            }
            catch (Exception ex)
            {
                throw new ConfigurationErrorsException(String.Format("Failed to create metrics by sample file '{0}', ex: {1}", Configuration.SampleFilePath, ex.Message));
            }
        }
        protected override ServiceOutcome DoPipelineWork()
        {
            InitMappings();

            LoadConfiguration();

            // Import data
            using (ReaderAdapter)
            {
                using (ImportManager = new MetricsDeliveryManager(InstanceID, EdgeTypes, _importManagerOptions)
                {
                    OnLog = Log
                })
                {
                    // create objects tables and metrics table according to sample metrics
                    ImportManager.BeginImport(Delivery, GetSampleMetrics());
                    Log("ImportManager.BeginImport() executed successfully", LogMessageType.Debug);

                    // open delivery file
                    using (var stream = _deliveryFile.OpenContents(compression: _compression))
                    {
                        ReaderAdapter.Init(stream, Configuration);

                        // for each row in file read and import into metrics table
                        var readSuccess = false;
                        while (CheckEndOfFile())
                        {
                            readSuccess = true;
                            ProcessMetrics();
                        }

                        if (!readSuccess)
                        {
                            Log("Could Not read data from file!, check file mapping and configuration", Core.Utilities.LogMessageType.Warning);
                        }

                        ImportManager.EndImport();
                        Log("ImportManager.EndImport() executed successfully", LogMessageType.Debug);
                    }
                }
            }
            return(ServiceOutcome.Success);
        }
 public ProcedureBuilder(ReaderAdapter readerAdapter, DatabaseSchema databaseSchema, Exclusions exclusions)
 {
     _readerAdapter  = readerAdapter;
     _databaseSchema = databaseSchema;
     _exclusions     = exclusions;
 }
Beispiel #11
0
        protected override Core.Services.ServiceOutcome DoPipelineWork()
        {
            // Setup/defaults/configuration/etc.
            // ------------------------------------------

            string checksumThreshold    = Configuration.Parameters.Get <T>(Consts.ConfigurationOptions.ChecksumTheshold);
            var    importManagerOptions = new MetricsDeliveryManagerOptions()
            {
                SqlTransformCommand = Configuration.Parameters.Get <T>(Consts.AppSettings.SqlTransformCommand),
                SqlStageCommand     = Configuration.Parameters.Get <T>(Consts.AppSettings.SqlStageCommand),
                SqlRollbackCommand  = Configuration.Parameters.Get <T>(Consts.AppSettings.SqlRollbackCommand),
                ChecksumThreshold   = checksumThreshold == null ? 0.01 : double.Parse(checksumThreshold)
            };

            string fileName;

            if (!this.Configuration.Options.TryGetValue(Const.DeliveryServiceConfigurationOptions.DeliveryFileName, out fileName))
            {
                throw new ConfigurationException(String.Format("{0} is missing in the service configuration options.", Const.DeliveryServiceConfigurationOptions.DeliveryFileName));
            }

            DeliveryFile file = this.Delivery.Files[fileName];

            if (file == null)
            {
                throw new Exception(String.Format("Could not find delivery file '{0}' in the delivery.", fileName));
            }

            FileCompression compression;
            string          compressionOption;

            if (this.Configuration.Options.TryGetValue(Const.DeliveryServiceConfigurationOptions.Compression, out compressionOption))
            {
                if (!Enum.TryParse <FileCompression>(compressionOption, out compression))
                {
                    throw new ConfigurationException(String.Format("Invalid compression type '{0}'.", compressionOption));
                }
            }
            else
            {
                compression = FileCompression.None;
            }

            // Create format processor from configuration
            string adapterTypeName   = Configuration.GetOption(Consts.ConfigurationOptions.ReaderAdapterType);
            Type   readerAdapterType = Type.GetType(adapterTypeName, true);

            this.ReaderAdapter = (ReaderAdapter)Activator.CreateInstance(readerAdapterType);

            this.Mappings.OnFieldRequired = this.ReaderAdapter.GetField;

            LoadConfiguration();

            // ------------------------------------------

            using (var stream = file.OpenContents(compression: compression))
            {
                using (this.ReaderAdapter)
                {
                    this.ReaderAdapter.Init(stream, Configuration);

                    using (this.ImportManager = CreateImportManager(InstanceID, importManagerOptions))
                    {
                        this.ImportManager.BeginImport(this.Delivery);
                        bool readSuccess = false;
                        while (this.ReaderAdapter.Reader.Read())
                        {
                            readSuccess = true;
                            OnRead();
                        }

                        if (!readSuccess)
                        {
                            Edge.Core.Utilities.Log("Could Not read data from file!, check file mapping and configuration", Core.Utilities.LogMessageType.Warning);
                        }

                        this.ImportManager.EndImport();
                    }
                }
            }

            return(Core.Services.ServiceOutcome.Success);
        }
Beispiel #12
0
 public TableBuilder(ReaderAdapter readerAdapter)
 {
     _readerAdapter = readerAdapter;
 }
 public ViewBuilder(ReaderAdapter readerAdapter, Exclusions exclusions)
 {
     _readerAdapter = readerAdapter;
     _exclusions    = exclusions;
 }
Beispiel #14
0
        protected override ServiceOutcome DoPipelineWork()
        {
            // init mapping and load configuration
            Log("Starting Google.AdWords.CampaignCriterionProcessorService", LogMessageType.Debug);
            InitMappings();

            Mappings.OnMappingApplied = SetEdgeType;

            if (!Mappings.Objects.TryGetValue(typeof(MetricsUnit), out MetricsMappings))
            {
                throw new MappingConfigurationException("Missing mapping definition for MetricsUnit.", "Object");
            }

            LoadConfiguration();
            Progress = 0.1;

            // get nessesary EdgeFields
            var relationField           = GetEdgeFieldByName("Relation");
            var locationField           = GetEdgeFieldByName("Location");
            var languageField           = GetEdgeFieldByName("Language");
            var isLocationNegativeField = GetEdgeFieldByName("IsLocationNegative");
            var isLanguageNegativeField = GetEdgeFieldByName("IsLanguageNegative");

            using (ReaderAdapter)
            {
                using (var stream = _deliveryFile.OpenContents(compression: _compression))
                {
                    ReaderAdapter.Init(stream, Configuration);
                    while (ReaderAdapter.Reader.Read())
                    {
                        // load metrics unit which contains Relation object of Campaign-Language or Campaign-Location
                        CurrentMetricsUnit = new MetricsUnit {
                            GetEdgeField = GetEdgeField, Output = new DeliveryOutput()
                        };
                        MetricsMappings.Apply(CurrentMetricsUnit);

                        // insert loaded relation to List per Campaign
                        var relation = CurrentMetricsUnit.Dimensions[relationField] as RelationObject;
                        if (relation != null)
                        {
                            var campaign = relation.Object1 as Campaign;
                            if (campaign != null)
                            {
                                if (!_campaignRelationMap.ContainsKey(campaign.OriginalID))
                                {
                                    _campaignRelationMap.Add(campaign.OriginalID, new List <RelationObject>());
                                }

                                _campaignRelationMap[campaign.OriginalID].Add(relation);
                            }
                        }
                    }
                }
            }
            Progress = 0.5;

            using (ImportManager = new MetricsDeliveryManager(InstanceID, EdgeTypes, _importManagerOptions)
            {
                OnLog = Log
            })
            {
                // create object tables
                ImportManager.BeginImport(Delivery, null);

                // add objects to EdgeObjectsManager cache
                PrepareImportObjects(x => x is Location, locationField, isLocationNegativeField);
                PrepareImportObjects(x => x is Language, languageField, isLanguageNegativeField);

                // import objects
                ImportManager.EndImport();
            }
            return(ServiceOutcome.Success);
        }
 private bool CheckEndOfFile()
 {
     // if defined EOF indication read till the indication, otherwise read till the end of the file
     return((_eofIndication != null && _eofFieldName != null) ? ReaderAdapter.Reader.Read() && ReaderAdapter.GetField(_eofFieldName).ToString() != _eofIndication :
            ReaderAdapter.Reader.Read());
 }