using System; using Sleis.Utility; using Sleis.Validation.Spring; using Sleis.ViewModels; using System.Text; namespace Sleis.Service { public class ValidationService : BaseService { private const char DEFAULT_CONTEXT_INDIXATOR = '~'; public ObjectValidator Validator { get; set; } public new void Init() { base.Init(); ArgumentValidationUtility.ThrowOnNull(Validator, "Validator"); } public ListView ValidateReport(ReportValidationView subject, params object[] args) { Log.DebugFormat("Validate(subject: {0} args: {1}", subject, args); if (subject == null) { throw new ArgumentNullException("subject"); } //Set the validation context so that each identity can describe //itself in a context of its parent subject.SetContext(DEFAULT_CONTEXT_INDIXATOR.ToString()); //Create a result ListView result = new ListView(); result.List = Validator.Validate(subject); //Parse error context for each foreach (RuleError rule in result.List) { int contextIndex = rule.Message.IndexOf(DEFAULT_CONTEXT_INDIXATOR); if (contextIndex > -1) { rule.Context = rule.Message.Substring(contextIndex + 1).Trim(); rule.Message = rule.Message.Substring(0, contextIndex - 1).Trim(); } else { rule.Context = String.Format("Context Undefined for: {0}", rule.MessageProvider); } } Log.DebugFormat("Result: {0}", result); return result; } } }