Ejemplo n.º 1
0
        private void ProcessFileDaily(string fileName, StockDefinition stockDefinition)
        {
            DataPumpStockData data = new DataPumpStockData();

            _stockDataToDBWriter.StartSession();
            try
            {
                _dataFileIterator.Open(fileName);
                try
                {
                    if (!_dataFileIterator.SetOnLineAfterTS(_dataPumpProvider.GetMaxTS(stockDefinition, StockDataRange.Daily, 0)))
                    {
                        return;
                    }
                    while (!_dataFileIterator.Eof())
                    {
                        string currLine = _dataFileIterator.ReadLine();
                        _lineToStockData.Map(currLine, _dataFileIterator.PreviousLine(), data);
                        _stockDataToDBWriter.WriteDaily(data, stockDefinition);
                    }
                }
                finally
                {
                    _dataFileIterator.Close();
                }
            } finally
            {
                _stockDataToDBWriter.EndSession();
            }
        }
        public void Map(string currFileLine, string prevFileLine, DataPumpStockData stockData)
        {
            var currData = SplitLineToCols(currFileLine);
            var prevData = SplitLineToCols(prevFileLine);

            VerifyLineData(currData);
            FillStockData(stockData, currData, prevData);
        }
 private void FillStockData(DataPumpStockData stockData, string[] currLineData, string[] prevLineData)
 {
     stockData.O         = currLineData[2];
     stockData.H         = currLineData[3];
     stockData.L         = currLineData[4];
     stockData.C         = currLineData[5];
     stockData.V         = currLineData[6];
     stockData.RefCourse = prevLineData != null ? prevLineData[5] : "0";
     stockData.TS        = DateTime.ParseExact(currLineData[1], "yyyyMMdd", null);
 }
 public void WriteDaily(DataPumpStockData data, StockDefinition stockDefinition)
 {
     _dataPumpProvider.ExecuteSQL(_commandGenerator.InsertDaily(data, stockDefinition));
 }
Ejemplo n.º 5
0
 public string InsertDaily(DataPumpStockData data, StockDefinition stockDefinition)
 {
     return($"insert into {_dataPumpProvider.GetTableName(stockDefinition.Type, StockDataRange.Daily, 0)}(fk_id_spolki, ts, open, high, low, close, refcourse, volume) values " +
            $"({stockDefinition.ID}, to_date('{PrepareDate(data.TS)}', 'YYYY-MM-DD'), " +
            $"{PrepareFloat(data.O)}, {PrepareFloat(data.H)}, {PrepareFloat(data.L)}, {PrepareFloat(data.C)}, {PrepareFloat(data.RefCourse)}, {data.V})");
 }