From cb0737954a54fc5a7ab467a03d22a7af181ba5a4 Mon Sep 17 00:00:00 2001 From: Admin Date: Tue, 10 Nov 2020 23:20:41 -0600 Subject: [PATCH] Updated the FileViewer form to populate the listing of files and performs pattern matching based on the folder group's pattern regex. --- .vs/DataOrganizer/v16/.suo | Bin 47616 -> 90624 bytes DataOrganizer/DB.cs | 41 +++++++++++ DataOrganizer/FileViewer.Designer.cs | 39 +++++++++++ DataOrganizer/FileViewer.cs | 98 +++++++++++++++++++++++++-- DataOrganizer/FileViewer.resx | 3 + 5 files changed, 176 insertions(+), 5 deletions(-) diff --git a/.vs/DataOrganizer/v16/.suo b/.vs/DataOrganizer/v16/.suo index b5b4d58ed2a83b3662e8132b54641464634a46af..4fb776d5857319371f995dcb629550bfa0dcfc9b 100644 GIT binary patch literal 90624 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 Profiles { get; } = new List(); + private Dictionary Profiles { get; } = new Dictionary(); + private Dictionary FolderGroups { get; } = new Dictionary(); public FileViewer() { InitializeComponent(); var db = new DB(); - Profiles = db.GetProfiles(); + var profiles = db.GetProfiles(); - foreach(var profile in Profiles) + foreach(var profile in profiles) { ProfileComboBox.Items.Add(profile.Name); + Profiles.Add(profile.Name, profile); } ProfileComboBox.SelectedIndexChanged += ProfileComboBox_SelectedIndexChanged; @@ -33,15 +37,17 @@ namespace DataOrganizer private void ProfileComboBox_SelectedIndexChanged(object sender, EventArgs e) { - var profile = Profiles[ProfileComboBox.SelectedIndex]; + var profile = Profiles[ProfileComboBox.Text]; RootFolderComboBox.Items.Clear(); + FolderGroups.Clear(); if (profile.FolderGroups.Count > 0) { foreach (var folder in profile.FolderGroups) { RootFolderComboBox.Items.Add(folder.Name); + FolderGroups.Add(folder.Name, folder); } RootFolderComboBox.SelectedIndex = 0; @@ -52,7 +58,89 @@ namespace DataOrganizer private void FolderSelectButton_Click(object sender, EventArgs e) { - + var folder = FolderGroups[RootFolderComboBox.Text]; + var db = new DB(); + + StatusLabel.Text = $"{db.GetNamingPatternById(folder.PatternId)}"; + StatusStrip.Refresh(); + } + + private void ScanRootFolderButton_Click(object sender, EventArgs e) + { + var folder = FolderGroups[RootFolderComboBox.Text]; + var db = new DB(); + var pattern = db.GetNamingPatternById(folder.PatternId); + var regex = new Regex(pattern); + PrimaryFilesTreeView.Nodes.Clear(); + + var dirs = Directory.EnumerateDirectories(folder.Path); + + foreach (var dir in dirs) + { + var dirInfo = new DirectoryInfo(dir); + PrimaryFilesTreeView.Nodes.Add(CreateNode(dirInfo, pattern)); + } + + foreach(var file in Directory.EnumerateFiles(folder.Path)) + { + var fileInfo = new FileInfo(file); + var fileNode = new TreeNode(fileInfo.Name) { Name = fileInfo.FullName }; + + if (!regex.IsMatch(fileInfo.Name)) + { + fileNode.ForeColor = Color.DarkOrange; + } + + PrimaryFilesTreeView.Nodes.Add(fileNode); + } + } + + private TreeNode CreateNode(DirectoryInfo dir, string pattern) + { + var namingViolation = false; + var node = new TreeNode(dir.Name) { Name = dir.FullName }; + var regex = new Regex(pattern); + + var files = Directory.EnumerateFiles(dir.FullName); + + foreach (var file in files) + { + var fileInfo = new FileInfo(file); + var fileNode = new TreeNode(fileInfo.Name) { Name = fileInfo.FullName }; + //var match = regex.Match(fileInfo.Name); + //var stringBuilder = new StringBuilder(); + + //if (!match.Groups[1].Success) + // stringBuilder.Append($"Failed to match {regex.GroupNameFromNumber(1)} ");//match.Groups[0].Name}"); + //if (!match.Groups[2].Success) + // stringBuilder.Append($"Failed to match {regex.GroupNameFromNumber(2)} "); + + if (!regex.IsMatch(fileInfo.Name)) + { + namingViolation = true; + fileNode.ForeColor = Color.DarkOrange; + } + + node.Nodes.Add(fileNode); + } + + if (namingViolation) node.ForeColor = Color.DarkOrange; + + var dirs = Directory.EnumerateDirectories(dir.FullName); + + foreach(var folder in dirs) + { + var child = CreateNode(new DirectoryInfo(folder), pattern); + node.ForeColor = child.ForeColor; + node.Nodes.Add(child); + } + + return node; + } + + private struct Folder + { + } } } diff --git a/DataOrganizer/FileViewer.resx b/DataOrganizer/FileViewer.resx index 6deb572..997e27f 100644 --- a/DataOrganizer/FileViewer.resx +++ b/DataOrganizer/FileViewer.resx @@ -120,4 +120,7 @@ 17, 17 + + 167, 17 + \ No newline at end of file