internal static ICity CreateCity(City city, IRepresentationContext context, ReprecentType type = ReprecentType.Full) { if (city == null) { return(null); } var counrty = default(ICounty); if (type == ReprecentType.Full) { if (city.County != null) { counrty = CreateCountry(city.County, context); } } return(context.GetOrAdd(city.Id, () => new CityImpl(city.Name, counrty))); }
internal static IIpV4Client CreateIpClient(IpV4Client client, IRepresentationContext context, ReprecentType type = ReprecentType.Full) { var city = default(ICity); var country = default(ICounty); var continent = default(IContinent); var location = default(ILocation); switch (type) { case ReprecentType.Full: city = CreateCity(client.City, context); country = CreateCountry(client.County, context); continent = CreateContinent(client.Continent, context, ReprecentType.OnlyEntity); location = CreateLocation(client.Location, context); break; case ReprecentType.Partial: location = CreateLocation(client.Location, context); break; } return(context.GetOrAdd(client.Id, () => new IpV4ClientImpl(client.IpV4, city, country, continent, location))); }
internal static IContinent CreateContinent(Continent continent, IRepresentationContext context, ReprecentType type = ReprecentType.Full) { if (continent == null) { return(null); } var countries = new List <ICounty>(); if (type == ReprecentType.Full) { if (continent.Counties.Count > 0) { for (var i = 0; i < continent.Counties.Count; i++) { countries.Add(CreateCountry(continent.Counties[i], context, ReprecentType.Partial)); } } } return(context.GetOrAdd(continent.Id, () => new ContinentImpl(continent.Name, continent.Code, countries))); }
internal static ICounty CreateCountry(County county, IRepresentationContext context, ReprecentType type = ReprecentType.Full) { if (county == null) { return(null); } var continent = default(IContinent); var cities = new List <ICity>(); switch (type) { case ReprecentType.Full: continent = CreateContinent(county.Continent, context, ReprecentType.OnlyEntity); CreateCities(county.Cities, context, ReprecentType.OnlyEntity); break; case ReprecentType.Partial: CreateCities(county.Cities, context, ReprecentType.OnlyEntity); break; } return(context.GetOrAdd(county.Id, () => new CountyImpl(county.Name, county.Code, continent, cities))); }
private static IReadOnlyList <ICity> CreateCities(List <City> cities, IRepresentationContext context, ReprecentType type) { var result = new List <ICity>(capacity: cities.Count); if (cities.Count > 0) { for (var i = 0; i < cities.Count; i++) { result.Add(CreateCity(cities[i], context, type)); } } return(result); }