Search in sources :

Example 1 with Action

use of net.osmand.plus.osmedit.OsmPoint.Action in project Osmand by osmandapp.

the class EditPoiDialogFragment method save.

private void save() {
    Node original = editPoiData.getEntity();
    final boolean offlineEdit = mOpenstreetmapUtil instanceof OpenstreetmapLocalUtil;
    Node node = new Node(original.getLatitude(), original.getLongitude(), original.getId());
    Action action = node.getId() < 0 ? Action.CREATE : Action.MODIFY;
    for (Map.Entry<String, String> tag : editPoiData.getTagValues().entrySet()) {
        if (!Algorithms.isEmpty(tag.getKey()) && !Algorithms.isEmpty(tag.getValue()) && !tag.getKey().equals(EditPoiData.POI_TYPE_TAG)) {
            node.putTagNoLC(tag.getKey(), tag.getValue());
        }
    }
    String poiTypeTag = editPoiData.getTagValues().get(EditPoiData.POI_TYPE_TAG);
    String comment = "";
    if (poiTypeTag != null) {
        final PoiType poiType = editPoiData.getAllTranslatedSubTypes().get(poiTypeTag.trim().toLowerCase());
        if (poiType != null) {
            node.putTagNoLC(poiType.getOsmTag(), poiType.getOsmValue());
            node.removeTag(EditPoiData.REMOVE_TAG_PREFIX + poiType.getOsmTag());
            if (poiType.getOsmTag2() != null) {
                node.putTagNoLC(poiType.getOsmTag2(), poiType.getOsmValue2());
                node.removeTag(EditPoiData.REMOVE_TAG_PREFIX + poiType.getOsmTag2());
            }
        } else if (!Algorithms.isEmpty(poiTypeTag)) {
            node.putTagNoLC(editPoiData.getPoiCategory().getDefaultTag(), poiTypeTag);
        }
        if (offlineEdit && !Algorithms.isEmpty(poiTypeTag)) {
            node.putTagNoLC(EditPoiData.POI_TYPE_TAG, poiTypeTag);
        }
        String actionString = action == Action.CREATE ? getString(R.string.default_changeset_add) : getString(R.string.default_changeset_edit);
        comment = actionString + " " + poiTypeTag;
    }
    commitNode(action, node, mOpenstreetmapUtil.getEntityInfo(node.getId()), comment, false, new CallbackWithObject<Node>() {

        @Override
        public boolean processResult(Node result) {
            if (result != null) {
                OsmEditingPlugin plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class);
                if (plugin != null && offlineEdit) {
                    List<OpenstreetmapPoint> points = plugin.getDBPOI().getOpenstreetmapPoints();
                    if (getActivity() instanceof MapActivity && points.size() > 0) {
                        OsmPoint point = points.get(points.size() - 1);
                        MapActivity mapActivity = (MapActivity) getActivity();
                        mapActivity.getContextMenu().showOrUpdate(new LatLon(point.getLatitude(), point.getLongitude()), plugin.getOsmEditsLayer(mapActivity).getObjectName(point), point);
                    }
                }
                if (getActivity() instanceof MapActivity) {
                    ((MapActivity) getActivity()).getMapView().refreshMap(true);
                }
                dismiss();
            } else {
                OsmEditingPlugin plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class);
                mOpenstreetmapUtil = plugin.getPoiModificationLocalUtil();
                Button saveButton = (Button) view.findViewById(R.id.saveButton);
                saveButton.setText(mOpenstreetmapUtil instanceof OpenstreetmapRemoteUtil ? R.string.shared_string_upload : R.string.shared_string_save);
            }
            return false;
        }
    }, getActivity(), mOpenstreetmapUtil, action == Action.MODIFY ? editPoiData.getChangedTags() : null);
}
Also used : Action(net.osmand.plus.osmedit.OsmPoint.Action) Node(net.osmand.osm.edit.Node) PoiType(net.osmand.osm.PoiType) LatLon(net.osmand.data.LatLon) ImageButton(android.widget.ImageButton) Button(android.widget.Button) List(java.util.List) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap) MapActivity(net.osmand.plus.activities.MapActivity)

Aggregations

Button (android.widget.Button)1 ImageButton (android.widget.ImageButton)1 LinkedHashMap (java.util.LinkedHashMap)1 List (java.util.List)1 Map (java.util.Map)1 LatLon (net.osmand.data.LatLon)1 PoiType (net.osmand.osm.PoiType)1 Node (net.osmand.osm.edit.Node)1 MapActivity (net.osmand.plus.activities.MapActivity)1 Action (net.osmand.plus.osmedit.OsmPoint.Action)1