private void SetDefaultNames() { // set default column names if they exist in the spread sheet GazetteerColumnHeaders defaultColumnHeaders = geoCoder.DefaultGazetteerColumnHeaders(); cboLevel1Codes.SelectedIndex = cboLevel1Codes.FindStringExact(defaultColumnHeaders.Level1Code); cboLevel2Codes.SelectedIndex = cboLevel2Codes.FindStringExact(defaultColumnHeaders.Level2Code); cboLevel3Codes.SelectedIndex = cboLevel3Codes.FindStringExact(defaultColumnHeaders.Level3Code); cboLevel1Names.SelectedIndex = cboLevel1Names.FindStringExact(defaultColumnHeaders.Level1Name); cboLevel2Names.SelectedIndex = cboLevel2Names.FindStringExact(defaultColumnHeaders.Level2Name); cboLevel3Names.SelectedIndex = cboLevel3Names.FindStringExact(defaultColumnHeaders.Level3Name); cboLevel1AltNames.SelectedIndex = cboLevel1AltNames.FindStringExact(defaultColumnHeaders.Level1AltName); cboLevel2AltNames.SelectedIndex = cboLevel2AltNames.FindStringExact(defaultColumnHeaders.Level2AltName); cboLevel3AltNames.SelectedIndex = cboLevel3AltNames.FindStringExact(defaultColumnHeaders.Level3AltName); }
public void CodeAll_InputContainMissSpellingsWithDifferentCasingToSavedMatches_AllCodesAdded() { // arrange GeoCoder geoCoder = new GeoCoder(MockRepository.GenerateStub <IDbConnection>() as DbConnection); InputColumnHeaders inputColumnHeaders = InputColumnNames(); GazetteerColumnHeaders gazetteerColumnHeaders = GazetteerColumnNames(); //gazetteer data string[] names1 = { "P1", "T1", "V1" }; string[] codes1 = { "1", "10", "100" }; // saved matched names data string[] names2 = { "P1x", "T1x", "V1x" }; // input data // line 1, all names miss-spelt with different casing string[] names3 = { "p1x", "t1x", "v1x" }; InputTestData inputTestData = new InputTestData(); inputTestData.AddLine(names3); geoCoder.SetInputData(inputTestData.Data(inputColumnHeaders)); geoCoder.SetInputColumns(inputColumnHeaders); // create gazetteer data GazetteerRecords gazetteerRecords = new GazetteerRecords(); gazetteerRecords.AddLine(names1, codes1); geoCoder.SetGazetteerData(gazetteerRecords.Data(gazetteerColumnHeaders)); // add records matched names records MatchProviderTestData matchProviderTestData = new MatchProviderTestData(); // add records matching saved matched names to gazetteer names matchProviderTestData.AddLevel1(names2, names1); matchProviderTestData.AddLevel2(names2, names1); matchProviderTestData.AddLevel3(names2, names1); MatchProviderStub matchProviderStub = new MatchProviderStub(matchProviderTestData); geoCoder.SetMatchProvider(matchProviderStub.MatchProvider()); geoCoder.SetGazetteerColumns(gazetteerColumnHeaders, false); // act geoCoder.AddAllLocationCodes(); // assert var columns = geoCoder.LocationCodeColumnHeaders(); //line 1 - should contain codes 1 DataRow line1 = geoCoder.InputData.Rows[0]; Assert.AreEqual(codes1[0], line1[columns.Level1]); Assert.AreEqual(codes1[1], line1[columns.Level2]); Assert.AreEqual(codes1[2], line1[columns.Level3]); }
private static GazetteerColumnHeaders GazetteerColumnNames() { GazetteerColumnHeaders gazetteerColumnHeaders = new GazetteerColumnHeaders(); gazetteerColumnHeaders.Level1Code = "ID1"; gazetteerColumnHeaders.Level2Code = "ID2"; gazetteerColumnHeaders.Level3Code = "ID3"; gazetteerColumnHeaders.Level1Name = "Name1"; gazetteerColumnHeaders.Level2Name = "Name2"; gazetteerColumnHeaders.Level3Name = "Name3"; return(gazetteerColumnHeaders); }
/// <summary> /// Sets the gazetteer columns that hold the data to provide the codes /// </summary> /// <param name="columnHeaders">The column names.</param> /// <param name="saveSelection">If true, the selected column names are saved to the database</param> public void SetGazetteerColumns( GazetteerColumnHeaders columnHeaders, bool saveSelection = true) { gazetteerData.ColumnHeaders = columnHeaders; coder = new Coder(gazetteerData.LocationList, matchProvider); gazetteerNames = new GazetteerNames(gazetteerData.LocationList); if (saveSelection) { SaveUserSelection(columnHeaders, gazetteerFileName); } }
private void SetColumnNames() { GazetteerColumnHeaders columnHeaders = new GazetteerColumnHeaders(); columnHeaders.Level1Code = cboLevel1Codes.SelectedValue as string; columnHeaders.Level1Name = cboLevel1Names.SelectedValue as string; columnHeaders.Level1AltName = cboLevel1AltNames.SelectedValue as string; columnHeaders.Level2Code = cboLevel2Codes.SelectedValue as string; columnHeaders.Level2Name = cboLevel2Names.SelectedValue as string; columnHeaders.Level2AltName = cboLevel2AltNames.SelectedValue as string; columnHeaders.Level3Code = cboLevel3Codes.SelectedValue as string; columnHeaders.Level3Name = cboLevel3Names.SelectedValue as string; columnHeaders.Level3AltName = cboLevel3AltNames.SelectedValue as string; geoCoder.SetGazetteerColumns(columnHeaders); }
private void SaveUserSelection(GazetteerColumnHeaders columnHeaders, string filename) { // todo review the code duplication between GazetteerColumnNames and GazetteerColumnsMapping classes columnsMappingProvider.SaveGazetteerColumnsMapping( new GazetteerColumnsMapping { FileName = filename, Level1Code = columnHeaders.Level1Code, Level1Name = columnHeaders.Level1Name, Level1AltName = columnHeaders.Level1AltName, Level2Code = columnHeaders.Level2Code, Level2Name = columnHeaders.Level2Name, Level2AltName = columnHeaders.Level2AltName, Level3Code = columnHeaders.Level3Code, Level3Name = columnHeaders.Level3Name, Level3AltName = columnHeaders.Level3AltName, } ); }
/// <summary> /// The default names of the columns that contain the gazetteer data to be matched. /// </summary> /// <returns> /// The column names /// </returns> public GazetteerColumnHeaders DefaultGazetteerColumnHeaders() { GazetteerColumnHeaders columnHeaders = new GazetteerColumnHeaders(); GazetteerColumnsMapping columnsMapping = columnsMappingProvider.GetGazetteerColumnsMapping(gazetteerFileName); if (columnsMapping != null) { columnHeaders.Level1Code = columnsMapping.Level1Code; columnHeaders.Level2Code = columnsMapping.Level2Code; columnHeaders.Level3Code = columnsMapping.Level3Code; columnHeaders.Level1Name = columnsMapping.Level1Name; columnHeaders.Level2Name = columnsMapping.Level2Name; columnHeaders.Level3Name = columnsMapping.Level3Name; columnHeaders.Level1AltName = columnsMapping.Level1AltName; columnHeaders.Level2AltName = columnsMapping.Level2AltName; columnHeaders.Level3AltName = columnsMapping.Level3AltName; } return(columnHeaders); }
public DataTable Data(GazetteerColumnHeaders gazetteerColumnHeaders) { DataTable dt = new DataTable(); dt.Columns.Add(gazetteerColumnHeaders.Level1Name); dt.Columns.Add(gazetteerColumnHeaders.Level2Name); dt.Columns.Add(gazetteerColumnHeaders.Level3Name); dt.Columns.Add(gazetteerColumnHeaders.Level1Code); dt.Columns.Add(gazetteerColumnHeaders.Level2Code); dt.Columns.Add(gazetteerColumnHeaders.Level3Code); foreach (var line in lines) { object[] values = { line.Item1[0], line.Item1[1], line.Item1[2], line.Item2[0], line.Item2[1], line.Item2[2] }; dt.LoadDataRow(values, true); } return(dt); }
CodeAll_CorrectAndMissSpeltInputWithSavedMatchesForMissSpellings_AllCodesAdded () { // arrange GeoCoder geoCoder = new GeoCoder(MockRepository.GenerateStub <IDbConnection>() as DbConnection); InputColumnHeaders inputColumnHeaders = InputColumnNames(); GazetteerColumnHeaders gazetteerColumnHeaders = GazetteerColumnNames(); // create input test data with // line 1, all names correct // line 2, all names correct // line 3, all names miss-spelt string[] names1 = { "P1", "T1", "V1" }; string[] names2 = { "P2", "T2", "V2" }; string[] names3 = { "P1x", "T1x", "V1x" }; string[] codes1 = { "1", "10", "100" }; string[] codes2 = { "2", "20", "200" }; InputTestData inputTestData = new InputTestData(); inputTestData.AddLine(names1); inputTestData.AddLine(names2); inputTestData.AddLine(names3); geoCoder.SetInputData(inputTestData.Data(inputColumnHeaders)); geoCoder.SetInputColumns(inputColumnHeaders); // create gazetteer data GazetteerRecords gazetteerRecords = new GazetteerRecords(); gazetteerRecords.AddLine(names1, codes1); gazetteerRecords.AddLine(names2, codes2); geoCoder.SetGazetteerData(gazetteerRecords.Data(gazetteerColumnHeaders)); // add records matching input line 3 names to gazetteer names 1 MatchProviderTestData matchProviderTestData = new MatchProviderTestData(); matchProviderTestData.AddLevel1(names3, names1); matchProviderTestData.AddLevel2(names3, names1); matchProviderTestData.AddLevel3(names3, names1); MatchProviderStub matchProviderStub = new MatchProviderStub(matchProviderTestData); geoCoder.SetMatchProvider(matchProviderStub.MatchProvider()); geoCoder.SetGazetteerColumns(gazetteerColumnHeaders, false); // act geoCoder.AddAllLocationCodes(); // assert var columns = geoCoder.LocationCodeColumnHeaders(); //line 1 - should contain codes 1 DataRow line1 = geoCoder.InputData.Rows[0]; Assert.AreEqual(codes1[0], line1[columns.Level1]); Assert.AreEqual(codes1[1], line1[columns.Level2]); Assert.AreEqual(codes1[2], line1[columns.Level3]); //line 2 - should contain codes 2 DataRow line2 = geoCoder.InputData.Rows[1]; Assert.AreEqual(codes2[0], line2[columns.Level1]); Assert.AreEqual(codes2[1], line2[columns.Level2]); Assert.AreEqual(codes2[2], line2[columns.Level3]); //line 3 - should contain codes 1 DataRow line3 = geoCoder.InputData.Rows[2]; Assert.AreEqual(codes1[0], line3[columns.Level1]); Assert.AreEqual(codes1[1], line3[columns.Level2]); Assert.AreEqual(codes1[2], line3[columns.Level3]); }
/// <summary> /// Sets the gazetteer columns that hold the data to provide the codes /// </summary> /// <param name="columnHeaders">The column names.</param> /// <param name="saveSelection">If true, the selected column names are saved to the database</param> public void SetGazetteerColumns( GazetteerColumnHeaders columnHeaders, bool saveSelection = true) { gazetteerData.ColumnHeaders = columnHeaders; coder = new Coder(gazetteerData.LocationList, matchProvider); gazetteerNames = new GazetteerNames(gazetteerData.LocationList); if (saveSelection) SaveUserSelection(columnHeaders, gazetteerFileName); }
/// <summary> /// The default names of the columns that contain the gazetteer data to be matched. /// </summary> /// <returns> /// The column names /// </returns> public GazetteerColumnHeaders DefaultGazetteerColumnHeaders() { GazetteerColumnHeaders columnHeaders = new GazetteerColumnHeaders(); GazetteerColumnsMapping columnsMapping = columnsMappingProvider.GetGazetteerColumnsMapping(gazetteerFileName); if (columnsMapping != null) { columnHeaders.Level1Code = columnsMapping.Level1Code; columnHeaders.Level2Code = columnsMapping.Level2Code; columnHeaders.Level3Code = columnsMapping.Level3Code; columnHeaders.Level1Name = columnsMapping.Level1Name; columnHeaders.Level2Name = columnsMapping.Level2Name; columnHeaders.Level3Name = columnsMapping.Level3Name; columnHeaders.Level1AltName = columnsMapping.Level1AltName; columnHeaders.Level2AltName = columnsMapping.Level2AltName; columnHeaders.Level3AltName = columnsMapping.Level3AltName; } return columnHeaders; }