Tested first run

This commit is contained in:
2022-08-29 19:30:36 -07:00
parent 659e0e39bf
commit 753eeaba2a
26 changed files with 711 additions and 458 deletions

View File

@ -114,6 +114,10 @@ public class A_Property
Shared.Models.Property result;
if (_Log is null)
throw new NullReferenceException(nameof(_Log));
if (filteredSourceDirectoryFileHolder.CreationTime is null)
throw new NullReferenceException(nameof(filteredSourceDirectoryFileHolder.CreationTime));
if (filteredSourceDirectoryFileHolder.LastWriteTime is null)
throw new NullReferenceException(nameof(filteredSourceDirectoryFileHolder.LastWriteTime));
long ticks;
byte[] bytes;
string value;
@ -275,7 +279,7 @@ public class A_Property
fileLength = 0;
else
fileLength = filteredSourceDirectoryFileHolder.Length.Value;
result = new(filteredSourceDirectoryFileHolder.CreationTime, dateTime, dateTimeDigitized, dateTimeOriginal, fileLength, gpsDateStamp, height, id, indices.ToArray(), filteredSourceDirectoryFileHolder.LastWriteTime, make, model, orientation, width);
result = new(filteredSourceDirectoryFileHolder.CreationTime.Value, dateTime, dateTimeDigitized, dateTimeOriginal, fileLength, gpsDateStamp, height, id, indices.ToArray(), filteredSourceDirectoryFileHolder.LastWriteTime.Value, make, model, orientation, width);
return result;
}

View File

