Глобальное обновление #1
@@ -18,25 +18,19 @@ internal abstract class AbstractCompendium
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string Dir => Repository.RepositoryDirPath;
|
public string Dir => Repository.RepositoryDirPath;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Возвращает количество элементов в компендиуме.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Количество элементов.</returns>
|
|
||||||
public abstract int Count();
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Возвращает количество элементов для указанного типа данных.
|
/// Возвращает количество элементов для указанного типа данных.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="type">Тип данных.</param>
|
/// <param name="type">Типы данных.</param>
|
||||||
/// <returns>Количество элементов.</returns>
|
/// <returns>Количество элементов.</returns>
|
||||||
public abstract int Count(string type);
|
public abstract int Count(params ICollection<string> type);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Получение итератора сущностей. Если указан тип <paramref name="type"/> - то только указанного типа.
|
/// Получение итератора сущностей. Если указан тип <paramref name="type"/> - то только указанного типа.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="type">Тип сущностей, которые нужно получить.</param>
|
/// <param name="type">Типы сущностей, которые нужно получить.</param>
|
||||||
/// <returns>Итератор сущностей.</returns>
|
/// <returns>Итератор сущностей.</returns>
|
||||||
public abstract IEnumerable<Tuple<AbstractCompendiumItem, JObject>> Iterate(
|
public abstract IEnumerable<Tuple<AbstractCompendiumItem, JObject>> Iterate(
|
||||||
string? type = null
|
params ICollection<string> type
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
namespace Pf2eDataScrapper.Importers;
|
using System.IO;
|
||||||
|
|
||||||
|
namespace Pf2eDataScrapper.Importers;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Абстрактный класс импортёра.
|
/// Абстрактный класс импортёра.
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
using Newtonsoft.Json.Linq;
|
using System.IO;
|
||||||
|
using System.Net.Http;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
using Pf2eDataScrapper.Helpers;
|
using Pf2eDataScrapper.Helpers;
|
||||||
using Pf2eDataScrapper.Importers.Repositories;
|
using Pf2eDataScrapper.Importers.Repositories;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
|
using System.IO;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
|
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
|
||||||
@@ -8,6 +9,7 @@ namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
internal sealed class AonprdCompendium(AonprdRepository repository) : AbstractCompendium
|
internal sealed class AonprdCompendium(AonprdRepository repository) : AbstractCompendium
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
public override AonprdRepository Repository { get; } = repository;
|
public override AonprdRepository Repository { get; } = repository;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -15,29 +17,22 @@ internal sealed class AonprdCompendium(AonprdRepository repository) : AbstractCo
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public ConcurrentBag<AonprdCompendiumItem> Items { get; } = [];
|
public ConcurrentBag<AonprdCompendiumItem> Items { get; } = [];
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc/>
|
||||||
/// Возвращает количество элементов в компендиуме.
|
public override int Count(params ICollection<string> types) =>
|
||||||
/// </summary>
|
types.Count == 0 ? Items.Count : Items.Count(i => types.Contains(i.Type));
|
||||||
/// <returns>Количество элементов.</returns>
|
|
||||||
public override int Count() => Items.Count;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc/>
|
||||||
/// Возвращает количество элементов для указанного типа данных.
|
public override IEnumerable<Tuple<AbstractCompendiumItem, JObject>> Iterate(
|
||||||
/// </summary>
|
params ICollection<string> types
|
||||||
/// <param name="type">Тип данных.</param>
|
)
|
||||||
/// <returns>Количество элементов.</returns>
|
|
||||||
public override int Count(string type) => Items.Count(i => i.Type == type);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Получение итератора сущностей. Если указан тип <paramref name="type"/> - то только указанного типа.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="type">Тип сущностей, которые нужно получить.</param>
|
|
||||||
/// <returns>Итератор сущностей.</returns>
|
|
||||||
public override IEnumerable<Tuple<AbstractCompendiumItem, JObject>> Iterate(string? type = null)
|
|
||||||
{
|
{
|
||||||
IEnumerable<string> files = type is null
|
IEnumerable<string> files =
|
||||||
? Items.Select(t => t.File).Distinct()
|
types.Count == 0
|
||||||
: Items.Where(t => t.Type == type).Select(t => t.File).Distinct();
|
? Items.Select(item => item.File).Distinct()
|
||||||
|
: Items
|
||||||
|
.Where(item => types.Contains(item.Type))
|
||||||
|
.Select(item => item.File)
|
||||||
|
.Distinct();
|
||||||
|
|
||||||
foreach (string file in files)
|
foreach (string file in files)
|
||||||
{
|
{
|
||||||
@@ -57,16 +52,12 @@ internal sealed class AonprdCompendium(AonprdRepository repository) : AbstractCo
|
|||||||
if (
|
if (
|
||||||
id is null
|
id is null
|
||||||
|| !fileReferences.TryGetValue(id, out AonprdCompendiumItem? reference)
|
|| !fileReferences.TryGetValue(id, out AonprdCompendiumItem? reference)
|
||||||
|
|| !types.Contains(reference.Type)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type is not null && reference.Type != type)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
yield return new(reference, (JObject)item);
|
yield return new(reference, (JObject)item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Pf2eModel.Model.Base.Source;
|
using System.IO;
|
||||||
|
using Pf2eModel.Model.Base.Source;
|
||||||
|
|
||||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers;
|
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -46,7 +46,7 @@ internal class LegacyRemasterProcessors(ProcessorInput input) : AbstractInputPro
|
|||||||
|
|
||||||
return Context
|
return Context
|
||||||
.EntityExternals.AsNoTracking()
|
.EntityExternals.AsNoTracking()
|
||||||
.Where(x => aonprdIds.Contains(x.ExternalId))
|
.Where(x => aonprdIds.Contains(x.ExternalId!))
|
||||||
.Select(x => x.EntityId)
|
.Select(x => x.EntityId)
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -1,4 +1,5 @@
|
|||||||
using Newtonsoft.Json.Linq;
|
using System.IO;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
using Pf2eDataScrapper.App;
|
using Pf2eDataScrapper.App;
|
||||||
using Pf2eDataScrapper.Helpers;
|
using Pf2eDataScrapper.Helpers;
|
||||||
using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
|
using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
|
||||||
|
|||||||
+2
-1
@@ -1,4 +1,5 @@
|
|||||||
using Pf2eDataScrapper.App;
|
using System.IO;
|
||||||
|
using Pf2eDataScrapper.App;
|
||||||
using Pf2eDataScrapper.Helpers;
|
using Pf2eDataScrapper.Helpers;
|
||||||
using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
|
using Pf2eDataScrapper.Importers.Implementations.Aonprd.Compendium;
|
||||||
using Pf2eDataScrapper.SchemaBuilder;
|
using Pf2eDataScrapper.SchemaBuilder;
|
||||||
|
|||||||
+51
@@ -0,0 +1,51 @@
|
|||||||
|
using System.Collections.Concurrent;
|
||||||
|
using System.IO;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Загрузчик данных компендиума.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="repository">Репозиторий данных.</param>
|
||||||
|
internal sealed class FoundryEnCompendium(
|
||||||
|
FoundryEnRepository repository,
|
||||||
|
CompendiumFolderCollection folders
|
||||||
|
) : AbstractCompendium
|
||||||
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override FoundryEnRepository Repository { get; } = repository;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Набор папок компендиума
|
||||||
|
/// </summary>
|
||||||
|
public CompendiumFolderCollection Folders { get; } = folders;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Коллекция всех записей компендиума.
|
||||||
|
/// </summary>
|
||||||
|
public ConcurrentBag<FoundryEnCompendiumItem> Items { get; } = [];
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override int Count(params ICollection<string> types) =>
|
||||||
|
types.Count == 0 ? Items.Count : Items.Count(i => types.Contains(i.Type));
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override IEnumerable<Tuple<AbstractCompendiumItem, JObject>> Iterate(
|
||||||
|
params ICollection<string> types
|
||||||
|
)
|
||||||
|
{
|
||||||
|
foreach (
|
||||||
|
FoundryEnCompendiumItem item in types.Count == 0
|
||||||
|
? Items
|
||||||
|
: Items.Where(i => types.Contains(i.Type))
|
||||||
|
)
|
||||||
|
{
|
||||||
|
using StreamReader fileReader = new(
|
||||||
|
Path.Combine(Repository.RepositoryDirPath, item.File)
|
||||||
|
);
|
||||||
|
|
||||||
|
yield return new(item, JObject.Parse(fileReader.ReadToEnd()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
using System.Collections.Concurrent;
|
|
||||||
using Newtonsoft.Json.Linq;
|
|
||||||
using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium;
|
|
||||||
|
|
||||||
namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Загрузчик данных компендиума.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="repository">Репозиторий данных.</param>
|
|
||||||
internal sealed class FoundryEnCompendium(
|
|
||||||
FoundryEnRepository repository,
|
|
||||||
CompendiumFolderCollection folders
|
|
||||||
) : AbstractCompendium
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Репозиторий данных.
|
|
||||||
/// </summary>
|
|
||||||
public override FoundryEnRepository Repository { get; } = repository;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Набор папок компендиума
|
|
||||||
/// </summary>
|
|
||||||
public CompendiumFolderCollection Folders { get; } = folders;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Коллекция всех записей компендиума.
|
|
||||||
/// </summary>
|
|
||||||
public ConcurrentBag<FoundryEnCompendiumItem> Items { get; } = [];
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Возвращает количество элементов в компендиуме.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Количество элементов.</returns>
|
|
||||||
public override int Count() => Items.Count;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Возвращает количество элементов для указанного типа данных.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="type">Тип данных.</param>
|
|
||||||
/// <returns>Количество элементов.</returns>
|
|
||||||
public override int Count(string type) => Items.Count(i => i.Type == type);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Получение итератора сущностей. Если указан тип <paramref name="type"/> - то только указанного типа.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="type">Тип сущностей, которые нужно получить.</param>
|
|
||||||
/// <returns>Итератор сущностей.</returns>
|
|
||||||
public override IEnumerable<Tuple<AbstractCompendiumItem, JObject>> Iterate(string? type = null)
|
|
||||||
{
|
|
||||||
IEnumerable<FoundryEnCompendiumItem> items = type is null
|
|
||||||
? Items
|
|
||||||
: Items.Where(i => i.Type == type);
|
|
||||||
|
|
||||||
foreach (FoundryEnCompendiumItem item in items)
|
|
||||||
{
|
|
||||||
using StreamReader fileReader = new(
|
|
||||||
Path.Combine(Repository.RepositoryDirPath, item.File)
|
|
||||||
);
|
|
||||||
|
|
||||||
yield return new(item, JObject.Parse(fileReader.ReadToEnd()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+2
-1
@@ -1,4 +1,5 @@
|
|||||||
using Newtonsoft.Json.Linq;
|
using System.IO;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
using Pf2eDataScrapper.App;
|
using Pf2eDataScrapper.App;
|
||||||
using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium;
|
using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium;
|
||||||
using Pf2eDataScrapper.Processors;
|
using Pf2eDataScrapper.Processors;
|
||||||
|
|||||||
+2
-1
@@ -1,4 +1,5 @@
|
|||||||
using Newtonsoft.Json.Linq;
|
using System.IO;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
using Pf2eDataScrapper.App;
|
using Pf2eDataScrapper.App;
|
||||||
using Pf2eDataScrapper.Helpers;
|
using Pf2eDataScrapper.Helpers;
|
||||||
using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium;
|
using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium;
|
||||||
|
|||||||
+3
-1
@@ -1,5 +1,7 @@
|
|||||||
using Pf2eDataScrapper.App;
|
using System.IO;
|
||||||
|
using Pf2eDataScrapper.App;
|
||||||
using Pf2eDataScrapper.Helpers;
|
using Pf2eDataScrapper.Helpers;
|
||||||
|
using Pf2eDataScrapper.Importers.Implementations.FoundryEn.Compendium;
|
||||||
using Pf2eDataScrapper.SchemaBuilder;
|
using Pf2eDataScrapper.SchemaBuilder;
|
||||||
|
|
||||||
namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Preparation;
|
namespace Pf2eDataScrapper.Importers.Implementations.FoundryEn.Processors.Preparation;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Pf2eDataScrapper.Helpers;
|
using System.IO;
|
||||||
|
using Pf2eDataScrapper.Helpers;
|
||||||
|
|
||||||
namespace Pf2eDataScrapper.Importers.Repositories;
|
namespace Pf2eDataScrapper.Importers.Repositories;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
using Pf2eDataScrapper.Helpers;
|
using Pf2eDataScrapper.Helpers;
|
||||||
|
|
||||||
namespace Pf2eDataScrapper.Importers.Repositories;
|
namespace Pf2eDataScrapper.Importers.Repositories;
|
||||||
|
|||||||
Reference in New Issue
Block a user