using System;
using System.Collections.Generic;
using System.Linq;
using Deltares.Dam.Data;
using Deltares.Dam.Data.Sensors;
using Deltares.Standard;
namespace Deltares.Dam.Application.Live
{
// TODO: this class is just passing its input to another class, see if this class can be removed from the design
public class SensorModelRunner : ModelRunner
{
///
/// Performs all the steps to transform the input time series collection to
/// the output time series collection with the calculated values
///
public override void Run()
{
var calcParams = CalculationParameters ?? new CalculationParameters();
calcParams.StabilityExePath = StabilityExePath;
calcParams.WorkingPath = WorkingPath;
calcParams.StabilityWorkingPath = StabilityWorkingPath;
ReadUserSettingsSlipCircleDefinition(calcParams.MStabParameters.SlipCircleDefinition);
List locations = ProjectData.Locations;
if (!string.IsNullOrWhiteSpace(Filter))
{
var parsedLocations = Filter.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries);
locations = ProjectData.Locations.Where(l => parsedLocations.All(a => l.Name == a.Trim())).ToList();
if (locations.Count == 0)
{
Logger.LogWarning("No matching locations found with the specified filter");
}
}
var processor = new SensorTimeSeriesProcessor
{
CalculationParameters = calcParams,
InputTimeSeriesCollection = InputTimeSeriesCollection,
OutputTimeSeriesCollection = OutputTimeSeriesCollection,
Locations = locations
};
processor.Initialize();
processor.Process();
// sync back the processed data
OutputTimeSeriesCollection = processor.OutputTimeSeriesCollection;
}
public void ReadUserSettingsSlipCircleDefinition(SlipCircleDefinition slipCircleDefinition)
{
if (slipCircleDefinition == null)
{
slipCircleDefinition = new SlipCircleDefinition();
}
slipCircleDefinition.GridSizeDetermination = Properties.Settings.Default.SlipCircleGridSizeDetermination;
slipCircleDefinition.UpliftVanTangentLinesDefinition = Properties.Settings.Default.SlipCircleUpliftVanTangentLinesDefinition;
slipCircleDefinition.UpliftVanTangentLinesDistance = Properties.Settings.Default.SlipCircleUpliftVanTangentLinesDistance;
slipCircleDefinition.UpliftVanLeftGridVerticalPointCount = Properties.Settings.Default.SlipCircleUpliftVanLeftGridVerticalPointCount;
slipCircleDefinition.UpliftVanLeftGridVerticalPointDistance = Properties.Settings.Default.SlipCircleUpliftVanLeftGridVerticalPointDistance;
slipCircleDefinition.UpliftVanLeftGridHorizontalPointCount = Properties.Settings.Default.SlipCircleUpliftVanLeftGridHorizontalPointCount;
slipCircleDefinition.UpliftVanLeftGridHorizontalPointDistance = Properties.Settings.Default.SlipCircleUpliftVanLeftGridHorizontalPointDistance;
slipCircleDefinition.UpliftVanRightGridVerticalPointCount = Properties.Settings.Default.SlipCircleUpliftVanRightGridVerticalPointCount;
slipCircleDefinition.UpliftVanRightGridVerticalPointDistance = Properties.Settings.Default.SlipCircleUpliftVanRightGridVerticalPointDistance;
slipCircleDefinition.UpliftVanRightGridHorizontalPointCount = Properties.Settings.Default.SlipCircleUpliftVanRightGridHorizontalPointCount;
slipCircleDefinition.UpliftVanRightGridHorizontalPointDistance = Properties.Settings.Default.SlipCircleUpliftVanRightGridHorizontalPointDistance;
slipCircleDefinition.BishopTangentLinesDefinition = Properties.Settings.Default.SlipCircleBishopTangentLinesDefinition;
slipCircleDefinition.BishopTangentLinesDistance = Properties.Settings.Default.SlipCircleBishopTangentLinesDistance;
slipCircleDefinition.BishopGridVerticalPointCount = Properties.Settings.Default.SlipCircleBishopGridVerticalPointCount;
slipCircleDefinition.BishopGridVerticalPointDistance = Properties.Settings.Default.SlipCircleBishopGridVerticalPointDistance;
slipCircleDefinition.BishopGridHorizontalPointCount = Properties.Settings.Default.SlipCircleBishopGridHorizontalPointCount;
slipCircleDefinition.BishopGridHorizontalPointDistance = Properties.Settings.Default.SlipCircleBishopGridHorizontalPointDistance;
}
}
}