// Copyright (C) Stichting Deltares 2023. 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.DamEngine.Io.XmlOutput; using Deltares.Standard.Logging; namespace Deltares.Dam.Data.DamEngineIo; /// /// /// public class FillXmlOutputFromDamUi { /// /// Class to fill the output xml based on the results in DamProjectData /// public static Output CreateOutput(DamProjectData damProjectData) { var output = new Output(); output.Results = new OutputResults(); output.Results.CalculationMessages = new Message[damProjectData.CalculationMessages.Count]; TransferOutputCalculationMessages(damProjectData.CalculationMessages, output.Results); if (damProjectData.OutputTimeSerieCollection != null) { output.Results.OperationalOutputTimeSeries = new DamEngine.Io.XmlOutput.TimeSerie[damProjectData.OutputTimeSerieCollection.Series.Count]; TransferOutputTimeSeries(damProjectData.OutputTimeSerieCollection, output.Results.OperationalOutputTimeSeries); } return output; } private static void TransferOutputTimeSeries(TimeSerieCollection outputTimeSerieCollection, DamEngine.Io.XmlOutput.TimeSerie[] outputTimeSeries) { var timeSerieIndex = 0; foreach (TimeSerie damTimeSerie in outputTimeSerieCollection.Series) { var outputTimeSerie = new DamEngine.Io.XmlOutput.TimeSerie(); outputTimeSerie.Entries = new TimeSerieEntries(); outputTimeSerie.Entries.TimeSerieEntry = new TimeSerieEntriesTimeSerieEntry[damTimeSerie.Entries.Count]; outputTimeSerie.TimeStep = new TimeSerieTimeStep(); outputTimeSerie.LocationId = damTimeSerie.LocationId; outputTimeSerie.ParameterId = damTimeSerie.ParameterId; outputTimeSerie.ForecastDateTime = damTimeSerie.ForecastDateTime; outputTimeSerie.Type = damTimeSerie.Type; outputTimeSerie.StartDateTime = damTimeSerie.StartDateTime; outputTimeSerie.EndDateTime = damTimeSerie.EndDateTime; outputTimeSerie.MissVal = damTimeSerie.MissVal; outputTimeSerie.LongName = damTimeSerie.LongName; outputTimeSerie.StationName = damTimeSerie.StationName; outputTimeSerie.Units = damTimeSerie.Units; outputTimeSerie.SourceOrganisation = damTimeSerie.SourceOrganisation; outputTimeSerie.SourceSystem = damTimeSerie.SourceSystem; outputTimeSerie.FileDescription = damTimeSerie.FileDescription; outputTimeSerie.Region = damTimeSerie.Region; outputTimeSerie.TimeStep.Multiplier = damTimeSerie.TimeStep.Multiplier; outputTimeSerie.TimeStep.Divider = damTimeSerie.TimeStep.Divider; outputTimeSerie.TimeStep.MultiplierSpecified1 = damTimeSerie.TimeStep.MultiplierSpecified; outputTimeSerie.TimeStep.DividerSpecified1 = damTimeSerie.TimeStep.DividerSpecified; outputTimeSerie.TimeStep.TimeStepUnit = ConversionHelper.ConvertToInputTimeStepUnit(damTimeSerie.TimeStep.Unit); var timeSerieEntryIndex = 0; foreach (TimeSerieEntry timestepEntry in damTimeSerie.Entries) { TimeSerieEntriesTimeSerieEntryStochastValue stochastValue = null; if (timestepEntry.StochastValue != null) { stochastValue = new TimeSerieEntriesTimeSerieEntryStochastValue { Distribution = timestepEntry.StochastValue.Distribution, Mean = timestepEntry.StochastValue.Mean, StandardDeviation = timestepEntry.StochastValue.StandardDeviation }; } var timeStep = new TimeSerieEntriesTimeSerieEntry { DateTime = timestepEntry.DateTime, Value = timestepEntry.Value, BasisFileNameWMF = timestepEntry.BasisFileName, Flagnietechtgebruikt = timestepEntry.Flag, RelativeCalculationPathName = timestepEntry.RelativeCalculationPathName, StochastValue = stochastValue }; outputTimeSerie.Entries.TimeSerieEntry[timeSerieEntryIndex] = timeStep; timeSerieEntryIndex++; } outputTimeSeries[timeSerieIndex] = outputTimeSerie; timeSerieIndex++; } } private static void TransferOutputCalculationMessages(List calculationMessages, OutputResults outputResults) { //var calculationMessages = damProjectData.CalculationMessages; if (calculationMessages != null) { outputResults.CalculationMessages = new Message[calculationMessages.Count]; for (var i = 0; i < calculationMessages.Count; i++) { var message = new Message(); message.MessageType = ConversionHelper.ConvertToInputMessageType(calculationMessages[i].MessageType); message.Message1 = calculationMessages[i].Message; outputResults.CalculationMessages[i] = message; } } } }