Removed SortContainers

useCeilingAverage as parameter
This commit is contained in:
2023-08-08 21:09:26 -07:00
parent 77f800d1a4
commit b3da09c757
33 changed files with 147 additions and 381 deletions

View File

@ -3,29 +3,23 @@ using System.Text.Json.Serialization;
namespace View_by_Distance.Shared.Models;
public class MappingFromFilter : Properties.IMappingFromFilter
public record MappingFromFilter(bool? IsFocusModel,
bool? IsFocusPerson,
bool? IsFocusRelativePath,
bool? InSkipCollection,
bool? IsUsed)
{
public bool? IsFocusModel { init; get; }
public bool? IsFocusPerson { init; get; }
public bool? IsFocusRelativePath { init; get; }
public bool? InSkipCollection { init; get; }
public bool? IsUsed { init; get; }
[JsonConstructor]
public MappingFromFilter(bool? isFocusModel, bool? isFocusPerson, bool? isFocusRelativePath, bool? inSkipCollection, bool? isUsed)
{
IsFocusModel = isFocusModel;
IsFocusPerson = isFocusPerson;
IsFocusRelativePath = isFocusRelativePath;
InSkipCollection = inSkipCollection;
IsUsed = isUsed;
}
public override string ToString()
{
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
string result = JsonSerializer.Serialize(this, MappingFromFilterGenerationContext.Default.MappingFromFilter);
return result;
}
}
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(MappingFromFilter))]
public partial class MappingFromFilterGenerationContext : JsonSerializerContext
{
}

View File

@ -3,38 +3,22 @@ using System.Text.Json.Serialization;
namespace View_by_Distance.Shared.Models;
public class MappingFromItem : Properties.IMappingFromItem
public record MappingFromItem(DateTime[] ContainerDateTimes,
DateTime? DateTimeDigitized,
DateTime? DateTimeOriginal,
int Id,
FileHolder ImageFileHolder,
bool? IsWrongYear,
string[]? Keywords,
DateTime MinimumDateTime,
string? Model,
string RelativePath,
FileHolder ResizedFileHolder)
{
public DateTime[] ContainerDateTimes { init; get; }
public DateTime? DateTimeDigitized { init; get; }
public DateTime? DateTimeOriginal { init; get; }
public int Id { init; get; }
public FileHolder ImageFileHolder { init; get; }
public bool? IsWrongYear { init; get; }
public DateTime MinimumDateTime { init; get; }
public string? Model { init; get; }
public string RelativePath { init; get; }
public FileHolder ResizedFileHolder { init; get; }
[JsonConstructor]
public MappingFromItem(DateTime[] containerDateTimes, DateTime? dateTimeDigitized, DateTime? dateTimeOriginal, int id, FileHolder imageFileHolder, bool? isWrongYear, DateTime minimumDateTime, string? model, string relativePath, FileHolder resizedFileHolder)
{
ContainerDateTimes = containerDateTimes;
DateTimeDigitized = dateTimeDigitized;
DateTimeOriginal = dateTimeOriginal;
Id = id;
ImageFileHolder = imageFileHolder;
IsWrongYear = isWrongYear;
MinimumDateTime = minimumDateTime;
Model = model;
RelativePath = relativePath;
ResizedFileHolder = resizedFileHolder;
}
public override string ToString()
{
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
string result = JsonSerializer.Serialize(this, MappingFromItemGenerationContext.Default.MappingFromItem);
return result;
}
@ -51,8 +35,14 @@ public class MappingFromItem : Properties.IMappingFromItem
List<DateTime> dateTimes = item.Property.GetDateTimes();
DateTime minimumDateTime = Stateless.Methods.IProperty.GetMinimumDateTime(item.Property);
(bool? isWrongYear, _) = Stateless.Methods.IProperty.IsWrongYear(item.ImageFileHolder, item.Property.DateTimeOriginal, dateTimes);
result = new(containerDateTimes, item.Property.DateTimeDigitized, item.Property.DateTimeOriginal, item.Property.Id.Value, item.ImageFileHolder, isWrongYear, minimumDateTime, item.Property.Model, item.RelativePath, resizedFileHolder);
result = new(containerDateTimes, item.Property.DateTimeDigitized, item.Property.DateTimeOriginal, item.Property.Id.Value, item.ImageFileHolder, isWrongYear, item.Property.Keywords, minimumDateTime, item.Property.Model, item.RelativePath, resizedFileHolder);
return result;
}
}
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(MappingFromItem))]
public partial class MappingFromItemGenerationContext : JsonSerializerContext
{
}