@ -147,19 +147,15 @@ public class Container
private static Shared.Models.Container[] GetContainers(Configuration configuration, bool firstRun, string aPropertySingletonDirectory, List<(int, string, FileHolder[], int)> fileHolderGroupCollection, List<(int, string, List<(string, Shared.Models.Property?)>, int)> collectionFromJson)
{
Shared.Models.Container[] results;
Item item;
int length;
int additional;
string inferred;
string fileName;
string extension;
List<Item> items;
string[] existing;
string keyWithJson;
string relativePath;
string? directoryName;
string extensionLowered;
FileHolder keyFileHolder;
string? fileNameWithoutExtension;
bool isValidImageFormatExtension;
Shared.Models.Container container;
List<string> keySourceDirectories;
@ -170,22 +166,8 @@ public class Container
{
foreach (FileHolder sourceDirectoryFileHolder in sourceDirectoryFileHolderCollection)
{
relativePath = Shared.Models.Stateless.Methods.IPath.GetRelativePath(sourceDirectoryFileHolder.FullName, length);
relativePath = Shared.Models.Stateless.Methods.IPath.GetRelativePath(sourceDirectoryFileHolder.FullName, length, forceExtensionToLower: true);
fileHolderKeyValuePairs.Add(relativePath, new(sourceDirectory, sourceDirectoryFileHolder));
extension = Path.GetExtension(sourceDirectoryFileHolder.FullName);
extensionLowered = Path.GetExtension(sourceDirectoryFileHolder.FullName).ToLower();
if (extension != extensionLowered)
{
directoryName = Path.GetDirectoryName(sourceDirectoryFileHolder.FullName);
if (string.IsNullOrEmpty(directoryName))
continue;
fileNameWithoutExtension = Path.GetFileNameWithoutExtension(sourceDirectoryFileHolder.FullName);
if (string.IsNullOrEmpty(fileNameWithoutExtension))
continue;
fileName = Path.Combine(directoryName, $"{fileNameWithoutExtension}{extensionLowered}");
relativePath = Shared.Models.Stateless.Methods.IPath.GetRelativePath(fileName, length);
fileHolderKeyValuePairs.Add(relativePath, new(sourceDirectory, sourceDirectoryFileHolder));
}
}
}
length = aPropertySingletonDirectory.Length;
@ -197,7 +179,7 @@ public class Container
keySourceDirectories = new();
foreach ((string sourceDirectoryFile, Shared.Models.Property? property) in collection)
{
keyWithJson = Shared.Models.Stateless.Methods.IPath.GetRelativePath(sourceDirectoryFile, length);
keyWithJson = Shared.Models.Stateless.Methods.IPath.GetRelativePath(sourceDirectoryFile, length, forceExtensionToLower: false);
relativePath = keyWithJson[..^5];
if (!fileHolderKeyValuePairs.ContainsKey(relativePath))
{
@ -207,7 +189,8 @@ public class Container
continue;
keySourceDirectories.Add(string.Concat(keyFileHolder.DirectoryName));
isValidImageFormatExtension = configuration.ValidImageFormatExtensions.Contains(keyFileHolder.ExtensionLowered);
items.Add(new(sourceDirectoryFile, relativePath, keyFileHolder, isValidImageFormatExtension, property, true, null));
item = new(sourceDirectoryFile, relativePath, keyFileHolder, isValidImageFormatExtension, property, true, null);
items.Add(item);
}
else
{
@ -219,11 +202,12 @@ public class Container
continue;
isValidImageFormatExtension = configuration.ValidImageFormatExtensions.Contains(keyFileHolder.ExtensionLowered);
if (property?.Id is null || property?.Width is null || property?.Height is null)
items.Add(new(sourceDirectoryFile, relativePath, keyFileHolder, isValidImageFormatExtension, property, false, null));
item = new(sourceDirectoryFile, relativePath, keyFileHolder, isValidImageFormatExtension, property, false, null);
else if (configuration.PropertiesChangedForProperty || property.LastWriteTime != keyFileHolder.LastWriteTime || property.FileSize != keyFileHolder.Length)
items.Add(new(sourceDirectoryFile, relativePath, keyFileHolder, isValidImageFormatExtension, property, false, true));
item = new(sourceDirectoryFile, relativePath, keyFileHolder, isValidImageFormatExtension, property, false, true);
else
items.Add(new(sourceDirectoryFile, relativePath, keyFileHolder, isValidImageFormatExtension, property, false, false));
item = new(sourceDirectoryFile, relativePath, keyFileHolder, isValidImageFormatExtension, property, false, false);
items.Add(item);
}
}
if (items.Any())
@ -240,7 +224,7 @@ public class Container
items = new();
foreach (FileHolder sourceDirectoryFileHolder in sourceDirectoryFileHolderCollection)
{
relativePath = Shared.Models.Stateless.Methods.IPath.GetRelativePath(sourceDirectoryFileHolder.FullName, length);
relativePath = Shared.Models.Stateless.Methods.IPath.GetRelativePath(sourceDirectoryFileHolder.FullName, length, forceExtensionToLower: true);
if (!fileHolderKeyValuePairs.ContainsKey(relativePath))
continue;
if (!fileHolderKeyValuePairs.Remove(relativePath))
@ -248,7 +232,13 @@ public class Container
if (sourceDirectoryFileHolder.ExtensionLowered is ".json")
continue;
isValidImageFormatExtension = configuration.ValidImageFormatExtensions.Contains(sourceDirectoryFileHolder.ExtensionLowered);
items.Add(new(relativePath, sourceDirectoryFileHolder.FullName, sourceDirectoryFileHolder, isValidImageFormatExtension, null, null, null));
if (firstRun)
item = new(sourceDirectoryFileHolder.FullName, relativePath, sourceDirectoryFileHolder, isValidImageFormatExtension, null, null, null);
else if (!isValidImageFormatExtension)
item = new(sourceDirectoryFileHolder.FullName, relativePath, sourceDirectoryFileHolder, isValidImageFormatExtension, null, null, null);
else
item = new(sourceDirectoryFileHolder.FullName, relativePath, sourceDirectoryFileHolder, isValidImageFormatExtension, null, null, null);
items.Add(item);
}
if (items.Any())
{
@ -261,9 +251,11 @@ public class Container
{
additional = 0;
container = keyValuePairs[sourceDirectory];
length = items.Count;
existing = (from l in container.Items select l.ImageFileHolder?.FullName).ToArray();
foreach (Item item in items)
for (int i = 0; i < length; i++)
{
item = items[i];
if (item.ImageFileHolder is null || existing.Contains(item.ImageFileHolder.FullName))
continue;
additional += 1;