private void RefreshErrorList() { // Clear Rows and Columns this.listViewErrorList.Clear(); // Clear Groups this.listViewErrorList.Groups.Clear(); // Begin Update this.listViewErrorList.BeginUpdate(); // Create Groups ListViewGroup listViewGroupError = null; ListViewGroup listViewGroupWarning = null; // Add Groups if (this.buttonItemErrors.Checked) { listViewGroupError = new ListViewGroup(Resources.TEXT_ERRORS, HorizontalAlignment.Left); this.listViewErrorList.Groups.Add(listViewGroupError); } if (this.buttonItemWarnings.Checked) { listViewGroupWarning = new ListViewGroup(Resources.TEXT_WARNINGS, HorizontalAlignment.Left); this.listViewErrorList.Groups.Add(listViewGroupWarning); } // Counters int errors = 0; int warnings = 0; int counter = 0; // Add Columns ColumnHeader columnDescription = this.listViewErrorList.Columns.Add(Resources.TEXT_DESCRIPTION); // Get DiagramEnvironment Singleton DiagrammerEnvironment diagrammerEnvironment = DiagrammerEnvironment.Default; // Add Errors foreach (Error error in this.m_errors) { // Exit if Error Type is not selected. But increment counter. switch (error.ErrorType) { case ErrorType.Error: errors++; if (!this.buttonItemErrors.Checked) { continue; } break; case ErrorType.Warning: warnings++; if (!this.buttonItemWarnings.Checked) { continue; } break; default: continue; } // Increment Counter counter++; // Display Error Loading Message string message = string.Format("Loading Error {0} of {1}", counter.ToString(), this.m_errors.Count.ToString()); diagrammerEnvironment.OnProgressChanged(new ProgressEventArgs(message)); // Create New ListViewItem ListViewItemError listViewItemError = new ListViewItemError(); // Store Error listViewItemError.Error = error; // Set Item Text listViewItemError.Text = error.Description; // Set Item Tooltip listViewItemError.ToolTipText = error.Description; // Set ListViewItem Group switch (error.ErrorType) { case ErrorType.Error: listViewItemError.Group = listViewGroupError; listViewItemError.ImageKey = ErrorListDiagram.ERRORS_ITEM; break; case ErrorType.Warning: listViewItemError.Group = listViewGroupWarning; listViewItemError.ImageKey = ErrorListDiagram.WARNINGS_ITEM; break; } // Add to ListView this.listViewErrorList.Items.Add(listViewItemError); } // Update Error Count in Toolbar Button this.buttonItemErrors.Text = string.Format(Resources.TEXT_ERRORS_, errors.ToString()); this.buttonItemWarnings.Text = string.Format(Resources.TEXT_WARNINGS_, warnings.ToString()); // Adjust column widths to size of longest entry foreach (ColumnHeader column in this.listViewErrorList.Columns) { column.Width = -2; } // End Update this.listViewErrorList.EndUpdate(); // Clear Messages diagrammerEnvironment.OnProgressChanged(new ProgressEventArgs(string.Empty)); }
// // PRIVATE METHODS // private void CreateReport() { // Exit if Workspace is NULL if (this.m_workspaceName == null) { return; } // DiagrammerEnvironment diagrammerEnvironment = DiagrammerEnvironment.Default; diagrammerEnvironment.OnProgressChanged(new ProgressEventArgs("Creating Report")); // Get IWorkspace IName name = (IName)this.m_workspaceName; IWorkspace workspace = (IWorkspace)name.Open(); // Get Temporary File string filename = System.IO.Path.Combine(System.IO.Path.GetTempPath(), Guid.NewGuid().ToString("N").ToUpper() + ".xml"); // Specific XML Settings XmlWriterSettings settings = new XmlWriterSettings(); settings.Encoding = Encoding.UTF8; // Encoding.Default; settings.Indent = false; settings.NewLineHandling = NewLineHandling.Entitize; settings.OmitXmlDeclaration = true; settings.NewLineOnAttributes = false; // Create the XmlWriter object and write some content. XmlWriter writer = XmlWriter.Create(filename, settings); // <DataReport> writer.WriteStartElement("DataReport"); // IEnumDatasetName enumDatasetName1 = workspace.get_DatasetNames(esriDatasetType.esriDTAny); IDatasetName datasetName1 = enumDatasetName1.Next(); while (datasetName1 != null) { switch (datasetName1.Type) { case esriDatasetType.esriDTFeatureDataset: // <DataReport><FeatureDataset> writer.WriteStartElement("FeatureDataset"); // <DataReport><FeatureDataset><Name> writer.WriteStartElement("Name"); writer.WriteValue(datasetName1.Name); writer.WriteEndElement(); IEnumDatasetName enumDatasetName2 = datasetName1.SubsetNames; IDatasetName datasetName2 = enumDatasetName2.Next(); while (datasetName2 != null) { switch (datasetName2.Type) { case esriDatasetType.esriDTFeatureClass: // Display Message string message = string.Format("Adding <{0}>", datasetName2.Name); diagrammerEnvironment.OnProgressChanged(new ProgressEventArgs(message)); // Add Dataset this.AddDataset(writer, datasetName2); break; default: break; } datasetName2 = enumDatasetName2.Next(); } // <DataReport></FeatureDataset> writer.WriteEndElement(); break; case esriDatasetType.esriDTFeatureClass: case esriDatasetType.esriDTTable: // Display Message string message2 = string.Format("Adding <{0}>", datasetName1.Name); diagrammerEnvironment.OnProgressChanged(new ProgressEventArgs(message2)); // Add Dataset this.AddDataset(writer, datasetName1); break; default: break; } datasetName1 = enumDatasetName1.Next(); } // </DataReport> writer.WriteEndElement(); // Close Writer writer.Close(); // Set Source XML this.Xml = filename; // Fire Invalidate Event so that the Report Tabbed Document can Reload this.OnInvalidated(new EventArgs()); // Clear Messages diagrammerEnvironment.OnProgressChanged(new ProgressEventArgs(string.Empty)); }
// // PRIVATE METHODS // private void CreateReport() { // Exit if Workspace is NULL if (this._workspaceDocument == null) { return; } // DiagrammerEnvironment diagrammerEnvironment = DiagrammerEnvironment.Default; diagrammerEnvironment.OnProgressChanged(new ProgressEventArgs("Creating Report")); // Get Temporary File string filename = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N").ToUpper() + ".xml"); // Specific XML Settings XmlWriterSettings writerSettings = new XmlWriterSettings(); writerSettings.Encoding = Encoding.Default; writerSettings.Indent = false; writerSettings.NewLineHandling = NewLineHandling.Entitize; writerSettings.OmitXmlDeclaration = true; writerSettings.NewLineOnAttributes = false; // Create the XmlWriter object and write some content. this._writer = XmlWriter.Create(filename, writerSettings); // <DataReport> this._writer.WriteStartElement("XmlReport"); // Get ESRI Namespace XPathDocument document = new XPathDocument(this._workspaceDocument, XmlSpace.None); XPathNavigator navigator = document.CreateNavigator(); bool ok = navigator.MoveToFirstChild(); string esriNamespace = navigator.LookupNamespace("esri"); // Open Geodatabase Schema Document XmlDocument schemaDocument = new XmlDocument(); schemaDocument.LoadXml(Resources.FILE_GEODATABASE_EXCHANGE); // Add Namespaces to Schema Document XPathNavigator navigator2 = schemaDocument.CreateNavigator(); bool ok2 = navigator2.MoveToFirstChild(); XmlWriter writer = navigator2.CreateAttributes(); writer.WriteAttributeString("xmlns", esriNamespace); writer.WriteAttributeString("targetNamespace", esriNamespace); writer.Close(); // Load Schema Document StringReader stringReader = new StringReader(schemaDocument.OuterXml); XmlTextReader xmlTextReader = new XmlTextReader(stringReader); // Create XML Reader Settings XmlReaderSettings readerSettings = new XmlReaderSettings(); readerSettings.Schemas.Add(null, xmlTextReader); readerSettings.Schemas.Compile(); readerSettings.CheckCharacters = true; readerSettings.IgnoreComments = true; readerSettings.IgnoreWhitespace = true; readerSettings.ValidationType = ValidationType.Schema; readerSettings.XmlResolver = new XmlUrlResolver(); readerSettings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings; readerSettings.ValidationEventHandler += new ValidationEventHandler(this.ValidationEventHandler); // Load Source XML XmlTextReader txtreader = new XmlTextReader(this._workspaceDocument); // Validate Against XSL XmlReader reader = XmlReader.Create(txtreader, readerSettings); while (reader.Read()) { ; } // Close Readers xmlTextReader.Close(); stringReader.Close(); txtreader.Close(); reader.Close(); // </DataReport> this._writer.WriteEndElement(); // Close Writer this._writer.Close(); // Set Source XML this.Xml = filename; // Fire Invalidate Event so that the Report Tabbed Document can Reload this.OnInvalidated(new EventArgs()); // Clear Messages diagrammerEnvironment.OnProgressChanged(new ProgressEventArgs(string.Empty)); }