View File

@ -3,31 +3,24 @@ using System.Text.Json.Serialization;
namespace View_by_Distance.Shared.Models;
public class MappingFromLocation : Properties.IMappingFromLocation
public record MappingFromLocation(int AreaPermyriad,
int ConfidencePercent,
string DeterministicHashCodeKey,
int? Eyeα,
bool? EyeReview,
int WholePercentages)
{
public int AreaPermyriad { init; get; }
public int ConfidencePercent { init; get; }
public string DeterministicHashCodeKey { init; get; }
public int? Eyeα { init; get; }
public bool? EyeReview { init; get; }
public int WholePercentages { init; get; }
[JsonConstructor]
public MappingFromLocation(int areaPermyriad, int confidencePercent, string deterministicHashCodeKey, int? eyeα, bool? eyeReview, int wholePercentages)
{
AreaPermyriad = areaPermyriad;
ConfidencePercent = confidencePercent;
DeterministicHashCodeKey = deterministicHashCodeKey;
Eyeα = eyeα;
EyeReview = eyeReview;
WholePercentages = wholePercentages;
}
public override string ToString()
{
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
string result = JsonSerializer.Serialize(this, MappingFromLocationGenerationContext.Default.MappingFromLocation);
return result;
}
}
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(MappingFromLocation))]
public partial class MappingFromLocationGenerationContext : JsonSerializerContext
{
}

View File

@ -4,29 +4,23 @@ using System.Text.Json.Serialization;
namespace View_by_Distance.Shared.Models;
public class MappingFromPerson : Properties.IMappingFromPerson
public record MappingFromPerson(int? ApproximateYears,
string DisplayDirectoryName,
ReadOnlyCollection<string> LocationContainersFiles,
PersonBirthday PersonBirthday,
string SegmentB)
{
public int? ApproximateYears { init; get; }
public string DisplayDirectoryName { init; get; }
public ReadOnlyCollection<string> LocationContainersFiles { init; get; }
public PersonBirthday PersonBirthday { init; get; }
public string SegmentB { init; get; }
[JsonConstructor]
public MappingFromPerson(int? approximateYears, string displayDirectoryName, ReadOnlyCollection<string> locationContainersFiles, PersonBirthday personBirthday, string segmentB)
{
ApproximateYears = approximateYears;
DisplayDirectoryName = displayDirectoryName;
LocationContainersFiles = locationContainersFiles;
PersonBirthday = personBirthday;
SegmentB = segmentB;
}
public override string ToString()
{
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
string result = JsonSerializer.Serialize(this, MappingFromPersonGenerationContext.Default.MappingFromPerson);
return result;
}
}
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(MappingFromPerson))]
public partial class MappingFromPersonGenerationContext : JsonSerializerContext
{
}

View File

@ -1,18 +1,22 @@
using System.Text.Json;
using System.Text.Json.Serialization;
namespace View_by_Distance.Shared.Models;
public class MappingFromPhotoPrism : Properties.IMappingFromPhotoPrism
public record MappingFromPhotoPrism(DatabaseFile DatabaseFile,
List<Marker> Markers)
{
public DatabaseFile DatabaseFile { init; get; }
public List<Marker> Markers { init; get; }
[JsonConstructor]
public MappingFromPhotoPrism(DatabaseFile databaseFile, List<Marker> markers)
public override string ToString()
{
DatabaseFile = databaseFile;
Markers = markers;
string result = JsonSerializer.Serialize(this, MappingFromPhotoPrismGenerationContext.Default.MappingFromPhotoPrism);
return result;
}
}
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(MappingFromPhotoPrism))]
public partial class MappingFromPhotoPrismGenerationContext : JsonSerializerContext
{
}

View File

