89 lines
2.9 KiB
C#
89 lines
2.9 KiB
C#
using Newtonsoft.Json.Linq;
|
|
|
|
namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.Compendium
|
|
{
|
|
/// <summary>
|
|
/// Папка компендиума.
|
|
/// </summary>
|
|
internal class CompendiumFolder
|
|
{
|
|
/// <summary>
|
|
/// Идентификатор папки.
|
|
/// </summary>
|
|
public readonly string Id;
|
|
|
|
/// <summary>
|
|
/// Название папки.
|
|
/// </summary>
|
|
public readonly string Name;
|
|
|
|
/// <summary>
|
|
/// Путь к папке.
|
|
/// </summary>
|
|
public readonly string? Path;
|
|
|
|
/// <summary>
|
|
/// Указатель, что папка содержится в других папках.
|
|
/// </summary>
|
|
public readonly bool IsContained;
|
|
|
|
/// <summary>
|
|
/// Родительская папка.
|
|
/// </summary>
|
|
public CompendiumFolder? Parent;
|
|
|
|
/// <summary>
|
|
/// Тип документов в папке.
|
|
/// </summary>
|
|
public readonly CompendiumDocumentType Type;
|
|
|
|
/// <summary>
|
|
/// Конструктор папки компендиума из JSON-объекта.
|
|
/// </summary>
|
|
/// <param name="json"></param>
|
|
public CompendiumFolder(JObject json)
|
|
{
|
|
if (json.TryGetValue("_id", out var id))
|
|
{
|
|
// Вложенная папка через _folders.json
|
|
Id = id!.ToString();
|
|
Name = json["name"]!.ToString();
|
|
Path = null;
|
|
IsContained = true;
|
|
}
|
|
else
|
|
{
|
|
// Корневой пак в system.json
|
|
Id = json["name"]!.ToString();
|
|
Name = json["label"]!.ToString();
|
|
Path = json["path"]!.ToString();
|
|
IsContained = false;
|
|
}
|
|
|
|
Type = (CompendiumDocumentType)Enum.Parse(typeof(CompendiumDocumentType), json["type"]!.ToString());
|
|
}
|
|
|
|
/// <summary>
|
|
/// Конструктор папки компендиума.
|
|
/// </summary>
|
|
/// <param name="id">Идентификатор папки.</param>
|
|
/// <param name="name">Название папки.</param>
|
|
public CompendiumFolder(string id, string name)
|
|
{
|
|
Id = id;
|
|
Name = name;
|
|
Path = null;
|
|
IsContained = false;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Строковое представление данных о папки компендиума.
|
|
/// </summary>
|
|
/// <returns>Строковое представление данных о папки компендиума.</returns>
|
|
public override string ToString()
|
|
{
|
|
return $"CompendiumFolder([Id={Id}][Type={Type}][Name={Name}][Path={Path}][Parent={Parent?.Name ?? "null"}])";
|
|
}
|
|
}
|
|
}
|