예제 #1
0
        public void cSetUses()
        {
            var sw          = new Stopwatch();
            var parser      = _host.Services.GetRequiredService <Red4ParserService>();
            var hashService = _host.Services.GetRequiredService <IHashService>();
            var resultDir   = Path.Combine(Environment.CurrentDirectory, s_testResultsDirectory);

            Directory.CreateDirectory(resultDir);
            using var db = new RedDBContext();

            // set uses files
            Console.WriteLine($"set uses files...");
            sw.Restart();

            var excludedExtensions = new List <string>()
            {
                ".wem", ".bin", ".bnk", ".opuspak", ".opusinfo", ".bk2", ".dat"
            };

            // Run Test
            foreach (var(ext, files) in s_groupedFiles.Where(_ => !excludedExtensions.Contains(_.Key)))
            {
                var dbDict = new ConcurrentDictionary <ulong, ulong[]>();

                var dataFile = Path.Combine(resultDir, $"{ext[1..]}.txt");
예제 #2
0
        public void bAddArchiveNames()
        {
            using var db = new RedDBContext();
            var parser      = ServiceLocator.Default.ResolveType <Red4ParserService>();
            var hashService = ServiceLocator.Default.ResolveType <IHashService>();

            foreach (var item in db.Files)
            {
                var file = s_bm.Lookup(item.RedFileId);
                if (file.HasValue)
                {
                    item.Archive = Path.GetFileNameWithoutExtension(file.Value.Archive.Name);
                }
            }
            db.SaveChanges();
        }
예제 #3
0
        public void bAddArchiveNames()
        {
            ArgumentNullException.ThrowIfNull(s_bm);
            using var db = new RedDBContext();
            var parser      = _host.Services.GetRequiredService <Red4ParserService>();
            var hashService = _host.Services.GetRequiredService <IHashService>();

            foreach (var item in db.Files)
            {
                var file = s_bm.Lookup(item.RedFileId);
                if (file.HasValue)
                {
                    item.Archive = Path.GetFileNameWithoutExtension(file.Value.Archive.Name);
                }
            }
            db.SaveChanges();
        }
예제 #4
0
        private void CleanDataBase()
        {
            var sw = new Stopwatch();

            using var db = new RedDBContext();

            Console.WriteLine($"clean database...");
            sw.Start();
            if (db.Files != null && db.Files.Any())
            {
                db.Files.RemoveRange(db.Files);
            }
            db.SaveChanges();

            sw.Stop();
            Console.WriteLine($"clean database: {sw.ElapsedMilliseconds}ms");
        }
예제 #5
0
        public void aGenerateDB()
        {
            ArgumentNullException.ThrowIfNull(s_bm);
            using var db = new RedDBContext();

            var sw          = new Stopwatch();
            var parser      = _host.Services.GetRequiredService <Red4ParserService>();
            var hashService = _host.Services.GetRequiredService <IHashService>();
            var allFiles    = s_bm.Archives.Items
                              .SelectMany(x => x.Files.Values)
                              .ToList();

            Console.WriteLine($"collect all models...");
            sw.Restart();
            var dblist = new Dictionary <ulong, RedFile>();

            foreach (var file in allFiles)
            {
                if (dblist.ContainsKey(file.Key))
                {
                    continue;
                }
                var redFile = new RedFile()
                {
                    RedFileId = file.Key, Name = file.Name
                };
                dblist.Add(redFile.RedFileId, redFile);
            }

            sw.Stop();
            Console.WriteLine($"collect all models: {sw.ElapsedMilliseconds}ms");

            // add to DB
            Console.WriteLine($"add to DB...");
            sw.Restart();
            foreach (var(_, redFile) in dblist)
            {
                db.Add(redFile);
            }
            db.SaveChanges();
            sw.Stop();
            Console.WriteLine($"add to DB: {sw.ElapsedMilliseconds}ms");
        }