From 45728cdd00939555335657aaab2ce55d6d49fa76 Mon Sep 17 00:00:00 2001 From: Anthony Truskinger Date: Wed, 4 Jul 2018 14:39:33 +1000 Subject: [PATCH] Adds support for an additional date format Temporarilly adds support for parsing dates from an additional date format. We will remove this support when we eventually create a standardised file renaming tool. --- src/Acoustics.Shared/FileDateHelpers.cs | 13 +++++++++++-- tests/Acoustics.Test/FileDateHelpersTests.cs | 10 ++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Acoustics.Shared/FileDateHelpers.cs b/src/Acoustics.Shared/FileDateHelpers.cs index c006fdb8f..631b8b8d5 100644 --- a/src/Acoustics.Shared/FileDateHelpers.cs +++ b/src/Acoustics.Shared/FileDateHelpers.cs @@ -43,7 +43,7 @@ public class FileDateHelpers new DateVariants( @"^(.*)(?(\d{4})(\d{2})(\d{2})(?T|-|_)(\d{2})(\d{2})(\d{2})(?![+-][\d:]{2,5}|Z)).*\.([a-zA-Z0-9]+)$", AppConfigHelper.StandardDateFormatNoTimeZone, - false, + parseTimeZone: false, AcceptedFormatsNoTimeZone), // valid: prefix_20140101-235959+10.mp3, a_00000000-000000+00.a, a_99999999-999999+9999.dnsb48364JSFDSD @@ -53,7 +53,16 @@ public class FileDateHelpers new DateVariants( @"^(.*)(?(\d{4})(\d{2})(\d{2})(?T|-|_)(\d{2})(\d{2})(\d{2})(?![+-][:]{2,5})(?([+-](?!\d{0,5}:)(\d{4}|\d{2}))|Z)).*\.([a-zA-Z0-9]+)", AppConfigHelper.StandardDateFormat, - true, AcceptedFormatsTimeZone), + parseTimeZone: true, + AcceptedFormatsTimeZone), + + // temporary support for an alternate date format. We will remove support for this format. We're also not documenting support for this date format. + // valid: prefix_2359-01012015.mp3, a_2359-01012015.a, a_2359-01012015.dnsb48364JSFDSD + new DateVariants( + @"^(.*)(?(\d{2})(\d{2})(?-)(\d{2})(\d{2})(\d{4})).*\.([a-zA-Z0-9]+)", + "HHmm-ddMMyyyy", + parseTimeZone: false, + Array.Empty()), }; private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); diff --git a/tests/Acoustics.Test/FileDateHelpersTests.cs b/tests/Acoustics.Test/FileDateHelpersTests.cs index a092a3559..42694a530 100644 --- a/tests/Acoustics.Test/FileDateHelpersTests.cs +++ b/tests/Acoustics.Test/FileDateHelpersTests.cs @@ -92,8 +92,6 @@ public void TestInvalidDateFormats() } } - //private static DateTimeOffset Parse(string date) => DateTimeOffset.Parse(date); - private Dictionary validFormats = new Dictionary { ["sdncv*_-T&^%34jd_20140301_085031+0630blah_T-suffix.mp3"] = Parse("2014-03-01T08:50:31.000+06:30"), @@ -116,7 +114,6 @@ public void TestValidDateFormats() FileDateHelpers.FileNameContainsDateTime(example.Key, out parsedDate), $"Testing format: {example}"); - Assert.AreEqual(example.Value, parsedDate); } } @@ -131,6 +128,10 @@ public void TestValidDateFormats() ["SERF_20130314_000021_000.wav"] = Parse("2013-03-14T00:00:21.000+06:30"), ["20150727T133138.wav"] = Parse("2015-07-27T13:31:38.000+06:30"), ["20150801-064555.wav"] = Parse("2015-08-01T06:45:55.000+06:30"), + + // Temporary support for another date format + ["0645-01082015.wav"] = Parse("2015-08-01T06:45:00.000+06:30"), + ["test_0645-01082015_test.wav"] = Parse("2015-08-01T06:45:00.000+06:30"), }; [TestMethod] @@ -147,12 +148,10 @@ public void TestValidDateFormatsWithOffsetHint() offsetHint: new TimeSpan(6, 30, 0)), $"Testing format: {example}"); - Assert.AreEqual(example.Value, parsedDate); } } - private readonly string[] unorderedFiles = new[] { @"Y:\2015Sept20\Woondum3\20150919_201742Z.wav", @"Y:\2015Sept20\Woondum3\20150920_000006Z.wav", @@ -168,7 +167,6 @@ public void TestValidDateFormatsWithOffsetHint() @"Y:\2015Sept20\Woondum3\20150918-133146+1130.wav", @"Y:\2015Sept20\Woondum3\20150918_201738.wav", }; - private DateTimeOffset[] orderedDates = new[] { Parse("2014-03-01T08:50:31.000+06:30"), Parse("2014-03-01T08:50:31.000+06:30"),