/// <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); } }
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); } }