Change to support 7680 x 4320 and

Configuration additions
This commit is contained in:
2022-09-16 21:05:34 -07:00
parent deff6f484c
commit c86ad38455
40 changed files with 1153 additions and 454 deletions

View File

@ -144,8 +144,8 @@ public class A_Property
}
else if (!isIgnoreExtension && isValidImageFormatExtension)
{
// if (populateId && (id is null || !indices.Any()) && !_IndicesFromNew.Any() && !_KeyValuePairs.Any())
// throw new Exception("In order to keep six character indices at least one need to have an item!");
if (populateId && (id is null || !indices.Any()) && !_IndicesFromNew.Any() && !_KeyValuePairs.Any())
throw new Exception("May need to move mapLogic constructor! In order to keep six character indices at least one need to have an item!");
try
{
using Image image = Image.FromFile(filteredSourceDirectoryFileHolder.FullName);
@ -641,7 +641,7 @@ public class A_Property
continue;
SetAngleBracketCollection(container.SourceDirectory);
totalSeconds = (int)Math.Truncate(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
message = $"{i:000}.{container.G} / {containersCount:000}) {filteredItems.Length:000} file(s) - {totalSeconds} total second(s) - {container.SourceDirectory}";
message = $"{i + 1:000}.{container.G} / {containersCount:000}) {filteredItems.Length:000} file(s) - {totalSeconds} total second(s) - {container.SourceDirectory}";
ParallelWork(firstPass, exceptions, sourceDirectoryChanges, container, filteredItems, message);
foreach (Exception exception in exceptions)
_Log.Error(string.Concat(container.SourceDirectory, Environment.NewLine, exception.Message, Environment.NewLine, exception.StackTrace), exception);

View File

@ -19,6 +19,10 @@ public class Configuration
[Display(Name = "Populate Properties Id"), Required] public bool? PopulatePropertyId { get; set; }
[Display(Name = "Properties Changed For Property"), Required] public bool? PropertiesChangedForProperty { get; set; }
[Display(Name = "Property Content Collection Files"), Required] public string[] PropertyContentCollectionFiles { get; set; }
[Display(Name = "Result All In One"), Required] public string ResultAllInOne { get; set; }
[Display(Name = "Result Collection"), Required] public string ResultCollection { get; set; }
[Display(Name = "Result Content"), Required] public string ResultContent { get; set; }
[Display(Name = "Result Singleton"), Required] public string ResultSingleton { get; set; }
[Display(Name = "Root Directory"), Required] public string RootDirectory { get; set; }
[Display(Name = "Valid Image Format Extensions"), Required] public string[] ValidImageFormatExtensions { get; set; }
[Display(Name = "Valid Metadata Extensions"), Required] public string[] ValidMetadataExtensions { get; set; }
@ -44,6 +48,14 @@ public class Configuration
throw new NullReferenceException(nameof(configuration.PopulatePropertyId));
if (configuration.PropertiesChangedForProperty is null)
throw new NullReferenceException(nameof(configuration.PropertiesChangedForProperty));
if (configuration.ResultAllInOne is null)
throw new NullReferenceException(nameof(configuration.ResultAllInOne));
if (configuration.ResultCollection is null)
throw new NullReferenceException(nameof(configuration.ResultCollection));
if (configuration.ResultContent is null)
throw new NullReferenceException(nameof(configuration.ResultContent));
if (configuration.ResultSingleton is null)
throw new NullReferenceException(nameof(configuration.ResultSingleton));
if (configuration.WriteBitmapDataBytes is null)
throw new NullReferenceException(nameof(configuration.WriteBitmapDataBytes));
if (configuration.IgnoreExtensions is null)
@ -65,6 +77,10 @@ public class Configuration
configuration.PopulatePropertyId.Value,
configuration.PropertiesChangedForProperty.Value,
configuration.PropertyContentCollectionFiles,
configuration.ResultAllInOne,
configuration.ResultCollection,
configuration.ResultContent,
configuration.ResultSingleton,
configuration.RootDirectory,
configuration.ValidImageFormatExtensions,
configuration.ValidMetadataExtensions,

View File

@ -18,13 +18,34 @@ public class Configuration
public bool PopulatePropertyId { init; get; }
public bool PropertiesChangedForProperty { init; get; }
public string[] PropertyContentCollectionFiles { init; get; }
public string ResultAllInOne { init; get; }
public string ResultCollection { init; get; }
public string ResultContent { init; get; }
public string ResultSingleton { init; get; }
public string[] ValidImageFormatExtensions { init; get; }
public string[] ValidMetadataExtensions { init; get; }
public string[] VerifyToSeason { init; get; }
public bool WriteBitmapDataBytes { init; get; }
[JsonConstructor]
public Configuration(string dateGroup, string fileNameDirectorySeparator, bool forcePropertyLastWriteTimeToCreationTime, string[] ignoreExtensions, int maxImagesInDirectoryForTopLevelFirstPass, string pattern, bool populatePropertyId, bool propertiesChangedForProperty, string[] propertyContentCollectionFiles, string rootDirectory, string[] validImageFormatExtensions, string[] validMetadataExtensions, string[] verifyToSeason, bool writeBitmapDataBytes)
public Configuration(string dateGroup,
string fileNameDirectorySeparator,
bool forcePropertyLastWriteTimeToCreationTime,
string[] ignoreExtensions,
int maxImagesInDirectoryForTopLevelFirstPass,
string pattern,
bool populatePropertyId,
bool propertiesChangedForProperty,
string[] propertyContentCollectionFiles,
string resultAllInOne,
string resultCollection,
string resultContent,
string resultSingleton,
string rootDirectory,
string[] validImageFormatExtensions,
string[] validMetadataExtensions,
string[] verifyToSeason,
bool writeBitmapDataBytes)
{
DateGroup = dateGroup;
FileNameDirectorySeparator = fileNameDirectorySeparator;
@ -35,6 +56,10 @@ public class Configuration
PopulatePropertyId = populatePropertyId;
PropertiesChangedForProperty = propertiesChangedForProperty;
PropertyContentCollectionFiles = propertyContentCollectionFiles;
ResultAllInOne = resultAllInOne;
ResultCollection = resultCollection;
ResultContent = resultContent;
ResultSingleton = resultSingleton;
_RootDirectory = rootDirectory;
ValidImageFormatExtensions = validImageFormatExtensions;
ValidMetadataExtensions = validMetadataExtensions;

View File

@ -15,7 +15,7 @@ public class Container
string[] sourceDirectoryFiles;
List<string[]> fileCollections = new();
if (!topDirectories.Any())
topDirectories.AddRange(from l in Directory.GetDirectories(rootDirectory, "*", SearchOption.TopDirectoryOnly) orderby Path.GetFileName(l)[..1], l select Path.GetFullPath(l));
topDirectories.AddRange(from l in Directory.GetDirectories(rootDirectory, "*", SearchOption.TopDirectoryOnly) select Path.GetFullPath(l));
for (int g = 1; g < 5; g++)
{
if (g == 4)
@ -31,7 +31,6 @@ public class Container
}
else if (g == 2)
{
fileCollections = (from l in fileCollections orderby l.Length descending select l).ToList();
for (int i = fileCollections.Count - 1; i > -1; i--)
{
if (fileCollections[i].Length > maxImagesInDirectoryForTopLevelFirstPass * g)

View File

@ -5,11 +5,6 @@ namespace View_by_Distance.Property.Models.Stateless;
public interface IResult
{
const string Content = "()";
const string Singleton = "{}";
const string Collection = "[]";
const string AllInOne = "_ _ _";
string TestStatic_GetRelativePath(Configuration configuration, string path);
static string GetRelativePath(Configuration configuration, string path)
=> Result.GetRelativePath(configuration, path);

View File

@ -64,13 +64,13 @@ internal class Result
return result;
}
private static void CheckContent(string dateGroupDirectory, string contentDescription, string result)
private static void CheckContent(Configuration configuration, string dateGroupDirectory, string contentDescription, string result)
{
string checkDirectory;
checkDirectory = Path.Combine(dateGroupDirectory, IResult.Content, IResult.AllInOne);
checkDirectory = Path.Combine(dateGroupDirectory, configuration.ResultContent, configuration.ResultAllInOne);
if (!Directory.Exists(checkDirectory))
_ = Directory.CreateDirectory(checkDirectory);
string contentDirectory = new(result.Replace("<>", IResult.Content));
string contentDirectory = new(result.Replace("<>", configuration.ResultContent));
if (!Directory.Exists(contentDirectory))
_ = Directory.CreateDirectory(contentDirectory);
checkDirectory = Path.Combine(dateGroupDirectory, string.Concat("() - ", contentDescription));
@ -78,15 +78,15 @@ internal class Result
_ = Directory.CreateDirectory(checkDirectory);
}
private static void CheckSingleton(string dateGroupDirectory, string singletonDescription, bool converted, string result)
private static void CheckSingleton(Configuration configuration, string dateGroupDirectory, string singletonDescription, bool converted, string result)
{
string checkDirectory;
checkDirectory = Path.Combine(dateGroupDirectory, IResult.Singleton, IResult.AllInOne);
checkDirectory = Path.Combine(dateGroupDirectory, configuration.ResultSingleton, configuration.ResultAllInOne);
if (!Directory.Exists(checkDirectory))
_ = Directory.CreateDirectory(checkDirectory);
if (!converted)
{
string singletonDirectory = new(result.Replace("<>", IResult.Singleton));
string singletonDirectory = new(result.Replace("<>", configuration.ResultSingleton));
if (!Directory.Exists(singletonDirectory))
_ = Directory.CreateDirectory(singletonDirectory);
}
@ -95,14 +95,14 @@ internal class Result
_ = Directory.CreateDirectory(checkDirectory);
}
private static void CheckCollection(string dateGroupDirectory, string collectionDescription, bool converted, string result)
private static void CheckCollection(Configuration configuration, string dateGroupDirectory, string collectionDescription, bool converted, string result)
{
string checkDirectory = Path.Combine(dateGroupDirectory, IResult.Collection, IResult.AllInOne);
string checkDirectory = Path.Combine(dateGroupDirectory, configuration.ResultCollection, configuration.ResultAllInOne);
if (!Directory.Exists(checkDirectory))
_ = Directory.CreateDirectory(checkDirectory);
if (!converted)
{
string collectionDirectory = new(result.Replace("<>", IResult.Collection));
string collectionDirectory = new(result.Replace("<>", configuration.ResultCollection));
if (!Directory.Exists(collectionDirectory))
_ = Directory.CreateDirectory(collectionDirectory);
}
@ -117,11 +117,11 @@ internal class Result
string sourceDirectorySegment = GetRelativePath(configuration, sourceDirectory);
string result = string.Concat(Path.Combine(dateGroupDirectory, "<>"), sourceDirectorySegment);
if (!string.IsNullOrEmpty(contentDescription))
CheckContent(dateGroupDirectory, contentDescription, result);
CheckContent(configuration, dateGroupDirectory, contentDescription, result);
if (!string.IsNullOrEmpty(singletonDescription))
CheckSingleton(dateGroupDirectory, singletonDescription, converted, result);
CheckSingleton(configuration, dateGroupDirectory, singletonDescription, converted, result);
if (!string.IsNullOrEmpty(collectionDescription))
CheckCollection(dateGroupDirectory, collectionDescription, converted, result);
CheckCollection(configuration, dateGroupDirectory, collectionDescription, converted, result);
results.Add(result);
return results;
}