// Copyright (C) Stichting Deltares 2018. All rights reserved.
//
// This file is part of the application DAM - Clients Library.
//
// 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 Deltares.Standard.Extensions;
namespace Deltares.Dam.Data
{
public class TimeSerieEntry
{
public TimeSerieEntry()
{
}
public TimeSerieEntry(DateTime dateTime, double value)
{
this.DateTime = dateTime;
this.Value = value;
}
public virtual DateTime DateTime { get; set; }
public virtual double Value { get; set; }
public virtual string BasisFileName { get; set; }
public string RelativeCalculationPathName { get; set; }
public Stochast StochastValue { get; set; }
public int Flag { get; set; }
public TimeSerieEntry GetShallowCopy()
{
return new TimeSerieEntry
{
DateTime = DateTime,
Flag = Flag,
};
}
public TimeSerieEntry Map(Func function)
{
return Map(0, function);
}
public TimeSerieEntry Map(double missingValue, Func function)
{
var entry = this.GetShallowCopy();
try
{
entry.Value = !this.Value.AlmostEquals(missingValue) ? function(this) : missingValue;
}
catch
{
entry.Value = missingValue;
}
return entry;
}
public void Assign(TimeSerieEntry entry)
{
this.DateTime = entry.DateTime;
this.Value = entry.Value;
this.BasisFileName = entry.BasisFileName;
this.StochastValue = entry.StochastValue;
this.Flag = entry.Flag;
}
}
}