// Copyright (c) 2008, NTT DATA Corporation.
//
// 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.

namespace TERASOLUNA.Fw.Common.Validation
{
    /// <summary>
    /// 入力検証機能のエラーメッセージ情報を保持します。
    /// </summary>
    public class ValidationMessageInfo : MessageInfo
    {
        /// <summary>
        /// エラー発生箇所を表すXPathです。
        /// </summary>
        private string _errorPath = null;
       
        /// <summary>
        /// エラー発生箇所のタイプ名です。
        /// </summary>
        private string _errorTypeName = null;
        
        /// <summary>
        /// エラー発生箇所のタイトル名です。
        /// </summary>
        private string _errorTitle = null;

        /// <summary>
        /// エラー発生箇所を表す XPath を取得または設定します。
        /// </summary>
        /// <value>
        /// エラー発生箇所を表す XPath 。
        /// </value>
        /// <remarks>
        /// デフォルトの値は、 null です。
        /// </remarks>
        public string ErrorPath
        {
            get { return _errorPath; }
            set { _errorPath = value; }
        }
        
        /// <summary>
        /// エラー発生箇所のタイプ名を取得または設定します。
        /// </summary>
        /// <value>
        /// エラー発生箇所のタイプ名。
        /// </value>
        /// <remarks>
        /// デフォルトの値は、 null です。
        /// </remarks>
        public string ErrorTypeName
        {
            get { return _errorTypeName; }
            set { _errorTypeName = value; }
        }

        /// <summary>
        /// エラー発生箇所のタイトルを取得または設定します。
        /// </summary>
        /// <value>エラー発生箇所のタイトル。</value>
        /// <remarks>
        /// デフォルトの値は、 null です。
        /// </remarks>
        public string ErrorTitle
        {
            get { return _errorTitle; }
            set { _errorTitle = value; }
        }

        /// <summary>
        /// エラー情報から <see cref="ValidationMessageInfo"/> クラスの新しいインスタンスを初期化します。
        /// </summary>
        /// <remarks>
        /// <paramref name="errorPath"/> は <see cref="System.Data.DataSet"/> 内のエラー箇所を示す XPath です。
        /// </remarks>
        /// <param name="message">エラーメッセージ。</param>
        /// <param name="key">エラー箇所を示す値。</param>
        /// <param name="errorPath">エラー箇所の XPath 。</param>
        /// <param name="errorTypeName">エラー箇所のタイプ名。</param>
        /// <param name="errorTitle">エラー箇所のタイトル。</param>
        public ValidationMessageInfo(string key, 
                                     string message,
                                     string errorPath,
                                     string errorTypeName,
                                     string errorTitle)
            : base(key, message)
        {
            _errorPath = errorPath;
            _errorTypeName = errorTypeName;
            _errorTitle = errorTitle;
        }

        /// <summary>
        /// エラー情報から <see cref="ValidationMessageInfo"/> クラスの新しいインスタンスを初期化します。
        /// </summary>
        /// <param name="key">エラーコード。</param>
        /// <param name="message">エラーメッセージ。</param>
        /// <param name="errorPath">エラー発生箇所を表す XPath 。</param>
        public ValidationMessageInfo(string key, string message, string errorPath)
            : base(key, message)
        {
            _errorPath = errorPath;
        }
    }
}
