Продолжение рефакторинга (вынесение WPF в отдельный проект)
This commit is contained in:
@@ -11,7 +11,7 @@ namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Compendium;
|
||||
/// Загрузчик данных компендиума.
|
||||
/// </summary>
|
||||
/// <param name="repository"><inheritdoc cref="FoundryEnRepository"/></param>
|
||||
internal sealed class FoundryEnCompendium(FoundryEnRepository repository) : AbstractCompendium
|
||||
public sealed class FoundryEnCompendium(FoundryEnRepository repository) : AbstractCompendium
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public override FoundryEnRepository Repository { get; } = repository;
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
/// <param name="id">Идентификатор сущности.</param>
|
||||
/// <param name="type">Тип сущности.</param>
|
||||
/// <param name="file">Имя файла, в котором хранится сущность.</param>
|
||||
internal class FoundryEnCompendiumItem(string id, string type, string file) : AbstractCompendiumItem
|
||||
public class FoundryEnCompendiumItem(string id, string type, string file) : AbstractCompendiumItem
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор сущности.
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Pf2e.Scrapper.Importers.Implementations.FoundryEn.Compendium;
|
||||
using Pf2e.Scrapper.Importers.Implementations.FoundryEn.Helpers;
|
||||
using Pf2e.Scrapper.Importers.Repositories;
|
||||
|
||||
namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn;
|
||||
|
||||
/// <summary>
|
||||
/// Импортёр для модуля Pf2e FoundryVTT.
|
||||
/// </summary>
|
||||
internal class FoundryEnImporter : AbstractImporter
|
||||
public class FoundryEnImporter : AbstractImporter
|
||||
{
|
||||
/// <summary>
|
||||
/// Название внешней ссылки.
|
||||
@@ -27,6 +26,10 @@ internal class FoundryEnImporter : AbstractImporter
|
||||
|
||||
#region "Внедрение зависимостей"
|
||||
|
||||
/// <summary>
|
||||
/// Регистрация сервисов импортёра в контейнере зависимостей.
|
||||
/// </summary>
|
||||
/// <param name="services">Коллекция сервисов.</param>
|
||||
public static void RegisterServices(IServiceCollection services)
|
||||
{
|
||||
services.AddSingleton<FoundryEnImporter>();
|
||||
@@ -39,16 +42,3 @@ internal class FoundryEnImporter : AbstractImporter
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Git-репозиторий данных FoundryVTT-модуля "pf2e".
|
||||
/// </summary>
|
||||
/// <param name="importer"><inheritdoc cref="FoundryEnImporter"/></param>
|
||||
internal class FoundryEnRepository(FoundryEnImporter importer) : AbstractGitHubRepository(importer)
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public override string Repository => "foundryvtt/pf2e";
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override string AssetName => "json-assets.zip";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
using Pf2e.Scrapper.Importers.Repositories;
|
||||
|
||||
namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn;
|
||||
|
||||
/// <summary>
|
||||
/// Git-репозиторий данных FoundryVTT-модуля "pf2e".
|
||||
/// </summary>
|
||||
/// <param name="importer"><inheritdoc cref="FoundryEnImporter"/></param>
|
||||
public class FoundryEnRepository(FoundryEnImporter importer) : AbstractGitHubRepository(importer)
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
public override string Repository => "foundryvtt/pf2e";
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override string AssetName => "json-assets.zip";
|
||||
}
|
||||
@@ -10,7 +10,7 @@ namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Helpers;
|
||||
/// <summary>
|
||||
/// Глобальные константы и утилиты для импорта данных в формате Foundry En.
|
||||
/// </summary>
|
||||
internal class FoundryEnGlobals
|
||||
public class FoundryEnGlobals
|
||||
{
|
||||
/// <summary>
|
||||
/// Цель внешних ссылок для Foundry En.
|
||||
|
||||
+5
-4
@@ -2,13 +2,14 @@
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Pf2e.Database;
|
||||
using Pf2e.Database.Model.Common.I18n;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Scrapper.Helpers;
|
||||
using Pf2e.Scrapper.Importers.Implementations.FoundryEn.Helpers;
|
||||
using Pf2e.Scrapper.Processors;
|
||||
using Pf2e.Scrapper.Processors.Attributes;
|
||||
using Pf2e.Database;
|
||||
using Pf2e.Database.Model.Common.I18n;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Scrapper.Processors.Attributes.Enum;
|
||||
|
||||
namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Entities;
|
||||
|
||||
@@ -21,7 +22,7 @@ namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Entities;
|
||||
Active = false
|
||||
)]
|
||||
[ProcessorDependencies(["foundry-en:compendium", "foundry-en:external"])]
|
||||
internal partial class ActionProcessor(
|
||||
public partial class ActionProcessor(
|
||||
DatabaseHelper databaseHelper,
|
||||
Pf2eDbContext context,
|
||||
FoundryEnGlobals globals,
|
||||
|
||||
+5
-4
@@ -1,12 +1,13 @@
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Pf2e.Database;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Database.Model.Structure;
|
||||
using Pf2e.Scrapper.Helpers;
|
||||
using Pf2e.Scrapper.Importers.Implementations.FoundryEn.Helpers;
|
||||
using Pf2e.Scrapper.Processors;
|
||||
using Pf2e.Scrapper.Processors.Attributes;
|
||||
using Pf2e.Scrapper.Processors.Attributes.Enum;
|
||||
using Pf2e.Scrapper.Processors.Collection;
|
||||
using Pf2e.Database;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Database.Model.Structure;
|
||||
|
||||
namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Entities;
|
||||
|
||||
@@ -19,7 +20,7 @@ namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Entities;
|
||||
Active = false
|
||||
)]
|
||||
[ProcessorDependencies(["foundry-en:compendium"])]
|
||||
internal class ConditionProcessor(
|
||||
public class ConditionProcessor(
|
||||
DatabaseHelper databaseHelper,
|
||||
Pf2eDbContext context,
|
||||
FoundryEnGlobals globals,
|
||||
|
||||
+6
-5
@@ -1,14 +1,15 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Pf2e.Scrapper.Helpers;
|
||||
using Pf2e.Scrapper.Importers.Implementations.FoundryEn.Helpers;
|
||||
using Pf2e.Scrapper.Processors;
|
||||
using Pf2e.Scrapper.Processors.Attributes;
|
||||
using Pf2e.Database;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Database.Model.Structure;
|
||||
using Pf2e.Database.Model.Structure.DeityRelation;
|
||||
using Pf2e.Scrapper.Helpers;
|
||||
using Pf2e.Scrapper.Importers.Implementations.FoundryEn.Helpers;
|
||||
using Pf2e.Scrapper.Processors;
|
||||
using Pf2e.Scrapper.Processors.Attributes;
|
||||
using Pf2e.Scrapper.Processors.Attributes.Enum;
|
||||
|
||||
namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Entities;
|
||||
|
||||
@@ -21,7 +22,7 @@ namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Entities;
|
||||
Active = true
|
||||
)]
|
||||
[ProcessorDependencies(["foundry-en:compendium", "foundry-en:external"])]
|
||||
internal class DeityProcessor(
|
||||
public class DeityProcessor(
|
||||
DatabaseHelper databaseHelper,
|
||||
Pf2eDbContext context,
|
||||
FoundryEnGlobals globals,
|
||||
|
||||
+7
-7
@@ -3,17 +3,17 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Pf2e.Scrapper.Helpers;
|
||||
using Pf2e.Scrapper.Importers.Implementations.FoundryEn.Helpers;
|
||||
using Pf2e.Scrapper.Processors;
|
||||
using Pf2e.Scrapper.Processors.Attributes;
|
||||
using Pf2e.Scrapper.Processors.Definitions;
|
||||
using Pf2e.Database;
|
||||
using Pf2e.Database.Model;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Base.Targets;
|
||||
using Pf2e.Database.Model.Common.I18n;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Scrapper.Helpers;
|
||||
using Pf2e.Scrapper.Importers.Implementations.FoundryEn.Helpers;
|
||||
using Pf2e.Scrapper.Processors;
|
||||
using Pf2e.Scrapper.Processors.Attributes;
|
||||
using Pf2e.Scrapper.Processors.Definitions;
|
||||
|
||||
namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors;
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors;
|
||||
/// <param name="context">[DI] <inheritdoc cref="Pf2eDbContext"/></param>
|
||||
/// <param name="globals">[DI] <inheritdoc cref="FoundryEnGlobals"/></param>
|
||||
/// <param name="input">Объект обработки вводимого JSON.</param>
|
||||
internal abstract class FoundryEnAbstractProcessor<TEntity>(
|
||||
public abstract class FoundryEnAbstractProcessor<TEntity>(
|
||||
DatabaseHelper databaseHelper,
|
||||
Pf2eDbContext context,
|
||||
FoundryEnGlobals globals,
|
||||
@@ -52,7 +52,7 @@ internal abstract class FoundryEnAbstractProcessor<TEntity>(
|
||||
/// <summary>
|
||||
/// Представление сущности, которое будет использоваться для обработки данных.
|
||||
/// </summary>
|
||||
public EntityView View { get; private set; } = null!;
|
||||
public FullEntity View { get; private set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Основная сущность, которая будет использоваться для обработки данных.
|
||||
|
||||
+2
-1
@@ -5,6 +5,7 @@ using Newtonsoft.Json.Linq;
|
||||
using Pf2e.Scrapper.Helpers;
|
||||
using Pf2e.Scrapper.Importers.Implementations.FoundryEn.Compendium;
|
||||
using Pf2e.Scrapper.Processors.Attributes;
|
||||
using Pf2e.Scrapper.Processors.Attributes.Enum;
|
||||
using Pf2e.Scrapper.Processors.Definitions;
|
||||
|
||||
namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Preparation;
|
||||
@@ -16,7 +17,7 @@ namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Preparati
|
||||
Active = false
|
||||
)]
|
||||
[ProcessorDependencies(["foundry-en:repository"])]
|
||||
internal class CompendiumProcessor(
|
||||
public class CompendiumProcessor(
|
||||
FoundryEnRepository repository,
|
||||
FoundryEnCompendium compendium,
|
||||
ProcessProgress progress
|
||||
|
||||
+7
-6
@@ -1,9 +1,10 @@
|
||||
using Pf2e.Scrapper.Importers.Implementations.FoundryEn.Helpers;
|
||||
using Pf2e.Scrapper.Processors.Attributes;
|
||||
using Pf2e.Scrapper.Processors.Definitions;
|
||||
using Pf2e.Scrapper.Importers.Implementations.Aonprd.Helpers;
|
||||
using Pf2e.Database;
|
||||
using Pf2e.Database;
|
||||
using Pf2e.Database.Model.Base.Targets;
|
||||
using Pf2e.Scrapper.Importers.Implementations.Aonprd.Helpers;
|
||||
using Pf2e.Scrapper.Importers.Implementations.FoundryEn.Helpers;
|
||||
using Pf2e.Scrapper.Processors.Attributes;
|
||||
using Pf2e.Scrapper.Processors.Attributes.Enum;
|
||||
using Pf2e.Scrapper.Processors.Definitions;
|
||||
|
||||
namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Preparation;
|
||||
|
||||
@@ -13,7 +14,7 @@ namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Preparati
|
||||
Group = ProcessorGroupEnum.FoundryEnPreparation
|
||||
)]
|
||||
[ProcessorDependencies(["foundry-en:repository"])]
|
||||
internal class ExternalProcessor(FoundryEnGlobals enGlobals) : AbstractSimpleProcessor
|
||||
public class ExternalProcessor(FoundryEnGlobals enGlobals) : AbstractSimpleProcessor
|
||||
{
|
||||
public Pf2eDbContext Context { get; } = new();
|
||||
public FoundryEnGlobals EnGlobals { get; } = enGlobals;
|
||||
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
using Pf2e.Scrapper.Helpers;
|
||||
using Pf2e.Scrapper.Processors.Attributes;
|
||||
using Pf2e.Scrapper.Processors.Attributes.Enum;
|
||||
using Pf2e.Scrapper.Processors.Definitions;
|
||||
|
||||
namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Preparation;
|
||||
@@ -10,7 +11,7 @@ namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Preparati
|
||||
Group = ProcessorGroupEnum.FoundryEnPreparation,
|
||||
Active = false
|
||||
)]
|
||||
internal class RepositoryUpdateProcessor(FoundryEnRepository repository, ProcessProgress progress)
|
||||
public class RepositoryUpdateProcessor(FoundryEnRepository repository, ProcessProgress progress)
|
||||
: IProcessor
|
||||
{
|
||||
public FoundryEnRepository Repository { get; } = repository;
|
||||
|
||||
+2
-1
@@ -5,6 +5,7 @@ using System.Linq;
|
||||
using Pf2e.Scrapper.Helpers;
|
||||
using Pf2e.Scrapper.Importers.Implementations.FoundryEn.Compendium;
|
||||
using Pf2e.Scrapper.Processors.Attributes;
|
||||
using Pf2e.Scrapper.Processors.Attributes.Enum;
|
||||
using Pf2e.Scrapper.SchemaBuilder;
|
||||
|
||||
namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Preparation;
|
||||
@@ -16,7 +17,7 @@ namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Preparati
|
||||
Active = false
|
||||
)]
|
||||
[ProcessorDependencies(["foundry-en:compendium"])]
|
||||
internal class SchemaBuildProcessor(
|
||||
public class SchemaBuildProcessor(
|
||||
FoundryEnImporter importer,
|
||||
FoundryEnRepository repository,
|
||||
FoundryEnCompendium compendium,
|
||||
|
||||
+17
-3
@@ -5,16 +5,30 @@ using Pf2e.Scrapper.SchemaBuilder.Types;
|
||||
|
||||
namespace Pf2e.Scrapper.Importers.Implementations.FoundryEn.Processors.Preparation;
|
||||
|
||||
internal class SchemaTypeResolver : TypeResolver
|
||||
/// <summary>
|
||||
/// Класс для определения типов полей в схеме данных Foundry PF2e.
|
||||
/// </summary>
|
||||
public class SchemaTypeResolver : TypeResolver
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс для представления типа поля, содержащего правила Foundry.
|
||||
/// </summary>
|
||||
/// <param name="parent">Родительский элемент схемы данных.</param>
|
||||
public class FoundryRulesSchemaType(SchemaNode parent) : IgnoreSchemaType(parent)
|
||||
{
|
||||
/// <summary>
|
||||
/// Отображаемое имя типа.
|
||||
/// </summary>
|
||||
/// <returns>Строковое представоение типа элемента.</returns>
|
||||
public override string GetTypeName()
|
||||
{
|
||||
return "ignored (Foundry rules object)";
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Пути к полям, которые должны быть представлены как словари.
|
||||
/// </summary>
|
||||
protected readonly List<string> DictionaryPaths =
|
||||
[
|
||||
"character.items.[].system.items",
|
||||
@@ -41,11 +55,11 @@ internal class SchemaTypeResolver : TypeResolver
|
||||
];
|
||||
|
||||
/// <summary>
|
||||
/// Частное определение типа поля.
|
||||
/// Частное определение типа поля.
|
||||
/// </summary>
|
||||
/// <param name="node">Поле схемы данных, для которого создаётся тип.</param>
|
||||
/// <param name="value">Добавляемое значение.</param>
|
||||
/// <returns>Новый тип для схемы данных. `null`, что бы использовать значение по умолчанию</returns>
|
||||
/// <returns>Новый тип для схемы данных. `null`, что бы использовать значение по умолчанию.</returns>
|
||||
protected override AbstractSchemaType? CustomResolve(SchemaNode node, JToken? value)
|
||||
{
|
||||
return CheckPath(node, DictionaryPaths) ? new DictionarySchemaType(node)
|
||||
|
||||
Reference in New Issue
Block a user