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));
        }
示例#3
0
        //
        // 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));
        }