public XmlValidationSerializer( IResourceManager mgr, IXmlDocumentProvider docProvider) { ResourceManager = mgr; XmlDocProvider = docProvider; }
public XmlValidationRule(IXmlDocumentProvider docProvider, XmlNode node, XmlNamespaceManager nsmgr) { if (node.Attributes["name"] != null) Name = node.Attributes["name"].Value; if (node.Attributes["file"] != null) File = node.Attributes["file"].Value; if (!string.IsNullOrEmpty(File)) { try { XmlDocument doc = docProvider.Load(File); if (doc != null) { List<ITest> tests = new List<ITest>(); string prefix = nsmgr.LookupPrefix("http://icalvalid.wikidot.com/validation"); foreach (XmlNode passNode in doc.SelectNodes("/" + prefix + ":rule/" + prefix + ":pass", nsmgr)) tests.Add(new XmlCalendarTest(passNode, nsmgr)); foreach (XmlNode failNode in doc.SelectNodes("/" + prefix + ":rule/" + prefix + ":fail", nsmgr)) tests.Add(new XmlCalendarTest(failNode, nsmgr)); Tests = tests.ToArray(); } else throw new ValidationRuleLoadException("The file could not be found at the following path: '" + File + "'.", this); } catch (ValidationRuleLoadException) { throw; } catch { throw new ValidationRuleLoadException(this); } } }
static IValidationSerializer GetSerializer(IXmlDocumentProvider docProvider) { string format = "Text"; if (_Arguments.Contains(_FormatArgument)) { format = _Arguments[_FormatArgument].Value; } Type type = Type.GetType("DDay.iCal.Validator.Serialization." + format + "ValidationSerializer, DDay.iCal.Validator", false, true); if (type != null) { ConstructorInfo ci = type.GetConstructor(Type.EmptyTypes); if (ci != null) { return(ci.Invoke(new object[0]) as IValidationSerializer); } else { ci = type.GetConstructor(new Type[] { typeof(IXmlDocumentProvider) }); if (ci != null) { return(ci.Invoke(new object[] { docProvider }) as IValidationSerializer); } } } return(null); }
public XmlValidationRule(IXmlDocumentProvider docProvider, XmlNode node, XmlNamespaceManager nsmgr) { if (node.Attributes["name"] != null) { Name = node.Attributes["name"].Value; } if (node.Attributes["file"] != null) { File = node.Attributes["file"].Value; } if (!string.IsNullOrEmpty(File)) { XmlDocument doc = docProvider.Load(File); if (doc != null) { List <ITest> tests = new List <ITest>(); string prefix = nsmgr.LookupPrefix("http://icalvalid.wikidot.com/validation"); foreach (XmlNode passNode in doc.SelectNodes("/" + prefix + ":rule/" + prefix + ":pass", nsmgr)) { tests.Add(new XmlCalendarTest(passNode, nsmgr)); } foreach (XmlNode failNode in doc.SelectNodes("/" + prefix + ":rule/" + prefix + ":fail", nsmgr)) { tests.Add(new XmlCalendarTest(failNode, nsmgr)); } Tests = tests.ToArray(); } } }
static IValidationSerializer GetSerializer(IXmlDocumentProvider docProvider) { string format = "Text"; Type type = Type.GetType("DDay.iCal.Validator.Serialization." + format + "ValidationSerializer, DDay.iCal.Validator", false, true); if (type != null) { IValidationSerializer serializer = null; ConstructorInfo ci = type.GetConstructor(new Type[] { typeof(IResourceManager) }); if (ci != null) serializer = ci.Invoke(new object[] { ResourceManager }) as IValidationSerializer; else { ci = type.GetConstructor(new Type[] { typeof(IResourceManager), typeof(IXmlDocumentProvider) }); if (ci != null) serializer = ci.Invoke(new object[] { ResourceManager, docProvider }) as IValidationSerializer; } if (serializer != null) { serializer.ApplicationName = "icalvalid Console"; serializer.ApplicationUrl = "http://icalvalid.cloudapp.net"; serializer.ApplicationVersion = Assembly.GetExecutingAssembly().GetName().Version; } return serializer; } return null; }
public XmlValidationRuleset(IXmlDocumentProvider docProvider, XmlNode node, XmlNamespaceManager nsmgr) { if (node.Attributes["name"] != null) this.Name = node.Attributes["name"].Value; if (node.Attributes["nameString"] != null) this.NameString = node.Attributes["nameString"].Value; if (node.Attributes["descriptionString"] != null) this.DescriptionString = node.Attributes["descriptionString"].Value; List<IValidationRule> rules = new List<IValidationRule>(); string prefix = nsmgr.LookupPrefix("http://icalvalid.wikidot.com/validation"); if (node.Attributes["basedOn"] != null) { // Inherit rules from the ruleset this one is based on. string name = node.Attributes["basedOn"].Value; foreach (XmlNode rule in node.SelectNodes("parent::" + prefix + ":rulesets/" + prefix + ":ruleset[@name='" + name + "']/" + prefix + ":rule", nsmgr)) rules.Add(new XmlValidationRule(docProvider, rule, nsmgr)); } foreach (XmlNode rule in node.SelectNodes(prefix + ":rule", nsmgr)) rules.Add(new XmlValidationRule(docProvider, rule, nsmgr)); Rules = rules.ToArray(); }
public XmlValidationRuleset(IXmlDocumentProvider docProvider, XmlNode node, XmlNamespaceManager nsmgr) { if (node.Attributes["name"] != null) { this.Name = node.Attributes["name"].Value; } if (node.Attributes["nameString"] != null) { this.NameString = node.Attributes["nameString"].Value; } if (node.Attributes["descriptionString"] != null) { this.DescriptionString = node.Attributes["descriptionString"].Value; } List <IValidationRule> rules = new List <IValidationRule>(); string prefix = nsmgr.LookupPrefix("http://icalvalid.wikidot.com/validation"); foreach (XmlNode rule in node.SelectNodes(prefix + ":rule", nsmgr)) { rules.Add(new XmlValidationRule(docProvider, rule, nsmgr)); } Rules = rules.ToArray(); }
public CorpusMigrator( IXmlDocumentProvider xmlDocumentProvider, ILogger logger, IVerseAnalysisWriteRepository verseAnalysisWriteRepository) { XmlDocument = xmlDocumentProvider.Document; Logger = logger; VerseAnalysisWriteRepository = verseAnalysisWriteRepository; }
public QuranMigrator( ILogger logger, IXmlDocumentProvider xmlDocumentProvider, IVerseWriteRepository verseWriteRepository) { Logger = logger; XmlDocument = xmlDocumentProvider.Document; VerseWriteRepository = verseWriteRepository; }
public XmlValidationSerializer( IXmlDocumentProvider docProvider, IValidationRuleset ruleset, IValidationResult[] validationResults) : this(docProvider) { Ruleset = ruleset; ValidationResults = validationResults; }
public XmlValidationSerializer( IResourceManager mgr, IXmlDocumentProvider docProvider, IValidationRuleset ruleset, IValidationResultCollection validationResults) : this(mgr, docProvider) { Ruleset = ruleset; ValidationResults = validationResults; }
public XmlValidationSerializer( IResourceManager mgr, IXmlDocumentProvider docProvider, IValidationRuleset ruleset, ITestResult[] testResults) : this(mgr, docProvider) { Ruleset = ruleset; TestResults = testResults; }
public CommentaryMigrator( ILogger logger, IXmlDocumentProvider xmlDocumentProvider, ICommentatorWriteRepository commentatorWriteRepository, ICommentaryWriteRepository commentaryWriteRepository) { Logger = logger; XmlDocument = xmlDocumentProvider.Document; CommentatorWriteRepository = commentatorWriteRepository; CommentaryWriteRepository = commentaryWriteRepository; }
static public bool Initialize(IXmlDocumentProvider docProvider, bool forceEnglishOnNotFound) { _XmlDocumentProvider = docProvider; _IsInitialized = EnsureXmlDocument(); if (forceEnglishOnNotFound && !_IsInitialized) { _LanguageIdentifiers = new string[] { "en-US", "en" }; _IsInitialized = EnsureXmlDocument(); } return(_IsInitialized); }
static void Main(string[] args) { try { _Arguments = new CommandLineArgumentList(args, StringComparison.CurrentCultureIgnoreCase); IXmlDocumentProvider docProvider = null; // Initialize our xml document provider if (File.Exists("icalvalidSchema.zip")) { docProvider = new XmlDocumentZipExtractor("icalvalidSchema.zip"); } else if (Directory.Exists("icalvalidSchema")) { docProvider = new LocalXmlDocumentProvider("icalvalidSchema"); } else { throw new Exception("A valid schema directory or zip file could not be located!"); } // Setup the language to use for validation/tests SetupLanguage(docProvider); IValidationRuleset selectedRuleset = LoadRuleset(docProvider); if (_Arguments.Contains(_SchemaValidationArgument)) { SchemaTest(docProvider); LanguageKeyValidation(docProvider); } else { // Determine whether we are performing a self test, or // validating an iCalendar file... if (_Arguments.Contains(_TestArgument)) { SelfTest(docProvider, selectedRuleset); } else { ValidateFile(docProvider, selectedRuleset); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public HadithMigrator( ILogger logger, IXmlDocumentProvider xmlDocumentProvider, IVerseRepository verseRepository, IVerseWriteRepository verseWriteRepository, IHadithCollectionWriteRepository hadithCollectionWriteRepository, IHadithWriteRepository hadithWriteRepository) { Logger = logger; VerseRepository = verseRepository; VerseWriteRepository = verseWriteRepository; XmlDocument = xmlDocumentProvider.Document; HadithCollectionWriteRepository = hadithCollectionWriteRepository; HadithWriteRepository = hadithWriteRepository; }
public XmlValidationRule(IXmlDocumentProvider docProvider, XmlNode node, XmlNamespaceManager nsmgr) { if (node.Attributes["name"] != null) Name = node.Attributes["name"].Value; if (node.Attributes["file"] != null) File = node.Attributes["file"].Value; if (!string.IsNullOrEmpty(File)) { XmlDocument doc = docProvider.Load(File); if (doc != null) { List<ITest> tests = new List<ITest>(); string prefix = nsmgr.LookupPrefix("http://icalvalid.wikidot.com/validation"); foreach (XmlNode passNode in doc.SelectNodes("/" + prefix + ":rule/" + prefix + ":pass", nsmgr)) tests.Add(new XmlCalendarTest(passNode, nsmgr)); foreach (XmlNode failNode in doc.SelectNodes("/" + prefix + ":rule/" + prefix + ":fail", nsmgr)) tests.Add(new XmlCalendarTest(failNode, nsmgr)); Tests = tests.ToArray(); } } }
static void SetupLanguage(IXmlDocumentProvider docProvider) { bool foundLanguage = false; // Determine what language we're using... if (_Arguments.Contains(_LanguageArgument)) { // Initialize our resource manager with a user-defined culture foundLanguage = ResourceManager.Initialize(docProvider, _Arguments[_LanguageArgument].Value); } else { // Initialize our resource manager with our current culture foundLanguage = ResourceManager.Initialize(docProvider, false); } if (!foundLanguage) { Console.WriteLine("Could not find the selected language; using English instead..."); // Force initialization to English ResourceManager.Initialize(docProvider, true); } }
static IValidationRuleset LoadRuleset(IXmlDocumentProvider docProvider) { // Load some rulesets XmlValidationRulesetLoader loader = new XmlValidationRulesetLoader(docProvider); IValidationRuleset[] rulesetArray = loader.Load(); if (rulesetArray == null) throw new Exception("The validation rulesets could not be loaded. Are you sure the icalvalid schema files are present?"); List<IValidationRuleset> rulesets = new List<IValidationRuleset>(rulesetArray); // Determine a validation ruleset to use string validatorName = "Strict_2_0"; // Select the ruleset IValidationRuleset selectedRuleset = rulesets.Find( delegate(IValidationRuleset rs) { return string.Equals(rs.Name, validatorName, StringComparison.CurrentCultureIgnoreCase); } ); return selectedRuleset; }
static IValidationRuleset LoadRuleset(IXmlDocumentProvider docProvider) { // Load some rulesets XmlValidationRulesetLoader loader = new XmlValidationRulesetLoader(docProvider); List <IValidationRuleset> rulesets = new List <IValidationRuleset>(loader.Load()); // Determine a validation ruleset to use string validatorName = "Strict_2_0"; if (_Arguments.Contains(_ValidatorArgument)) { validatorName = _Arguments[_ValidatorArgument].Value; } // Select the ruleset IValidationRuleset selectedRuleset = rulesets.Find( delegate(IValidationRuleset rs) { return(string.Equals(rs.Name, validatorName, StringComparison.CurrentCultureIgnoreCase)); } ); return(selectedRuleset); }
static void SelfTest(IXmlDocumentProvider docProvider, IValidationRuleset selectedRuleset) { IValidationSerializer serializer = GetSerializer(docProvider); if (serializer != null) { Stream stream; Encoding encoding; SetupStream(serializer, out stream, out encoding); if (selectedRuleset != null) { serializer.Ruleset = selectedRuleset; RulesetValidator validator = new RulesetValidator(selectedRuleset); Console.Write(string.Format( ResourceManager.GetString("performingSelfTest"), ResourceManager.GetString(selectedRuleset.NameString)) ); serializer.TestResults = validator.Test(); Console.WriteLine(ResourceManager.GetString("done")); } try { serializer.Serialize(stream, encoding); } finally { stream.Close(); } } }
static void ValidateFile(IXmlDocumentProvider docProvider, IValidationRuleset selectedRuleset) { IValidationSerializer serializer = GetSerializer(docProvider); bool needsMoreArguments = false; if (serializer != null) { string iCalText = null; if (selectedRuleset != null) { serializer.Ruleset = selectedRuleset; if (_Arguments.Contains(_FileArgument)) { // Load the calendar from a local file Console.Write(ResourceManager.GetString("loadingCalendar")); FileStream fs = new FileStream(_Arguments[_FileArgument].Value, FileMode.Open, FileAccess.Read); if (fs != null) { StreamReader sr = new StreamReader(fs); iCalText = sr.ReadToEnd(); sr.Close(); } Console.WriteLine(ResourceManager.GetString("Done")); } else if (_Arguments.Contains(_UriArgument)) { // Load the calendar from a Uri Console.Write(ResourceManager.GetString("loadingCalendar")); Uri uri = new Uri(_Arguments[_UriArgument].Value); string username = null, password = null; if (_Arguments.Contains(_UsernameArgument)) { username = _Arguments[_UsernameArgument].Value; if (_Arguments.Contains(_PasswordArgument)) { password = _Arguments[_PasswordArgument].Value; } } WebClient client = new WebClient(); if (username != null && password != null) { client.Credentials = new System.Net.NetworkCredential(username, password); } iCalText = client.DownloadString(uri); Console.WriteLine(ResourceManager.GetString("Done")); } else { needsMoreArguments = true; } if (needsMoreArguments) { WriteDescription(); } else { if (iCalText == null) { throw new Exception(ResourceManager.GetString("calendarNotFound")); } else { RulesetValidator rulesetValidator = new RulesetValidator(selectedRuleset, iCalText); if (rulesetValidator != null) { Console.Write(string.Format( ResourceManager.GetString("validatingCalendar"), ResourceManager.GetString(selectedRuleset.NameString) )); serializer.ValidationResults = rulesetValidator.Validate(); Console.WriteLine(ResourceManager.GetString("done")); } } } } Stream stream; Encoding encoding; SetupStream(serializer, out stream, out encoding); try { serializer.Serialize(stream, encoding); } finally { stream.Close(); } } }
static void ValidateFile(IXmlDocumentProvider docProvider, IValidationRuleset selectedRuleset) { IValidationSerializer serializer = GetSerializer(docProvider); bool needsMoreArguments = false; if (serializer != null) { string iCalText = null; if (selectedRuleset != null) { serializer.Ruleset = selectedRuleset; if (_Arguments.Contains(_FileArgument)) { // Load the calendar from a local file Console.Write(ResourceManager.GetString("loadingCalendar")); FileStream fs = new FileStream(_Arguments[_FileArgument].Value, FileMode.Open, FileAccess.Read); if (fs != null) { StreamReader sr = new StreamReader(fs); iCalText = sr.ReadToEnd(); sr.Close(); } Console.WriteLine(ResourceManager.GetString("Done")); } else if (_Arguments.Contains(_UriArgument)) { // Load the calendar from a Uri Console.Write(ResourceManager.GetString("loadingCalendar")); Uri uri = new Uri(_Arguments[_UriArgument].Value); string username = null, password = null; if (_Arguments.Contains(_UsernameArgument)) { username = _Arguments[_UsernameArgument].Value; if (_Arguments.Contains(_PasswordArgument)) password = _Arguments[_PasswordArgument].Value; } WebClient client = new WebClient(); if (username != null && password != null) client.Credentials = new System.Net.NetworkCredential(username, password); iCalText = client.DownloadString(uri); Console.WriteLine(ResourceManager.GetString("Done")); } else { needsMoreArguments = true; } if (needsMoreArguments) { WriteDescription(); } else { if (iCalText == null) { throw new Exception(ResourceManager.GetString("calendarNotFound")); } else { RulesetValidator rulesetValidator = new RulesetValidator(selectedRuleset, iCalText); if (rulesetValidator != null) { Console.Write(string.Format( ResourceManager.GetString("validatingCalendar"), ResourceManager.GetString(selectedRuleset.NameString) )); serializer.ValidationResults = rulesetValidator.Validate(); Console.WriteLine(ResourceManager.GetString("done")); } } } } Stream stream; Encoding encoding; SetupStream(serializer, out stream, out encoding); try { serializer.Serialize(stream, encoding); } finally { stream.Close(); } } }
static void LanguageKeyValidation(IXmlDocumentProvider docProvider) { Console.Write(Environment.NewLine + "Validating language files for missing entries..."); try { List <string> languageFiles = new List <string>(); foreach (string path in docProvider) { if (path.Contains("languages")) { languageFiles.Add(path); } } List <string> masterEntries = new List <string>(); Dictionary <string, List <string> > entries = new Dictionary <string, List <string> >(); foreach (string xmlPath in languageFiles) { XmlDocument doc = docProvider.Load(xmlPath); XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); string prefix = nsmgr.LookupPrefix("http://icalvalid.wikidot.com/validation"); if (string.IsNullOrEmpty(prefix)) { prefix = "v"; nsmgr.AddNamespace("v", "http://icalvalid.wikidot.com/validation"); } entries[xmlPath] = new List <string>(); foreach (XmlNode str in doc.SelectNodes("/" + prefix + ":language/" + prefix + ":string", nsmgr)) { string name = str.Attributes["name"].Value; entries[xmlPath].Add("string/" + name); if (!masterEntries.Contains("string/" + name)) { masterEntries.Add("string/" + name); } } foreach (XmlNode str in doc.SelectNodes("/" + prefix + ":language/" + prefix + ":errors/" + prefix + ":error", nsmgr)) { string name = str.Attributes["name"].Value; entries[xmlPath].Add("error/" + name); if (!masterEntries.Contains("error/" + name)) { masterEntries.Add("error/" + name); } } foreach (XmlNode str in doc.SelectNodes("/" + prefix + ":language/" + prefix + ":resolutions/" + prefix + ":resolution", nsmgr)) { string name = str.Attributes["error"].Value; entries[xmlPath].Add("resolution/" + name); if (!masterEntries.Contains("resolution/" + name)) { masterEntries.Add("resolution/" + name); } } } foreach (KeyValuePair <string, List <string> > kvp in entries) { Console.Write(Environment.NewLine + "Validating '" + kvp.Key + "'..."); List <string> missingEntries = new List <string>(); foreach (string masterEntry in masterEntries) { if (!kvp.Value.Contains(masterEntry)) { missingEntries.Add(masterEntry); } } if (missingEntries.Count > 0) { Console.Write("Missing " + missingEntries.Count + " entries!"); foreach (string me in missingEntries) { Console.Write(Environment.NewLine + "'" + me + "'"); } } else { Console.Write("OK"); } } } catch (Exception ex) { Console.WriteLine(ex); } Console.WriteLine(); }
static void LanguageKeyValidation(IXmlDocumentProvider docProvider) { Console.Write(Environment.NewLine + "Validating language files for missing entries..."); try { List<string> languageFiles = new List<string>(); foreach (string path in docProvider) { if (path.Contains("languages") && path.EndsWith(".xml")) languageFiles.Add(path); } List<string> masterEntries = new List<string>(); Dictionary<string, List<string>> entries = new Dictionary<string, List<string>>(); foreach (string xmlPath in languageFiles) { XmlDocument doc = docProvider.Load(xmlPath); XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); string prefix = nsmgr.LookupPrefix("http://icalvalid.wikidot.com/validation"); if (string.IsNullOrEmpty(prefix)) { prefix = "v"; nsmgr.AddNamespace("v", "http://icalvalid.wikidot.com/validation"); } entries[xmlPath] = new List<string>(); foreach (XmlNode str in doc.SelectNodes("/" + prefix + ":language/" + prefix + ":string", nsmgr)) { string name = str.Attributes["name"].Value; entries[xmlPath].Add("string/" + name); if (!masterEntries.Contains("string/" + name)) masterEntries.Add("string/" + name); } foreach (XmlNode str in doc.SelectNodes("/" + prefix + ":language/" + prefix + ":errors/" + prefix + ":error", nsmgr)) { string name = str.Attributes["name"].Value; entries[xmlPath].Add("error/" + name); if (!masterEntries.Contains("error/" + name)) masterEntries.Add("error/" + name); } foreach (XmlNode str in doc.SelectNodes("/" + prefix + ":language/" + prefix + ":resolutions/" + prefix + ":resolution", nsmgr)) { string name = str.Attributes["error"].Value; entries[xmlPath].Add("resolution/" + name); if (!masterEntries.Contains("resolution/" + name)) masterEntries.Add("resolution/" + name); } } foreach (KeyValuePair<string, List<string>> kvp in entries) { Console.Write(Environment.NewLine + "Validating '" + kvp.Key + "'..."); List<string> missingEntries = new List<string>(); foreach (string masterEntry in masterEntries) { if (!kvp.Value.Contains(masterEntry)) missingEntries.Add(masterEntry); } if (missingEntries.Count > 0) { Console.Write("Missing " + missingEntries.Count + " entries!"); foreach (string me in missingEntries) Console.Write(Environment.NewLine + "'" + me + "'"); } else Console.Write("OK"); } } catch (Exception ex) { Console.WriteLine(ex); } Console.WriteLine(); }
public MessageProvider(IXmlDocumentProvider xmlDocumentProvider, ILogger logger) { this.xmlDocumentProvider = xmlDocumentProvider; this.logger = logger; }
static IValidationSerializer GetSerializer(IXmlDocumentProvider docProvider) { string format = "Text"; if (_Arguments.Contains(_FormatArgument)) format = _Arguments[_FormatArgument].Value; Type type = Type.GetType("DDay.iCal.Validator.Serialization." + format + "ValidationSerializer, DDay.iCal.Validator", false, true); if (type != null) { ConstructorInfo ci = type.GetConstructor(Type.EmptyTypes); if (ci != null) return ci.Invoke(new object[0]) as IValidationSerializer; else { ci = type.GetConstructor(new Type[] { typeof(IXmlDocumentProvider) }); if (ci != null) return ci.Invoke(new object[] { docProvider }) as IValidationSerializer; } } return null; }
static public bool Initialize(IXmlDocumentProvider docProvider, bool forceEnglishOnNotFound) { _XmlDocumentProvider = docProvider; _IsInitialized = EnsureXmlDocument(); if (forceEnglishOnNotFound && !_IsInitialized) { _LanguageIdentifiers = new string[] { "en-US", "en" }; _IsInitialized = EnsureXmlDocument(); } return _IsInitialized; }
public XmlValidationSerializer( IXmlDocumentProvider docProvider) { XmlDocProvider = docProvider; }
static public bool Initialize(IXmlDocumentProvider docProvider, string language) { ParseLanguageIdentifiers(language); return Initialize(docProvider, false); }
static void ValidateFile(string filename, IXmlDocumentProvider docProvider, IValidationRuleset selectedRuleset) { IValidationSerializer serializer = GetSerializer(docProvider); bool needsMoreArguments = false; if (serializer != null) { string iCalText = null; long byteCount = 0; if (selectedRuleset != null) { serializer.Ruleset = selectedRuleset; // Load the calendar from a local file Console.Write(ResourceManager.GetString("loadingCalendar")); FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read); if (fs != null) { // Get the calendar path so it can be reported later _CalendarPath = Path.GetFullPath(filename); StreamReader sr = new StreamReader(fs); byteCount = fs.Length; iCalText = sr.ReadToEnd(); sr.Close(); } Console.WriteLine(ResourceManager.GetString("Done")); if (iCalText == null) { throw new Exception(ResourceManager.GetString("calendarNotFound")); } else { RulesetValidator rulesetValidator = new RulesetValidator(ResourceManager, selectedRuleset, iCalText); if (rulesetValidator != null) { Console.Write(string.Format( ResourceManager.GetString("validatingCalendar"), ResourceManager.GetString(selectedRuleset.NameString) )); serializer.ValidationResults = rulesetValidator.Validate(); // Set the original text for the validation serializer.ValidationResults.CalendarPath = _CalendarPath; serializer.ValidationResults.CalendarText = iCalText; serializer.ValidationResults.ByteCount = byteCount; Console.WriteLine(ResourceManager.GetString("done")); } } Stream stream; Encoding encoding; SetupStream(serializer, out stream, out encoding); try { serializer.Serialize(stream, encoding, permalink: ""); } finally { stream.Close(); } } } }
static public bool Initialize(IXmlDocumentProvider docProvider, string language) { ParseLanguageIdentifiers(language); return(Initialize(docProvider, false)); }
static void SchemaTest(IXmlDocumentProvider docProvider) { Console.WriteLine("Performing schema validation against XML files contained in icalvalidSchema..."); try { List <string> filesToValidate = new List <string>(); List <string> xsdFiles = new List <string>(); foreach (string path in docProvider) { if (path.EndsWith(".xml")) { filesToValidate.Add(path); } else if (path.EndsWith(".xsd")) { xsdFiles.Add(path); } } List <StringReader> xsdContents = new List <StringReader>(); foreach (string xsdFilepath in xsdFiles) { xsdContents.Add(new StringReader(docProvider.LoadXml(xsdFilepath))); } XmlSchemaSet sc = new XmlSchemaSet(); foreach (StringReader sr in xsdContents) { sc.Add(XmlSchema.Read(sr, null)); } foreach (string xmlPath in filesToValidate) { Console.Write(Environment.NewLine + "Validating '" + xmlPath + "'..."); string xmlText = docProvider.LoadXml(xmlPath); int errors = 0; bool needsNewline = true; XmlReaderSettings readSettings = new XmlReaderSettings(); readSettings.ValidationType = ValidationType.Schema; readSettings.Schemas.Add(sc); readSettings.ConformanceLevel = ConformanceLevel.Document; readSettings.ValidationEventHandler += new ValidationEventHandler( delegate(object s, ValidationEventArgs e) { errors++; if (needsNewline) { Console.WriteLine(); needsNewline = false; } Console.Write(Environment.NewLine + e.Message + " (line " + e.Exception.LineNumber + " col " + e.Exception.LinePosition + ")"); } ); XmlReader reader = XmlReader.Create(new StringReader(xmlText), readSettings); while (reader.Read()) { } reader.Close(); if (errors > 0) { Console.WriteLine( Environment.NewLine + Environment.NewLine + (errors == 1 ? "There was 1 error" : "There were " + errors + " errors") + " in '" + xmlPath + "'; please correct before using this file."); } else { Console.Write("OK."); } } } catch (Exception ex) { Console.WriteLine(ex); } Console.WriteLine(); }
public XmlValidationRulesetLoader(IXmlDocumentProvider docProvider) { _DocumentProvider = docProvider; }
static void SchemaTest(IXmlDocumentProvider docProvider) { Console.WriteLine("Performing schema validation against XML files contained in icalvalidSchema..."); try { List<string> filesToValidate = new List<string>(); List<string> xsdFiles = new List<string>(); foreach (string path in docProvider) { if (path.EndsWith(".xml")) filesToValidate.Add(path); else if (path.EndsWith(".xsd")) xsdFiles.Add(path); } List<StringReader> xsdContents = new List<StringReader>(); foreach (string xsdFilepath in xsdFiles) xsdContents.Add(new StringReader(docProvider.LoadXml(xsdFilepath))); XmlSchemaSet sc = new XmlSchemaSet(); foreach (StringReader sr in xsdContents) sc.Add(XmlSchema.Read(sr, null)); foreach (string xmlPath in filesToValidate) { Console.Write(Environment.NewLine + "Validating '" + xmlPath + "'..."); try { string xmlText = docProvider.LoadXml(xmlPath); int errors = 0; bool needsNewline = true; XmlReaderSettings readSettings = new XmlReaderSettings(); readSettings.ValidationType = ValidationType.Schema; readSettings.Schemas.Add(sc); readSettings.ConformanceLevel = ConformanceLevel.Document; readSettings.ValidationEventHandler += new ValidationEventHandler( delegate(object s, ValidationEventArgs e) { errors++; if (needsNewline) { Console.WriteLine(); needsNewline = false; } Console.Write(Environment.NewLine + e.Message + " (line " + e.Exception.LineNumber + " col " + e.Exception.LinePosition + ")"); } ); XmlReader reader = XmlReader.Create(new StringReader(xmlText), readSettings); while (reader.Read()) { } reader.Close(); if (errors > 0) { Console.WriteLine( Environment.NewLine + Environment.NewLine + (errors == 1 ? "There was 1 error" : "There were " + errors + " errors") + " in '" + xmlPath + "'; please correct before using this file."); } else { Console.Write("OK."); } } catch { Console.Write("Error loading file."); } } } catch (Exception ex) { Console.WriteLine(ex); } Console.WriteLine(); }
static IValidationRuleset LoadRuleset(IXmlDocumentProvider docProvider) { // Load some rulesets XmlValidationRulesetLoader loader = new XmlValidationRulesetLoader(docProvider); List<IValidationRuleset> rulesets = new List<IValidationRuleset>(loader.Load()); // Determine a validation ruleset to use string validatorName = "Strict_2_0"; if (_Arguments.Contains(_ValidatorArgument)) validatorName = _Arguments[_ValidatorArgument].Value; // Select the ruleset IValidationRuleset selectedRuleset = rulesets.Find( delegate(IValidationRuleset rs) { return string.Equals(rs.Name, validatorName, StringComparison.CurrentCultureIgnoreCase); } ); return selectedRuleset; }
static void SelfTest(IXmlDocumentProvider docProvider, IValidationRuleset selectedRuleset) { IValidationSerializer serializer = GetSerializer(docProvider); if (serializer != null) { Stream stream; Encoding encoding; SetupStream(serializer, out stream, out encoding); if (selectedRuleset != null) { serializer.Ruleset = selectedRuleset; Console.WriteLine(string.Format( ResourceManager.GetString("performingSelfTest"), ResourceManager.GetString(selectedRuleset.NameString)) ); RulesetValidator validator = new RulesetValidator(ResourceManager, selectedRuleset); validator.TestProgress += delegate(object sender, TestProgressEventArgs e) { Console.CursorLeft = 0; Console.Write( string.Format( ResourceManager.GetString("testProgress"), e.Passed + e.Failed + e.NotRun, e.TotalTests ) ); }; serializer.TestResults = validator.Test(); } try { serializer.Serialize(stream, encoding, permalink:""); } finally { stream.Close(); } // Open the output file, if requested OpenOutputFile(serializer); } }
static void ValidateFile(IXmlDocumentProvider docProvider, IValidationRuleset selectedRuleset) { IValidationSerializer serializer = GetSerializer(docProvider); bool needsMoreArguments = false; if (serializer != null) { string iCalText = null; long byteCount = 0; if (selectedRuleset != null) { serializer.Ruleset = selectedRuleset; if (_Arguments.Contains(_FileArgument)) { // Load the calendar from a local file Console.Write(ResourceManager.GetString("loadingCalendar")); FileStream fs = new FileStream(_Arguments[_FileArgument].Value, FileMode.Open, FileAccess.Read); if (fs != null) { // Get the calendar path so it can be reported later _CalendarPath = Path.GetFullPath(_Arguments[_FileArgument].Value); StreamReader sr = new StreamReader(fs); byteCount = fs.Length; iCalText = sr.ReadToEnd(); sr.Close(); } Console.WriteLine(ResourceManager.GetString("Done")); } else if (_Arguments.Contains(_UriArgument)) { // Load the calendar from a Uri Console.Write(ResourceManager.GetString("loadingCalendar")); Uri uri = new Uri(_Arguments[_UriArgument].Value); string username = null, password = null; // Determine if credentials were included in the Uri // NOTE: this is not recommended practice for numerous // security reasons. if (!string.IsNullOrEmpty(uri.UserInfo)) { // Extract the embedded credentials from the Uri string[] parts = uri.UserInfo.Split(':'); if (parts.Length == 2) { username = parts[0]; password = parts[1]; } } if (_Arguments.Contains(_UsernameArgument)) { username = _Arguments[_UsernameArgument].Value; if (_Arguments.Contains(_PasswordArgument)) password = _Arguments[_PasswordArgument].Value; } WebClient client = new WebClient(); if (username != null && password != null) client.Credentials = new System.Net.NetworkCredential(username, password); // Get the calendar path so it can be reported later _CalendarPath = uri.OriginalString; iCalText = client.DownloadString(uri); byteCount = client.Encoding.GetByteCount(iCalText); Console.WriteLine(ResourceManager.GetString("Done")); } else { needsMoreArguments = true; } if (needsMoreArguments) { WriteDescription(); } else { if (iCalText == null) { throw new Exception(ResourceManager.GetString("calendarNotFound")); } else { RulesetValidator rulesetValidator = new RulesetValidator(ResourceManager, selectedRuleset, iCalText); if (rulesetValidator != null) { Console.Write(string.Format( ResourceManager.GetString("validatingCalendar"), ResourceManager.GetString(selectedRuleset.NameString) )); serializer.ValidationResults = rulesetValidator.Validate(); // Set the original text for the validation serializer.ValidationResults.CalendarPath = _CalendarPath; serializer.ValidationResults.CalendarText = iCalText; serializer.ValidationResults.ByteCount = byteCount; Console.WriteLine(ResourceManager.GetString("done")); } } Stream stream; Encoding encoding; SetupStream(serializer, out stream, out encoding); try { serializer.Serialize(stream, encoding, permalink: ""); } finally { stream.Close(); } // Open the output file, if requested OpenOutputFile(serializer); } } } }
static void SetupLanguage(IXmlDocumentProvider docProvider) { bool foundLanguage = false; // Initialize our resource manager with our current culture foundLanguage = ResourceManager.Initialize(docProvider, false); if (!foundLanguage) { Console.WriteLine("Could not find the selected language; using English instead..."); // Force initialization to English ResourceManager.Initialize(docProvider, true); } }