Updated the FileViewer form to populate the listing of files and performs pattern matching based on the folder group's pattern regex.

This commit is contained in:
Admin
2020-11-10 23:20:41 -06:00
parent 8abded6731
commit cb0737954a
5 changed files with 176 additions and 5 deletions
+93 -5
View File
@@ -3,8 +3,10 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -12,18 +14,20 @@ namespace DataOrganizer
{
public partial class FileViewer : Form
{
private List<DB.Profile> Profiles { get; } = new List<DB.Profile>();
private Dictionary<string, DB.Profile> Profiles { get; } = new Dictionary<string, DB.Profile>();
private Dictionary<string, DB.FolderGroup> FolderGroups { get; } = new Dictionary<string, DB.FolderGroup>();
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
{
}
}
}