public void Write(TextWriter writer) { if (StreetName != _MetaphoneStreet) { try { var metaphone = DoubleMetaphone.EncodePhrase(StreetName); if (metaphone.Length > ZipStreets.MetaphoneMaxLength) { metaphone = metaphone.Substring(0, ZipStreets.MetaphoneMaxLength); } _MetaphoneStreet = StreetName; _MetaphoneValue = metaphone; } // ReSharper disable once EmptyGeneralCatchClause catch (Exception /*ex*/) { } } if (writer == null) // write to database { ZipStreets.Insert(ZipCode, UpdateKey, DirectionPrefix, StreetName, StreetSuffix, DirectionSuffix, PrimaryLowNumber, PrimaryHighNumber, PrimaryOddEven, BuildingName, SecondaryType, SecondaryLowNumber, SecondaryHighNumber, SecondaryOddEven, _MetaphoneValue, State, LdsInfo.Congress, LdsInfo.StateSenate, LdsInfo.StateHouse, LdsInfo.County); } else // write to csv { var csvWriter = new SimpleCsvWriter(); csvWriter.AddField(ZipCode); csvWriter.AddField(UpdateKey); csvWriter.AddField(DirectionPrefix); csvWriter.AddField(StreetName); csvWriter.AddField(StreetSuffix); csvWriter.AddField(DirectionSuffix); csvWriter.AddField(PrimaryLowNumber); csvWriter.AddField(PrimaryHighNumber); csvWriter.AddField(PrimaryOddEven); csvWriter.AddField(BuildingName); csvWriter.AddField(SecondaryType); csvWriter.AddField(SecondaryLowNumber); csvWriter.AddField(SecondaryHighNumber); csvWriter.AddField(SecondaryOddEven); csvWriter.AddField(_MetaphoneValue); csvWriter.AddField(State); csvWriter.AddField(LdsInfo.Congress); csvWriter.AddField(LdsInfo.StateSenate); csvWriter.AddField(LdsInfo.StateHouse); csvWriter.AddField(LdsInfo.County); csvWriter.Write(writer); } }
internal void DoOneZipCode(string zipCode) { if (!SuppressUpdate && TextWriter == null) { ZipStreets.DeleteByZipCode(zipCode, 0); } using ( var reader = ZipStreetsDownloaded.GetAnalysisDataReaderByZipCode(zipCode, 0) ) { var first = true; string currentDirectionPrefix = null; string currentStreetName = null; string currentStreetSuffix = null; string currentDirectionSuffix = null; List <StreetAnalysisData> dataList = null; while (reader.Read()) { if (!StateCache.IsValidStateCode(reader.State)) { continue; // skip PR etc } if (reader.Plus4Low.EndsWith("ND")) // no delivery { continue; } if (first) { AppendStatusText("{1} Beginning zipCode {0}", zipCode, RowsWritten); first = false; } var directionPrefix = reader.DirectionPrefix; var streetName = reader.StreetName; var streetSuffix = reader.StreetSuffix; var directionSuffix = reader.DirectionSuffix; if (directionPrefix != currentDirectionPrefix || streetName != currentStreetName || streetSuffix != currentStreetSuffix || directionSuffix != currentDirectionSuffix) { if (dataList != null) { RowsWritten += AnalyzeStreet(dataList); } dataList = new List <StreetAnalysisData>(); currentDirectionPrefix = directionPrefix; currentStreetName = streetName; currentStreetSuffix = streetSuffix; currentDirectionSuffix = directionSuffix; } if (dataList != null) { dataList.Add(new StreetAnalysisData(reader)); } } if (dataList != null) { RowsWritten += AnalyzeStreet(dataList); } } }