Import OSM Edit tags

This commit is contained in:
Dima-1 2020-10-21 15:41:36 +03:00
parent 1d6a0b39b7
commit d89d48474a

View file

@ -5,12 +5,16 @@ import android.content.Context;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import net.osmand.osm.edit.Entity; import net.osmand.osm.edit.Entity;
import net.osmand.osm.edit.Node; import net.osmand.osm.edit.Node;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.osmedit.OpenstreetmapPoint; import net.osmand.plus.osmedit.OpenstreetmapPoint;
import net.osmand.plus.osmedit.OpenstreetmapsDbHelper;
import net.osmand.plus.osmedit.OsmEditingPlugin; import net.osmand.plus.osmedit.OsmEditingPlugin;
import net.osmand.plus.osmedit.OsmPoint; import net.osmand.plus.osmedit.OsmPoint;
@ -19,7 +23,9 @@ import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
public class OsmEditsSettingsItem extends CollectionSettingsItem<OpenstreetmapPoint> { public class OsmEditsSettingsItem extends CollectionSettingsItem<OpenstreetmapPoint> {
@ -71,6 +77,14 @@ public class OsmEditsSettingsItem extends CollectionSettingsItem<OpenstreetmapPo
appliedItems.add(shouldReplace ? duplicate : renameItem(duplicate)); appliedItems.add(shouldReplace ? duplicate : renameItem(duplicate));
} }
} }
OsmEditingPlugin osmEditingPlugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class);
OpenstreetmapsDbHelper db;
if (osmEditingPlugin != null) {
db = osmEditingPlugin.getDBPOI();
for (OpenstreetmapPoint point : appliedItems) {
db.addOpenstreetmap(point);
}
}
} }
@Override @Override
@ -116,9 +130,15 @@ public class OsmEditsSettingsItem extends CollectionSettingsItem<OpenstreetmapPo
long id = entityJson.getLong(ID_KEY); long id = entityJson.getLong(ID_KEY);
double lat = entityJson.getDouble(LAT_KEY); double lat = entityJson.getDouble(LAT_KEY);
double lon = entityJson.getDouble(LON_KEY); double lon = entityJson.getDouble(LON_KEY);
String tags = entityJson.getString(TAGS_KEY);
Map<String, String> tagMap = new Gson().fromJson(
tags, new TypeToken<HashMap<String, String>>() {
}.getType()
);
String action = entityJson.getString(ACTION_KEY); String action = entityJson.getString(ACTION_KEY);
Entity entity; Entity entity;
entity = new Node(lat, lon, id); entity = new Node(lat, lon, id);
entity.replaceTags(tagMap);
OpenstreetmapPoint point = new OpenstreetmapPoint(); OpenstreetmapPoint point = new OpenstreetmapPoint();
point.setComment(comment); point.setComment(comment);
point.setEntity(entity); point.setEntity(entity);
@ -144,7 +164,8 @@ public class OsmEditsSettingsItem extends CollectionSettingsItem<OpenstreetmapPo
jsonEntity.put(LAT_KEY, point.getLatitude()); jsonEntity.put(LAT_KEY, point.getLatitude());
jsonEntity.put(LON_KEY, point.getLongitude()); jsonEntity.put(LON_KEY, point.getLongitude());
jsonEntity.put(TYPE_KEY, Entity.EntityType.valueOf(point.getEntity())); jsonEntity.put(TYPE_KEY, Entity.EntityType.valueOf(point.getEntity()));
jsonEntity.put(TAGS_KEY, point.getEntity().getTags()); JSONObject jsonTags = new JSONObject(point.getEntity().getTags());
jsonEntity.put(TAGS_KEY, jsonTags);
jsonPoint.put(COMMENT_KEY, point.getComment()); jsonPoint.put(COMMENT_KEY, point.getComment());
jsonEntity.put(ACTION_KEY, OsmPoint.stringAction.get(point.getAction())); jsonEntity.put(ACTION_KEY, OsmPoint.stringAction.get(point.getAction()));
jsonPoint.put(ENTITY_KEY, jsonEntity); jsonPoint.put(ENTITY_KEY, jsonEntity);