Example #1
0
        private void BeginBulkDataLoad(string filepath, bool top100Only)
        {
            int           counter = 0;
            int           added   = 0;
            ScryfallCard  card    = new ScryfallCard();
            DateTime      started;
            DateTime      finished;
            List <string> ids = null;

            try
            {
                if (File.Exists(filepath) && filepath.EndsWith(".json"))
                {
                    started = DateTime.Now;

                    ids = this.engine.GetListOfExistingCardIDs();

                    Console.WriteLine("Started bulk load at " + started.ToLongTimeString());
                    txtOutput.AppendText("Started bulk load at " + started.ToLongTimeString() + "..." + Environment.NewLine + Environment.NewLine);

                    JsonSerializer serializer = new JsonSerializer();
                    using (FileStream s = File.Open(filepath, FileMode.Open))
                        using (StreamReader sr = new StreamReader(s))
                            using (JsonReader reader = new JsonTextReader(sr))
                            {
                                while (reader.Read())
                                {
                                    // deserialize only when there's "{" character in the stream
                                    if (reader.TokenType == JsonToken.StartObject)
                                    {
                                        card = new ScryfallCard();
                                        card = serializer.Deserialize <ScryfallCard>(reader);
                                        //used to use CardExistsInDb
                                        if (!ids.Contains(card.id))
                                        {
                                            card.SaveToDB(this.db);
                                            //txtOutput.AppendText(String.Format("Card {0} added to DB.", card.Name) + Environment.NewLine);
                                            ids.Add(card.id);
                                            added++;
                                        }
                                        else
                                        {
                                            //txtOutput.AppendText(String.Format("Card {0} already in DB.", card.Name) + Environment.NewLine);
                                        }
                                        counter++;
                                        if (top100Only && counter > 99)
                                        {
                                            break;
                                        }
                                    }
                                }
                            }

                    finished = DateTime.Now;

                    Console.WriteLine(String.Format("Finished processing {0} cards at {1}.", counter, finished));
                    txtOutput.AppendText(Environment.NewLine + String.Format("Finished processing {0} cards at {1}.", counter, finished));

                    Console.WriteLine(String.Format("{0} new cards added.", added));
                    txtOutput.AppendText(Environment.NewLine + String.Format("{0} new cards added.", added));

                    Console.WriteLine(String.Format("Total time elapsed: {0}", finished.Subtract(started).ToString()));
                    txtOutput.AppendText(Environment.NewLine + String.Format("Total time elapsed: {0}", finished.Subtract(started).ToString()));
                }
                else
                {
                    MessageBox.Show("File path is invalid!");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(String.Format("Failed at {0}", card.Name));
            }
        }