git_bsmd/nsw/Source/bsmd.database/ISublistContainer.cs

54 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace bsmd.database
{
/// <summary>
/// Dieses Interface wird von DatabaseEntities implementiert, die 1:n Sublisten haben, m
/// mit anderen Worten, alles, was n-fach vorkommen kann
/// </summary>
public interface ISublistContainer
{
ISublistElement GetSublistElementWithIdentifier(string identifier);
/// <summary>
/// Liefert die maximale Anzahl an Excelzeilen, die für das n-fache Element eingelesen werden
/// sollen. TODO: Das könnte ggf auch an Bord geändert werden?, wird aber i.d.R. über die Names-Konvention
/// definiert. d.h. wenn keine passenden Name-Ranges angegeben sind wird das ohnehin nicht eingelesen werden
/// können
/// </summary>
int NumberOfExcelRows { get; }
/// <summary>
/// Ruft die Speicherfunktion für alle untergeordneten Elemente (rekursiv) auf
/// </summary>
void SaveElements();
/// <summary>
/// Löscht die untergeordneten Objekte
/// </summary>
void DeleteElements();
}
/// <summary>
/// Dieses Interface kennzeichnet die Merkmale eines Sublisten-Elements
/// </summary>
public interface ISublistElement
{
/// <summary>
/// Mit diesem Schlüssel kann bei einem Report die richtige Beschriftung aus der SQLite Tabelle geholt werden
/// </summary>
string SublistCollectionKey { get; }
/// <summary>
/// Der "eindeutige" Schlüssel des Listenelements. Hier steht immer eine als String serialiserte Zahl drin
/// </summary>
string Identifier { get; set; }
}
}