@ -1,12 +0,0 @@
namespace View_by_Distance.Shared.Models.Properties;
public interface IMappingFromFilter
{
public bool? IsFocusModel { init; get; }
public bool? IsFocusPerson { init; get; }
public bool? IsFocusRelativePath { init; get; }
public bool? InSkipCollection { init; get; }
public bool? IsUsed { init; get; }
}

View File

@ -1,17 +0,0 @@
namespace View_by_Distance.Shared.Models.Properties;
public interface IMappingFromItem
{
public DateTime[] ContainerDateTimes { init; get; }
public DateTime? DateTimeDigitized { init; get; }
public DateTime? DateTimeOriginal { init; get; }
public int Id { init; get; }
public FileHolder ImageFileHolder { init; get; }
public bool? IsWrongYear { init; get; }
public DateTime MinimumDateTime { init; get; }
public string? Model { init; get; }
public string RelativePath { init; get; }
public FileHolder ResizedFileHolder { init; get; }
}

View File

@ -1,13 +0,0 @@
namespace View_by_Distance.Shared.Models.Properties;
public interface IMappingFromLocation
{
public int AreaPermyriad { init; get; }
public int ConfidencePercent { init; get; }
public string DeterministicHashCodeKey { init; get; }
public int? Eyeα { init; get; }
public bool? EyeReview { init; get; }
public int WholePercentages { init; get; }
}

View File

@ -1,14 +0,0 @@
using System.Collections.ObjectModel;
namespace View_by_Distance.Shared.Models.Properties;
public interface IMappingFromPerson
{
public int? ApproximateYears { init; get; }
public string DisplayDirectoryName { init; get; }
public ReadOnlyCollection<string> LocationContainersFiles { init; get; }
public PersonBirthday PersonBirthday { init; get; }
public string SegmentB { init; get; }
}

View File

@ -1,9 +0,0 @@
namespace View_by_Distance.Shared.Models.Properties;
public interface IMappingFromPhotoPrism
{
public DatabaseFile DatabaseFile { init; get; }
public List<Marker> Markers { init; get; }
}

View File

@ -12,11 +12,11 @@ public record Property(DateTime CreationTime,
DateTime? GPSDateStamp,
int? Height,
int? Id,
string[]? Keywords,
DateTime LastWriteTime,
string? Make,
string? Model,
string? Orientation,
string[]? Tags,
int? Width)
{
@ -32,6 +32,6 @@ public record Property(DateTime CreationTime,
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(Property))]
internal partial class PropertyGenerationContext : JsonSerializerContext
public partial class PropertyGenerationContext : JsonSerializerContext
{
}

View File

