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);
        }
Beispiel #2
0
        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;
        }
Beispiel #3
0
 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);
 }
Beispiel #4
0
        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);
 }