// Copyright (C) Stichting Deltares 2018. All rights reserved.
//
// This file is part of the application DAM - Live.
//
// 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;
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
{
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");
}
}
// TODO: Here the connection should be made with the Dam Engine
// It will replace the following code:
// var processor = new SensorTimeSeriesProcessor
// {
// CalculationParameters = calcParams,
// InputTimeSeriesCollection = InputTimeSeriesCollection,
// OutputTimeSeriesCollection = OutputTimeSeriesCollection,
// Locations = locations
// };
//
// processor.Initialize();
// processor.Process();
//
// // sync back the processed data
// OutputTimeSeriesCollection = processor.OutputTimeSeriesCollection;
OutputTimeSeriesCollection = new TimeSerieCollection();
}
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;
}
}
}