using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Utils; using System; namespace Saxonite.Net.Standard.Base.Bus { //======================================================================= /// Combines Common error-state behavior with Saxonite disposal behavior. public abstract class SaxDisposableStateItem : SacsDisposable { public enum ErrorMessage { DatabaseNotAvailable, DatabaseQueryException, ItemNotSpecified, ValidItemId, InvalidItemId, ItemIdNotSpecified, ItemTypeNotSpecified, InvalidItemSpecified, MultipleItemsFound, InvalidDate, InvalidStatus, } private SacsErrorState errorState; public bool OK { get { return !HasErrorState(); } } public bool HasErrorState() { return errorState != null; } public SacsErrorState ErrorState { get { return errorState; } } public String ErrorStateMessage { get { return errorState?.Message ?? String.Empty; } } public bool SetErrorState(String message) { if (StringUtil.IsBlank(message)) return false; errorState = new SacsErrorState(message); return false; } public void ClearErrorState() { errorState = null; } protected bool SetErrorState(ErrorMessage errorMessage) { return SetErrorState(GetErrorMessage(errorMessage)); } private String GetErrorMessage(ErrorMessage errorMessage) { return errorMessage switch { ErrorMessage.DatabaseNotAvailable => "Database is not available", ErrorMessage.DatabaseQueryException => "Database query exception", ErrorMessage.ItemNotSpecified => "Item not specified", ErrorMessage.ValidItemId => "Item has a valid id", ErrorMessage.InvalidItemId => "Invalid item id", ErrorMessage.ItemIdNotSpecified => "Item Id must be specified", ErrorMessage.ItemTypeNotSpecified => "Item type must be specified", ErrorMessage.InvalidItemSpecified => "Invalid item specified", ErrorMessage.MultipleItemsFound => "Multiple items found", ErrorMessage.InvalidDate => "Invalid date", ErrorMessage.InvalidStatus => "Invalid status", _ => errorMessage.ToString(), }; } protected override void Dispose(bool disposing) { } } //======================================================================= }