using LootDumpProcessor.Logger; using LootDumpProcessor.Model; using LootDumpProcessor.Model.Processing; using LootDumpProcessor.Process.Processor; using LootDumpProcessor.Storage; namespace LootDumpProcessor.Process.Impl; public class FileProcessor : IFileProcessor { public PartialData Process(BasicInfo parsedData) { LoggerFactory.GetInstance().Log($"Processing file {parsedData.FileName}...", LogLevel.Info); List<Template> looseLoot = new List<Template>(); List<Template> staticLoot = new List<Template>(); foreach (var item in parsedData.Data.Data.Loot) { if (item.IsContainer ?? false) staticLoot.Add(item); else looseLoot.Add(item); } parsedData.Data = null; var dumpData = new ParsedDump { BasicInfo = parsedData }; PartialData data = new PartialData { BasicInfo = parsedData, ParsedDumpKey = (AbstractKey)dumpData.GetKey() }; if (!DataStorageFactory.GetInstance().Exists(dumpData.GetKey())) { LoggerFactory.GetInstance().Log( $"Cached not found for {string.Join("/", dumpData.GetKey().GetLookupIndex())} processing.", LogLevel.Info ); dumpData.Containers = StaticLootProcessor.PreProcessStaticLoot(staticLoot); dumpData.LooseLoot = LooseLootProcessor.PreProcessLooseLoot(looseLoot); DataStorageFactory.GetInstance().Store(dumpData); } LoggerFactory.GetInstance().Log($"File {parsedData.FileName} finished processing!", LogLevel.Info); return data; } }