public MainViewModel()
 {
     data              = new DataReaderWriter(this);
     ToDoList          = new ObservableCollection <ToDo>(data.LoadToDos());
     AddToDoCommand    = new AddToDoCommand(this);
     DeleteToDoCommand = new DeleteToDoCommand(this);
 }
        public void RetrieveNames_NonExistingFile_ReturnsListofStrings()
        {
            var loggerMock      = new Mock <ILoggerService>();
            var namesRepository = new DataReaderWriter(loggerMock.Object);

            string path = Directory.GetCurrentDirectory();

            namesRepository.DataSource = @".\..\..\..\DataSource\notExisting.txt";
            var unsortedNames = namesRepository.RetrieveNames();
        }
        public void NewToDoId_ReturnsProperId()
        {
            var testList = new List <ToDo>();

            for (int i = 0; i < 5; i++)
            {
                testList.Add(new ToDo(i, "test", false, null));

                Assert.AreEqual(DataReaderWriter.NewToDoId(testList), testList.Count);
            }
        }
        public void RetrieveNames_ValidTextFile_ReturnsListofStrings()
        {
            var loggerMock      = new Mock <ILoggerService>();
            var namesRepository = new DataReaderWriter(loggerMock.Object);

            string path = Directory.GetCurrentDirectory();

            namesRepository.DataSource = @".\..\..\..\DataSource\unsorted-names-list.txt";
            var unsortedNames = namesRepository.RetrieveNames();

            Assert.IsTrue(unsortedNames.Count == 11);
        }
        public void SaveNames_ValidListOfStrings_SavesStringsToFile()
        {
            var loggerMock      = new Mock <ILoggerService>();
            var namesRepository = new DataReaderWriter(loggerMock.Object);



            List <string> names = new List <string>
            {
                "Adonis Julius Archer",
                "Janet Parsons",
                "Vaughn Lewis"
            };


            namesRepository.Destination = @".\..\..\..\Output";
            namesRepository.SaveNames(names);
        }
        private void toolStripButtonShowEntryData_Click(object sender, EventArgs e)
        {
            if (listViewProviderEntries.SelectedItems.Count == 0)
            {
                return;
            }

            if (listViewProviderEntries.SelectedItems.Count > 1)
            {
                MessageBox.Show("Select only one entry to show its data.", "Note", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            DataStoreEntry entry = (DataStoreEntry)listViewProviderEntries.SelectedItems[0].Tag;

            if (entry.Period.HasValue == false || entry.DataType != DataStoreEntry.EntryDataTypeEnum.DataBar)
            {
                return;
            }

            DataReaderWriter <DataBar> readerWriter = entry.GetDataBarReaderWriter();

            if (readerWriter == null)
            {
                MessageBox.Show("Failed to read entry file.", "Open Forex Platform", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            List <DataBar> barData = readerWriter.Read();

            RawDataTradeChartSeries series = new RawDataTradeChartSeries(entry.Symbol.Name);

            series.Initialize(barData, entry.Period.Value);

            ChartForm form = new ChartForm("Entry [" + entry.Symbol.Name + "," + entry.Period.ToString() + "] Data");

            form.Chart.MasterPane.Add(series);
            form.Chart.MasterPane.FitDrawingSpaceToScreen(true, true);

            form.Show(this.ParentForm);
        }
Beispiel #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="dataDelivery"></param>
        /// <returns></returns>
        public bool AddData(ReadOnlyCollection <DataTick> data)
        {
            if (DataType != EntryDataTypeEnum.DataTick)
            {// Wrong dataDelivery type for entry.
                return(false);
            }

            if (_quoteCount != 0)
            {// Entry already has dataDelivery, TODO: append dataDelivery mode.
                return(false);
            }

            DataReaderWriter <DataTick> readerWriter = GetDataTickReaderWriter();

            bool result = readerWriter.Write(data);

            if (result && EntryUpdatedEvent != null)
            {
                EntryUpdatedEvent(this);
            }
            return(result);
        }
Beispiel #8
0
        internal void ReadPayload(DataReaderWriter reader, int count)
        {
            var remaining = count;

            while (remaining > 0)
            {
                this.readPayload.WaitForWriteSpace(remaining);

                var actual = Math.Min(remaining, this.readPayload.AvailableWrite);

                reader(this.readPayload.Data, this.readPayload.WriteOffset, actual);

                this.readPayload.Write(actual);

                remaining -= actual;
            }

            lock (this.pendingReads) {
                this.pendingReads.Enqueue(count);
                this.pendingReadsSemaphore.Release();
            }
        }
 public void AddToDo()
 {
     ToDoList.Add(new ToDo(DataReaderWriter.NewToDoId(ToDoList.ToList()), NewLabel, false, this));
     SaveToDos();
     NewLabel = string.Empty;
 }
Beispiel #10
0
        /// <summary>
        /// Loads the data entry from a file.
        /// </summary>
        /// <param name="FileNameGuidSeparator">Separator symbol separating the Guid part from the symbol part. Pass null/string.Empty if none.</param>
        public bool LoadFromFile(string filePath, string fileNameGuidSeparator)
        {
            _fileName = Path.GetFileName(filePath);

            _period    = null;
            _copyright = string.Empty;

            string symbolName = Path.GetFileNameWithoutExtension(filePath);

            if (string.IsNullOrEmpty(fileNameGuidSeparator) == false)
            {
                symbolName = symbolName.Substring(0, symbolName.IndexOf(fileNameGuidSeparator));
            }

            if (FinancialHelper.EstablishForexPairAndPeriod(symbolName, out symbolName) == false)
            {
                SystemMonitor.OperationWarning(string.Format("Failed to establish symbol information for file [{0}].", filePath));
            }

            if (DataType == EntryDataTypeEnum.DataBar)
            {
                DataReaderWriter <DataBar> readerWriter = GetDataBarReaderWriter();
                if (readerWriter == null)
                {
                    SystemMonitor.OperationWarning(string.Format("Failed to create reader/writer for file [{0}].", filePath));
                    _fileName = null;
                    return(false);
                }

                _decimalDigits = -1;

                readerWriter.DataPageReadEvent += delegate(DataReaderWriter <DataBar> reader, List <DataBar> pageData)
                {
                    if (_period.HasValue == false)
                    {
                        _period = FinancialHelper.GetPrevalentPeriod(pageData);
                    }

                    if (pageData.Count > 0 && (pageData[0].DateTime < _startTime || _startTime == DateTime.MinValue))
                    {
                        _startTime = pageData[0].DateTime;
                    }

                    if (pageData.Count > 0 && (pageData[pageData.Count - 1].DateTime > _endTime || _endTime == DateTime.MinValue))
                    {
                        _endTime = pageData[pageData.Count - 1].DateTime;
                    }

                    if (_decimalDigits < 0)
                    {
                        _decimalDigits = FinancialHelper.EstablishDecimalDigits(pageData);
                    }

                    return(true);
                };

                int totalRowsRead = 0;
                if (readerWriter.ReadDataPaged(int.MaxValue, out totalRowsRead) == false)
                {
                    _quoteCount = 0;
                    _symbol     = Symbol.Empty;
                    return(false);
                }

                _quoteCount = totalRowsRead;

                if (readerWriter is HSTDataBarReaderWriter)
                {// If this is an Hst, read the additional information from it.
                    _copyright     = ((HSTDataBarReaderWriter)readerWriter).Copyright;
                    symbolName     = ((HSTDataBarReaderWriter)readerWriter).Symbol;
                    _decimalDigits = ((HSTDataBarReaderWriter)readerWriter).DecimalDigits;
                    _period        = ((HSTDataBarReaderWriter)readerWriter).Period;
                }

                _symbol = new Symbol(string.Empty, symbolName, FileName.Replace(DataStore.FileNameGuidSeparator, " "));
            }
            else
            {
                SystemMonitor.NotImplementedCritical("Mode not supported.");
            }

            return(true);
        }
Beispiel #11
0
 internal void WritePayload(DataReaderWriter reader) => reader(this.writePayload, this.writePayloadOffset, this.writePayloadLength);
Beispiel #12
0
 internal void WriteHeader(DataReaderWriter reader) => reader(this.writeHeader.Data, 0, this.writeHeaderLength);
Beispiel #13
0
        /// <summary>
        /// Request bar dataDelivery from entry.
        /// </summary>
        public bool RequestDataHistoryUpdate(DataSessionInfo sessionInfo, DataHistoryRequest request, bool waitResult)
        {
            DataStoreEntry entry = DataStore.Instance.GetEntryBySessionInfo(sessionInfo);

            if (this.OperationalState != OperationalStateEnum.Operational ||
                entry == null)
            {
                SystemMonitor.OperationError("Data history request received while not operational, or invalid session requrested.");
                return(false);
            }

            if (entry.Period != request.Period)
            {
                SystemMonitor.OperationError("Data history request received but period not recognized.");
                return(false);
            }

            if (request.MaxValuesRetrieved.HasValue == false)
            {
                request.MaxValuesRetrieved = int.MaxValue;
            }

            if (request.StartIndex.HasValue == false)
            {
                request.StartIndex = -1;
            }

            GeneralHelper.GenericReturnDelegate <bool> operationDelegate = delegate()
            {
                if (request.IsTickBased)
                {
                    DataReaderWriter <DataTick> readerWriter = entry.GetDataTickReaderWriter();

                    List <DataTick>   dataTicks;
                    DataHistoryUpdate update = new DataHistoryUpdate(request.Period, new DataTick[] { });
                    if (readerWriter.Read(request.StartIndex.Value, request.MaxValuesRetrieved.Value, out dataTicks))
                    {
                        update.DataTicksUnsafe.AddRange(dataTicks);

                        if (DataHistoryUpdateEvent != null)
                        {
                            DataHistoryUpdateEvent(this, sessionInfo, update);
                        }

                        return(true);
                    }
                }
                else
                {
                    DataReaderWriter <DataBar> readerWriter = entry.GetDataBarReaderWriter();
                    if (readerWriter == null)
                    {
                        SystemMonitor.OperationError("Failed to establish file reader writer for entry.");
                        return(false);
                    }

                    List <DataBar>    dataBars;
                    DataHistoryUpdate update = new DataHistoryUpdate(request.Period, new DataBar[] { });

                    bool readResult = false;
                    if (request.StartIndex.Value < 0)
                    {// Instruction is to read the last count items.
                        readResult = readerWriter.ReadLast(
                            request.MaxValuesRetrieved.Value, out dataBars);
                    }
                    else
                    {
                        readResult = readerWriter.Read(request.StartIndex.Value,
                                                       request.MaxValuesRetrieved.Value, out dataBars);
                    }

                    if (readResult)
                    {
                        update.DataBarsUnsafe.AddRange(dataBars);

                        if (DataHistoryUpdateEvent != null)
                        {
                            DataHistoryUpdateEvent(this, sessionInfo, update);
                        }

                        return(true);
                    }
                }

                return(false);
            };

            if (waitResult)
            {
                return(operationDelegate());
            }
            else
            {
                GeneralHelper.FireAndForget(operationDelegate);
                return(true);
            }
        }