// Copyright (C) Stichting Deltares 2025. All rights reserved.
//
// This file is part of the application DAM - UI.
//
// DAM - UI is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
// All names, logos, and references to "Deltares" are registered trademarks of
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
using System.Collections.Generic;
using Deltares.Dam.Data.DataPlugins.Configuration;
using Deltares.Geometry;
using Deltares.Standard;
using Deltares.Standard.Logging;
using ProgressDelegate = Deltares.DamEngine.Data.Standard.Calculation.ProgressDelegate;
namespace Deltares.Dam.Data.DataPlugins;
public struct Info
{
public string Name;
public string Description;
public DataSourceSystemType Source;
}
public struct NameValueParameter
{
public string ParameterName;
public string ParameterValue;
public DataSourceSystemType Source;
}
public struct DpCharacteristicPoint
{
public string Id;
public double X;
public double Y;
public double Z;
}
public struct DpLayer
{
public double TopLevel;
public string SoilName;
public bool IsAquifer;
}
public struct DpSoilProfile
{
public List Layers;
}
interface IDataPlugin
{
IEnumerable DataSources { get; }
IEnumerable MapGeometryIdList { get; }
Info DikeInfo { get; }
Dike Dike { get; }
string DataFolder { get; }
string DamProjectFolder { get; set; }
List ImportLogMessages { get; }
DamProjectType DamProjectType { set; }
void SetDataSources(string dataFolder, IEnumerable dataSources);
void ImportDataForDike(ProgressDelegate progress);
Info GetDikeRingInfo();
IEnumerable GetDikeParameters();
IEnumerable GetLocationIdList();
Info GetLocationInfo( string locationId);
IEnumerable GetLocationDetails(string locationId);
IEnumerable GetSurfaceLineIdList();
IList GetSurfaceLinePoints(string surfaceLineId);
IEnumerable GetSurfaceLineCharacteristicPoints(string surfaceLineId);
IEnumerable GetSegmentIdList();
IEnumerable GetProfile1DIdListForSegment(string segmentId, FailureMechanismSystemType segmentFailureMechanismType);
IEnumerable GetProfile2DIdListForSegment(string segmentId, FailureMechanismSystemType segmentFailureMechanismType);
IEnumerable GetSegmentProfile1DDetails(string segmentId, string profileId, FailureMechanismSystemType failureMechanismSystemType);
IEnumerable GetSegmentProfile2DDetails(string segmentId, string profileId, FailureMechanismSystemType failureMechanismSystemType);
IEnumerable GetSoilProfile1DIdList();
DpSoilProfile GetSoilProfile1DDetails(string soilProfile1DId);
IEnumerable GetSoilProfile2DIdList();
string GetSoilProfile2DDetails(string soilProfile2DId);
IEnumerable GetSoilIdList();
IEnumerable GetSoilDetails(string soilId);
string GetMapGeometry(string mapGeometryId);
IEnumerable GetMapGeometryAttributes(string mapGeometryId);
IEnumerable GetScenarioList(string name);
IEnumerable GetScenarioDetails(string name, string scenarioId);
void DisposeImportedItem();
}