package me.osm.gazetteer.web.imp;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.action.delete.DeleteRequestBuilder;
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.json.JSONObject;
public class LocationsDiffImporter extends LocationsDumpImporter {
public LocationsDiffImporter(String source, boolean buildingsGeometry) {
super(source, buildingsGeometry);
}
@Override
protected void createRequestAndAdd(String line) {
String action = StringUtils.strip(line.substring(0, 1));
String json = line.substring(2, line.length() - 1);
// Remove
if("-".equals(action)) {
String id = new JSONObject(json).getString("id");
deleteRequest(id);
counter++;
}
// Add
else if("+".equals(action)) {
String processed = processLine(json);
if(processed != null) {
IndexRequestBuilder ind = indexRequest(processed);
bulkRequest.add(ind.request());
counter++;
}
}
// Update
else if("N".equalsIgnoreCase(action)) {
String processed = processLine(json);
if(processed != null) {
IndexRequestBuilder ind = indexRequest(processed);
bulkRequest.add(ind.request());
counter++;
}
}
}
private void deleteRequest(String id) {
DeleteRequestBuilder reqB = new DeleteRequestBuilder(client, "gazetteer")
.setType(IndexHolder.LOCATION).setId(id);
bulkRequest.add(reqB.request());
}
}