Exemple #1
0
        private void ExecuteFindAllButton_OnClick(object senderIsButton, RoutedEventArgs eventArgs)
        {
            const string fileExtensionPattern = "*.dbf";
            var          sourceFolderPath     = SourcePathTextBox.Text.Trim();

            FilesRichTextBox.Document.Blocks.Clear();
            if (string.IsNullOrWhiteSpace(sourceFolderPath))
            {
                const string message = PageLiterals.ValidationRootPathNotSpecified;
                MessageBox.Show(message, PageLiterals.HeaderError,
                                MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                return;
            }
            if (!Directory.Exists(sourceFolderPath))
            {
                var message = string.Format(PageLiterals.ValidationDirectoryInvalidPattern, sourceFolderPath);
                MessageBox.Show(message, PageLiterals.HeaderError,
                                MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                return;
            }
            var enumerable = SafeGetDirectoryFiles(sourceFolderPath, fileExtensionPattern,
                                                   SearchOption.AllDirectories);
            var dbfFiles = enumerable as string[] ?? enumerable.ToArray();

            if (!dbfFiles.Any())
            {
                MessageBox.Show(PageLiterals.ValidationDbfNotFound, PageLiterals.HeaderInformationOrWarning,
                                MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);
                return;
            }

            var fileDescriptions = new List <FileDescription>(dbfFiles.Length);

            foreach (var dbfFile in dbfFiles)
            {
                if (!IsAccessToFile(dbfFile))
                {
                    continue;
                }
                var tableTypeFlag     = ReadOneByteFromFile(dbfFile, 0);
                var tableEncodingFlag = ReadOneByteFromFile(dbfFile, 29);
                if (!TableTypes.ContainsKey(tableTypeFlag) || !TableEncodings.ContainsKey(tableEncodingFlag))
                {
                    var errorDescription = new FileDescription
                    {
                        Path          = dbfFile,
                        TypeFlag      = tableTypeFlag,
                        Db            = "error",
                        DbDescription = "error",
                        EncodingFlag  = tableEncodingFlag,
                        EncodingCode  = "error",
                        EncodingName  = "error"
                    };
                    fileDescriptions.Add(errorDescription);

                    FilesRichTextBox.AppendText(dbfFile);
                    FilesRichTextBox.AppendText(Environment.NewLine);
                    continue;
                }
                var tableTypeDescription     = TableTypes[tableTypeFlag];
                var tableEncodingDescription = TableEncodings[tableEncodingFlag];
                var description = new FileDescription
                {
                    Path          = dbfFile,
                    TypeFlag      = tableTypeFlag,
                    Db            = tableTypeDescription.Item1,
                    DbDescription = tableTypeDescription.Item2,
                    EncodingFlag  = tableEncodingFlag,
                    EncodingCode  = tableEncodingDescription.Item1,
                    EncodingName  = tableEncodingDescription.Item2
                };
                fileDescriptions.Add(description);

                FilesRichTextBox.AppendText(dbfFile);
                FilesRichTextBox.AppendText(Environment.NewLine);
            }
            MainDataGrid.ItemsSource = fileDescriptions;
            RefreshCountFoundedAndSetActivityExportButton();
            SaveLastPath();
        }