Skip to content

Commit b8a9089

Browse files
committed
Create interface for paratext project file handling
1 parent 193c964 commit b8a9089

20 files changed

+189
-289
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using System.IO;
2+
3+
namespace SIL.Machine.Corpora
4+
{
5+
public class FileParatextProjectFileHandler : IParatextProjectFileHandler
6+
{
7+
private readonly string _projectDir;
8+
private readonly ParatextProjectSettings _settings;
9+
10+
public FileParatextProjectFileHandler(string projectDir)
11+
{
12+
_projectDir = projectDir;
13+
_settings = new FileParatextProjectSettingsParser(projectDir).Parse();
14+
}
15+
16+
public bool Exists(string fileName)
17+
{
18+
return File.Exists(Path.Combine(_projectDir, fileName));
19+
}
20+
21+
public Stream Open(string fileName)
22+
{
23+
return File.OpenRead(Path.Combine(_projectDir, fileName));
24+
}
25+
26+
public ParatextProjectSettings GetSettings()
27+
{
28+
return _settings;
29+
}
30+
}
31+
}
Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,8 @@
1-
using System.IO;
2-
3-
namespace SIL.Machine.Corpora
1+
namespace SIL.Machine.Corpora
42
{
53
public class FileParatextProjectTextUpdater : ParatextProjectTextUpdaterBase
64
{
7-
private readonly string _projectDir;
8-
95
public FileParatextProjectTextUpdater(string projectDir)
10-
: base(new FileParatextProjectSettingsParser(projectDir))
11-
{
12-
_projectDir = projectDir;
13-
}
14-
15-
protected override bool Exists(string fileName)
16-
{
17-
return File.Exists(Path.Combine(_projectDir, fileName));
18-
}
19-
20-
protected override Stream Open(string fileName)
21-
{
22-
return File.OpenRead(Path.Combine(_projectDir, fileName));
23-
}
6+
: base(new FileParatextProjectFileHandler(projectDir)) { }
247
}
258
}
Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,8 @@
1-
using System.IO;
2-
31
namespace SIL.Machine.Corpora
42
{
53
public class FileParatextProjectVersificationMismatchDetector : ParatextProjectVersificationMismatchDetector
64
{
7-
private readonly string _projectDir;
8-
95
public FileParatextProjectVersificationMismatchDetector(string projectDir)
10-
: base(new FileParatextProjectSettingsParser(projectDir))
11-
{
12-
_projectDir = projectDir;
13-
}
14-
15-
protected override bool Exists(string fileName)
16-
{
17-
return File.Exists(Path.Combine(_projectDir, fileName));
18-
}
19-
20-
protected override Stream Open(string fileName)
21-
{
22-
return File.OpenRead(Path.Combine(_projectDir, fileName));
23-
}
6+
: base(new FileParatextProjectFileHandler(projectDir)) { }
247
}
258
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using System.IO;
2+
3+
namespace SIL.Machine.Corpora
4+
{
5+
public interface IParatextProjectFileHandler
6+
{
7+
bool Exists(string fileName);
8+
Stream Open(string fileName);
9+
ParatextProjectSettings GetSettings();
10+
}
11+
}

src/SIL.Machine/Corpora/ParatextBackupTermsCorpus.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,12 @@ public ParatextBackupTermsCorpus(
1515
{
1616
using (var archive = ZipFile.OpenRead(fileName))
1717
{
18-
ParatextProjectSettings settings = new ZipParatextProjectSettingsParser(archive).Parse();
19-
IEnumerable<(string, IReadOnlyList<string>)> glosses = new ZipParatextProjectTermsParser(
20-
archive,
21-
settings
22-
)
18+
IEnumerable<(string, IReadOnlyList<string>)> glosses = new ZipParatextProjectTermsParser(archive)
2319
.Parse(termCategories, useTermGlosses, chapters)
2420
.OrderBy(g => g.TermId);
2521

22+
ParatextProjectSettings settings = new ZipParatextProjectSettingsParser(archive).Parse();
23+
2624
string textId =
2725
$"{settings.BiblicalTermsListType}:{settings.BiblicalTermsProjectName}:{settings.BiblicalTermsFileName}";
2826

src/SIL.Machine/Corpora/ParatextProjectTermsParserBase.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,12 @@ public abstract class ParatextProjectTermsParserBase
3737
private static readonly Regex NumericalInformationRegex = new Regex(@"\s+\d+(\.\d+)*$", RegexOptions.Compiled);
3838

3939
private readonly ParatextProjectSettings _settings;
40+
private readonly IParatextProjectFileHandler _paratextProjectFileHandler;
4041

41-
protected ParatextProjectTermsParserBase(ParatextProjectSettings settings)
42+
protected ParatextProjectTermsParserBase(IParatextProjectFileHandler paratextProjectFileHandler)
4243
{
43-
_settings = settings;
44-
}
45-
46-
protected ParatextProjectTermsParserBase(ParatextProjectSettingsParserBase settingsParser)
47-
{
48-
_settings = settingsParser.Parse();
44+
_settings = paratextProjectFileHandler.GetSettings();
45+
_paratextProjectFileHandler = paratextProjectFileHandler;
4946
}
5047

5148
public IEnumerable<(string TermId, IReadOnlyList<string> Glosses)> Parse(
@@ -299,8 +296,8 @@ private static IDictionary<string, ImmutableHashSet<VerseRef>> GetReferences(XDo
299296
);
300297
}
301298

302-
protected abstract Stream Open(string fileName);
299+
private Stream Open(string fileName) => _paratextProjectFileHandler.Open(fileName);
303300

304-
protected abstract bool Exists(string fileName);
301+
private bool Exists(string fileName) => _paratextProjectFileHandler.Exists(fileName);
305302
}
306303
}

src/SIL.Machine/Corpora/ParatextProjectTextUpdaterBase.cs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,12 @@ namespace SIL.Machine.Corpora
88
public abstract class ParatextProjectTextUpdaterBase
99
{
1010
private readonly ParatextProjectSettings _settings;
11+
private readonly IParatextProjectFileHandler _paratextProjectFileHandler;
1112

12-
protected ParatextProjectTextUpdaterBase(ParatextProjectSettings settings)
13+
protected ParatextProjectTextUpdaterBase(IParatextProjectFileHandler paratextProjectFileHandler)
1314
{
14-
_settings = settings;
15-
}
16-
17-
protected ParatextProjectTextUpdaterBase(ParatextProjectSettingsParserBase settingsParser)
18-
{
19-
_settings = settingsParser.Parse();
15+
_settings = paratextProjectFileHandler.GetSettings();
16+
_paratextProjectFileHandler = paratextProjectFileHandler;
2017
}
2118

2219
public string UpdateUsfm(
@@ -73,7 +70,8 @@ public string UpdateUsfm(
7370
}
7471
}
7572

76-
protected abstract bool Exists(string fileName);
77-
protected abstract Stream Open(string fileName);
73+
private bool Exists(string fileName) => _paratextProjectFileHandler.Exists(fileName);
74+
75+
private Stream Open(string fileName) => _paratextProjectFileHandler.Open(fileName);
7876
}
7977
}

src/SIL.Machine/Corpora/ParatextProjectVersificationMismatchDetector.cs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,12 @@ namespace SIL.Machine.Corpora
88
public abstract class ParatextProjectVersificationMismatchDetector
99
{
1010
private readonly ParatextProjectSettings _settings;
11+
private readonly IParatextProjectFileHandler _paratextProjectFileHandler;
1112

12-
protected ParatextProjectVersificationMismatchDetector(ParatextProjectSettings settings)
13+
protected ParatextProjectVersificationMismatchDetector(IParatextProjectFileHandler paratextProjectFileHandler)
1314
{
14-
_settings = settings;
15-
}
16-
17-
protected ParatextProjectVersificationMismatchDetector(ParatextProjectSettingsParserBase settingsParser)
18-
{
19-
_settings = settingsParser.Parse();
15+
_settings = _paratextProjectFileHandler.GetSettings();
16+
_paratextProjectFileHandler = paratextProjectFileHandler;
2017
}
2118

2219
public IReadOnlyList<UsfmVersificationMismatch> GetUsfmVersificationMismatches(
@@ -52,7 +49,8 @@ public IReadOnlyList<UsfmVersificationMismatch> GetUsfmVersificationMismatches(
5249
return handler.Errors;
5350
}
5451

55-
protected abstract bool Exists(string fileName);
56-
protected abstract Stream Open(string fileName);
52+
private bool Exists(string fileName) => _paratextProjectFileHandler.Exists(fileName);
53+
54+
private Stream Open(string fileName) => _paratextProjectFileHandler.Open(fileName);
5755
}
5856
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using System.IO;
2+
using System.IO.Compression;
3+
4+
namespace SIL.Machine.Corpora
5+
{
6+
public class ZipParatextProjectFileHandler : IParatextProjectFileHandler
7+
{
8+
private readonly ZipArchive _archive;
9+
private readonly ParatextProjectSettings _settings;
10+
11+
public ZipParatextProjectFileHandler(ZipArchive archive)
12+
{
13+
_archive = archive;
14+
_settings = new ZipParatextProjectSettingsParser(archive).Parse();
15+
}
16+
17+
public bool Exists(string fileName)
18+
{
19+
return _archive.GetEntry(fileName) != null;
20+
}
21+
22+
public Stream Open(string fileName)
23+
{
24+
ZipArchiveEntry entry = _archive.GetEntry(fileName);
25+
if (entry == null)
26+
return null;
27+
return entry.Open();
28+
}
29+
30+
public ParatextProjectSettings GetSettings()
31+
{
32+
return _settings;
33+
}
34+
}
35+
}
Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,10 @@
1-
using System.IO;
21
using System.IO.Compression;
32

43
namespace SIL.Machine.Corpora
54
{
65
public class ZipParatextProjectTermsParser : ParatextProjectTermsParserBase
76
{
8-
private readonly ZipArchive _archive;
9-
10-
public ZipParatextProjectTermsParser(ZipArchive archive, ParatextProjectSettings settings = null)
11-
: base(settings ?? new ZipParatextProjectSettingsParser(archive).Parse())
12-
{
13-
_archive = archive;
14-
}
15-
16-
protected override bool Exists(string fileName)
17-
{
18-
return _archive.GetEntry(fileName) != null;
19-
}
20-
21-
protected override Stream Open(string fileName)
22-
{
23-
ZipArchiveEntry entry = _archive.GetEntry(fileName);
24-
if (entry == null)
25-
return null;
26-
return entry.Open();
27-
}
7+
public ZipParatextProjectTermsParser(ZipArchive archive)
8+
: base(new ZipParatextProjectFileHandler(archive)) { }
289
}
2910
}

0 commit comments

Comments
 (0)