Exemplo n.º 1
0
        public ThreadPageParser(PeliplaneettaContext context)
        {
            this.context = context;

            threadIdsPerOriginalThreadId = context.Thread.AsNoTracking()
                                           .ToDictionary(t => t.OriginalThreadId, t => t.Id);

            userIdsPerOriginalUserId = context.User.AsNoTracking().ToDictionary(u => u.OriginalUserId, u => u.Id);

            spaceIdsPerOriginalSpaceId = context.Space.AsNoTracking().ToDictionary(s => s.OriginalSpaceId, s => s.Id);

            avatarIdsPerFilename = context.Avatar.AsNoTracking().ToDictionary(a => a.Filename, a => a.Id);

            messagesPerOriginalSpaceId = new Dictionary <int, HashSet <int> >();
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            string rootDirectory = args[0];

            string[] filePaths = Directory.GetFiles(rootDirectory, "*.html", SearchOption.AllDirectories);

            Console.WriteLine($"Starting to parse {filePaths.Length} files.");

            using (StreamWriter writer = new StreamWriter("log.txt", true))
            {
                using (PeliplaneettaContext context = new PeliplaneettaContext())
                {
                    // This speeds up saving but data needs to be validated
                    context.Configuration.ValidateOnSaveEnabled    = false;
                    context.Configuration.AutoDetectChangesEnabled = false;

                    ThreadPageParser pageParser = new ThreadPageParser(context);
                    int fileCounter             = 0;
                    int errorCounter            = 0;

                    foreach (string filePath in filePaths)
                    {
                        try
                        {
                            pageParser.Parse(filePath);

                            Console.SetCursorPosition(0, 1);
                            Console.Write("                                          ");
                            Console.SetCursorPosition(0, 1);
                            Console.Write($"{fileCounter}/{filePaths.Length} Errors: {errorCounter}");
                        }
                        catch (Exception)
                        {
                            writer.WriteLine(filePath);
                            writer.AutoFlush = true;
                            errorCounter++;
                        }

                        fileCounter++;
                    }
                }
            }
        }