private IList <Provincia> NomenclarProvinciaI(string provincia) { IList <Provincia> result; if (Cleaning.provinciasNomencladas.ContainsKey(provincia)) { result = Cleaning.provinciasNomencladas[provincia]; } else { Tokenizer tokenizer = Tokenizer.FromString(provincia, 0); IList <Provincia> provincias = base.DAOFactory.ProvinciaDAO.GetProvincias(tokenizer.ToArray()); IList <Provincia> list = Cleaning.Nomenclar <Provincia>(tokenizer, provincias); Cleaning.provinciasNomencladas.Add(provincia, list); if (Cleaning.provinciasNomencladas.Count > 500) { using (Dictionary <string, IList <Provincia> > .Enumerator enumerator = Cleaning.provinciasNomencladas.GetEnumerator()) { if (enumerator.MoveNext()) { KeyValuePair <string, IList <Provincia> > current = enumerator.Current; Cleaning.provinciasNomencladas.Remove(current.Key); } } } result = list; } return(result); }
private IList <Poligonal> NomenclarPoligonalI(string poligonal, int provincia) { string key = provincia + "||-||" + poligonal; IList <Poligonal> result; if (Cleaning.poligonalesNomencladas.ContainsKey(key)) { result = Cleaning.poligonalesNomencladas[key]; } else { Tokenizer tokenizer = Tokenizer.FromString(poligonal, 3); IList <Poligonal> enProvincia = base.DAOFactory.PoligonalDAO.GetEnProvincia(tokenizer.ToArray(), provincia); IList <Poligonal> list = Cleaning.Nomenclar <Poligonal>(tokenizer, enProvincia); Cleaning.poligonalesNomencladas.Add(key, list); if (Cleaning.poligonalesNomencladas.Count > 500) { using (Dictionary <string, IList <Poligonal> > .Enumerator enumerator = Cleaning.poligonalesNomencladas.GetEnumerator()) { if (enumerator.MoveNext()) { KeyValuePair <string, IList <Poligonal> > current = enumerator.Current; Cleaning.poligonalesNomencladas.Remove(current.Key); } } } result = list; } return(result); }
private IList <Poligonal> NomenclarPoligonalI(string poligonal, int partido, int provincia, int altura) { Tokenizer tokenizer = Tokenizer.FromString(poligonal, 3); IList <Poligonal> enPartidoYProvincia = base.DAOFactory.PoligonalDAO.GetEnPartidoYProvincia(tokenizer.ToArray(), partido, provincia, altura); return(Cleaning.Nomenclar <Poligonal>(tokenizer, enPartidoYProvincia)); }
private static IList <T> NomenclarAmbiguo <T>(Tokenizer tokens, IEnumerable <T> options, out double puntos) where T : ITokenizable { Evaluador eval = new Evaluador(tokens, new IEvaluator[] { new WordMatchEvaluator(), new StartMatchEvaluator() }); return(Cleaning.Nomenclar <T>(eval, tokens, options, out puntos)); }
private IList <Partido> NomenclarPartidoI(string partido, int provincia) { string key = provincia + "||" + partido; IList <Partido> result; if (Cleaning.partidosNomenclados.ContainsKey(key)) { result = Cleaning.partidosNomenclados[key]; } else { Tokenizer tokenizer = Tokenizer.FromString(partido, 1); IList <Partido> enProvincia = base.DAOFactory.PartidoDAO.GetEnProvincia(tokenizer.ToArray(), provincia); IList <Localidad> byProvincia = base.DAOFactory.LocalidadDAO.GetByProvincia(tokenizer.ToArray(), provincia); double num = 0.0; IList <Partido> list = Cleaning.Nomenclar <Partido>(tokenizer, enProvincia, out num); double num2 = 0.0; IList <Localidad> list2 = Cleaning.Nomenclar <Localidad>(tokenizer, byProvincia, out num2); bool flag = list.Count > 0; bool flag2 = list2.Count > 0; bool flag3 = num > num2; bool flag4 = num2 > num; bool flag5 = Math.Abs(num2 - num) < 0.01; if (flag && flag2 && flag5) { List <int> list3 = new List <int>(list.Count); foreach (Partido current in list) { list3.Add(current.Id); } foreach (Localidad current2 in list2) { if (!list3.Contains(current2.Partido.Id)) { list.Add(current2.Partido); } } } else { if (flag2 && !flag3) { if (!flag || flag4) { list.Clear(); List <int> list3 = new List <int>(list2.Count); foreach (Localidad current2 in list2) { if (!list3.Contains(current2.Partido.Id)) { list3.Add(current2.Partido.Id); list.Add(current2.Partido); } } } } } Cleaning.partidosNomenclados.Add(key, list); if (Cleaning.partidosNomenclados.Count > 500) { using (Dictionary <string, IList <Partido> > .Enumerator enumerator3 = Cleaning.partidosNomenclados.GetEnumerator()) { if (enumerator3.MoveNext()) { KeyValuePair <string, IList <Partido> > current3 = enumerator3.Current; Cleaning.partidosNomenclados.Remove(current3.Key); } } } result = list; } return(result); }
public IList <ObjetoPuntuado <DireccionVO> > NomenclarDireccionSmart(ParsedDirection direccion) { List <ObjetoPuntuado <DireccionVO> > list = new List <ObjetoPuntuado <DireccionVO> >(); IList <ObjetoPuntuado <DireccionVO> > result; if (string.IsNullOrEmpty(direccion.Calle.Trim()) || (direccion.Altura <= 0 && string.IsNullOrEmpty(direccion.Esquina.Trim()))) { result = list; } else { double num = 0.0; double num2 = 0.0; double num3 = 0.0; double item = 0.0; IList <Provincia> list2 = null; IList <Partido> list3 = null; if (!string.IsNullOrEmpty(direccion.Provincia.Trim())) { Tokenizer tokenizer = Tokenizer.FromString(direccion.Provincia, 0); IList <Provincia> provincias = base.DAOFactory.ProvinciaDAO.GetProvincias(tokenizer.ToArray()); list2 = Cleaning.Nomenclar <Provincia>(tokenizer, provincias, out num); if (!string.IsNullOrEmpty(direccion.Localidad)) { Tokenizer tokenizer2 = Tokenizer.FromString(direccion.Localidad, 1); List <Partido> list4 = new List <Partido>(); foreach (Provincia current in provincias) { list4.AddRange(base.DAOFactory.PartidoDAO.GetEnProvincia(tokenizer2.ToArray(), current.MapId)); } List <int> list5 = new List <int>(); list3 = Cleaning.Nomenclar <Partido>(tokenizer2, list4, out num2); foreach (Partido current2 in list3) { list5.Add(current2.Id); } List <Localidad> list6 = new List <Localidad>(); list6.AddRange(base.DAOFactory.LocalidadDAO.GetByProvincia(tokenizer2.ToArray(), -1)); IList <Localidad> list7 = Cleaning.Nomenclar <Localidad>(tokenizer2, list6, out num3); foreach (Localidad current3 in list7) { if (!list5.Contains(current3.Partido.Id)) { list3.Add(current3.Partido); list5.Add(current3.Partido.Id); } } } } else { if (!string.IsNullOrEmpty(direccion.Localidad)) { Tokenizer tokenizer2 = Tokenizer.FromString(direccion.Localidad, 1); List <Partido> list4 = new List <Partido>(); list4.AddRange(base.DAOFactory.PartidoDAO.GetEnProvincia(tokenizer2.ToArray(), -1)); List <int> list5 = new List <int>(); list3 = Cleaning.Nomenclar <Partido>(tokenizer2, list4, out num2); foreach (Partido current2 in list3) { list5.Add(current2.Id); } List <Localidad> list6 = new List <Localidad>(); list6.AddRange(base.DAOFactory.LocalidadDAO.GetByProvincia(tokenizer2.ToArray(), -1)); IList <Localidad> list7 = Cleaning.Nomenclar <Localidad>(tokenizer2, list6, out num3); foreach (Localidad current3 in list7) { if (!list5.Contains(current3.Partido.Id)) { list3.Add(current3.Partido); list5.Add(current3.Partido.Id); } } } } Tokenizer tokenizer3 = Tokenizer.FromString(direccion.Calle, 3); List <Poligonal> list8 = new List <Poligonal>(); List <double> list9 = new List <double>(); if (list3 != null) { foreach (Partido current2 in list3) { IList <Poligonal> enPartidoYProvincia = base.DAOFactory.PoligonalDAO.GetEnPartidoYProvincia(tokenizer3.ToArray(), current2.PolId, current2.Provincia.MapId); IList <Poligonal> list10 = Cleaning.NomenclarAmbiguo <Poligonal>(tokenizer3, enPartidoYProvincia, out item); list8.AddRange(list10); for (int i = 0; i < list10.Count; i++) { list9.Add(item); } } } else { if (list2 != null) { foreach (Provincia current in list2) { IList <Poligonal> enPartidoYProvincia = base.DAOFactory.PoligonalDAO.GetEnPartidoYProvincia(tokenizer3.ToArray(), -1, current.MapId); IList <Poligonal> list10 = Cleaning.NomenclarAmbiguo <Poligonal>(tokenizer3, enPartidoYProvincia, out item); list8.AddRange(list10); for (int i = 0; i < list10.Count; i++) { list9.Add(item); } } } else { IList <Poligonal> enPartidoYProvincia = base.DAOFactory.PoligonalDAO.GetEnPartidoYProvincia(tokenizer3.ToArray(), -1, -1); IList <Poligonal> list10 = Cleaning.NomenclarAmbiguo <Poligonal>(tokenizer3, enPartidoYProvincia, out item); list8.AddRange(list10); for (int i = 0; i < list10.Count; i++) { list9.Add(item); } } } if (direccion.Altura > 0) { for (int i = 0; i < list8.Count; i++) { Poligonal poligonal = list8[i]; if (poligonal.AlturaMinima - 1 <= direccion.Altura && poligonal.AlturaMaxima >= direccion.Altura) { DireccionVO direccionVO = base.ValidarAltura(poligonal.PolId, direccion.Altura, poligonal.MapId); if (direccionVO != null) { list.Add(new ObjetoPuntuado <DireccionVO>(num + num2 + list9[i], direccionVO)); } } } } else { List <double> list11 = new List <double>(); List <Poligonal> list12 = new List <Poligonal>(); Tokenizer tokenizer4 = Tokenizer.FromString(direccion.Esquina, 3); if (list3 != null) { foreach (Partido current2 in list3) { IList <Poligonal> enPartidoYProvincia2 = base.DAOFactory.PoligonalDAO.GetEnPartidoYProvincia(tokenizer4.ToArray(), current2.PolId, current2.Provincia.MapId); double item2; IList <Poligonal> list10 = Cleaning.NomenclarAmbiguo <Poligonal>(tokenizer4, enPartidoYProvincia2, out item2); list12.AddRange(list10); for (int i = 0; i < list10.Count; i++) { list11.Add(item2); } } } else { if (list2 != null) { foreach (Provincia current in list2) { IList <Poligonal> enPartidoYProvincia2 = base.DAOFactory.PoligonalDAO.GetEnPartidoYProvincia(tokenizer4.ToArray(), -1, current.MapId); double item2; IList <Poligonal> list10 = Cleaning.NomenclarAmbiguo <Poligonal>(tokenizer4, enPartidoYProvincia2, out item2); list12.AddRange(list10); for (int i = 0; i < list10.Count; i++) { list11.Add(item2); } } } else { IList <Poligonal> enPartidoYProvincia2 = base.DAOFactory.PoligonalDAO.GetEnPartidoYProvincia(tokenizer4.ToArray(), -1, -1); double item2; IList <Poligonal> list10 = Cleaning.NomenclarAmbiguo <Poligonal>(tokenizer4, enPartidoYProvincia2, out item2); list12.AddRange(list10); for (int i = 0; i < list10.Count; i++) { list11.Add(item2); } } } for (int i = 0; i < list8.Count; i++) { Poligonal poligonal = list8[i]; for (int j = 0; j < list12.Count; j++) { Poligonal poligonal2 = list12[j]; if (poligonal.MapId == poligonal2.MapId) { DireccionVO direccionVO = base.ValidarCruce(poligonal.PolId, poligonal2.PolId, poligonal.MapId); if (direccionVO != null) { list.Add(new ObjetoPuntuado <DireccionVO>(num + num2 + (list9[i] + list11[j]) / 2.0, direccionVO)); } } } } } result = list; } return(result); }
private static IList <T> Nomenclar <T>(Tokenizer tokens, IEnumerable <T> options) where T : ITokenizable { double num; return(Cleaning.Nomenclar <T>(tokens, options, out num)); }