Esempio n. 1
0
        public override async Task Prepare(DataContainer dataContainer)
        {
            // Delete old data
            if (Reload)
            {
                Directory.Delete(Folder, true);
            }

            // Create folder
            Directory.CreateDirectory(Folder);

            // Inernal data
            _InternalData internalData = new _InternalData();

            // Draw header
            base.DrawHeader();

            // Download
            await Download(dataContainer.Products);

            // Parse
            Parse(internalData);

            // SeDeSerialize
            Cache(dataContainer, internalData);

            // End info
            Console.WriteLine();
        }
Esempio n. 2
0
        private void Cache(DataContainer dataContainer, _InternalData internalData)
        {
            string prefix = "3/3 Caching...";

            Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, 0), ConsoleColor.Gray);

            try
            {
                // Serialize or deserialize
                _Cache cache = null;
                if (Reload || !File.Exists(SerializedFile))
                {
                    cache = new _Cache(internalData);

                    Serializer.Serialize(SerializedFile, cache);
                }
                else
                {
                    cache = (_Cache)Serializer.Deserialize(SerializedFile);
                }

                Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, 50), ConsoleColor.Gray);

                int drawEvery = Utils.PercentIntervalByLength(cache.Name.Count * 2);

                // Save to datacontainer
                for (int i = 0; i < cache.Name.Count; ++i)
                {
                    // Create forex data
                    _WikiTrendsData wtd = new _WikiTrendsData()
                    {
                        Value = cache.Value[i]
                    };

                    // Add to data container
                    dataContainer.GetEvent(new DateTime(cache.Date[i])).WikiTrendsDatas.Add(cache.Name[i], wtd);

                    if (i % drawEvery == 0)
                    {
                        Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, 50 + (double)i / cache.Name.Count * 50), ConsoleColor.Gray);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine();
                Utils.DrawMessage("", ex.Message, ConsoleColor.Red);
                Console.WriteLine();

                System.Environment.Exit(1);
            }

            Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, 100), ConsoleColor.Green);
            Console.WriteLine();
        }
Esempio n. 3
0
        public _Cache(_InternalData internalData)
        {
            Name  = new List <string>();
            Date  = new List <long>();
            Value = new List <double>();

            for (int i = 0; i < internalData.Events.Count; ++i)
            {
                Name.Add(internalData.Events[i].Name);
                Date.Add(internalData.Events[i].Date.Ticks);
                Value.Add(internalData.Events[i].Value);
            }
        }
Esempio n. 4
0
        private void Parse(_InternalData internalData)
        {
            string prefix = "2/3 Parsing...";

            Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, 0), ConsoleColor.Gray);

            // Files to parse
            string[] files = Directory.GetFiles(Folder).Where(x => x.Contains(".csv")).ToArray();

            // Count when we update progress bar
            int drawEvery = Utils.PercentIntervalByLength(files.Length);

            // Download
            try
            {
                if (Reload || !File.Exists(SerializedFile))
                {
                    for (int i = 0; i < files.Length; ++i)
                    {
                        // Load lines
                        string[] lines = File.ReadAllLines(files[i]).Skip(2).Where(x => !String.IsNullOrWhiteSpace(x)).ToArray();

                        // Parse lines
                        int previousValue = -1;
                        foreach (string l in lines)
                        {
                            string[] parts = l.Split(new char[] { ',', '/', '"', '.' }).Where(x => !String.IsNullOrWhiteSpace(x)).Select(x => x.Trim()).ToArray();

                            int year  = int.Parse(parts[0]);
                            int month = int.Parse(parts[1]);
                            int day   = int.Parse(parts[2]);

                            int value = int.Parse(parts[3]);

                            // Do not save first zeros, or save previous value
                            if (value == 0 && previousValue == -1)
                            {
                                continue;
                            }
                            else if (value == 0 && previousValue != -1)
                            {
                                value = previousValue;
                            }
                            previousValue = value;

                            internalData.Events.Add(new _Event()
                            {
                                Name  = Path.GetFileNameWithoutExtension(files[i]).Split(new char[] { '-' })[1],
                                Date  = new DateTime(year, month, day),
                                Value = value
                            });
                        }

                        // Update progress bar
                        if (i % drawEvery == 0)
                        {
                            Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, (double)i / files.Length * 100.0), ConsoleColor.Gray);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine();
                Utils.DrawMessage("", ex.Message, ConsoleColor.Red);
                Console.WriteLine();

                System.Environment.Exit(1);
            }

            Utils.DrawMessage(prefix, Utils.CreateProgressBar(Utils.ProgressBarLength, 100), ConsoleColor.Green);
            Console.WriteLine();
        }