Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions src/SIL.LCModel/Application/ApplicationServices/XmlImportData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,7 @@ private void MergeRedundantEntries(ILexEntry leOld, ILexEntry leNew)
leNew.SensesOS.Add(rgls[i]);
MergeDates(leOld, leNew);
MergeEntryRefs(leOld, leNew);
MergeDialectLabels(leOld, leNew);
CopyCustomFieldData(leOld, leNew);

// Clean up our internal Id map before deleting anything.
Expand All @@ -481,6 +482,16 @@ private void MergeRedundantEntries(ILexEntry leOld, ILexEntry leNew)
m_mapIdGuid[id] = leNew.Guid;
}

private void MergeDialectLabels(ILexEntry leOld, ILexEntry leNew)
{
// We don't want duplicates, so we have to check each reference.
foreach (var dlOld in leOld.DialectLabelsRS)
{
if (!leNew.DialectLabelsRS.Contains(dlOld))
leNew.DialectLabelsRS.Add(dlOld);
}
}

/// Use the newest date between the two dates, as long as it is different from the importDate
private void MergeDates(ILexEntry leOld, ILexEntry leNew)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1415,6 +1415,40 @@ public void MergeCreatedDateWorks()
"The DateCreated of the entries should match the import data.");
}
}

[Test]
public void DialectLabelMergeWorks()
{
var xid = new XmlImportData(m_cache, false);
using(var reader = new StringReader("<LexDb xmlns:msxsl=\"urn:schemas-microsoft-com:xslt\" xmlns:user=\"urn:my-scripts\">" +
"<Entries><LexEntry><LexemeForm><MoStemAllomorph><MorphType><Link ws=\"en\" name=\"stem\" />" +
"</MorphType><Form><AUni ws=\"cub\">ãcʉriojomecacʉ</AUni></Form></MoStemAllomorph></LexemeForm>" +
"<DateCreated><Time val=\"2011-09-14 12:00:00.000\" /></DateCreated>" +
"<DialectLabels><Link ws=\"en\" abbr=\"C\" name=\"C\" /></DialectLabels><EntryRefs><LexEntryRef>" +
"<ComponentLexemes><Link ws=\"cub\" entry=\"ãcʉriojʉmecacʉ\" /></ComponentLexemes></LexEntryRef></EntryRefs>" +
"</LexEntry>" +
"<LexEntry id=\"IID0E3\"><LexemeForm><MoStemAllomorph><MorphType><Link ws=\"en\" name=\"stem\" /></MorphType>" +
"<Form><AUni ws=\"cub\">ãcʉriojʉmecacʉ</AUni></Form></MoStemAllomorph></LexemeForm>" +
"<DateCreated><Time val=\"2011-09-14 12:00:00.000\" /></DateCreated>" +
"<DialectLabels><Link ws=\"en\" abbr=\"Q\" name=\"Q\" /><Link ws=\"en\" abbr=\"V\" name=\"V\" /></DialectLabels>" +
"<MorphoSyntaxAnalyses><MoStemMsa id=\"MSA1000\"><PartOfSpeech><Link ws=\"en\" abbr=\"s.\" /></PartOfSpeech>" +
"</MoStemMsa></MorphoSyntaxAnalyses><Senses><LexSense><Definition><AStr ws=\"en\">" +
"<Run ws=\"en\">tree species cf jocʉcʉ</Run></AStr></Definition>" +
"<MorphoSyntaxAnalysis><Link target=\"MSA1000\" /></MorphoSyntaxAnalysis></LexSense></Senses></LexEntry>" +
"<LexEntry><LexemeForm><MoStemAllomorph><MorphType><Link ws=\"en\" name=\"stem\" /></MorphType>" +
"<Form><AUni ws=\"cub\">ãcʉriojomecacʉ</AUni></Form></MoStemAllomorph></LexemeForm>" +
"<EntryRefs><LexEntryRef><VariantEntryTypes><Link ws=\"es\" name=\"Variante\" /></VariantEntryTypes>" +
"<ComponentLexemes><Link target=\"IID0E3\" /></ComponentLexemes></LexEntryRef></EntryRefs></LexEntry>" +
"</Entries></LexDb>"))
using(var writer = new StringWriter(new StringBuilder()))
{
xid.ImportData(reader, writer, null);
var entries = m_cache.LangProject.LexDbOA.Entries.ToArray();
Assert.That(entries.Length, Is.EqualTo(2), "The lexicon should have 2 entries.");
Assert.That(entries[0].DialectLabelsRS.Count, Is.EqualTo(2));
Assert.That(entries[1].DialectLabelsRS.Count, Is.EqualTo(1));
}
}
///--------------------------------------------------------------------------------------
/// <summary>
/// Tests the method ImportData() on sequence lexical relations.
Expand Down
Loading