Пример #1
0
        /// <summary>
        /// Starts this instance. In derived class you have to execute this base before your overrided code.
        /// </summary>
        public override void Start()
        {
            base.Start();

            try
            {
                using (var transaction = uow.BeginTransaction())
                {
                    var storageService = ((Common)ParentEngineModule).StorageService;

                    // Get parameters
                    //var sourceFilePath = GetDataValue(EngineDataDirection.Input, "SourceFilePath").Get<string>();
                    var sourceFilePath       = GetDataValue(EngineDataDirection.Input, "SourceFilePath").Get <VirtualPath>();
                    var skipStartingDataRows = GetDataValue(EngineDataDirection.Input, "SkipStartingDataRows").GetNullable <int>();
                    var firstRowHasHeader    = GetDataValue(EngineDataDirection.Input, "FirstRowHasHeader").Get <bool>();
                    var columnDelimiter      = GetDataValue(EngineDataDirection.Input, "ColumnDelimiter").Get <char>();
                    var limitToRows          = GetDataValue(EngineDataDirection.Input, "LimitToRows").GetNullable <int>();

                    //Start parsing file
                    AddMessage("Configuring parser to read file", MessageSeverity.Debug);
                    var parser = new GenericParserAdapter(storageService.FileOpenTextReader(sourceFilePath));
                    parser.SkipStartingDataRows = skipStartingDataRows ?? 0;
                    parser.FirstRowHasHeader    = firstRowHasHeader;
                    parser.ColumnDelimiter      = columnDelimiter;
                    parser.MaxRows = limitToRows ?? 0;
                    var table = new TableValue();

                    AddMessage($"Begin parsing file: '{sourceFilePath}'.", MessageSeverity.Debug);
                    table.Set(parser.GetDataTable());

                    AddMessage($"Setting output value in element.", MessageSeverity.Debug);
                    SetDataValue(EngineDataDirection.Output, "Table", table);

                    AddMessage($"Releasing unnecessary resources.", MessageSeverity.Debug);
                    parser.Dispose();

                    AddMessage($"Parsing file completed. {table.RowCount} read.", MessageSeverity.Debug);
                }
            }
            catch (Exception e)
            {
                AddMessage($"Error reading flat file. {e.Message}", MessageSeverity.Error);
            }
        }
Пример #2
0
        public override void Start()
        {
            base.Start();

            try
            {
                var table = new TableValue();

                // Get parameters
                var connectionString = GetDataValue(EngineDataDirection.Input, "ConnectionString").Get <string>();
                var sqlQuery         = GetDataValue(EngineDataDirection.Input, "SqlQuery").Get <string>();

                var sqlErrors = new List <string>();
                if (!sqlValidationService.IsSQLQueryValid(sqlQuery, out sqlErrors))
                {
                    AddMessage($"Error/s in the sql query provided: {string.Join("; ", sqlErrors)}", MessageSeverity.Error);
                    return;
                }

                //Start connecting to SQL
                using (SqlConnection sourceConnection = new SqlConnection(connectionString))
                {
                    sourceConnection.Open();

                    // Get data from the source table as a SqlDataReader.
                    SqlCommand    commandSourceData = new SqlCommand(sqlQuery, sourceConnection);
                    SqlDataReader reader            = commandSourceData.ExecuteReader();
                    var           dataTable         = new DataTable();
                    dataTable.Load(reader);
                    table.Set(dataTable);

                    AddMessage($"Setting output value in element.", MessageSeverity.Debug);
                    SetDataValue(EngineDataDirection.Output, "Table", table);

                    AddMessage($"Importing Sql Query completed. {table.RowCount} rows read.", MessageSeverity.Debug);
                }
            }
            catch (Exception e)
            {
                AddMessage($"Error importing SQL Query. {e.Message}", MessageSeverity.Error);
            }
        }