private void Add(AddressPartIndexWrite d) { d.SearchName = null; d.FullName = null; if (!_index_addobj_sort.ContainsKey(d.Level)) { _index_addobj_sort[d.Level] = new Dictionary<string, AddressPartIndexWrite>(); } var sort = _index_addobj_sort[d.Level]; sort.Add(d.Id, d); _index_addobj_id.Add(d.Id, d); }
protected static AddressPartIndexWrite EnumRecord(dynamic headerObj, DbfRecord record) { string NAME = record[headerObj.NAME].Trim(); string SOCR = record[headerObj.SOCR].Trim(); string CODE = record[headerObj.CODE].Trim(); string INDEX = record[headerObj.INDEX].Trim(); // string GNINMB = record[headerObj.GNINMB].Trim(); // string UNO = record[headerObj.UNO].Trim(); // string OCATD = record[headerObj.OCATD].Trim(); // string STATUS = record[headerObj.STATUS].Trim(); if (!string.IsNullOrEmpty(INDEX) && !_Base.INDEX.IsMatch(INDEX)) { AddressLoader.Log.Warn(ClassName + "Значение: {0} не может быть почтовым индексом", INDEX); return null; } if (!_Base.CODE.IsMatch(CODE)) { AddressLoader.Log.Warn(ClassName + "Значение: {0} не может быть кодом", CODE); return null; } if (CODE.Length == 13) { // не актуальные данные if (CODE[11] != '0' || CODE[12] != '0') return null; CODE = CODE.Substring(0, 11) + "0000"; } else if (CODE.Length == 17) { // не актуальные данные if (CODE[15] != '0' || CODE[16] != '0') return null; CODE = CODE.Substring(0, 15); } else { AddressLoader.Log.Warn(ClassName + "Значение: {0} не может быть кодом", CODE); return null; } int level = _Base.NoLevel; foreach (var l in _Base.LEVELS) { if (l.Key.IsMatch(CODE)) { level = l.Value; break; } } if (level == _Base.NoLevel) { AddressLoader.Log.Warn(ClassName + "Для кода: {0} не найден уровень в КЛАДР", CODE); return null; } AddressPartIndexWrite d = new AddressPartIndexWrite(); d.PostalCode = INDEX; d.Id = CODE; d.Level = level; d.Reduction = SOCR; d.Name = NAME; return d; }
private void SetNameWithReduction(AddressPartIndexWrite d) { d.NameWithShortReduction = GetNameWithReduction(d.Level, d.Id, d.Reduction, d.Name); d.NameWithReduction = GetNameWithReduction(d.Level, d.Id, _reduction.Get(d).Name, d.Name); }
private static Document CreateDocument(AddressPartIndexWrite d) { if (string.IsNullOrEmpty(d.SearchName)) return null; var doc = new Document(); doc.Add(new Field("id", d.Id, Field.Store.YES, Field.Index.ANALYZED)); doc.Add(new Field("postalCode", d.PostalCode, Field.Store.YES, Field.Index.ANALYZED)); doc.Add(new Field("searchName", d.SearchName, Field.Store.YES, Field.Index.ANALYZED)); doc.Add(new Field("lvl", d.Level.ToString(), Field.Store.YES, Field.Index.NO)); doc.Add(new Field("reduction", d.Reduction, Field.Store.YES, Field.Index.NO)); doc.Add(new Field("name", d.Name, Field.Store.YES, Field.Index.NO)); doc.Add(new Field("name_short_reduction", d.NameWithShortReduction, Field.Store.YES, Field.Index.NO)); doc.Add(new Field("name_reduction", d.NameWithReduction, Field.Store.YES, Field.Index.NO)); doc.Add(new Field("fullName", d.FullName, Field.Store.YES, Field.Index.NO)); return doc; }
public AddressPartReduction Get(AddressPartIndexWrite d) { return Get(d.Level, d.Reduction); }