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);
                }
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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();
                }
            }
        }
Example #5
0
        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();
        }
Example #8
0
 public CorpusMigrator(
     IXmlDocumentProvider xmlDocumentProvider,
     ILogger logger,
     IVerseAnalysisWriteRepository verseAnalysisWriteRepository)
 {
     XmlDocument = xmlDocumentProvider.Document;
     Logger      = logger;
     VerseAnalysisWriteRepository = verseAnalysisWriteRepository;
 }
Example #9
0
 public QuranMigrator(
     ILogger logger,
     IXmlDocumentProvider xmlDocumentProvider,
     IVerseWriteRepository verseWriteRepository)
 {
     Logger               = logger;
     XmlDocument          = xmlDocumentProvider.Document;
     VerseWriteRepository = verseWriteRepository;
 }
Example #10
0
 public XmlValidationSerializer(
     IXmlDocumentProvider docProvider,
     IValidationRuleset ruleset,
     IValidationResult[] validationResults) :
     this(docProvider)
 {
     Ruleset = ruleset;
     ValidationResults = validationResults;
 }
Example #11
0
 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;
 }
Example #14
0
 public CommentaryMigrator(
     ILogger logger,
     IXmlDocumentProvider xmlDocumentProvider,
     ICommentatorWriteRepository commentatorWriteRepository,
     ICommentaryWriteRepository commentaryWriteRepository)
 {
     Logger      = logger;
     XmlDocument = xmlDocumentProvider.Document;
     CommentatorWriteRepository = commentatorWriteRepository;
     CommentaryWriteRepository  = commentaryWriteRepository;
 }
Example #15
0
        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);
        }
Example #16
0
        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);
            }
        }
Example #17
0
 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;
 }
Example #18
0
        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();
                }
            }            
        }
Example #19
0
        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);                
            }
        }
Example #20
0
        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;
        }
Example #21
0
        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);
        }
Example #22
0
        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);
            }
        }
Example #23
0
        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();
                }
            }
        }
Example #24
0
        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();
                }
            }            
        }
Example #25
0
        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();
                }
            }
        }
Example #26
0
        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();
                }
            }
        }
Example #27
0
        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();
        }
Example #28
0
        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();
        }
Example #29
0
 public MessageProvider(IXmlDocumentProvider xmlDocumentProvider,
     ILogger logger)
 {
     this.xmlDocumentProvider = xmlDocumentProvider;
     this.logger = logger;
 }
Example #30
0
        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;
        }
Example #31
0
        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;
        }
Example #32
0
 public XmlValidationSerializer(
     IXmlDocumentProvider docProvider)
 {
     XmlDocProvider = docProvider;
 }
Example #33
0
 static public bool Initialize(IXmlDocumentProvider docProvider, string language)
 {
     ParseLanguageIdentifiers(language);
     return Initialize(docProvider, false);
 }
Example #34
0
        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();
                    }
                }
            }
        }
Example #35
0
 static public bool Initialize(IXmlDocumentProvider docProvider, string language)
 {
     ParseLanguageIdentifiers(language);
     return(Initialize(docProvider, false));
 }
Example #36
0
        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();
        }
Example #37
0
 public XmlValidationSerializer(
     IXmlDocumentProvider docProvider)
 {
     XmlDocProvider = docProvider;
 }
 public XmlValidationRulesetLoader(IXmlDocumentProvider docProvider)
 {
     _DocumentProvider = docProvider;
 }
Example #39
0
        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();
        }
Example #40
0
        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;
        }
Example #41
0
        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);
            }
        }
Example #42
0
        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);
                    }
                }
            }
        }
 public XmlValidationRulesetLoader(IXmlDocumentProvider docProvider)
 {
     _DocumentProvider = docProvider;
 } 
Example #44
0
        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);
            }
        }