This commit is contained in:
Mike Phares 2023-07-20 21:34:08 -07:00
parent 4de1468f51
commit 7733ac1328
4 changed files with 55 additions and 15 deletions

View File

@ -1,4 +1,5 @@
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Globalization;
namespace View_by_Distance.Shared.Models.Stateless.Methods; namespace View_by_Distance.Shared.Models.Stateless.Methods;
@ -407,7 +408,10 @@ internal abstract class GenealogicalDataCommunication
List<string> lines = new(); List<string> lines = new();
List<long> distinct = new(); List<long> distinct = new();
List<string> individualsLines; List<string> individualsLines;
DateTime dateTime = new(ticks);
Models.PersonBirthday personBirthday; Models.PersonBirthday personBirthday;
Calendar calendar = new CultureInfo("en-US").Calendar;
string weekOfYear = calendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
lines.AddRange(headerLines); lines.AddRange(headerLines);
foreach (Models.PersonContainer personContainer in personContainers) foreach (Models.PersonContainer personContainer in personContainers)
{ {
@ -468,7 +472,7 @@ internal abstract class GenealogicalDataCommunication
for (int i = 0; i < familyGroupLines.Count; i++) for (int i = 0; i < familyGroupLines.Count; i++)
lines.AddRange(familyGroupLines[i]); lines.AddRange(familyGroupLines[i]);
lines.AddRange(footerLines); lines.AddRange(footerLines);
File.WriteAllLines(Path.Combine(a2PeopleContentDirectory, $"{ticks}.ged"), lines); File.WriteAllLines(Path.Combine(a2PeopleContentDirectory, $"{dateTime.Year}-ged", $"{dateTime.Year}-Week-{weekOfYear}", $"{ticks}.ged"), lines);
return result; return result;
} }

View File

@ -1,4 +1,5 @@
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Globalization;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
@ -9,7 +10,7 @@ internal abstract class MarkDown
// ... // ...
internal static void WriteFile(string personKeyFormatted, long ticks, Models.PersonName personName, List<GenealogicalDataCommunicationRelation> genealogicalDataCommunicationRelations, string a2PeopleContentDirectory, ReadOnlyDictionary<string, string> personKeyFormattedToPersonFullName, ReadOnlyDictionary<int, List<GenealogicalDataCommunicationRelation>> familyIndexToCollection, bool isDefaultName, Models.GenealogicalDataCommunication genealogicalDataCommunication, bool first) internal static void WriteFile(string personKeyFormatted, long ticks, Models.PersonName personName, List<GenealogicalDataCommunicationRelation> genealogicalDataCommunicationRelations, string a2PeopleContentDirectory, Calendar calendar, ReadOnlyDictionary<string, string> personKeyFormattedToPersonFullName, ReadOnlyDictionary<int, List<GenealogicalDataCommunicationRelation>> familyIndexToCollection, bool isDefaultName, Models.GenealogicalDataCommunication genealogicalDataCommunication, bool first)
{ {
string decade; string decade;
string jrOrSr; string jrOrSr;
@ -22,9 +23,10 @@ internal abstract class MarkDown
const string child = "CHIL"; const string child = "CHIL";
const string husband = "HUSB"; const string husband = "HUSB";
const string person = "person"; const string person = "person";
DateTime dateTime = new(ticks);
string fullName = PersonName.GetFullName(personName); string fullName = PersonName.GetFullName(personName);
List<GenealogicalDataCommunicationRelation>? relations; List<GenealogicalDataCommunicationRelation>? relations;
string now = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); string now = dateTime.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
string lowerHyphenFullName = $"{Regex.Replace(fullName.ToLower(), "[^a-z0-9-]", "-")}"; string lowerHyphenFullName = $"{Regex.Replace(fullName.ToLower(), "[^a-z0-9-]", "-")}";
string code = IPersonBirthday.GetHour(genealogicalDataCommunication.Death is null, genealogicalDataCommunication.Sex).ToString("00"); string code = IPersonBirthday.GetHour(genealogicalDataCommunication.Death is null, genealogicalDataCommunication.Sex).ToString("00");
List<string> lines = new() List<string> lines = new()
@ -143,7 +145,8 @@ internal abstract class MarkDown
if (hasRelation) if (hasRelation)
lines.Add(string.Empty); lines.Add(string.Empty);
string text = string.Join(Environment.NewLine, lines); string text = string.Join(Environment.NewLine, lines);
string directory = Path.Combine(a2PeopleContentDirectory, $"content-{ticks}", person, personKeyFormatted[..3]); string weekOfYear = calendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
string directory = Path.Combine(a2PeopleContentDirectory, $"{dateTime.Year}-Markdown", $"{dateTime.Year}-Week-{weekOfYear}", ticks.ToString(), person, personKeyFormatted[..3]);
if (!Directory.Exists(directory)) if (!Directory.Exists(directory))
_ = Directory.CreateDirectory(directory); _ = Directory.CreateDirectory(directory);
_ = IPath.WriteAllText(Path.Combine(directory, $"{lowerHyphenFullName}.md"), text, updateDateWhenMatches: false, compareBeforeWrite: true); _ = IPath.WriteAllText(Path.Combine(directory, $"{lowerHyphenFullName}.md"), text, updateDateWhenMatches: false, compareBeforeWrite: true);

View File

@ -1,4 +1,5 @@
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Globalization;
namespace View_by_Distance.Shared.Models.Stateless.Methods; namespace View_by_Distance.Shared.Models.Stateless.Methods;
@ -400,6 +401,7 @@ internal abstract class PersonContainer
bool verify = true; bool verify = true;
const int zero = 0; const int zero = 0;
string personKeyFormatted; string personKeyFormatted;
Calendar calendar = new CultureInfo("en-US").Calendar;
Models.GenealogicalDataCommunication genealogicalDataCommunication; Models.GenealogicalDataCommunication genealogicalDataCommunication;
GenealogicalDataCommunicationLines? genealogicalDataCommunicationLines; GenealogicalDataCommunicationLines? genealogicalDataCommunicationLines;
ReadOnlyDictionary<string, string> personKeyFormattedToPersonFullName = GetPersonKeyFormattedToPersonFullName(personBirthdayFormat, personContainers); ReadOnlyDictionary<string, string> personKeyFormattedToPersonFullName = GetPersonKeyFormattedToPersonFullName(personBirthdayFormat, personContainers);
@ -429,7 +431,7 @@ internal abstract class PersonContainer
if (genealogicalDataCommunication.Death is null && personContainer.PersonDirectory.Status == 'D' || genealogicalDataCommunication.Death is not null && personContainer.PersonDirectory.Status == 'A') if (genealogicalDataCommunication.Death is null && personContainer.PersonDirectory.Status == 'D' || genealogicalDataCommunication.Death is not null && personContainer.PersonDirectory.Status == 'A')
continue; continue;
GenealogicalDataCommunication.WriteFile(personKeyFormatted, personContainer.Person.Name, personContainer.GenealogicalDataCommunicationRelationIndividualsLines, isDefaultName, directory, genealogicalDataCommunication, verify, first.Value); GenealogicalDataCommunication.WriteFile(personKeyFormatted, personContainer.Person.Name, personContainer.GenealogicalDataCommunicationRelationIndividualsLines, isDefaultName, directory, genealogicalDataCommunication, verify, first.Value);
MarkDown.WriteFile(personKeyFormatted, ticks, personContainer.Person.Name, genealogicalDataCommunicationRelations, a2PeopleContentDirectory, personKeyFormattedToPersonFullName, familyIndexToCollection, isDefaultName, genealogicalDataCommunication, first.Value); MarkDown.WriteFile(personKeyFormatted, ticks, personContainer.Person.Name, genealogicalDataCommunicationRelations, a2PeopleContentDirectory, calendar, personKeyFormattedToPersonFullName, familyIndexToCollection, isDefaultName, genealogicalDataCommunication, first.Value);
} }
} }