@ -38,26 +38,10 @@ internal abstract class Container
return results.ToArray();
}
internal static Models.Container[] SortContainers(bool argZeroIsConfigurationRootDirectory, string argZero, Models.Container[] containers)
{
List<Models.Container> results = new();
for (int i = 1; i < 3; i++)
{
foreach (Models.Container container in containers)
{
if (container.Items.Count == 0)
continue;
if (!argZeroIsConfigurationRootDirectory && !container.SourceDirectory.StartsWith(argZero))
continue;
results.Add(container);
}
}
return results.ToArray();
}
internal static List<Models.FilePair> GetFilePairs(Properties.IPropertyConfiguration propertyConfiguration, string directorySearchFilter, string extension, string aPropertySingletonDirectory, List<string[]> filesCollection)
{
int renamed;
const bool useCeilingAverage = true;
List<Models.FilePair>? filePairs = null;
List<string[]>? jsonFilesCollection = null;
IReadOnlyDictionary<string, List<string>>? compareFileNamesToFiles = null;
@ -65,7 +49,7 @@ internal abstract class Container
for (int i = 0; i < int.MaxValue; i++)
{
renamed = 0;
jsonFilesCollection = IDirectory.GetFilesCollection(aPropertySingletonDirectory, directorySearchFilter, extension);
jsonFilesCollection = IDirectory.GetFilesCollection(aPropertySingletonDirectory, directorySearchFilter, extension, useCeilingAverage);
compareFileNamesToFiles = IDirectory.GetFilesKeyValuePairs(jsonFilesCollection);
renamed += IDirectory.LookForAbandoned(jsonFilesCollection, fileNamesToFiles, extension);
filePairs = IDirectory.GetFiles(filesCollection, fileNamesToFiles, extension, compareFileNamesToFiles);
@ -197,9 +181,10 @@ internal abstract class Container
{
int count;
Models.Container[] results;
const bool useCeilingAverage = true;
const string fileSearchFilter = "*";
const string directorySearchFilter = "*";
List<string[]> filesCollection = IDirectory.GetFilesCollection(propertyConfiguration.RootDirectory, directorySearchFilter, fileSearchFilter);
List<string[]> filesCollection = IDirectory.GetFilesCollection(propertyConfiguration.RootDirectory, directorySearchFilter, fileSearchFilter, useCeilingAverage);
(count, results) = GetContainers(propertyConfiguration, aPropertySingletonDirectory, directorySearchFilter, filesCollection);
return (count, results);
}

View File

@ -15,11 +15,6 @@ public interface IContainer
static Models.Item[] GetFilterItems(Properties.IPropertyConfiguration propertyConfiguration, Models.Container container) =>
Container.GetFilterItems(propertyConfiguration, container);
Models.Container[] TestStatic_SortContainers(bool argZeroIsConfigurationRootDirectory, string argZero, Models.Container[] containers) =>
SortContainers(argZeroIsConfigurationRootDirectory, argZero, containers);
static Models.Container[] SortContainers(bool argZeroIsConfigurationRootDirectory, string argZero, Models.Container[] containers) =>
Container.SortContainers(argZeroIsConfigurationRootDirectory, argZero, containers);
List<FilePair> TestStatic_GetFilePairs(Properties.IPropertyConfiguration propertyConfiguration, string directorySearchFilter, string extension, string aPropertySingletonDirectory, List<string[]> filesCollection) =>
Container.GetFilePairs(propertyConfiguration, directorySearchFilter, extension, aPropertySingletonDirectory, filesCollection);
static List<FilePair> GetFilePairs(Properties.IPropertyConfiguration propertyConfiguration, string directorySearchFilter, string extension, string aPropertySingletonDirectory, List<string[]> filesCollection) =>

View File

@ -39,10 +39,10 @@ public interface IDirectory
static bool NameWithoutExtensionIsPaddedIdFormat(Models.FileHolder fileHolder, int sortOrderOnlyLengthIndex) =>
NameWithoutExtensionIsPaddedIdFormat(fileHolder.NameWithoutExtension, sortOrderOnlyLengthIndex);
List<string[]> TestStatic_GetFilesCollection(string directory, string directorySearchFilter, string fileSearchFilter) =>
GetFilesCollection(directory, directorySearchFilter, fileSearchFilter);
static List<string[]> GetFilesCollection(string directory, string directorySearchFilter, string fileSearchFilter) =>
XDirectory.GetFilesCollection(directory, directorySearchFilter, fileSearchFilter);
List<string[]> TestStatic_GetFilesCollection(string directory, string directorySearchFilter, string fileSearchFilter, bool useCeilingAverage) =>
GetFilesCollection(directory, directorySearchFilter, fileSearchFilter, useCeilingAverage);
static List<string[]> GetFilesCollection(string directory, string directorySearchFilter, string fileSearchFilter, bool useCeilingAverage) =>
XDirectory.GetFilesCollection(directory, directorySearchFilter, fileSearchFilter, useCeilingAverage);
IReadOnlyDictionary<string, List<string>> TestStatic_GetFilesKeyValuePairs(List<string[]> filesCollection) =>
GetFilesKeyValuePairs(filesCollection);

View File

@ -30,7 +30,7 @@ internal abstract partial class XDirectory
return results;
}
internal static List<string[]> GetFilesCollection(string directory, string directorySearchFilter, string fileSearchFilter)
internal static List<string[]> GetFilesCollection(string directory, string directorySearchFilter, string fileSearchFilter, bool useCeilingAverage)
{
List<string[]> results = new();
if (!fileSearchFilter.Contains('*'))
@ -47,7 +47,8 @@ internal abstract partial class XDirectory
{ continue; }
}
int ceilingAverage = directory[^1] == '_' || !results.Any() ? 0 : GetCeilingAverage(results);
results = GetFilesCollection(results, ceilingAverage);
if (useCeilingAverage)
results = GetFilesCollection(results, ceilingAverage);
return results;
}