Identifier new properties
This commit is contained in:
parent
43b66f01b6
commit
c580c7eaa4
@ -359,6 +359,7 @@ public partial class DlibDotNet : IDlibDotNet, IDisposable
|
|||||||
if (!runToDoCollectionFirst)
|
if (!runToDoCollectionFirst)
|
||||||
break;
|
break;
|
||||||
(filesCollectionRootDirectory, filePathsCollection, filesCollectionCountIsOne) = GetFilesCollectionThenCopyOrMove(ticks, fileSearchFilter, directorySearchFilter, options, outputResolution);
|
(filesCollectionRootDirectory, filePathsCollection, filesCollectionCountIsOne) = GetFilesCollectionThenCopyOrMove(ticks, fileSearchFilter, directorySearchFilter, options, outputResolution);
|
||||||
|
SaveDistinctIds(_Configuration.PropertyConfiguration, bResultsFullGroupDirectory, filePathsCollection);
|
||||||
notNineCollection = GetNotNineCollection(filePathsCollection);
|
notNineCollection = GetNotNineCollection(filePathsCollection);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -403,7 +404,6 @@ public partial class DlibDotNet : IDlibDotNet, IDisposable
|
|||||||
if (!Directory.Exists(aPropertySingletonDirectory))
|
if (!Directory.Exists(aPropertySingletonDirectory))
|
||||||
_ = Directory.CreateDirectory(aPropertySingletonDirectory);
|
_ = Directory.CreateDirectory(aPropertySingletonDirectory);
|
||||||
int count = filePathsCollection.Select(l => l.Count).Sum();
|
int count = filePathsCollection.Select(l => l.Count).Sum();
|
||||||
SaveDistinctIds(_Configuration.PropertyConfiguration, bResultsFullGroupDirectory, filePathsCollection);
|
|
||||||
message = $") Building Container(s) - {(int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds)} total second(s)";
|
message = $") Building Container(s) - {(int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds)} total second(s)";
|
||||||
_ProgressBar = new(count, message, options);
|
_ProgressBar = new(count, message, options);
|
||||||
readOnlyContainers = Shared.Models.Stateless.Methods.IContainer.GetContainers(this, _Configuration.PropertyConfiguration, aPropertySingletonDirectory, filesCollectionRootDirectory, filePathsCollection);
|
readOnlyContainers = Shared.Models.Stateless.Methods.IContainer.GetContainers(this, _Configuration.PropertyConfiguration, aPropertySingletonDirectory, filesCollectionRootDirectory, filePathsCollection);
|
||||||
@ -663,14 +663,10 @@ public partial class DlibDotNet : IDlibDotNet, IDisposable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SaveDistinctIds(Property.Models.Configuration propertyConfiguration, string bResultsFullGroupDirectory, ReadOnlyCollection<ReadOnlyCollection<FilePath>> filePathsCollection)
|
private static ReadOnlyDictionary<int, List<FilePath>> GetKeyValuePairs(ReadOnlyCollection<ReadOnlyCollection<FilePath>> filePathsCollection)
|
||||||
{
|
{
|
||||||
string paddedId;
|
Dictionary<int, List<FilePath>> results = [];
|
||||||
List<int> distinct = [];
|
List<FilePath>? collection;
|
||||||
List<Identifier> identifiers = [];
|
|
||||||
string bMetadataCollectionDirectory = Path.Combine(bResultsFullGroupDirectory, propertyConfiguration.ResultCollection);
|
|
||||||
if (!Directory.Exists(bMetadataCollectionDirectory))
|
|
||||||
_ = Directory.CreateDirectory(bMetadataCollectionDirectory);
|
|
||||||
foreach (ReadOnlyCollection<FilePath> filePaths in filePathsCollection)
|
foreach (ReadOnlyCollection<FilePath> filePaths in filePathsCollection)
|
||||||
{
|
{
|
||||||
if (filePaths.Count == 0)
|
if (filePaths.Count == 0)
|
||||||
@ -679,15 +675,45 @@ public partial class DlibDotNet : IDlibDotNet, IDisposable
|
|||||||
{
|
{
|
||||||
if (filePath.Id is null)
|
if (filePath.Id is null)
|
||||||
continue;
|
continue;
|
||||||
if (distinct.Contains(filePath.Id.Value))
|
if (!results.TryGetValue(filePath.Id.Value, out collection))
|
||||||
continue;
|
{
|
||||||
distinct.Add(filePath.Id.Value);
|
results.Add(filePath.Id.Value, []);
|
||||||
paddedId = IId.GetPaddedId(propertyConfiguration, filePath.Id.Value, filePath.HasIgnoreKeyword, filePath.HasDateTimeOriginal, index: null);
|
if (!results.TryGetValue(filePath.Id.Value, out collection))
|
||||||
identifiers.Add(new(filePath.Id.Value, paddedId));
|
throw new Exception();
|
||||||
|
}
|
||||||
|
collection.Add(filePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
string json = JsonSerializer.Serialize(identifiers.OrderBy(l => l.PaddedId).ToArray(), IdentifierCollectionSourceGenerationContext.Default.IdentifierArray);
|
return new(results);
|
||||||
_ = Shared.Models.Stateless.Methods.IPath.WriteAllText(Path.Combine(bMetadataCollectionDirectory, ".json"), json, updateDateWhenMatches: false, compareBeforeWrite: true, updateToWhenMatches: null);
|
}
|
||||||
|
|
||||||
|
private static void SaveDistinctIds(Property.Models.Configuration propertyConfiguration, string bResultsFullGroupDirectory, ReadOnlyCollection<ReadOnlyCollection<FilePath>> filePathsCollection)
|
||||||
|
{
|
||||||
|
ReadOnlyDictionary<int, List<FilePath>> keyValuePairs = GetKeyValuePairs(filePathsCollection);
|
||||||
|
if (keyValuePairs.Count > 0)
|
||||||
|
{
|
||||||
|
string paddedId;
|
||||||
|
FilePath filePath;
|
||||||
|
Identifier identifier;
|
||||||
|
string[] directoryNames;
|
||||||
|
List<Identifier> identifiers = [];
|
||||||
|
string rootDirectory = propertyConfiguration.RootDirectory.Replace('\\', '/');
|
||||||
|
string bMetadataCollectionDirectory = Path.Combine(bResultsFullGroupDirectory, propertyConfiguration.ResultCollection);
|
||||||
|
if (!Directory.Exists(bMetadataCollectionDirectory))
|
||||||
|
_ = Directory.CreateDirectory(bMetadataCollectionDirectory);
|
||||||
|
foreach (KeyValuePair<int, List<FilePath>> keyValuePair in keyValuePairs)
|
||||||
|
{
|
||||||
|
filePath = keyValuePair.Value[0];
|
||||||
|
if (filePath.Id is null)
|
||||||
|
continue;
|
||||||
|
directoryNames = keyValuePair.Value.Select(l => l.DirectoryName.Replace('\\', '/')).ToArray();
|
||||||
|
paddedId = IId.GetPaddedId(propertyConfiguration, filePath.Id.Value, filePath.HasIgnoreKeyword, filePath.HasDateTimeOriginal, index: null);
|
||||||
|
identifier = new(directoryNames, filePath.HasDateTimeOriginal, filePath.Id.Value, filePath.Length, paddedId, filePath.LastWriteTicks);
|
||||||
|
identifiers.Add(identifier);
|
||||||
|
}
|
||||||
|
string json = JsonSerializer.Serialize((from l in identifiers orderby l.DirectoryNames.Length descending, l.Id select l).ToArray(), IdentifierCollectionSourceGenerationContext.Default.IdentifierArray);
|
||||||
|
_ = Shared.Models.Stateless.Methods.IPath.WriteAllText(Path.Combine(bMetadataCollectionDirectory, ".json"), json.Replace(rootDirectory, string.Empty), updateDateWhenMatches: false, compareBeforeWrite: true, updateToWhenMatches: null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private ReadOnlyCollection<Mapping> GetMappings(Property.Models.Configuration propertyConfiguration, string eDistanceContentDirectory, ReadOnlyCollection<Container> readOnlyContainers, MapLogic mapLogic, bool distinctItems)
|
private ReadOnlyCollection<Mapping> GetMappings(Property.Models.Configuration propertyConfiguration, string eDistanceContentDirectory, ReadOnlyCollection<Container> readOnlyContainers, MapLogic mapLogic, bool distinctItems)
|
||||||
|
@ -3,7 +3,12 @@ using System.Text.Json.Serialization;
|
|||||||
|
|
||||||
namespace View_by_Distance.Instance.Models;
|
namespace View_by_Distance.Instance.Models;
|
||||||
|
|
||||||
internal record Identifier(int Id, string PaddedId)
|
internal sealed record Identifier(string[] DirectoryNames,
|
||||||
|
bool? HasDateTimeOriginal,
|
||||||
|
int Id,
|
||||||
|
long Length,
|
||||||
|
string PaddedId,
|
||||||
|
long Ticks)
|
||||||
{
|
{
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
|
@ -45,7 +45,7 @@ public partial class UnitTestHardCoded
|
|||||||
Environment.SetEnvironmentVariable(nameof(workingDirectory), workingDirectory);
|
Environment.SetEnvironmentVariable(nameof(workingDirectory), workingDirectory);
|
||||||
propertyConfiguration = Property.Models.Binder.Configuration.Get(isEnvironment, configurationRoot);
|
propertyConfiguration = Property.Models.Binder.Configuration.Get(isEnvironment, configurationRoot);
|
||||||
configuration = Models.Binder.Configuration.Get(isEnvironment, configurationRoot, propertyConfiguration);
|
configuration = Models.Binder.Configuration.Get(isEnvironment, configurationRoot, propertyConfiguration);
|
||||||
_Git = "c9dbce3b";
|
_Git = "304b5e2a";
|
||||||
_AppSettings = appSettings;
|
_AppSettings = appSettings;
|
||||||
_Configuration = configuration;
|
_Configuration = configuration;
|
||||||
_IsEnvironment = isEnvironment;
|
_IsEnvironment = isEnvironment;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user