using System; using Deltares.DamEngine.Data.Standard; using Deltares.DamEngine.Data.Standard.Logging; namespace Deltares.DamEngine.Interface { public class EngineInterface { private ProgressDelegate progressDelegate; private SendMessageDelegate sendMessageDelegate; private UserAbortDelegate userAbortDelegate; /// /// Initializes a new instance of the class. /// /// The model input. public EngineInterface(string modelInput) { if (String.IsNullOrEmpty(modelInput)) { throw new EngineInterfaceException("Error: empty input string"); } SendMessage(new LogMessage() { MessageType = LogMessageType.Info, Message = "Model accepted" }); } /// /// Gets or sets the progress delegate. /// /// /// The progress delegate. /// public ProgressDelegate ProgressDelegate { get { return progressDelegate; } set { progressDelegate = value; } } /// /// Gets or sets the send message delegate. /// /// /// The send message delegate. /// public SendMessageDelegate SendMessageDelegate { get { return sendMessageDelegate; } set { sendMessageDelegate = value; } } /// /// Gets or sets the user abort delegate. /// /// /// The user abort delegate. /// public UserAbortDelegate UserAbortDelegate { get { return userAbortDelegate; } set { userAbortDelegate = value; } } private void SendMessage(LogMessage logMessage) { SendMessageDelegate?.Invoke(logMessage); } private void Progress(double progress) { ProgressDelegate?.Invoke(progress); } private bool UserAbort() { if (UserAbortDelegate != null) { return UserAbortDelegate(); } else { return false; } } /// /// Validates the model. /// /// Validation messages in an XML string public string Validate() { SendMessage(new LogMessage() { MessageType = LogMessageType.Info, Message = "Start validation"}); SendMessage(new LogMessage() { MessageType = LogMessageType.Info, Message = "End validation" }); return null; } /// /// Runs this instance. /// /// Errors and warnings in an XML string public string Run() { SendMessage(new LogMessage() { MessageType = LogMessageType.Info, Message = "Start calcualtion" }); SendMessage(new LogMessage() { MessageType = LogMessageType.Info, Message = "End calcualtion" }); return null; } } }