package me.osm.gazetter.addresses.impl;
import static me.osm.gazetter.addresses.AddressesLevelsMatcher.ADDR_NAME;
import java.util.List;
import me.osm.gazetter.addresses.AddrTextFormatter;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
/**
* Default implementation for
* {@link AddrTextFormatter}
* */
public class AddrTextFormatterImpl implements AddrTextFormatter {
@Override
public String joinNames(List<JSONObject> addrJsonRow, JSONObject properties, String lang) {
return simpleJoin(addrJsonRow, lang);
}
@Override
public String joinBoundariesNames(List<JSONObject> addrJsonRow, String lang) {
return simpleJoin(addrJsonRow, lang);
}
private String simpleJoin(List<JSONObject> addrJsonRow, String lang) {
StringBuilder sb = new StringBuilder();
for(JSONObject lvl : addrJsonRow) {
String string = null;
if(lang == null) {
string = lvl.getString(ADDR_NAME);
}
else {
JSONObject names = lvl.optJSONObject("names");
if(names != null) {
String translated = names.optString("name:" + lang);
if(StringUtils.isNoneBlank(translated)) {
string = translated;
}
else {
string = lvl.getString(ADDR_NAME);
}
}
else {
string = lvl.getString(ADDR_NAME);
}
}
if(StringUtils.isNotBlank(string)) {
sb.append(", ").append(string);
}
}
if(sb.length() > 2) {
return sb.substring(2);
}
return null;
}
}