示例#1
0
        public override List <LogicalModel.Validation.ValidationRuleResult> Validate(List <String> messages)
        {
            var results = new List <LogicalModel.Validation.ValidationRuleResult>();

            messages = messages == null ? new List <String>() : messages;

            if (Taxonomy != null)
            {
                Logger.WriteLine("Validating Instance started");
                messages.Add(String.Format("Validation started at {0:" + Utilities.Converters.DateTimeFormat + "}", DateTime.Now));

                var nsm = Utilities.Xml.GetTaxonomyNamespaceManager(this.XmlDocument);

                var nsitems    = nsm.GetNamespacesInScope(XmlNamespaceScope.Local);
                var schemas    = new Dictionary <string, string>();
                var xbrltaxdoc = (XBRLProcessor.Models.XbrlTaxonomyDocument)Taxonomy.EntryDocument;
                schemas.Add(xbrltaxdoc.LocalPath, xbrltaxdoc.TargetNamespace);
                foreach (var nsitem in nsitems)
                {
                    var key = nsitem.Value;
                    var doc = Taxonomy.GetDocumentByTargetNamespace(key);
                    if (doc != null && !String.IsNullOrEmpty(key))
                    {
                        if (!schemas.ContainsKey(doc.LocalPath))
                        {
                            schemas.Add(doc.LocalPath, key);
                        }
                    }
                    else
                    {
                    }
                }
                var schemavalidator = new XBRLProcessor.SchemaValidation();
                //schemavalidator.ValidateInstance(this.XmlDocument, schemas, messages);

                results.AddRange(base.Validate(messages));

                messages.Add(String.Format("Validation finished at {0:" + Utilities.Converters.DateTimeFormat + "}", DateTime.Now));

                var json_validationresults = Utilities.Converters.ToJson(results);
                //Utilities.FS.WriteAllText(Taxonomy.CurrentInstanceValidationResultPath, "var currentvalidationresults = " + json_validationresults + ";");
                Utilities.FS.WriteAllText(Taxonomy.CurrentInstanceValidationResultPath, json_validationresults);


                var sb = new StringBuilder();
                foreach (var message in messages)
                {
                    sb.AppendLine(message);
                }
                sb.AppendLine();
                sb.AppendLine();
                sb.AppendLine("Validation Errors JSON:");
                sb.AppendLine(json_validationresults);
                if (System.IO.File.Exists(this.FullPath))
                {
                    var validationresultfilepath = this.FullPath.Remove(this.FullPath.LastIndexOf("."));
                    validationresultfilepath = validationresultfilepath + ".ValidationResults.txt";
                    Utilities.FS.WriteAllText(validationresultfilepath, sb.ToString());
                }


                Logger.WriteLine("Validating Instance finished");
            }
            else
            {
                messages.Add(String.Format("Can't load Taxonomy {0}", this.SchemaRef));
            }
            return(results);
        }