Example #1
0
        /// <summary>
        /// Validate a package according to specific validation settings.
        /// </summary>
        /// <remarks>
        /// The <Typ>ValidationResults</Typ> log will contain the warnings and errors encountered during the package
        /// validation process, up to any <Typ>InvalidPackageException</Typ> that is thrown during the process, at
        /// which time the validation process ends.
        /// </remarks>
        /// <returns>
        /// A <Typ>ValidationResults</Typ> log that contains the warnings and errors encountered during the package
        /// validation process.
        /// </returns>
        /// <param name="packageValidatorSettings">The <c>PackageValidatorSettings</c> determining which
        /// validation rules should be applied during the validation process.</param>
        /// <param name="packageReader">The package to be valdated.</param>
        /// <exception cref="ArgumentNullException">Thrown if the <paramref name="packageReader"/> is null.</exception>
        /// <exception cref="InvalidPackageException">Thrown if the validation process encounters errors in the package
        /// for which the <paramref name="packageValidatorSettings"/> have a <Typ>ValidationBehavior</Typ> value
        /// of <c>ValidationBehavior.Enforce</c>.</exception>
        public static ValidationResults Validate(PackageReader packageReader, PackageValidatorSettings packageValidatorSettings)
        {
            ValidatorResources.Culture = LocalizationManager.GetCurrentCulture();

            Utilities.ValidateParameterNonNull("packageReader", packageReader);
            Utilities.ValidateParameterNonNull("packageValidatorSettings", packageValidatorSettings);

            ValidationResults log = Validate(packageReader);

            if (log.HasErrors || (packageValidatorSettings.ScormRequirementValidation == ValidationBehavior.None &&
                                  packageValidatorSettings.ScormRecommendationValidation == ValidationBehavior.None &&
                                  packageValidatorSettings.LrmRequirementValidation == ValidationBehavior.None &&
                                  packageValidatorSettings.MlcRequirementValidation == ValidationBehavior.None))
            {
                return(log);
            }

            ManifestReaderSettings manifestSettings = new ManifestReaderSettings(true, true);
            LrmSettings            lrmSettings      = new LrmSettings(true);

            ManifestReader manifestReader;

            PackageValidator.Validate(packageValidatorSettings, packageReader, false, log, manifestSettings, lrmSettings, out manifestReader);

            return(log);
        }
        /// <summary>
        /// Validate a package according to specific validation settings.
        /// </summary>
        /// <remarks>
        /// The <Typ>ValidationResults</Typ> log will contain the warnings and errors encountered during the package
        /// validation process, up to any <Typ>InvalidPackageException</Typ> that is thrown during the process, at
        /// which time the validation process ends.
        /// </remarks>
        /// <returns>
        /// A <Typ>ValidationResults</Typ> log that contains the warnings and errors encountered during the package
        /// validation process.
        /// </returns>
        /// <param name="packageValidatorSettings">The <c>PackageValidatorSettings</c> determining which
        /// validation rules should be applied during the validation process.</param>
        /// <param name="packageReader">The package to be valdated.</param>
        /// <exception cref="ArgumentNullException">Thrown if the <paramref name="packageReader"/> is null.</exception>
        /// <exception cref="InvalidPackageException">Thrown if the validation process encounters errors in the package
        /// for which the <paramref name="packageValidatorSettings"/> have a <Typ>ValidationBehavior</Typ> value
        /// of <c>ValidationBehavior.Enforce</c>.</exception>
        public static ValidationResults Validate(PackageReader packageReader, PackageValidatorSettings packageValidatorSettings)
        {
            ValidatorResources.Culture = Thread.CurrentThread.CurrentCulture;;

            Utilities.ValidateParameterNonNull("packageReader", packageReader);
            Utilities.ValidateParameterNonNull("packageValidatorSettings", packageValidatorSettings);

            ValidationResults log = ValidateIsELearning(packageReader);

            if (log.HasErrors || (packageValidatorSettings.ScormRequirementValidation == ValidationBehavior.None &&
                                  packageValidatorSettings.ScormRecommendationValidation == ValidationBehavior.None &&
                                  packageValidatorSettings.LrmRequirementValidation == ValidationBehavior.None &&
                                  packageValidatorSettings.MlcRequirementValidation == ValidationBehavior.None))
            {
                return(log);
            }

            ManifestReaderSettings manifestSettings = new ManifestReaderSettings(true, true);

            ManifestReader manifestReader;
            bool           fixLrmViolations = true;

            PackageValidator.Validate(packageValidatorSettings, packageReader, false, log, manifestSettings, fixLrmViolations, out manifestReader);

            return(log);
        }