use of com.sputnik.ouidb.model.Address in project ouidb-to-json-publisher by jfisbein.
the class OUIDBConverterTest method convertToJson.
@Test
void convertToJson() {
OUIDBConverter converter = new OUIDBConverter();
Map<String, Organization> db = generateDb(5);
String json = converter.convertToJson(db);
List<Map<String, Object>> parsedJson = gson.fromJson(json, new TypeToken<List<Map<String, Object>>>() {
}.getType());
assertThat(parsedJson).hasSize(db.size());
for (String prefix : db.keySet()) {
Organization org = db.get(prefix);
Optional<Map<String, Object>> jsonEntryOpt = parsedJson.stream().filter(m -> m.get("prefix").equals(prefix)).findFirst();
assertThat(jsonEntryOpt).isPresent();
Map<String, Object> jsonEntry = jsonEntryOpt.get();
Map<String, Object> jsonOrg = (Map<String, Object>) jsonEntry.get("organization");
assertThat(jsonOrg).containsEntry("name", org.getName());
Map<String, Object> jsonAddress = (Map<String, Object>) jsonOrg.get("address");
assertThat(jsonAddress).containsEntry("line1", org.getAddress().getLine1()).containsEntry("line2", org.getAddress().getLine2()).containsEntry("countryCode", org.getAddress().getCountryCode());
}
}
use of com.sputnik.ouidb.model.Address in project ouidb-to-json-publisher by jfisbein.
the class OUIDBConverterTest method generateRandomAddress.
private Address generateRandomAddress() {
Address address = new Address();
address.setCountryCode(faker.address().countryCode());
address.setLine1(faker.address().streetAddress());
address.setLine2(faker.address().secondaryAddress());
return address;
}
use of com.sputnik.ouidb.model.Address in project ouidb-to-json-publisher by jfisbein.
the class OUIDBDownloader method parseDb.
protected Map<String, Organization> parseDb(Reader db) throws IOException {
Map<String, Organization> response = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
try (BufferedReader reader = new BufferedReader(db)) {
String line;
int counter = 0;
Organization organization = null;
while ((line = reader.readLine()) != null) {
line = normalize(line);
if (line.contains("(hex)")) {
String[] split = StringUtils.splitByWholeSeparator(line, "(hex)");
String prefix = normalizePrefix(split[0]);
String organizationName = normalizeOrganizationName(split[1]);
counter = 0;
organization = new Organization(organizationName);
organization.setAddress(new Address());
response.put(prefix, organization);
} else if (counter < 3 && organization != null && !line.contains("(base 16)")) {
counter = fillAddress(line, counter, organization.getAddress());
}
}
}
if (response.isEmpty()) {
throw new NoRecordsFoundException("No records found");
}
return response;
}
Aggregations