diff --git a/Pf2eDataScrapper/Importers/AbstractCompendium.cs b/Pf2eDataScrapper/Importers/AbstractCompendium.cs index 96818ef..dc1108e 100644 --- a/Pf2eDataScrapper/Importers/AbstractCompendium.cs +++ b/Pf2eDataScrapper/Importers/AbstractCompendium.cs @@ -18,25 +18,19 @@ internal abstract class AbstractCompendium /// public string Dir => Repository.RepositoryDirPath; - /// - /// Возвращает количество элементов в компендиуме. - /// - /// Количество элементов. - public abstract int Count(); - /// /// Возвращает количество элементов для указанного типа данных. /// - /// Тип данных. + /// Типы данных. /// Количество элементов. - public abstract int Count(string type); + public abstract int Count(params ICollection type); /// /// Получение итератора сущностей. Если указан тип - то только указанного типа. /// - /// Тип сущностей, которые нужно получить. + /// Типы сущностей, которые нужно получить. /// Итератор сущностей. public abstract IEnumerable> Iterate( - string? type = null + params ICollection type ); } diff --git a/Pf2eDataScrapper/Importers/AbstractImporter.cs b/Pf2eDataScrapper/Importers/AbstractImporter.cs index 8c35683..1fc79f9 100644 --- a/Pf2eDataScrapper/Importers/AbstractImporter.cs +++ b/Pf2eDataScrapper/Importers/AbstractImporter.cs @@ -1,4 +1,6 @@ -namespace Pf2eDataScrapper.Importers; +using System.IO; + +namespace Pf2eDataScrapper.Importers; /// /// Абстрактный класс импортёра. diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdRepository.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdRepository.cs index c5b523b..ccb52cd 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdRepository.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/AonprdRepository.cs @@ -1,4 +1,6 @@ -using Newtonsoft.Json.Linq; +using System.IO; +using System.Net.Http; +using Newtonsoft.Json.Linq; using Pf2eDataScrapper.Helpers; using Pf2eDataScrapper.Importers.Repositories; diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdCompendium.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdCompendium.cs index 24adc29..9ee710d 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdCompendium.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Compendium/AonprdCompendium.cs @@ -1,4 +1,5 @@ using System.Collections.Concurrent; +using System.IO; using Newtonsoft.Json.Linq; namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium; @@ -8,6 +9,7 @@ namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium; /// internal sealed class AonprdCompendium(AonprdRepository repository) : AbstractCompendium { + /// public override AonprdRepository Repository { get; } = repository; /// @@ -15,29 +17,22 @@ internal sealed class AonprdCompendium(AonprdRepository repository) : AbstractCo /// public ConcurrentBag Items { get; } = []; - /// - /// Возвращает количество элементов в компендиуме. - /// - /// Количество элементов. - public override int Count() => Items.Count; + /// + public override int Count(params ICollection types) => + types.Count == 0 ? Items.Count : Items.Count(i => types.Contains(i.Type)); - /// - /// Возвращает количество элементов для указанного типа данных. - /// - /// Тип данных. - /// Количество элементов. - public override int Count(string type) => Items.Count(i => i.Type == type); - - /// - /// Получение итератора сущностей. Если указан тип - то только указанного типа. - /// - /// Тип сущностей, которые нужно получить. - /// Итератор сущностей. - public override IEnumerable> Iterate(string? type = null) + /// + public override IEnumerable> Iterate( + params ICollection types + ) { - IEnumerable files = type is null - ? Items.Select(t => t.File).Distinct() - : Items.Where(t => t.Type == type).Select(t => t.File).Distinct(); + IEnumerable files = + types.Count == 0 + ? Items.Select(item => item.File).Distinct() + : Items + .Where(item => types.Contains(item.Type)) + .Select(item => item.File) + .Distinct(); foreach (string file in files) { @@ -57,16 +52,12 @@ internal sealed class AonprdCompendium(AonprdRepository repository) : AbstractCo if ( id is null || !fileReferences.TryGetValue(id, out AonprdCompendiumItem? reference) + || !types.Contains(reference.Type) ) { continue; } - if (type is not null && reference.Type != type) - { - continue; - } - yield return new(reference, (JObject)item); } } diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Helpers/RuleToc.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Helpers/RuleToc.cs index 6ab17bc..84b3a64 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Helpers/RuleToc.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Helpers/RuleToc.cs @@ -1,4 +1,5 @@ -using Pf2eModel.Model.Base.Source; +using System.IO; +using Pf2eModel.Model.Base.Source; namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers; diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/LegacyRemasterProcessors.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/LegacyRemasterProcessors.cs index d5a9479..001f71e 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/LegacyRemasterProcessors.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/LegacyRemasterProcessors.cs @@ -46,7 +46,7 @@ internal class LegacyRemasterProcessors(ProcessorInput input) : AbstractInputPro return Context .EntityExternals.AsNoTracking() - .Where(x => aonprdIds.Contains(x.ExternalId)) + .Where(x => aonprdIds.Contains(x.ExternalId!)) .Select(x => x.EntityId) .ToList(); } diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/CompendiumLoadProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/CompendiumLoadProcessor.cs index 09e1885..57c53d9 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/CompendiumLoadProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/CompendiumLoadProcessor.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json.Linq; +using System.IO; +using Newtonsoft.Json.Linq; using Pf2eDataScrapper.App; using Pf2eDataScrapper.Helpers; using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium; diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/SchemaBuildProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/SchemaBuildProcessor.cs index 33ef7d2..6de832c 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/SchemaBuildProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/SchemaBuildProcessor.cs @@ -1,4 +1,5 @@ -using Pf2eDataScrapper.App; +using System.IO; +using Pf2eDataScrapper.App; using Pf2eDataScrapper.Helpers; using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium; using Pf2eDataScrapper.SchemaBuilder; diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Compendium/FoundryEnCompendium.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Compendium/FoundryEnCompendium.cs new file mode 100644 index 0000000..15e3103 --- /dev/null +++ b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Compendium/FoundryEnCompendium.cs @@ -0,0 +1,51 @@ +using System.Collections.Concurrent; +using System.IO; +using Newtonsoft.Json.Linq; + +namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium; + +/// +/// Загрузчик данных компендиума. +/// +/// Репозиторий данных. +internal sealed class FoundryEnCompendium( + FoundryEnRepository repository, + CompendiumFolderCollection folders +) : AbstractCompendium +{ + /// + public override FoundryEnRepository Repository { get; } = repository; + + /// + /// Набор папок компендиума + /// + public CompendiumFolderCollection Folders { get; } = folders; + + /// + /// Коллекция всех записей компендиума. + /// + public ConcurrentBag Items { get; } = []; + + /// + public override int Count(params ICollection types) => + types.Count == 0 ? Items.Count : Items.Count(i => types.Contains(i.Type)); + + /// + public override IEnumerable> Iterate( + params ICollection types + ) + { + foreach ( + FoundryEnCompendiumItem item in types.Count == 0 + ? Items + : Items.Where(i => types.Contains(i.Type)) + ) + { + using StreamReader fileReader = new( + Path.Combine(Repository.RepositoryDirPath, item.File) + ); + + yield return new(item, JObject.Parse(fileReader.ReadToEnd())); + } + } +} diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/FoundryEnCompendium.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/FoundryEnCompendium.cs deleted file mode 100644 index 6341c0c..0000000 --- a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/FoundryEnCompendium.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System.Collections.Concurrent; -using Newtonsoft.Json.Linq; -using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium; - -namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn; - -/// -/// Загрузчик данных компендиума. -/// -/// Репозиторий данных. -internal sealed class FoundryEnCompendium( - FoundryEnRepository repository, - CompendiumFolderCollection folders -) : AbstractCompendium -{ - /// - /// Репозиторий данных. - /// - public override FoundryEnRepository Repository { get; } = repository; - - /// - /// Набор папок компендиума - /// - public CompendiumFolderCollection Folders { get; } = folders; - - /// - /// Коллекция всех записей компендиума. - /// - public ConcurrentBag Items { get; } = []; - - /// - /// Возвращает количество элементов в компендиуме. - /// - /// Количество элементов. - public override int Count() => Items.Count; - - /// - /// Возвращает количество элементов для указанного типа данных. - /// - /// Тип данных. - /// Количество элементов. - public override int Count(string type) => Items.Count(i => i.Type == type); - - /// - /// Получение итератора сущностей. Если указан тип - то только указанного типа. - /// - /// Тип сущностей, которые нужно получить. - /// Итератор сущностей. - public override IEnumerable> Iterate(string? type = null) - { - IEnumerable items = type is null - ? Items - : Items.Where(i => i.Type == type); - - foreach (FoundryEnCompendiumItem item in items) - { - using StreamReader fileReader = new( - Path.Combine(Repository.RepositoryDirPath, item.File) - ); - - yield return new(item, JObject.Parse(fileReader.ReadToEnd())); - } - } -} diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumFolderProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumFolderProcessor.cs index c073400..74a8e3c 100644 --- a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumFolderProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumFolderProcessor.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json.Linq; +using System.IO; +using Newtonsoft.Json.Linq; using Pf2eDataScrapper.App; using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium; using Pf2eDataScrapper.Processors; diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumItemsProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumItemsProcessor.cs index 7fd6260..ac5a0e3 100644 --- a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumItemsProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/CompendiumItemsProcessor.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json.Linq; +using System.IO; +using Newtonsoft.Json.Linq; using Pf2eDataScrapper.App; using Pf2eDataScrapper.Helpers; using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium; diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/SchemaBuildProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/SchemaBuildProcessor.cs index 905ea16..84adc47 100644 --- a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/SchemaBuildProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Preparation/SchemaBuildProcessor.cs @@ -1,5 +1,7 @@ -using Pf2eDataScrapper.App; +using System.IO; +using Pf2eDataScrapper.App; using Pf2eDataScrapper.Helpers; +using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium; using Pf2eDataScrapper.SchemaBuilder; namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Preparation; diff --git a/Pf2eDataScrapper/Importers/Repositories/AbstractImporterRepository.cs b/Pf2eDataScrapper/Importers/Repositories/AbstractImporterRepository.cs index ce3682f..b05659f 100644 --- a/Pf2eDataScrapper/Importers/Repositories/AbstractImporterRepository.cs +++ b/Pf2eDataScrapper/Importers/Repositories/AbstractImporterRepository.cs @@ -1,4 +1,5 @@ -using Pf2eDataScrapper.Helpers; +using System.IO; +using Pf2eDataScrapper.Helpers; namespace Pf2eDataScrapper.Importers.Repositories; diff --git a/Pf2eDataScrapper/Importers/Repositories/GitRepository.cs b/Pf2eDataScrapper/Importers/Repositories/GitRepository.cs index a63b640..1fa47af 100644 --- a/Pf2eDataScrapper/Importers/Repositories/GitRepository.cs +++ b/Pf2eDataScrapper/Importers/Repositories/GitRepository.cs @@ -1,4 +1,5 @@ using System.Diagnostics; +using System.IO; using Pf2eDataScrapper.Helpers; namespace Pf2eDataScrapper.Importers.Repositories;