View File

@ -4,6 +4,7 @@ using Phares.Shared;
using Serilog; using Serilog;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Diagnostics; using System.Diagnostics;
using System.Globalization;
using System.Reflection; using System.Reflection;
using View_by_Distance.Shared.Models; using View_by_Distance.Shared.Models;
using View_by_Distance.Shared.Models.Stateless.Methods; using View_by_Distance.Shared.Models.Stateless.Methods;
@ -85,7 +86,7 @@ public partial class UnitTestHardCoded
[TestMethod] [TestMethod]
public void TestMethodDel() public void TestMethodDel()
{ {
string directory = @"F:\Tmp\Phares\Compare\Images 2022-09-15 - 7390c13 - III - Results\E) Distance\2022-09-15\7680 x 4320\7680x4320 - Hog - Large\()\(637992984751968513)"; string directory = "F:/Tmp/Phares/Compare/Images 2022-09-15 - 7390c13 - III - Results/E) Distance/2022-09-15/7680 x 4320/7680x4320 - Hog - Large/()/(637992984751968513)";
if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory)) if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory))
{ {
for (int i = 1; i < 11; i++) for (int i = 1; i < 11; i++)
@ -98,7 +99,7 @@ public partial class UnitTestHardCoded
[TestMethod] [TestMethod]
public void TestMethodGetApproximateYears() public void TestMethodGetApproximateYears()
{ {
string personDisplayDirectory = @"D:\1-Images-A\Images-dd514b88-Results\A2) People\dd514b88\{}\^\Sydney Dupray^9"; string personDisplayDirectory = "D:/1-Images-A/Images-dd514b88-Results/A2) People/dd514b88/{}/^/Sydney Dupray^9";
if (Directory.Exists(Directory.GetDirectoryRoot(personDisplayDirectory)) && Directory.Exists(personDisplayDirectory)) if (Directory.Exists(Directory.GetDirectoryRoot(personDisplayDirectory)) && Directory.Exists(personDisplayDirectory))
{ {
char numberSign = '#'; char numberSign = '#';
@ -122,7 +123,7 @@ public partial class UnitTestHardCoded
[TestMethod] [TestMethod]
public void TestMethodDel2() public void TestMethodDel2()
{ {
string directory = @"F:\Tmp\Phares\Compare\Images 2022-09-15 - 7390c13 - III - Results\E) Distance\2022-09-15\7680 x 4320\7680x4320 - Hog - Large\()\(637992984751968513)"; string directory = "F:/Tmp/Phares/Compare/Images 2022-09-15 - 7390c13 - III - Results/E) Distance/2022-09-15/7680 x 4320/7680x4320 - Hog - Large/()/(637992984751968513)";
if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory)) if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory))
{ {
for (int i = 1; i < 11; i++) for (int i = 1; i < 11; i++)
@ -201,7 +202,7 @@ public partial class UnitTestHardCoded
[TestMethod] [TestMethod]
public void TestMethodRenameAbandoned() public void TestMethodRenameAbandoned()
{ {
string directory = @"D:\1-Images-A\Images-dd514b88-Results\A2) People\dd514b88\{}\!\Abandoned"; string directory = "D:/1-Images-A/Images-dd514b88-Results/A2) People/dd514b88/{}/!/Abandoned";
if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory)) if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory))
{ {
string checkFile; string checkFile;
@ -221,7 +222,7 @@ public partial class UnitTestHardCoded
[TestMethod] [TestMethod]
public void TestMethodRenameDelete() public void TestMethodRenameDelete()
{ {
string directory = @"D:\1-Images-A\Images-dd514b88-Results\A) Property\dd514b88\{}"; string directory = "D:/1-Images-A/Images-dd514b88-Results/A) Property/dd514b88/{}";
if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory)) if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory))
{ {
string checkFile; string checkFile;
@ -241,7 +242,7 @@ public partial class UnitTestHardCoded
[TestMethod] [TestMethod]
public void TestMethodRenameOld() public void TestMethodRenameOld()
{ {
string directory = @"D:\2-Images-B\Not-Copy-Copy-dd514b88-Results\E) Distance\dd514b88\()"; string directory = "D:/2-Images-B/Not-Copy-Copy-dd514b88-Results/E) Distance/dd514b88/()";
if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory)) if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory))
{ {
string checkFile; string checkFile;
@ -756,9 +757,9 @@ public partial class UnitTestHardCoded
[TestMethod] [TestMethod]
public void TestMethodRename() public void TestMethodRename()
{ {
// string directory = @"D:\2-Images-B\Not-Copy-Copy-dd514b88"; // string directory = "D:/2-Images-B/Not-Copy-Copy-dd514b88";
string directory = @"D:\1-Images-A\Images-dd514b88"; string directory = "D:/1-Images-A/Images-dd514b88";
// string directory = @"D:\2-Images-B\Not-Copy-Copy-dd514b88"; // string directory = "D:/2-Images-B/Not-Copy-Copy-dd514b88";
if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory)) if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory))
{ {
string[] directories = Directory.GetDirectories(directory, "*;*", SearchOption.AllDirectories); string[] directories = Directory.GetDirectories(directory, "*;*", SearchOption.AllDirectories);
@ -775,7 +776,7 @@ public partial class UnitTestHardCoded
[TestMethod] [TestMethod]
public void TestMethodRenameForUnkown() public void TestMethodRenameForUnkown()
{ {
string directory = @"D:\1-Images-A\Images-dd514b88-Results\E) Distance\dd514b88\(RectInt-2023-06-19-less-0.99)"; string directory = "D:/1-Images-A/Images-dd514b88-Results/E) Distance/dd514b88/(RectInt-2023-06-19-less-0.99)";
if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory)) if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory))
{ {
string[] files = Directory.GetFiles(directory, "*.unk", SearchOption.AllDirectories); string[] files = Directory.GetFiles(directory, "*.unk", SearchOption.AllDirectories);
@ -785,4 +786,34 @@ public partial class UnitTestHardCoded
NonThrowTryCatch(); NonThrowTryCatch();
} }
[TestMethod]
public void TestMethodRenameForTicks()
{
string directory = "D:/1-Images-A/Images-dd514b88-Results/A2) People/dd514b88/([])/ged";
if (Directory.Exists(Path.GetPathRoot(directory)) && Directory.Exists(directory))
{
string checkName;
DateTime dateTime;
string weekOfYear;
string checkDirectoy;
Calendar calendar = new CultureInfo("en-US").Calendar;
string[] files = Directory.GetFiles(directory, "*.ged", SearchOption.TopDirectoryOnly);
foreach (string file in files)
{
if (!long.TryParse(Path.GetFileNameWithoutExtension(file), out long ticks))
continue;
dateTime = new(ticks);
weekOfYear = calendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
checkDirectoy = Path.Combine(directory, dateTime.Year.ToString(), $"{dateTime.Year}-Week-{weekOfYear}");
checkName = Path.Combine(checkDirectoy, Path.GetFileName(file));
if (!Directory.Exists(checkDirectoy))
_ = Directory.CreateDirectory(checkDirectoy);
if (File.Exists(checkName))
continue;
File.Move(file, checkName);
}
}
NonThrowTryCatch();
}
} }