#region Apache Notice
/*****************************************************************************
* $Header: $
* $Revision$
* $Date$
*
* iBATIS.NET Data Mapper
* Copyright (C) 2004 - Gilles Bayon
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
********************************************************************************/
#endregion
#region Using
using System;
using System.Text;
#endregion
namespace IBatisNet.DataAccess.Scope
{
///
/// An error context to help us create meaningful error messages.
///
public class ErrorContext
{
#region Fields
private string _resource;
private string _activity;
private string _objectId;
private string _moreInfo;
private Exception _cause;
#endregion
#region Properties
///
/// The resource causing the problem
///
public string Resource
{
get { return _resource; }
set { _resource = value; }
}
///
/// The activity that was happening when the error happened
///
public string Activity
{
get { return _activity; }
set { _activity = value; }
}
///
/// The object ID where the problem happened
///
public string ObjectId
{
get { return _objectId; }
set { _objectId = value; }
}
///
/// More information about the error
///
public string MoreInfo
{
get { return _moreInfo; }
set { _moreInfo = value; }
}
///
/// The cause of the error
///
public Exception Cause
{
get { return _cause; }
set { _cause = value; }
}
#endregion
#region Methods
///
/// Clear the error context
///
public void Reset()
{
_resource = string.Empty;
_activity = string.Empty;
_objectId = string.Empty;
_moreInfo = string.Empty;
_cause = null;
}
///
/// ToString method for ErrorContext
///
///
public override string ToString()
{
StringBuilder message = new StringBuilder();
// activity
if (_activity != null && _activity.Length > 0)
{
message.Append("\n- The error occurred while ");
message.Append(_activity);
message.Append(".");
}
// more info
if (_moreInfo != null && _moreInfo.Length > 0)
{
message.Append("\n- ");
message.Append(_moreInfo);
}
// resource
if (_resource != null && _resource.Length > 0)
{
message.Append("\n- The error occurred in ");
message.Append(_resource);
message.Append(".");
}
// object
if (_objectId != null && _objectId.Length > 0)
{
message.Append(" \n- Check the ");
message.Append(_objectId);
message.Append(".");
}
// cause
if (_cause != null)
{
message.Append("\n- Cause: ");
message.Append(_cause.ToString());
}
return message.ToString();
}
#endregion
}
}