From 843d0a4aa398f5bfc840905049cad2a941ae89d6 Mon Sep 17 00:00:00 2001 From: kozhilya Date: Tue, 15 Jul 2025 14:45:04 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D0=B1=D0=BE=D1=80=20=D0=BC=D0=B5?= =?UTF-8?q?=D0=BB=D0=BA=D0=B8=D1=85=20=D0=B8=D0=B7=D0=BC=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B9=20=D0=B7=D0=B0=20=D0=BC=D0=B5=D1=81=D1=8F=D1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AbstractEntityProcessor.Context.md | 13 ++++ ...AbstractEntityProcessor.GetEntityName().md | 14 ++++ .../AbstractEntityProcessor.Globals.md | 13 ++++ .../AbstractEntityProcessor.Helper.md | 13 ++++ .../AbstractEntityProcessor.Name.md | 13 ++++ .../AbstractEntityProcessor.md | 5 ++ .../AbstractInputProcessor.md | 3 +- ...lobals.JsonToDictionary(JObject,string).md | 27 ++++++++ .../Pf2eDataScrapper/AonprdBuilderGlobals.md | 1 + ...bstractProcessor_TEntity_.AddExternal().md | 10 +++ ...bstractProcessor_TEntity_.CheckEntity().md | 10 +++ ...dryEnAbstractProcessor_TEntity_.Context.md | 13 ++++ ...ndryEnAbstractProcessor_TEntity_.Entity.md | 13 ++++ ...ontext,FoundryEnGlobals,ProcessorInput).md | 37 ++++++++++ ...tractProcessor_TEntity_.GetEntityName().md | 14 ++++ ...dryEnAbstractProcessor_TEntity_.Globals.md | 13 ++++ ...ndryEnAbstractProcessor_TEntity_.Helper.md | 13 ++++ ...oundryEnAbstractProcessor_TEntity_.Name.md | 13 ++++ ...ndryEnAbstractProcessor_TEntity_.Object.md | 13 ++++ ...yEnAbstractProcessor_TEntity_.Process().md | 12 ++++ ...tractProcessor_TEntity_.ResolveEntity().md | 14 ++++ ...ndryEnAbstractProcessor_TEntity_.Save().md | 12 ++++ ...oundryEnAbstractProcessor_TEntity_.Type.md | 13 ++++ ...oundryEnAbstractProcessor_TEntity_.View.md | 13 ++++ .../FoundryEnAbstractProcessor_TEntity_.md | 44 ++++++++++++ .../FoundryEnGlobals.FoundryEnGlobals().md | 10 +++ .../FoundryEnGlobals.GetSlugSuffix(string).md | 21 ++++++ .../FoundryEnGlobals.Ignore.md | 13 ++++ ...lobals.JsonToDictionary(JObject,string).md | 27 ++++++++ .../FoundryEnGlobals.MatchToAonprd.md | 13 ++++ .../FoundryEnGlobals.SlugSuffixes.md | 13 ++++ .../Pf2eDataScrapper/FoundryEnGlobals.md | 12 ++++ ...rs.Implementations.FoundryEn.Processors.md | 7 ++ .../Pf2eDataScrapper.Processors.md | 1 + .../ProcessorExecutor.Collection.md | 13 ++++ .../ProcessorExecutor.Continue().md | 14 ++++ .../ProcessorExecutor.CurrentFactory.md | 13 ++++ .../ProcessorExecutor.IterateProcessors().md | 20 ++++++ ...on,ProcessProgress,ApplicationSettings).md | 29 ++++++++ ...ssor(IProcessor,ParallelLoopState,long).md | 35 ++++++++++ .../ProcessorExecutor.Settings.md | 13 ++++ .../ProcessorExecutor.Start().md | 10 +++ .../ProcessorExecutor.StartItem().md | 17 +++++ .../ProcessorExecutor._currentIndex.md | 13 ++++ .../Pf2eDataScrapper/ProcessorExecutor.md | 34 ++++++++++ Documentation/Pf2eDataScrapper/index.md | 1 + Documentation/Pf2eModel/Entity.IsLegacy.md | 13 ++++ Documentation/Pf2eModel/Entity.md | 1 + .../Aonprd/Helpers/AonprdBuilderGlobals.cs | 8 ++- .../Processors/AbstractEntityProcessor.cs | 15 +++- .../Finalization/LegacyRemasterProcessors.cs | 2 + .../MissingLegacyRemasterProcessorFactory.cs | 2 + .../Preparation/CompendiumLoadProcessor.cs | 16 ++++- .../Processors/Types/ActionProcessor.cs | 10 ++- .../FoundryEn/Helpers/FoundryEnGlobals.cs | 68 +++++++++++++++++-- .../Processors/Entities/ActionProcessor.cs | 13 ++-- .../Processors/Entities/ConditionProcessor.cs | 4 +- .../Processors/FoundryEnAbstractProcessor.cs | 47 +++++++++++-- .../Processors/ProcessorExecutor.cs | 51 ++++++++++++++ .../Resources/ImportAdaptation.json | 42 ++++++++++-- Pf2eModel/Model/Base/Entity.cs | 11 ++- 61 files changed, 954 insertions(+), 37 deletions(-) create mode 100644 Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Context.md create mode 100644 Documentation/Pf2eDataScrapper/AbstractEntityProcessor.GetEntityName().md create mode 100644 Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Globals.md create mode 100644 Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Helper.md create mode 100644 Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Name.md create mode 100644 Documentation/Pf2eDataScrapper/AonprdBuilderGlobals.JsonToDictionary(JObject,string).md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.AddExternal().md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.CheckEntity().md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Context.md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Entity.md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.FoundryEnAbstractProcessor(DatabaseHelper,Pf2eDbContext,FoundryEnGlobals,ProcessorInput).md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.GetEntityName().md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Globals.md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Helper.md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Name.md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Object.md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Process().md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.ResolveEntity().md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Save().md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Type.md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.View.md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnGlobals.FoundryEnGlobals().md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnGlobals.GetSlugSuffix(string).md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnGlobals.Ignore.md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnGlobals.JsonToDictionary(JObject,string).md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnGlobals.MatchToAonprd.md create mode 100644 Documentation/Pf2eDataScrapper/FoundryEnGlobals.SlugSuffixes.md create mode 100644 Documentation/Pf2eDataScrapper/Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md create mode 100644 Documentation/Pf2eDataScrapper/ProcessorExecutor.Collection.md create mode 100644 Documentation/Pf2eDataScrapper/ProcessorExecutor.Continue().md create mode 100644 Documentation/Pf2eDataScrapper/ProcessorExecutor.CurrentFactory.md create mode 100644 Documentation/Pf2eDataScrapper/ProcessorExecutor.IterateProcessors().md create mode 100644 Documentation/Pf2eDataScrapper/ProcessorExecutor.ProcessorExecutor(ProcessorCollection,ProcessProgress,ApplicationSettings).md create mode 100644 Documentation/Pf2eDataScrapper/ProcessorExecutor.RunProcessor(IProcessor,ParallelLoopState,long).md create mode 100644 Documentation/Pf2eDataScrapper/ProcessorExecutor.Settings.md create mode 100644 Documentation/Pf2eDataScrapper/ProcessorExecutor.Start().md create mode 100644 Documentation/Pf2eDataScrapper/ProcessorExecutor.StartItem().md create mode 100644 Documentation/Pf2eDataScrapper/ProcessorExecutor._currentIndex.md create mode 100644 Documentation/Pf2eDataScrapper/ProcessorExecutor.md create mode 100644 Documentation/Pf2eModel/Entity.IsLegacy.md diff --git a/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Context.md b/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Context.md new file mode 100644 index 0000000..a402fd0 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Context.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors](Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors').[AbstractEntityProcessor](AbstractEntityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor') + +## AbstractEntityProcessor\.Context Property + +Предоставляет механизм для освобождения неуправляемых ресурсов\. + +```csharp +public Pf2eModel.Pf2eDbContext Context { get; } +``` + +#### Property Value +[Pf2eModel\.Pf2eDbContext](https://docs.microsoft.com/en-us/dotnet/api/Pf2eModel.Pf2eDbContext 'Pf2eModel\.Pf2eDbContext') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.GetEntityName().md b/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.GetEntityName().md new file mode 100644 index 0000000..b2a8b18 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.GetEntityName().md @@ -0,0 +1,14 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors](Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors').[AbstractEntityProcessor](AbstractEntityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor') + +## AbstractEntityProcessor\.GetEntityName\(\) Method + +Получает имя сущности из входных данных\. + +```csharp +protected virtual string GetEntityName(); +``` + +#### Returns +[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String') +Имя сущности\. \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Globals.md b/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Globals.md new file mode 100644 index 0000000..641f61d --- /dev/null +++ b/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Globals.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors](Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors').[AbstractEntityProcessor](AbstractEntityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor') + +## AbstractEntityProcessor\.Globals Property + +Класс\-помощник, хранящий необходимые глобальные данные\. + +```csharp +public Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers.AonprdBuilderGlobals Globals { get; } +``` + +#### Property Value +[AonprdBuilderGlobals](AonprdBuilderGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Helpers\.AonprdBuilderGlobals') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Helper.md b/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Helper.md new file mode 100644 index 0000000..809fc9b --- /dev/null +++ b/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Helper.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors](Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors').[AbstractEntityProcessor](AbstractEntityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor') + +## AbstractEntityProcessor\.Helper Property + +Класс предоставляет методы для работы с базой данных\. + +```csharp +public Pf2eDataScrapper.Helpers.DatabaseHelper Helper { get; } +``` + +#### Property Value +[DatabaseHelper](DatabaseHelper.md 'Pf2eDataScrapper\.Helpers\.DatabaseHelper') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Name.md b/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Name.md new file mode 100644 index 0000000..091cdf2 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.Name.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors](Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors').[AbstractEntityProcessor](AbstractEntityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor') + +## AbstractEntityProcessor\.Name Property + +Название сущности, которое будет использоваться для обработки данных\. + +```csharp +public string Name { get; } +``` + +#### Property Value +[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.md b/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.md index 360037e..eecf028 100644 --- a/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.md +++ b/Documentation/Pf2eDataScrapper/AbstractEntityProcessor.md @@ -39,7 +39,11 @@ Derived | Properties | | | :--- | :--- | +| [Context](AbstractEntityProcessor.Context.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Context') | Предоставляет механизм для освобождения неуправляемых ресурсов\. | | [Entity](AbstractEntityProcessor.Entity.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Entity') | Корневая сущность\. | +| [Globals](AbstractEntityProcessor.Globals.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Globals') | Класс\-помощник, хранящий необходимые глобальные данные\. | +| [Helper](AbstractEntityProcessor.Helper.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Helper') | Класс предоставляет методы для работы с базой данных\. | +| [Name](AbstractEntityProcessor.Name.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Name') | Название сущности, которое будет использоваться для обработки данных\. | | [Object](AbstractEntityProcessor.Object.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Object') | Основная сущность\. | | [Type](AbstractEntityProcessor.Type.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Type') | Тип сущности\. | @@ -56,5 +60,6 @@ Derived | [Check\(\)](AbstractEntityProcessor.Check().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Check\(\)') | Проверки необходимости импорта сущности\. | | [GenerateJsonString\(ICollection<string>\)](AbstractEntityProcessor.GenerateJsonString(ICollection_string_).md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.GenerateJsonString\(System\.Collections\.Generic\.ICollection\\)') | Генерация JSON\-строки из объектов, располагаюхися по путям, указанным в [paths](AbstractEntityProcessor.GenerateJsonString(ICollection_string_).md#Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.AbstractEntityProcessor.GenerateJsonString(System.Collections.Generic.ICollection_string_).paths 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.GenerateJsonString\(System\.Collections\.Generic\.ICollection\\)\.paths')\. | | [GetDescription\(\)](AbstractEntityProcessor.GetDescription().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.GetDescription\(\)') | Сгенерировать описание сущности\. | +| [GetEntityName\(\)](AbstractEntityProcessor.GetEntityName().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.GetEntityName\(\)') | Получает имя сущности из входных данных\. | | [Process\(\)](AbstractEntityProcessor.Process().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Process\(\)') | Основной метод обработки данных\. | | [Save\(\)](AbstractEntityProcessor.Save().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor\.Save\(\)') | Метод для сохранения изменений в базе данных\. | diff --git a/Documentation/Pf2eDataScrapper/AbstractInputProcessor.md b/Documentation/Pf2eDataScrapper/AbstractInputProcessor.md index a7d4e60..163503e 100644 --- a/Documentation/Pf2eDataScrapper/AbstractInputProcessor.md +++ b/Documentation/Pf2eDataScrapper/AbstractInputProcessor.md @@ -16,7 +16,8 @@ Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System. Derived ↳ [AbstractEntityProcessor](AbstractEntityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.AbstractEntityProcessor') ↳ [SkillProcessor](SkillProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Preparation\.SkillProcessor') -↳ [SourceProcessor](SourceProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Preparation\.SourceProcessor') +↳ [SourceProcessor](SourceProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Preparation\.SourceProcessor') +↳ [FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') Implements [IProcessor](IProcessor.md 'Pf2eDataScrapper\.Processors\.Definitions\.IProcessor') diff --git a/Documentation/Pf2eDataScrapper/AonprdBuilderGlobals.JsonToDictionary(JObject,string).md b/Documentation/Pf2eDataScrapper/AonprdBuilderGlobals.JsonToDictionary(JObject,string).md new file mode 100644 index 0000000..386175e --- /dev/null +++ b/Documentation/Pf2eDataScrapper/AonprdBuilderGlobals.JsonToDictionary(JObject,string).md @@ -0,0 +1,27 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Helpers](Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Helpers').[AonprdBuilderGlobals](AonprdBuilderGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Helpers\.AonprdBuilderGlobals') + +## AonprdBuilderGlobals\.JsonToDictionary\(JObject, string\) Method + +Преобразовать JSON\-объект в словарь\. + +```csharp +public static System.Collections.Generic.Dictionary JsonToDictionary(Newtonsoft.Json.Linq.JObject json, string tokenPath); +``` +#### Parameters + + + +`json` [Newtonsoft\.Json\.Linq\.JObject](https://docs.microsoft.com/en-us/dotnet/api/Newtonsoft.Json.Linq.JObject 'Newtonsoft\.Json\.Linq\.JObject') + +Исходный JSON\-объект\. + + + +`tokenPath` [System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String') + +Путь к токену в JSON\. + +#### Returns +[System\.Collections\.Generic\.Dictionary<](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[,](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[>](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2') +Результирующий словарь\. \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/AonprdBuilderGlobals.md b/Documentation/Pf2eDataScrapper/AonprdBuilderGlobals.md index 577d5bd..0ee21b8 100644 --- a/Documentation/Pf2eDataScrapper/AonprdBuilderGlobals.md +++ b/Documentation/Pf2eDataScrapper/AonprdBuilderGlobals.md @@ -28,3 +28,4 @@ Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System. | Methods | | | :--- | :--- | | [GetSlugSuffix\(string\)](AonprdBuilderGlobals.GetSlugSuffix(string).md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Helpers\.AonprdBuilderGlobals\.GetSlugSuffix\(string\)') | Получить суффикс для ссылки\. | +| [JsonToDictionary\(JObject, string\)](AonprdBuilderGlobals.JsonToDictionary(JObject,string).md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Helpers\.AonprdBuilderGlobals\.JsonToDictionary\(Newtonsoft\.Json\.Linq\.JObject, string\)') | Преобразовать JSON\-объект в словарь\. | diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.AddExternal().md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.AddExternal().md new file mode 100644 index 0000000..8fd2a46 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.AddExternal().md @@ -0,0 +1,10 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.AddExternal\(\) Method + +Генерация внешних ссылок сущности\. + +```csharp +protected virtual void AddExternal(); +``` \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.CheckEntity().md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.CheckEntity().md new file mode 100644 index 0000000..3bdebbd --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.CheckEntity().md @@ -0,0 +1,10 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.CheckEntity\(\) Method + +Проверяет входные данные на наличие идентификатора сущности и игнорирует её, если она указана в списке игнорируемых\. + +```csharp +public virtual void CheckEntity(); +``` \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Context.md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Context.md new file mode 100644 index 0000000..1525cf6 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Context.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.Context Property + +Предоставляет механизм для освобождения неуправляемых ресурсов\. + +```csharp +public Pf2eModel.Pf2eDbContext Context { get; } +``` + +#### Property Value +[Pf2eModel\.Pf2eDbContext](https://docs.microsoft.com/en-us/dotnet/api/Pf2eModel.Pf2eDbContext 'Pf2eModel\.Pf2eDbContext') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Entity.md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Entity.md new file mode 100644 index 0000000..ee39730 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Entity.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.Entity Property + +Основная сущность, которая будет использоваться для обработки данных\. + +```csharp +public Pf2eModel.Model.Base.Entity Entity { get; } +``` + +#### Property Value +[Pf2eModel\.Model\.Base\.Entity](https://docs.microsoft.com/en-us/dotnet/api/Pf2eModel.Model.Base.Entity 'Pf2eModel\.Model\.Base\.Entity') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.FoundryEnAbstractProcessor(DatabaseHelper,Pf2eDbContext,FoundryEnGlobals,ProcessorInput).md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.FoundryEnAbstractProcessor(DatabaseHelper,Pf2eDbContext,FoundryEnGlobals,ProcessorInput).md new file mode 100644 index 0000000..3a65f4a --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.FoundryEnAbstractProcessor(DatabaseHelper,Pf2eDbContext,FoundryEnGlobals,ProcessorInput).md @@ -0,0 +1,37 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\(DatabaseHelper, Pf2eDbContext, FoundryEnGlobals, ProcessorInput\) Constructor + +Абстрактный класс\-обработчик сущностей, полученных из молуля Foundry pf2e\. +Класс предназначен для обработки данных с помощью различных обработчиков, +для которых указан атрибут [ProcessorAttribute](ProcessorAttribute.md 'Pf2eDataScrapper\.Processors\.Attributes\.ProcessorAttribute')\. + +```csharp +protected FoundryEnAbstractProcessor(Pf2eDataScrapper.Helpers.DatabaseHelper databaseHelper, Pf2eModel.Pf2eDbContext context, Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.FoundryEnGlobals globals, Pf2eDataScrapper.Processors.ProcessorInput input); +``` +#### Parameters + + + +`databaseHelper` [DatabaseHelper](DatabaseHelper.md 'Pf2eDataScrapper\.Helpers\.DatabaseHelper') + +\[DI\] \ + + + +`context` [Pf2eModel\.Pf2eDbContext](https://docs.microsoft.com/en-us/dotnet/api/Pf2eModel.Pf2eDbContext 'Pf2eModel\.Pf2eDbContext') + +\[DI\] \ + + + +`globals` [FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals') + +\[DI\] \ + + + +`input` [ProcessorInput](ProcessorInput.md 'Pf2eDataScrapper\.Processors\.ProcessorInput') + +Объект обработки вводимого JSON\. \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.GetEntityName().md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.GetEntityName().md new file mode 100644 index 0000000..e6e95dc --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.GetEntityName().md @@ -0,0 +1,14 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.GetEntityName\(\) Method + +Получить имя сущности из входных данных\. + +```csharp +protected virtual string GetEntityName(); +``` + +#### Returns +[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String') +Имя сущности\. \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Globals.md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Globals.md new file mode 100644 index 0000000..1787b43 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Globals.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.Globals Property + +Глобальные константы и утилиты для импорта данных в формате Foundry En\. + +```csharp +public Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.FoundryEnGlobals Globals { get; } +``` + +#### Property Value +[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Helper.md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Helper.md new file mode 100644 index 0000000..610ee7f --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Helper.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.Helper Property + +Класс предоставляет методы для работы с базой данных\. + +```csharp +protected Pf2eDataScrapper.Helpers.DatabaseHelper Helper { protected get; } +``` + +#### Property Value +[DatabaseHelper](DatabaseHelper.md 'Pf2eDataScrapper\.Helpers\.DatabaseHelper') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Name.md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Name.md new file mode 100644 index 0000000..1f468bc --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Name.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.Name Property + +Название сущности, которое будет использоваться для обработки данных\. + +```csharp +public string Name { get; } +``` + +#### Property Value +[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Object.md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Object.md new file mode 100644 index 0000000..b940997 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Object.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.Object Property + +Подчинённая сущность, которая будет использоваться для обработки данных\. + +```csharp +public TEntity Object { get; } +``` + +#### Property Value +[TEntity](FoundryEnAbstractProcessor_TEntity_.md#Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.FoundryEnAbstractProcessor_TEntity_.TEntity 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.TEntity') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Process().md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Process().md new file mode 100644 index 0000000..d4504e6 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Process().md @@ -0,0 +1,12 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.Process\(\) Method + +Основной метод обработки данных\. + +```csharp +public override void Process(); +``` + +Implements [Process\(\)](IProcessor.Process().md 'Pf2eDataScrapper\.Processors\.Definitions\.IProcessor\.Process\(\)') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.ResolveEntity().md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.ResolveEntity().md new file mode 100644 index 0000000..c76cce5 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.ResolveEntity().md @@ -0,0 +1,14 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.ResolveEntity\(\) Method + +Разрешает сущность, основываясь на входных данных\. + +```csharp +public virtual int ResolveEntity(); +``` + +#### Returns +[System\.Int32](https://docs.microsoft.com/en-us/dotnet/api/System.Int32 'System\.Int32') +Идентификатор сущности\. \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Save().md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Save().md new file mode 100644 index 0000000..7b49ffb --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Save().md @@ -0,0 +1,12 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.Save\(\) Method + +Метод для сохранения изменений в базе данных\. + +```csharp +public override void Save(); +``` + +Implements [Save\(\)](IProcessor.Save().md 'Pf2eDataScrapper\.Processors\.Definitions\.IProcessor\.Save\(\)') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Type.md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Type.md new file mode 100644 index 0000000..967eacb --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.Type.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.Type Property + +Тип сущности\. + +```csharp +public abstract Pf2eModel.Model.Enum.EntityType Type { get; } +``` + +#### Property Value +[Pf2eModel\.Model\.Enum\.EntityType](https://docs.microsoft.com/en-us/dotnet/api/Pf2eModel.Model.Enum.EntityType 'Pf2eModel\.Model\.Enum\.EntityType') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.View.md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.View.md new file mode 100644 index 0000000..9e2fd20 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.View.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors').[FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') + +## FoundryEnAbstractProcessor\\.View Property + +Представление сущности, которое будет использоваться для обработки данных\. + +```csharp +public Pf2eDataScrapper.Helpers.EntityView View { get; private set; } +``` + +#### Property Value +[EntityView](EntityView.md 'Pf2eDataScrapper\.Helpers\.EntityView') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.md b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.md new file mode 100644 index 0000000..8263f2a --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnAbstractProcessor_TEntity_.md @@ -0,0 +1,44 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors') + +## FoundryEnAbstractProcessor\ Class + +Абстрактный класс\-обработчик сущностей, полученных из молуля Foundry pf2e\. +Класс предназначен для обработки данных с помощью различных обработчиков, +для которых указан атрибут [ProcessorAttribute](ProcessorAttribute.md 'Pf2eDataScrapper\.Processors\.Attributes\.ProcessorAttribute')\. + +```csharp +internal abstract class FoundryEnAbstractProcessor : Pf2eDataScrapper.Processors.Definitions.AbstractInputProcessor + where TEntity : class, Pf2eModel.Model.IEntity +``` +#### Type parameters + + + +`TEntity` + +Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System\.Object') 🡒 [AbstractInputProcessor](AbstractInputProcessor.md 'Pf2eDataScrapper\.Processors\.Definitions\.AbstractInputProcessor') 🡒 FoundryEnAbstractProcessor + +| Constructors | | +| :--- | :--- | +| [FoundryEnAbstractProcessor\(DatabaseHelper, Pf2eDbContext, FoundryEnGlobals, ProcessorInput\)](FoundryEnAbstractProcessor_TEntity_.FoundryEnAbstractProcessor(DatabaseHelper,Pf2eDbContext,FoundryEnGlobals,ProcessorInput).md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.FoundryEnAbstractProcessor\(Pf2eDataScrapper\.Helpers\.DatabaseHelper, Pf2eModel\.Pf2eDbContext, Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals, Pf2eDataScrapper\.Processors\.ProcessorInput\)') | Абстрактный класс\-обработчик сущностей, полученных из молуля Foundry pf2e\. Класс предназначен для обработки данных с помощью различных обработчиков, для которых указан атрибут [ProcessorAttribute](ProcessorAttribute.md 'Pf2eDataScrapper\.Processors\.Attributes\.ProcessorAttribute')\. | + +| Properties | | +| :--- | :--- | +| [Context](FoundryEnAbstractProcessor_TEntity_.Context.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.Context') | Предоставляет механизм для освобождения неуправляемых ресурсов\. | +| [Entity](FoundryEnAbstractProcessor_TEntity_.Entity.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.Entity') | Основная сущность, которая будет использоваться для обработки данных\. | +| [Globals](FoundryEnAbstractProcessor_TEntity_.Globals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.Globals') | Глобальные константы и утилиты для импорта данных в формате Foundry En\. | +| [Helper](FoundryEnAbstractProcessor_TEntity_.Helper.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.Helper') | Класс предоставляет методы для работы с базой данных\. | +| [Name](FoundryEnAbstractProcessor_TEntity_.Name.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.Name') | Название сущности, которое будет использоваться для обработки данных\. | +| [Object](FoundryEnAbstractProcessor_TEntity_.Object.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.Object') | Подчинённая сущность, которая будет использоваться для обработки данных\. | +| [Type](FoundryEnAbstractProcessor_TEntity_.Type.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.Type') | Тип сущности\. | +| [View](FoundryEnAbstractProcessor_TEntity_.View.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.View') | Представление сущности, которое будет использоваться для обработки данных\. | + +| Methods | | +| :--- | :--- | +| [AddExternal\(\)](FoundryEnAbstractProcessor_TEntity_.AddExternal().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.AddExternal\(\)') | Генерация внешних ссылок сущности\. | +| [CheckEntity\(\)](FoundryEnAbstractProcessor_TEntity_.CheckEntity().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.CheckEntity\(\)') | Проверяет входные данные на наличие идентификатора сущности и игнорирует её, если она указана в списке игнорируемых\. | +| [GetEntityName\(\)](FoundryEnAbstractProcessor_TEntity_.GetEntityName().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.GetEntityName\(\)') | Получить имя сущности из входных данных\. | +| [Process\(\)](FoundryEnAbstractProcessor_TEntity_.Process().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.Process\(\)') | Основной метод обработки данных\. | +| [ResolveEntity\(\)](FoundryEnAbstractProcessor_TEntity_.ResolveEntity().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.ResolveEntity\(\)') | Разрешает сущность, основываясь на входных данных\. | +| [Save\(\)](FoundryEnAbstractProcessor_TEntity_.Save().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\\.Save\(\)') | Метод для сохранения изменений в базе данных\. | diff --git a/Documentation/Pf2eDataScrapper/FoundryEnGlobals.FoundryEnGlobals().md b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.FoundryEnGlobals().md new file mode 100644 index 0000000..7ab7f2a --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.FoundryEnGlobals().md @@ -0,0 +1,10 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers').[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals') + +## FoundryEnGlobals\(\) Constructor + +Конструктор класса [FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals')\. + +```csharp +public FoundryEnGlobals(); +``` \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnGlobals.GetSlugSuffix(string).md b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.GetSlugSuffix(string).md new file mode 100644 index 0000000..cfeb14c --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.GetSlugSuffix(string).md @@ -0,0 +1,21 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers').[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals') + +## FoundryEnGlobals\.GetSlugSuffix\(string\) Method + +Получить суффикс для ссылки\. + +```csharp +public string GetSlugSuffix(string id); +``` +#### Parameters + + + +`id` [System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String') + +Идентификатор Aonprd\. + +#### Returns +[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String') +Суффикс для ссылки или пустая строка\. \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnGlobals.Ignore.md b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.Ignore.md new file mode 100644 index 0000000..7970fac --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.Ignore.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers').[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals') + +## FoundryEnGlobals\.Ignore Property + +Список идентификаторв пропускаемых сущностей\. + +```csharp +public System.Collections.Generic.List Ignore { get; } +``` + +#### Property Value +[System\.Collections\.Generic\.List<](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1 'System\.Collections\.Generic\.List\`1')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[>](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1 'System\.Collections\.Generic\.List\`1') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnGlobals.JsonToDictionary(JObject,string).md b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.JsonToDictionary(JObject,string).md new file mode 100644 index 0000000..54a04e4 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.JsonToDictionary(JObject,string).md @@ -0,0 +1,27 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers').[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals') + +## FoundryEnGlobals\.JsonToDictionary\(JObject, string\) Method + +Преобразовать JSON\-объект в словарь\. + +```csharp +public static System.Collections.Generic.Dictionary JsonToDictionary(Newtonsoft.Json.Linq.JObject json, string tokenPath); +``` +#### Parameters + + + +`json` [Newtonsoft\.Json\.Linq\.JObject](https://docs.microsoft.com/en-us/dotnet/api/Newtonsoft.Json.Linq.JObject 'Newtonsoft\.Json\.Linq\.JObject') + +Исходный JSON\-объект\. + + + +`tokenPath` [System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String') + +Путь к токену в JSON\. + +#### Returns +[System\.Collections\.Generic\.Dictionary<](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[,](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[>](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2') +Результирующий словарь\. \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnGlobals.MatchToAonprd.md b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.MatchToAonprd.md new file mode 100644 index 0000000..4093737 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.MatchToAonprd.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers').[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals') + +## FoundryEnGlobals\.MatchToAonprd Property + +Словарь соответствий идентификаторов Aonprd к Foundry En\. + +```csharp +public System.Collections.Generic.Dictionary MatchToAonprd { get; } +``` + +#### Property Value +[System\.Collections\.Generic\.Dictionary<](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[,](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[>](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnGlobals.SlugSuffixes.md b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.SlugSuffixes.md new file mode 100644 index 0000000..5b540c1 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.SlugSuffixes.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers').[FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals') + +## FoundryEnGlobals\.SlugSuffixes Property + +Словарей суффиксов для сущностей\. + +```csharp +public System.Collections.Generic.Dictionary SlugSuffixes { get; } +``` + +#### Property Value +[System\.Collections\.Generic\.Dictionary<](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[,](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2')[System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')[>](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2 'System\.Collections\.Generic\.Dictionary\`2') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/FoundryEnGlobals.md b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.md index 572acd8..7a1b1b8 100644 --- a/Documentation/Pf2eDataScrapper/FoundryEnGlobals.md +++ b/Documentation/Pf2eDataScrapper/FoundryEnGlobals.md @@ -11,6 +11,18 @@ internal class FoundryEnGlobals Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System\.Object') 🡒 FoundryEnGlobals +| Constructors | | +| :--- | :--- | +| [FoundryEnGlobals\(\)](FoundryEnGlobals.FoundryEnGlobals().md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.FoundryEnGlobals\(\)') | Конструктор класса [FoundryEnGlobals](FoundryEnGlobals.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals')\. | + | Properties | | | :--- | :--- | | [FoundryTarget](FoundryEnGlobals.FoundryTarget.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.FoundryTarget') | Цель внешних ссылок для Foundry En\. | +| [Ignore](FoundryEnGlobals.Ignore.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.Ignore') | Список идентификаторв пропускаемых сущностей\. | +| [MatchToAonprd](FoundryEnGlobals.MatchToAonprd.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.MatchToAonprd') | Словарь соответствий идентификаторов Aonprd к Foundry En\. | +| [SlugSuffixes](FoundryEnGlobals.SlugSuffixes.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.SlugSuffixes') | Словарей суффиксов для сущностей\. | + +| Methods | | +| :--- | :--- | +| [GetSlugSuffix\(string\)](FoundryEnGlobals.GetSlugSuffix(string).md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.GetSlugSuffix\(string\)') | Получить суффикс для ссылки\. | +| [JsonToDictionary\(JObject, string\)](FoundryEnGlobals.JsonToDictionary(JObject,string).md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers\.FoundryEnGlobals\.JsonToDictionary\(Newtonsoft\.Json\.Linq\.JObject, string\)') | Преобразовать JSON\-объект в словарь\. | diff --git a/Documentation/Pf2eDataScrapper/Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md b/Documentation/Pf2eDataScrapper/Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md new file mode 100644 index 0000000..0b6615c --- /dev/null +++ b/Documentation/Pf2eDataScrapper/Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md @@ -0,0 +1,7 @@ +#### [Pf2eDataScrapper](index.md 'index') + +## Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors Namespace + +| Classes | | +| :--- | :--- | +| [FoundryEnAbstractProcessor<TEntity>](FoundryEnAbstractProcessor_TEntity_.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.FoundryEnAbstractProcessor\') | Абстрактный класс\-обработчик сущностей, полученных из молуля Foundry pf2e\. Класс предназначен для обработки данных с помощью различных обработчиков, для которых указан атрибут [ProcessorAttribute](ProcessorAttribute.md 'Pf2eDataScrapper\.Processors\.Attributes\.ProcessorAttribute')\. | diff --git a/Documentation/Pf2eDataScrapper/Pf2eDataScrapper.Processors.md b/Documentation/Pf2eDataScrapper/Pf2eDataScrapper.Processors.md index 92f44a5..0aa83fc 100644 --- a/Documentation/Pf2eDataScrapper/Pf2eDataScrapper.Processors.md +++ b/Documentation/Pf2eDataScrapper/Pf2eDataScrapper.Processors.md @@ -8,6 +8,7 @@ | :--- | :--- | | [EnumSolver<TEnum>](EnumSolver_TEnum_.md 'Pf2eDataScrapper\.Processors\.EnumSolver\') | Абстрактный класс для разрешения значений перечислений\. | | [LegacyItemException](LegacyItemException.md 'Pf2eDataScrapper\.Processors\.LegacyItemException') | Исключение, показывающее, что обработка сущности пропускается как устаревшая\. | +| [ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor') | Класс, выполняющий обработку коллекции обработчиков\. | | [ProcessorInput](ProcessorInput.md 'Pf2eDataScrapper\.Processors\.ProcessorInput') | Класс для работы с JSON\-объектом\. | | [ProcessorInput\.InvalidEnumStringException](ProcessorInput.InvalidEnumStringException.md 'Pf2eDataScrapper\.Processors\.ProcessorInput\.InvalidEnumStringException') | Исключение при неверном значении для перечисленния\. | | [SilentSkipItemException](SilentSkipItemException.md 'Pf2eDataScrapper\.Processors\.SilentSkipItemException') | Исключение, показывающее, что обработка сущности пропускается без вывода сообщения\. | diff --git a/Documentation/Pf2eDataScrapper/ProcessorExecutor.Collection.md b/Documentation/Pf2eDataScrapper/ProcessorExecutor.Collection.md new file mode 100644 index 0000000..09bb842 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/ProcessorExecutor.Collection.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor') + +## ProcessorExecutor\.Collection Property + +Класс с коллекцией обработчиков\. + +```csharp +public Pf2eDataScrapper.Processors.Collection.ProcessorCollection Collection { get; } +``` + +#### Property Value +[ProcessorCollection](ProcessorCollection.md 'Pf2eDataScrapper\.Processors\.Collection\.ProcessorCollection') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/ProcessorExecutor.Continue().md b/Documentation/Pf2eDataScrapper/ProcessorExecutor.Continue().md new file mode 100644 index 0000000..8c4ef45 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/ProcessorExecutor.Continue().md @@ -0,0 +1,14 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor') + +## ProcessorExecutor\.Continue\(\) Method + +Переходит к обработке следующего элемента в коллекции или завершает процесс, если все элементы были обработаны\. + +```csharp +private void Continue(); +``` + +### Remarks +Этот метод увеличивает текущий индекс и определяет, начинать ли обработку следующего элемента или завершить + процесс\. Если текущий индекс превышает количество элементов в коллекции, процесс помечается как завершенный\. \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/ProcessorExecutor.CurrentFactory.md b/Documentation/Pf2eDataScrapper/ProcessorExecutor.CurrentFactory.md new file mode 100644 index 0000000..920e4fb --- /dev/null +++ b/Documentation/Pf2eDataScrapper/ProcessorExecutor.CurrentFactory.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor') + +## ProcessorExecutor\.CurrentFactory Property + +Текущая фабрика процессоров, которая используется для обработки\. + +```csharp +private Pf2eDataScrapper.Processors.Factory.AbstractProcessorFactory CurrentFactory { private get; private set; } +``` + +#### Property Value +[AbstractProcessorFactory](AbstractProcessorFactory.md 'Pf2eDataScrapper\.Processors\.Factory\.AbstractProcessorFactory') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/ProcessorExecutor.IterateProcessors().md b/Documentation/Pf2eDataScrapper/ProcessorExecutor.IterateProcessors().md new file mode 100644 index 0000000..1bc0695 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/ProcessorExecutor.IterateProcessors().md @@ -0,0 +1,20 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor') + +## ProcessorExecutor\.IterateProcessors\(\) Method + +Выполняет итерацию по всем процессорам, предоставленным текущей фабрикой\. + +```csharp +private System.Collections.Generic.IEnumerable IterateProcessors(); +``` + +#### Returns +[System\.Collections\.Generic\.IEnumerable<](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.IEnumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')[IProcessor](IProcessor.md 'Pf2eDataScrapper\.Processors\.Definitions\.IProcessor')[>](https://docs.microsoft.com/en-us/dotnet/api/System.Collections.Generic.IEnumerable-1 'System\.Collections\.Generic\.IEnumerable\`1') +Перечисляемая коллекция экземпляров [IProcessor](IProcessor.md 'Pf2eDataScrapper\.Processors\.Definitions\.IProcessor'), + представляющая процессоры, доступные в текущей фабрике\. + +### Remarks +Этот метод выдает каждый процессор последовательно, позволяя вызывающему + обрабатывать их по одному за раз\. Отслеживание прогресса обновляется для каждого + процессора во время итерации\. \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/ProcessorExecutor.ProcessorExecutor(ProcessorCollection,ProcessProgress,ApplicationSettings).md b/Documentation/Pf2eDataScrapper/ProcessorExecutor.ProcessorExecutor(ProcessorCollection,ProcessProgress,ApplicationSettings).md new file mode 100644 index 0000000..0b30a50 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/ProcessorExecutor.ProcessorExecutor(ProcessorCollection,ProcessProgress,ApplicationSettings).md @@ -0,0 +1,29 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor') + +## ProcessorExecutor\(ProcessorCollection, ProcessProgress, ApplicationSettings\) Constructor + +Класс, выполняющий обработку коллекции обработчиков\. + +```csharp +public ProcessorExecutor(Pf2eDataScrapper.Processors.Collection.ProcessorCollection collection, Pf2eDataScrapper.Helpers.ProcessProgress progress, Pf2eDataScrapper.ApplicationSettings settings); +``` +#### Parameters + + + +`collection` [ProcessorCollection](ProcessorCollection.md 'Pf2eDataScrapper\.Processors\.Collection\.ProcessorCollection') + +\[DI\] \ + + + +`progress` [ProcessProgress](ProcessProgress.md 'Pf2eDataScrapper\.Helpers\.ProcessProgress') + +\[DI\] \ + + + +`settings` [ApplicationSettings](ApplicationSettings.md 'Pf2eDataScrapper\.ApplicationSettings') + +\[DI\] \ \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/ProcessorExecutor.RunProcessor(IProcessor,ParallelLoopState,long).md b/Documentation/Pf2eDataScrapper/ProcessorExecutor.RunProcessor(IProcessor,ParallelLoopState,long).md new file mode 100644 index 0000000..10cba24 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/ProcessorExecutor.RunProcessor(IProcessor,ParallelLoopState,long).md @@ -0,0 +1,35 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor') + +## ProcessorExecutor\.RunProcessor\(IProcessor, ParallelLoopState, long\) Method + +Запускает указанный процессор для выполнения операций обработки и сохранения\. + +```csharp +private void RunProcessor(Pf2eDataScrapper.Processors.Definitions.IProcessor processor, System.Threading.Tasks.ParallelLoopState state, long arg3); +``` +#### Parameters + + + +`processor` [IProcessor](IProcessor.md 'Pf2eDataScrapper\.Processors\.Definitions\.IProcessor') + +Экземпляр процессора, выполняющий операции обработки и сохранения\. + + + +`state` [System\.Threading\.Tasks\.ParallelLoopState](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.Tasks.ParallelLoopState 'System\.Threading\.Tasks\.ParallelLoopState') + +Экземпляр [System\.Threading\.Tasks\.ParallelLoopState](https://docs.microsoft.com/en-us/dotnet/api/System.Threading.Tasks.ParallelLoopState 'System\.Threading\.Tasks\.ParallelLoopState'), который можно использовать для управления выполнением + параллельного цикла\. + + + +`arg3` [System\.Int64](https://docs.microsoft.com/en-us/dotnet/api/System.Int64 'System\.Int64') + +Длинное значение, представляющее текущий индекс итерации или связанные данные для процессора\. + +### Remarks +Если процессор выдает [SkipItemException](SkipItemException.md 'Pf2eDataScrapper\.Processors\.SkipItemException'), сообщение об исключении + регистрируется как информационный прогресс\. Если выдается [SilentSkipItemException](SilentSkipItemException.md 'Pf2eDataScrapper\.Processors\.SilentSkipItemException'), + оно молча игнорируется\. \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/ProcessorExecutor.Settings.md b/Documentation/Pf2eDataScrapper/ProcessorExecutor.Settings.md new file mode 100644 index 0000000..fdcdd5b --- /dev/null +++ b/Documentation/Pf2eDataScrapper/ProcessorExecutor.Settings.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor') + +## ProcessorExecutor\.Settings Property + +Настройки программы\. + +```csharp +public Pf2eDataScrapper.ApplicationSettings Settings { get; } +``` + +#### Property Value +[ApplicationSettings](ApplicationSettings.md 'Pf2eDataScrapper\.ApplicationSettings') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/ProcessorExecutor.Start().md b/Documentation/Pf2eDataScrapper/ProcessorExecutor.Start().md new file mode 100644 index 0000000..9c63c1c --- /dev/null +++ b/Documentation/Pf2eDataScrapper/ProcessorExecutor.Start().md @@ -0,0 +1,10 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor') + +## ProcessorExecutor\.Start\(\) Method + +Запускает обработку коллекции обработчиков\. + +```csharp +public void Start(); +``` \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/ProcessorExecutor.StartItem().md b/Documentation/Pf2eDataScrapper/ProcessorExecutor.StartItem().md new file mode 100644 index 0000000..2b279ec --- /dev/null +++ b/Documentation/Pf2eDataScrapper/ProcessorExecutor.StartItem().md @@ -0,0 +1,17 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor') + +## ProcessorExecutor\.StartItem\(\) Method + +Инициирует обработку текущего элемента в коллекции\. + +```csharp +private void StartItem(); +``` + +### Remarks +Этот метод извлекает текущий элемент из коллекции, подготавливает связанную + фабрику и запускает фоновый обработчик для обработки задач элемента\. Обработка + выполняется параллельно, если конфигурация элемента это позволяет, со степенью + параллелизма, определяемой настройками приложения\. После завершения обработки метод + переходит к следующему шагу рабочего процесса\. \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/ProcessorExecutor._currentIndex.md b/Documentation/Pf2eDataScrapper/ProcessorExecutor._currentIndex.md new file mode 100644 index 0000000..1ce9eda --- /dev/null +++ b/Documentation/Pf2eDataScrapper/ProcessorExecutor._currentIndex.md @@ -0,0 +1,13 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors').[ProcessorExecutor](ProcessorExecutor.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor') + +## ProcessorExecutor\.\_currentIndex Field + +Текущий индекс обрабатываемого элемента в коллекции\. + +```csharp +private int _currentIndex; +``` + +#### Field Value +[System\.Int32](https://docs.microsoft.com/en-us/dotnet/api/System.Int32 'System\.Int32') \ No newline at end of file diff --git a/Documentation/Pf2eDataScrapper/ProcessorExecutor.md b/Documentation/Pf2eDataScrapper/ProcessorExecutor.md new file mode 100644 index 0000000..67f5692 --- /dev/null +++ b/Documentation/Pf2eDataScrapper/ProcessorExecutor.md @@ -0,0 +1,34 @@ +#### [Pf2eDataScrapper](index.md 'index') +### [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors') + +## ProcessorExecutor Class + +Класс, выполняющий обработку коллекции обработчиков\. + +```csharp +internal sealed class ProcessorExecutor +``` + +Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System\.Object') 🡒 ProcessorExecutor + +| Constructors | | +| :--- | :--- | +| [ProcessorExecutor\(ProcessorCollection, ProcessProgress, ApplicationSettings\)](ProcessorExecutor.ProcessorExecutor(ProcessorCollection,ProcessProgress,ApplicationSettings).md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.ProcessorExecutor\(Pf2eDataScrapper\.Processors\.Collection\.ProcessorCollection, Pf2eDataScrapper\.Helpers\.ProcessProgress, Pf2eDataScrapper\.ApplicationSettings\)') | Класс, выполняющий обработку коллекции обработчиков\. | + +| Fields | | +| :--- | :--- | +| [\_currentIndex](ProcessorExecutor._currentIndex.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.\_currentIndex') | Текущий индекс обрабатываемого элемента в коллекции\. | + +| Properties | | +| :--- | :--- | +| [Collection](ProcessorExecutor.Collection.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.Collection') | Класс с коллекцией обработчиков\. | +| [CurrentFactory](ProcessorExecutor.CurrentFactory.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.CurrentFactory') | Текущая фабрика процессоров, которая используется для обработки\. | +| [Settings](ProcessorExecutor.Settings.md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.Settings') | Настройки программы\. | + +| Methods | | +| :--- | :--- | +| [Continue\(\)](ProcessorExecutor.Continue().md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.Continue\(\)') | Переходит к обработке следующего элемента в коллекции или завершает процесс, если все элементы были обработаны\. | +| [IterateProcessors\(\)](ProcessorExecutor.IterateProcessors().md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.IterateProcessors\(\)') | Выполняет итерацию по всем процессорам, предоставленным текущей фабрикой\. | +| [RunProcessor\(IProcessor, ParallelLoopState, long\)](ProcessorExecutor.RunProcessor(IProcessor,ParallelLoopState,long).md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.RunProcessor\(Pf2eDataScrapper\.Processors\.Definitions\.IProcessor, System\.Threading\.Tasks\.ParallelLoopState, long\)') | Запускает указанный процессор для выполнения операций обработки и сохранения\. | +| [Start\(\)](ProcessorExecutor.Start().md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.Start\(\)') | Запускает обработку коллекции обработчиков\. | +| [StartItem\(\)](ProcessorExecutor.StartItem().md 'Pf2eDataScrapper\.Processors\.ProcessorExecutor\.StartItem\(\)') | Инициирует обработку текущего элемента в коллекции\. | diff --git a/Documentation/Pf2eDataScrapper/index.md b/Documentation/Pf2eDataScrapper/index.md index 7879d1f..f7d9810 100644 --- a/Documentation/Pf2eDataScrapper/index.md +++ b/Documentation/Pf2eDataScrapper/index.md @@ -18,6 +18,7 @@ | [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn](Pf2eDataScrapper.Importers.Implementations.FoundryEn.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn') | Импортёр данных из модуля [pf2e](https://github.com/foundryvtt/pf2e 'https://github\.com/foundryvtt/pf2e') для FoundryVTT\. | | [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Compendium](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Compendium') | Компендиум данных из модуля [pf2e](https://github.com/foundryvtt/pf2e 'https://github\.com/foundryvtt/pf2e') для FoundryVTT\. | | [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Helpers') | | +| [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors') | | | [Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.Preparation](Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Preparation.md 'Pf2eDataScrapper\.Importers\.Implementations\.FoundryEn\.Processors\.Preparation') | Обработчики для подготовки данных из модуля [pf2e](https://github.com/foundryvtt/pf2e 'https://github\.com/foundryvtt/pf2e') для FoundryVTT\. | | [Pf2eDataScrapper\.Importers\.Repositories](Pf2eDataScrapper.Importers.Repositories.md 'Pf2eDataScrapper\.Importers\.Repositories') | Общее описание репозиториев для хранения данных, которые используются в импортёрах и процессорах\. | | [Pf2eDataScrapper\.Processors](Pf2eDataScrapper.Processors.md 'Pf2eDataScrapper\.Processors') | Общее описание обработчиков данных\. | diff --git a/Documentation/Pf2eModel/Entity.IsLegacy.md b/Documentation/Pf2eModel/Entity.IsLegacy.md new file mode 100644 index 0000000..ff9457c --- /dev/null +++ b/Documentation/Pf2eModel/Entity.IsLegacy.md @@ -0,0 +1,13 @@ +#### [Pf2eModel](index.md 'index') +### [Pf2eModel\.Model\.Base](Pf2eModel.Model.Base.md 'Pf2eModel\.Model\.Base').[Entity](Entity.md 'Pf2eModel\.Model\.Base\.Entity') + +## Entity\.IsLegacy Property + +Флаг, указывающий, что сущность является устаревшей\. + +```csharp +public System.Nullable IsLegacy { get; set; } +``` + +#### Property Value +[System\.Nullable<](https://docs.microsoft.com/en-us/dotnet/api/System.Nullable-1 'System\.Nullable\`1')[System\.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System\.Boolean')[>](https://docs.microsoft.com/en-us/dotnet/api/System.Nullable-1 'System\.Nullable\`1') \ No newline at end of file diff --git a/Documentation/Pf2eModel/Entity.md b/Documentation/Pf2eModel/Entity.md index 255c56a..1d981ac 100644 --- a/Documentation/Pf2eModel/Entity.md +++ b/Documentation/Pf2eModel/Entity.md @@ -19,6 +19,7 @@ Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System. | [Id](Entity.Id.md 'Pf2eModel\.Model\.Base\.Entity\.Id') | Идентификатор сущности\. | | [Img](Entity.Img.md 'Pf2eModel\.Model\.Base\.Entity\.Img') | Изображение сущности\. | | [IsChecked](Entity.IsChecked.md 'Pf2eModel\.Model\.Base\.Entity\.IsChecked') | Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи\. | +| [IsLegacy](Entity.IsLegacy.md 'Pf2eModel\.Model\.Base\.Entity\.IsLegacy') | Флаг, указывающий, что сущность является устаревшей\. | | [IsTranslated](Entity.IsTranslated.md 'Pf2eModel\.Model\.Base\.Entity\.IsTranslated') | Флаг, указывающий, что у объекта существует перевод\. | | [Keywords](Entity.Keywords.md 'Pf2eModel\.Model\.Base\.Entity\.Keywords') | Коллекция ключевых слов, связанных с сущностью\. | | [LegacyEntities](Entity.LegacyEntities.md 'Pf2eModel\.Model\.Base\.Entity\.LegacyEntities') | Коллекция устаревших сущностей\. | diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Helpers/AonprdBuilderGlobals.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Helpers/AonprdBuilderGlobals.cs index 32cace0..71787da 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Helpers/AonprdBuilderGlobals.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Helpers/AonprdBuilderGlobals.cs @@ -80,7 +80,13 @@ internal class AonprdBuilderGlobals return SlugSuffixes.TryGetValue(id, out string? slug) ? $"-{slug}" : string.Empty; } - private Dictionary JsonToDictionary(JObject json, string tokenPath) + /// + /// Преобразовать JSON-объект в словарь. + /// + /// Исходный JSON-объект. + /// Путь к токену в JSON. + /// Результирующий словарь. + public static Dictionary JsonToDictionary(JObject json, string tokenPath) { return json.SelectToken(tokenPath)?.ToObject>() ?? []; } diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/AbstractEntityProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/AbstractEntityProcessor.cs index 878a0e7..4d19957 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/AbstractEntityProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/AbstractEntityProcessor.cs @@ -63,6 +63,15 @@ internal abstract class AbstractEntityProcessor( /// public abstract IEntity Object { get; } + /// + /// Название сущности, которое будет использоваться для обработки данных. + /// + public string Name + { + get { return _name ??= GetEntityName(); } + } + private string? _name = null; + /// /// Добавление основной сущности в контекст базы данных. /// @@ -93,7 +102,7 @@ internal abstract class AbstractEntityProcessor( { if (Globals.MergeSources.ContainsKey(Input.GetRequired("id"))) { - throw new SkipItemException(GetEntityName(), "помечено на слияние."); + throw new SkipItemException(Name, "помечено на слияние."); } } @@ -156,7 +165,7 @@ internal abstract class AbstractEntityProcessor( /// Получает имя сущности из входных данных. /// /// Имя сущности. - protected virtual string GetEntityName() => Input.GetRequired("name"); + protected virtual string GetEntityName() => Input.GetRequired("name").Replace("’", "'"); /// /// Генерация основных полей корневой сущности. @@ -169,7 +178,7 @@ internal abstract class AbstractEntityProcessor( } Entity.Type = Type; - Entity.Name[LocaleType.English] = GetEntityName(); + Entity.Name[LocaleType.English] = Name; Entity.Img = ""; Entity.Description = GetDescription(); Entity.Rarity = Input.EnumOptional("rarity", EntityRarity.Common); diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/LegacyRemasterProcessors.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/LegacyRemasterProcessors.cs index d63ad4e..a282737 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/LegacyRemasterProcessors.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/LegacyRemasterProcessors.cs @@ -34,6 +34,8 @@ internal class LegacyRemasterProcessors(ProcessorInput input) : AbstractInputPro Context.Entities.FirstOrDefault(e => e.Id == entityId) ?? throw new($"Неизвестная сущность с ID {entityId}"); + legacyEntity.IsLegacy = true; + foreach (int remasterId in GetEntityIds("remaster_id")) { Context.LegacyRemasters.Add(new() { LegacyId = entityId, RemasterId = remasterId }); diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/MissingLegacyRemasterProcessorFactory.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/MissingLegacyRemasterProcessorFactory.cs index 06dbc44..2a09d99 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/MissingLegacyRemasterProcessorFactory.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Finalization/MissingLegacyRemasterProcessorFactory.cs @@ -75,6 +75,8 @@ internal class MissingLegacyRemasterProcessor(string legacyId, string remasterId new() { LegacyId = legacyEntity.Id, RemasterId = remasterEntity.Id } ); + legacyEntity.IsLegacy = true; + if (legacyEntity.Slug == remasterEntity.Slug) { legacyEntity.Slug += "-legacy"; diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/CompendiumLoadProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/CompendiumLoadProcessor.cs index fefcc86..a320991 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/CompendiumLoadProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Preparation/CompendiumLoadProcessor.cs @@ -1,4 +1,7 @@ -using System.IO; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; using Newtonsoft.Json.Linq; using Pf2eDataScrapper.Helpers; using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium; @@ -51,5 +54,14 @@ internal class CompendiumLoadProcessor( Progress.Local.Complete(); } - public void Save() { } + public void Save() + { + List result = Compendium.Items.OrderBy(item => item.Id).ToList(); + + Compendium.Items.Clear(); + foreach (AonprdCompendiumItem item in result) + { + Compendium.Items.Add(item); + } + } } diff --git a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Types/ActionProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Types/ActionProcessor.cs index b9a781c..7d54a44 100644 --- a/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Types/ActionProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/Aonprd/Processors/Types/ActionProcessor.cs @@ -1,8 +1,12 @@ -using Pf2eDataScrapper.Helpers; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using Newtonsoft.Json.Linq; +using Pf2eDataScrapper.Helpers; using Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers; using Pf2eDataScrapper.Processors; using Pf2eDataScrapper.Processors.Attributes; -using Pf2eDataScrapper.Processors.Collection; +using Pf2eModel.Model.Common.I18n; using Pf2eModel.Model.Enum; using StringHelper = Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers.StringHelper; @@ -16,7 +20,7 @@ namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.Types; Group = ProcessorGroupEnum.AonprdEntities )] [ProcessorDependencies(["aonprd:trait", "aonprd:source"])] -internal class ActionProcessor( +internal partial class ActionProcessor( ProcessorInput input, StringHelper stringHelper, DatabaseHelper helper, diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Helpers/FoundryEnGlobals.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Helpers/FoundryEnGlobals.cs index 2f44719..a9cf1b7 100644 --- a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Helpers/FoundryEnGlobals.cs +++ b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Helpers/FoundryEnGlobals.cs @@ -1,10 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Pf2eModel.Model.Base.Source; +using System.Collections.Generic; +using System.IO; +using AngleSharp.Dom; +using Newtonsoft.Json.Linq; using Pf2eModel.Model.Base.Targets; +using Pf2eModel.Model.Structure; namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers; @@ -17,4 +16,61 @@ internal class FoundryEnGlobals /// Цель внешних ссылок для Foundry En. /// public ExternalTarget FoundryTarget { get; set; } = null!; + + /// + /// Список идентификаторв пропускаемых сущностей. + /// + public List Ignore { get; } = []; + + /// + /// Словарей суффиксов для сущностей. + /// + public Dictionary SlugSuffixes { get; } = []; + + /// + /// Словарь соответствий идентификаторов Aonprd к Foundry En. + /// + public Dictionary MatchToAonprd { get; } = []; + + /// + /// Конструктор класса . + /// + public FoundryEnGlobals() + { + using StreamReader fileReader = new("Resources\\ImportAdaptation.json"); + + JObject? json = JObject + .Parse(fileReader.ReadToEnd()) + .SelectToken("Foundry") + ?.ToObject(); + + if (json is not null) + { + Ignore = json.SelectToken("Ignore")?.ToObject>() ?? []; // JsonToDictionary(json, "Ignore"); + + SlugSuffixes = JsonToDictionary(json, "SlugSuffixes"); + MatchToAonprd = JsonToDictionary(json, "MatchToAonprd"); + } + } + + /// + /// Получить суффикс для ссылки. + /// + /// Идентификатор Aonprd. + /// Суффикс для ссылки или пустая строка. + public string GetSlugSuffix(string id) + { + return SlugSuffixes.TryGetValue(id, out string? slug) ? $"-{slug}" : string.Empty; + } + + /// + /// Преобразовать JSON-объект в словарь. + /// + /// Исходный JSON-объект. + /// Путь к токену в JSON. + /// Результирующий словарь. + public static Dictionary JsonToDictionary(JObject json, string tokenPath) + { + return json.SelectToken(tokenPath)?.ToObject>() ?? []; + } } diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Entities/ActionProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Entities/ActionProcessor.cs index c1c31b5..b8d0c97 100644 --- a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Entities/ActionProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Entities/ActionProcessor.cs @@ -1,8 +1,13 @@ -using Pf2eDataScrapper.Helpers; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using Newtonsoft.Json.Linq; +using Pf2eDataScrapper.Helpers; using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Helpers; using Pf2eDataScrapper.Processors; using Pf2eDataScrapper.Processors.Attributes; using Pf2eModel; +using Pf2eModel.Model.Common.I18n; using Pf2eModel.Model.Enum; namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Entities; @@ -16,16 +21,16 @@ namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Entiti Active = false )] [ProcessorDependencies(["foundry-en:compendium", "foundry-en:external"])] -internal class ActionProcessor( +internal partial class ActionProcessor( DatabaseHelper databaseHelper, Pf2eDbContext context, - FoundryEnGlobals enGlobals, + FoundryEnGlobals globals, ProcessorInput input ) : FoundryEnAbstractProcessor( databaseHelper, context, - enGlobals, + globals, input ) { diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Entities/ConditionProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Entities/ConditionProcessor.cs index 77b6a40..d59a893 100644 --- a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Entities/ConditionProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/Entities/ConditionProcessor.cs @@ -22,9 +22,9 @@ namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Entiti internal class ConditionProcessor( DatabaseHelper databaseHelper, Pf2eDbContext context, - FoundryEnGlobals enGlobals, + FoundryEnGlobals globals, ProcessorInput input -) : FoundryEnAbstractProcessor(databaseHelper, context, enGlobals, input) +) : FoundryEnAbstractProcessor(databaseHelper, context, globals, input) { public override EntityType Type => EntityType.Condition; diff --git a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/FoundryEnAbstractProcessor.cs b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/FoundryEnAbstractProcessor.cs index 604f62f..bd24e9c 100644 --- a/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/FoundryEnAbstractProcessor.cs +++ b/Pf2eDataScrapper/Importers/Implementations/FoundryEn/Processors/FoundryEnAbstractProcessor.cs @@ -25,12 +25,12 @@ namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors; /// /// [DI] /// [DI] -/// [DI] +/// [DI] /// Объект обработки вводимого JSON. internal abstract class FoundryEnAbstractProcessor( DatabaseHelper databaseHelper, Pf2eDbContext context, - FoundryEnGlobals enGlobals, + FoundryEnGlobals globals, ProcessorInput input ) : AbstractInputProcessor(input) where TEntity : class, IEntity @@ -42,7 +42,7 @@ internal abstract class FoundryEnAbstractProcessor( public Pf2eDbContext Context { get; } = context; /// - public FoundryEnGlobals EnGlobals { get; } = enGlobals; + public FoundryEnGlobals Globals { get; } = globals; /// /// Тип сущности. @@ -68,13 +68,46 @@ internal abstract class FoundryEnAbstractProcessor( $"Сущность {View.SubEntity} некорректного типа, ожидался тип {typeof(TEntity)}." ); + /// + /// Название сущности, которое будет использоваться для обработки данных. + /// + public string Name + { + get { return _name ??= GetEntityName(); } + } + private string? _name = null; + + /// + /// Проверяет входные данные на наличие идентификатора сущности и игнорирует её, если она указана в списке игнорируемых. + /// + public virtual void CheckEntity() + { + string id = Input.GetRequired("id"); + + if (Globals.Ignore.Any(s => s == id)) + { + throw new SkipItemException( + id, + $"Сущность с идентификатором \"{id}\" пропущена, так как она указана в списке игнорируемых." + ); + } + } + /// /// Разрешает сущность, основываясь на входных данных. /// /// Идентификатор сущности. public virtual int ResolveEntity() { - string name = GetEntityName(); + string name = Name; + + if (Globals.MatchToAonprd.TryGetValue(name, out string? aonprdId)) + { + return Context + .EntityExternals.Where(ex => ex.ExternalId == aonprdId) + .Select(ex => ex.EntityId) + .First(); + } try { @@ -126,6 +159,8 @@ internal abstract class FoundryEnAbstractProcessor( /// public override void Process() { + CheckEntity(); + View = new(Context, Type, ResolveEntity()); AddExternal(); @@ -138,7 +173,7 @@ internal abstract class FoundryEnAbstractProcessor( } /// - /// Получает имя сущности из входных данных. + /// Получить имя сущности из входных данных. /// /// Имя сущности. protected virtual string GetEntityName() => Input.GetRequired("name"); @@ -152,7 +187,7 @@ internal abstract class FoundryEnAbstractProcessor( EntityExternal external = new() { EntityId = Entity.Id, - TargetId = EnGlobals.FoundryTarget.Id, + TargetId = Globals.FoundryTarget.Id, ExternalId = Input.GetOptional("_id"), Suffix = Input.GetRequired("_id"), Md5 = Input.Md5(), diff --git a/Pf2eDataScrapper/Processors/ProcessorExecutor.cs b/Pf2eDataScrapper/Processors/ProcessorExecutor.cs index 09f0a8e..8f593a0 100644 --- a/Pf2eDataScrapper/Processors/ProcessorExecutor.cs +++ b/Pf2eDataScrapper/Processors/ProcessorExecutor.cs @@ -9,16 +9,30 @@ using Pf2eDataScrapper.Processors.Factory; namespace Pf2eDataScrapper.Processors; +/// +/// Класс, выполняющий обработку коллекции обработчиков. +/// +/// [DI] +/// [DI] +/// [DI] internal sealed class ProcessorExecutor( ProcessorCollection collection, ProcessProgress progress, ApplicationSettings settings ) { + /// public ProcessorCollection Collection { get; } = collection; + + /// public ProcessProgress Progress { get; } = progress; + + /// public ApplicationSettings Settings { get; } = settings; + /// + /// Запускает обработку коллекции обработчиков. + /// public void Start() { Collection.SortItems(); @@ -28,10 +42,24 @@ internal sealed class ProcessorExecutor( StartItem(); } + /// + /// Текущий индекс обрабатываемого элемента в коллекции. + /// private int _currentIndex; + /// + /// Текущая фабрика процессоров, которая используется для обработки. + /// private AbstractProcessorFactory CurrentFactory { get; set; } = null!; + /// + /// Инициирует обработку текущего элемента в коллекции. + /// + /// Этот метод извлекает текущий элемент из коллекции, подготавливает связанную + /// фабрику и запускает фоновый обработчик для обработки задач элемента. Обработка + /// выполняется параллельно, если конфигурация элемента это позволяет, со степенью + /// параллелизма, определяемой настройками приложения. После завершения обработки метод + /// переходит к следующему шагу рабочего процесса. private void StartItem() { ProcessorRecord item = Collection.Items[_currentIndex]; @@ -58,6 +86,16 @@ internal sealed class ProcessorExecutor( worker.RunWorkerAsync(); } + /// + /// Запускает указанный процессор для выполнения операций обработки и сохранения. + /// + /// Если процессор выдает , сообщение об исключении + /// регистрируется как информационный прогресс. Если выдается , + /// оно молча игнорируется. + /// Экземпляр процессора, выполняющий операции обработки и сохранения. + /// Экземпляр , который можно использовать для управления выполнением + /// параллельного цикла. + /// Длинное значение, представляющее текущий индекс итерации или связанные данные для процессора. private void RunProcessor(IProcessor processor, ParallelLoopState state, long arg3) { try @@ -75,6 +113,11 @@ internal sealed class ProcessorExecutor( } } + /// + /// Переходит к обработке следующего элемента в коллекции или завершает процесс, если все элементы были обработаны. + /// + /// Этот метод увеличивает текущий индекс и определяет, начинать ли обработку следующего элемента или завершить + /// процесс. Если текущий индекс превышает количество элементов в коллекции, процесс помечается как завершенный. private void Continue() { Progress.Processors.End(); @@ -90,6 +133,14 @@ internal sealed class ProcessorExecutor( } } + /// + /// Выполняет итерацию по всем процессорам, предоставленным текущей фабрикой. + /// + /// Этот метод выдает каждый процессор последовательно, позволяя вызывающему + /// обрабатывать их по одному за раз. Отслеживание прогресса обновляется для каждого + /// процессора во время итерации. + /// Перечисляемая коллекция экземпляров , + /// представляющая процессоры, доступные в текущей фабрике. private IEnumerable IterateProcessors() { Progress.Local.Reset(CurrentFactory.Count()); diff --git a/Pf2eDataScrapper/Resources/ImportAdaptation.json b/Pf2eDataScrapper/Resources/ImportAdaptation.json index e5bbed8..0a012bc 100644 --- a/Pf2eDataScrapper/Resources/ImportAdaptation.json +++ b/Pf2eDataScrapper/Resources/ImportAdaptation.json @@ -1,8 +1,8 @@ { "Aonprd": { "SlugSuffixes": { - "feat-455": "initial", "spell-843": "initial", + "feat-455": "initial", "feat-2664": "archetype", "feat-3247": "game-hunter", "feat-3477": "undead-slayer", @@ -24,10 +24,8 @@ "action-14": "action-2273", "action-15": "action-2275", "action-558": "action-2277", - "archetype-83": "archetype-129", "archetype-86": "archetype-198", - "feat-455": "feat-6007", "feat-480": "feat-4850", "feat-936": "feat-2269", @@ -46,11 +44,8 @@ "feat-2993": "feat-4352", "feat-4088": "feat-5491", "feat-5997": "feat-7108", - "language-91": "language-180", - "ritual-31": "ritual-191", - "spell-641": "spell-1413", "spell-646": "spell-1394", "spell-841": "spell-1107", @@ -69,7 +64,6 @@ "feat-1167": "feat-5880", "feat-1169": "feat-5055", "feat-1171": "feat-4858", - "spell-551": "spell-2003", "spell-553": "spell-2012", "spell-559": "spell-2417", @@ -110,5 +104,39 @@ "Hellknight Order": "_null", "Eidolon": "_null" } + }, + "Foundry": { + "Ignore": [ + "34E7k2YRcsOU5uyl", + "XyfC1zPgSTP01ZUr", + "2Kz5whXqnRsL4fEl", + "QW2gYIKce3W31xXf", + "Vt6CuD83hPiyoiOZ" + ], + "MatchToAonprd": { + "3ZzoI9MTtJFd1Kjl": "action-759", + "Vr3w3t028ZKDg0mO": "action-767", + "Xg57qG1rOfSSobke": "action-560", + "IL8wtCi23ch62zXG": "action-1425", + "xJEkXFJgEfEida27": "action-464", + "IQtb58p4EaeUzTN1": "action-2807", + "EAP98XaChJEbgKcK": "action-5" + }, + "SlugSuffixes": { + "4AN6IgzsbhjCPYIZ": "zombie", + "08egiRxOvMX97XTc": "werecreature", + "DWku0nZzkqmYjrQ5": "nosferatu", + "eXleBXdAemiEoHA8": "nymph-queen", + "hEWAzlIoJg3NzA7Q": "spring-heeled-jack", + "mEbrInCpag7YThH2": "dragon", + "sECjzfaYaW68vbLV": "vrykolakas-master", + "ZMTnwyXjyfy7Ryi6": "true-vampire", + "eQM5hQ1W3d1uen97": "monster-core", + "3Pr6Jk6AobttQRqN": "age-of-ashes", + "W7SbTykXrNwxDzJc": "npc", + "MAC97gjFcdiqLyhp": "skeleton", + "XTDd73QzhETeXY3g": "age-of-ashes", + "0K3vhX14UEPftqu8": "ghost" + } } } \ No newline at end of file diff --git a/Pf2eModel/Model/Base/Entity.cs b/Pf2eModel/Model/Base/Entity.cs index 53c0bc2..7ee7f1a 100644 --- a/Pf2eModel/Model/Base/Entity.cs +++ b/Pf2eModel/Model/Base/Entity.cs @@ -70,16 +70,23 @@ public class Entity /// Флаг, указывающий, что у объекта существует перевод. /// [Column(Order = 8)] - [Comment("Флаг, указывающий, что у сущности существует перевод")] + [Comment("Есть перевод?")] public bool? IsTranslated { get; set; } = false; /// /// Флаг, указывающий, что объект был проверен и не требует автоматической перезаписи. /// [Column(Order = 9)] - [Comment("Флаг, указывающий, что сущность был проверен и не требует автоматической перезаписи")] + [Comment("Проверено?")] public bool? IsChecked { get; set; } = false; + /// + /// Флаг, указывающий, что сущность является устаревшей. + /// + [Column(Order = 10)] + [Comment("Устаревшая?")] + public bool? IsLegacy { get; set; } = false; + /// /// Коллекция алиасов ///