Ejemplo n.º 1
0
        public void Initialise_NullOrEmptyDelimiter_DefaultsToComma(string delimiter)
        {
            IDataReader reader = Substitute.For <IDataReader>();

            _reportWriter.Initialise(_filePath, delimiter);

            Assert.AreEqual(",", _reportWriter.Delimiter);
        }
Ejemplo n.º 2
0
        public void Initialise_Delimiter_IsSetCorrectly(string delimiter)
        {
            IDataReader reader = Substitute.For <IDataReader>();

            _reportWriter.Initialise(_filePath, delimiter);

            Assert.AreEqual(delimiter, _reportWriter.Delimiter);
        }
Ejemplo n.º 3
0
        public void Initialise_Delimiter_IsIgnored(string delimiter)
        {
            IDataReader reader = Substitute.For <IDataReader>();

            _reportWriter.Initialise(_filePath, delimiter);

            Assert.IsNull(_reportWriter.Delimiter);
        }
        public ReportJobResult ExecuteJob(ConnectionSetting connection, ReportJob job)
        {
            using (IDbConnection conn = _dbConnectionFactory.CreateConnection(connection.ConnectionString))
            {
                int      rowCount = 0;
                DateTime start    = DateTime.UtcNow;
                using (var command = conn.CreateCommand())
                {
                    command.CommandTimeout = 0;
                    command.CommandText    = job.Command;
                    if (!String.IsNullOrEmpty(job.CommandType) && job.CommandType.ToLower() == Constants.CommandType.StoredProcedure)
                    {
                        command.CommandType = System.Data.CommandType.StoredProcedure;
                    }

                    // add the parameters to the command
                    SqlParameter[] parameters = _dbParameterUtility.ConvertXmlToDbParameters(job.Parameters);
                    foreach (IDataParameter p in parameters)
                    {
                        command.Parameters.Add(p);
                    }

                    // make sure an output format has been specified - if it hasn't then just execute the command
                    if (String.IsNullOrEmpty(job.OutputFormat))
                    {
                        command.ExecuteNonQuery();
                    }
                    else
                    {
                        using (var reader = command.ExecuteReader())
                        {
                            string destinationFile = Path.Combine(job.OutputFilePath, job.OutputFileName);
                            using (IReportWriter reportWriter = _reportWriterFactory.GetReportWriter(job.OutputFormat))
                            {
                                ColumnMetaData[] columnInfo = GetColumnInfo(reader).ToArray();
                                reportWriter.Initialise(destinationFile, job.Delimiter);
                                reportWriter.WriteHeader(columnInfo.Select(x => x.Name));
                                while (reader.Read())
                                {
                                    reportWriter.WriteLine(reader, columnInfo);
                                    rowCount++;
                                }
                            }
                        }
                    }
                }

                ReportJobResult result = new ReportJobResult();
                result.RowCount      = rowCount;
                result.ExecutionTime = DateTime.UtcNow.Subtract(start);
                return(result);
            }
        }