/////////////////////////////////////////////////////////////////////////////
// File Description : 验证实体集合,封装了对实体的验证
// Copyright : joyin
// -------------------------------------------------------------------------
// Date Created : Mar 26, 2010
// Author : jiangxinjun
//
/////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Text;
namespace HH.WMS.Entitys.Common
{
///
/// 验证实体集合
///
public class SimpleInvalidEntityInfo
{
///
/// 实体在集合的序号
///
public int IndexInList { get; set; }
///
/// 错误信息
///
public List ErrorMessages { get; set; }
}
///
/// 验证实体集合
///
///
public class ValidatorListEntity
{
#region InvalidEntityInfo 实体错误信息
///
/// 实体错误信息
///
public class InvalidEntityInfo : SimpleInvalidEntityInfo
{
///
/// 实体
///
public TEntity Entity { get; set; }
}
#endregion
#region 属性
private IList list;
private Dictionary, string> predicates;
private List invalidInfos;
///
/// 错误信息
///
public List InvalidInfos
{
get
{
if (invalidInfos == null)
{
invalidInfos = new List.InvalidEntityInfo>();
}
return invalidInfos;
}
}
///
/// 建议错误信息
///
/// InvalidInfos转换的建议信息
public List SimpleInvalidInfos
{
get
{
if (InvalidInfos != null)
{
return InvalidInfos.ConvertAll(_ele => { return _ele; });
}
return null;
}
}
#endregion
#region 公共方法
///
/// 构造函数
///
/// 要验证的初始化列表
public ValidatorListEntity(IList list)
{
this.list = list;
predicates = new Dictionary, string>();
}
///
/// 设置验证
///
/// 错误成立条件
/// 如果错误成立,显示的错误信息
///
public ValidatorListEntity SetValidate(Predicate predicate, string errorMsg)
{
predicates.Add(predicate, errorMsg);
return this;
}
///
/// 验证集合
///
/// 是否成功,如果不成功,访问InvalidInfos获取错误数据
public bool Valid()
{
new List(this.list).ForEach(_entity =>
{
ValidatorEntity = new ValidatorEntity(_entity);
foreach (var predicate in predicates)
{
ValidatorEntity.Validate(predicate.Key, predicate.Value);
}
if (ValidatorEntity.ErrorMessages != null && ValidatorEntity.ErrorMessages.Count > 0)
{
//InvalidInfos.Add(new ValidatorListEntity.InvalidEntityInfo()
//{
// IndexInList = this.list.IndexOf(_entity),
// Entity = _entity,
// ErrorMessages = validator.ErrorMessages
//});
SetErrorMessages(_entity, ValidatorEntity);
}
});
return (InvalidInfos.Count == 0);
}
public ValidatorEntity ValidatorEntity { get; set; }
public void SetErrorMessages(TEntity _entity, ValidatorEntity validator)
{
InvalidInfos.Add(new ValidatorListEntity.InvalidEntityInfo()
{
IndexInList = this.list.IndexOf(_entity),
Entity = _entity,
ErrorMessages = validator.ErrorMessages
});
}
#endregion
}
}