void ValidatePackage() { PackageDetails details = store.LoadPackageFromStore(Location); if (details != null) { Warnings = details.Warnings; Id = details.PackageId; } else { PackageValidatorSettings settings = new PackageValidatorSettings(ValidationBehavior.LogWarning, ValidationBehavior.None, ValidationBehavior.Enforce, ValidationBehavior.LogWarning); ValidationResults log = PackageValidator.Validate(reader, settings); if (log.HasErrors) { // Shouldn't have any since enforcing errors. throw new SafeToDisplayException(log, culture.Format(culture.Resources.PackageNotValid, string.Empty)); } else if (log.HasWarnings) { using (System.Xml.XmlReader xmlLog = log.ToXml()) { Warnings = LearningStoreXml.CreateAndLoad(xmlLog); } } } }
public static List <string> Validate(string path, out bool valid) { var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read); var reader = PackageReader.Create(stream); valid = true; var settings = new PackageValidatorSettings( ValidationBehavior.LogWarning, ValidationBehavior.LogWarning, ValidationBehavior.LogError, ValidationBehavior.LogWarning); ValidationResults results; var messages = new List <string>(); try { results = Microsoft.LearningComponents.PackageValidator.Validate(reader, settings); } catch (InvalidPackageException ex) { messages.Add(string.Format("Package is invalid.{0}", ex.Message)); valid = false; reader.Dispose(); stream.Close(); return(messages); } foreach (var result in results.Results) { if (result.IsError) { valid = false; messages.Add(string.Format("MLC Error: {0}", result.Message)); } else { messages.Add(string.Format("SCORM Warning: {0}", result.Message)); } } if (messages.Count == 0) { messages.Add("Package is valid."); } reader.Dispose(); stream.Close(); return(messages); }
public static List<string> Validate(string path, out bool valid) { var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read); var reader = PackageReader.Create(stream); valid = true; var settings = new PackageValidatorSettings( ValidationBehavior.LogWarning, ValidationBehavior.LogWarning, ValidationBehavior.LogError, ValidationBehavior.LogWarning); ValidationResults results; var messages = new List<string>(); try { results = Microsoft.LearningComponents.PackageValidator.Validate(reader, settings); } catch (InvalidPackageException ex) { messages.Add(string.Format("Package is invalid.{0}", ex.Message)); valid = false; reader.Dispose(); stream.Close(); return messages; } foreach (var result in results.Results) { if (result.IsError) { valid = false; messages.Add(string.Format("MLC Error: {0}", result.Message)); } else { messages.Add(string.Format("SCORM Warning: {0}", result.Message)); } } if (messages.Count == 0) { messages.Add("Package is valid."); } reader.Dispose(); stream.Close(); return messages; }
/// <summary> /// Returns a reader for the manifest of the package. /// </summary> /// <param name="manifestSettings">The <Typ>ManifestReaderSettings</Typ> to use when parsing the /// manifest. Cannot be null.</param> /// <param name="packageValidatorSettings">The <Typ>PackageValidatorSettings</Typ> to use when parsing the /// manifest. Cannot be null.</param> /// <param name="logReplacement">Write message that 'x was replaced by y' when the <Typ>ManifestReaderSettings</Typ> /// indicate to fix a value.</param> /// <param name="log">Optional log in which to put warnings and errors. Can be null.</param> /// <remarks> /// Each call to this creates a new <Typ>ManifestReader</Typ> instance. /// </remarks> /// <exception cref="XmlException">An error was encountered in the XML data.</exception> /// <exception cref="InvalidPackageException">There is no imsmanifest.xml in the package, /// or the <manifest> node in the imsmanifest.xml is missing, /// or <c>ManifestReaderSettings.FixScormRequirementViolations=false</c> is set and the xml:base attribute on the <manifest> /// node is invalid.</exception> internal ManifestReader GetManifestReader(ManifestReaderSettings manifestSettings, PackageValidatorSettings packageValidatorSettings, bool logReplacement, ValidationResults log) { XPathNavigator manifest = CreateManifestNavigator(); return new ManifestReader(this, manifestSettings, packageValidatorSettings, logReplacement, log, manifest); }
/// <summary> /// Validate the package selected by the user. /// </summary> /// void ValidateSelectedPackage() { // do nothing if no package is selected if (packageListBox.SelectedIndex < 0) { return; } // execute the remainder of this method with a wait cursor displayed Cursor = Cursors.WaitCursor; try { // set <filePath> to the path to the package the user selected FileListItem fileListItem = (FileListItem)packageListBox.SelectedItem; string filePath = fileListItem.FilePath; // empty <logTextBox>, and add the file name logTextBox.Clear(); logTextBox.AppendText(String.Format("Validating: {0}\r\n\r\n", filePath)); // validate the package using (FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)) { bool anyMessages = false; using (PackageReader packageReader = PackageReader.Create(stream)) { // set package validator settings based on the setting of the <additionalScormWarningsCheckBox> control PackageValidatorSettings settings; if (additionalScormWarningsCheckBox.Checked) { // perform the same validation as SLK, plus look for additional SCORM issues settings = new PackageValidatorSettings( ValidationBehavior.LogWarning, ValidationBehavior.LogWarning, ValidationBehavior.LogError, ValidationBehavior.LogWarning); } else { // perform the same validation as SLK settings = new PackageValidatorSettings( ValidationBehavior.LogWarning, ValidationBehavior.None, ValidationBehavior.LogError, ValidationBehavior.LogWarning); } // validate the package; set <results> to the list of results ValidationResults results; try { results = PackageValidator.Validate(packageReader, settings); } catch (InvalidPackageException ex) { logTextBox.AppendText(String.Format("Package is invalid.\r\n\r\n{0}", ex.Message)); return; } // display <results> foreach (ValidationResult result in results.Results) { string message; if (result.IsError) { message = String.Format("MLC Error: {0}\r\n\r\n", result.Message); } else { message = String.Format("SCORM Warning: {0}\r\n\r\n", result.Message); } logTextBox.AppendText(message); anyMessages = true; } } // if there were no messages, give feedback to that effect to the user if (!anyMessages) { logTextBox.AppendText("Package is valid."); } } } finally { Cursor = Cursors.Default; } }