132 lines
3.7 KiB
C#
132 lines
3.7 KiB
C#
using System;
|
|
using Sarand.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Utils;
|
|
|
|
namespace Sarand.Net.Standard.Base.Bus
|
|
{
|
|
//=======================================================================
|
|
/// <summary>
|
|
/// State Item - allows business component to record and report error message.
|
|
/// </summary>
|
|
public abstract class SacsStateItem : ISacsStateItem
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Definitions.
|
|
public enum ErrorMessage
|
|
{
|
|
// Database.
|
|
DatabaseNotAvailable,
|
|
DatabaseQueryException,
|
|
// Item validation.
|
|
ItemNotSpecified,
|
|
ValidItemId,
|
|
InvalidItemId,
|
|
ItemIdNotSpecified,
|
|
ItemTypeNotSpecified,
|
|
InvalidItemSpecified,
|
|
MultipleItemsFound,
|
|
// Common properties.
|
|
InvalidDate,
|
|
InvalidStatus,
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Data members.
|
|
|
|
//-------------------------------------------------------------------
|
|
// Static initialisation.
|
|
static SacsStateItem()
|
|
{
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Construction.
|
|
protected SacsStateItem()
|
|
{
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Properties.
|
|
|
|
/// <summary>OK - No error state message.</summary>
|
|
public bool OK { get { return !HasErrorState(); } }
|
|
|
|
//-------------------------------------------------------------------
|
|
// Error State.
|
|
//-------------------------------------------------------------------
|
|
|
|
private SacsErrorState errorState = null;
|
|
|
|
public bool HasErrorState()
|
|
{
|
|
return errorState != null;
|
|
}
|
|
public SacsErrorState ErrorState
|
|
{
|
|
get { return errorState; }
|
|
}
|
|
public String ErrorStateMessage
|
|
{
|
|
get { return (errorState != null ? errorState.Message : String.Empty); }
|
|
}
|
|
/// <summary>
|
|
/// Record the error state message.
|
|
/// <para>Blank message does not set the error state - leaves previous state intact.</para>
|
|
/// <para>Return value is fale unless the message is blank.</para>
|
|
/// </summary>
|
|
public bool SetErrorState(String message)
|
|
{
|
|
if (StringUtil.IsBlank(message))
|
|
return false;
|
|
this.errorState = new SacsErrorState(message);
|
|
return false;
|
|
}
|
|
/// <summary>Clear the error state.</summary>
|
|
public void ClearErrorState()
|
|
{
|
|
errorState = null;
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
// Error state population.
|
|
protected bool SetErrorState(ErrorMessage errorMessage)
|
|
{
|
|
return SetErrorState(GetErrorMessage(errorMessage));
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
protected String GetErrorMessage(ErrorMessage errorMessage)
|
|
{
|
|
switch (errorMessage)
|
|
{
|
|
case ErrorMessage.DatabaseNotAvailable:
|
|
return "Database is not available";
|
|
case ErrorMessage.DatabaseQueryException:
|
|
return "Database query exception";
|
|
case ErrorMessage.ItemNotSpecified:
|
|
return "Item not specified";
|
|
case ErrorMessage.ValidItemId:
|
|
return "Item has a valid id";
|
|
case ErrorMessage.InvalidItemId:
|
|
return "Invalid item id";
|
|
case ErrorMessage.ItemIdNotSpecified:
|
|
return "Item Id must be specified";
|
|
case ErrorMessage.ItemTypeNotSpecified:
|
|
return "Item type must be specified";
|
|
case ErrorMessage.InvalidItemSpecified:
|
|
return "Invalid item specified";
|
|
case ErrorMessage.MultipleItemsFound:
|
|
return "Multiple items found";
|
|
case ErrorMessage.InvalidDate:
|
|
return "Invalid date";
|
|
case ErrorMessage.InvalidStatus:
|
|
return "Invalid status";
|
|
}
|
|
return errorMessage.ToString();
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|