Ignore:
Timestamp:
2009-09-05T11:00:10+02:00 (16 years ago)
Author:
Gubaer
Message:

fixed #3398: Changeset tags should be editable in subsequent uploads

Location:
trunk/src/org/openstreetmap/josm/io
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/OsmApi.java

    r2040 r2061  
    325325
    326326    /**
     327     * Update a changeset on the server.
     328     *
     329     * @param changeset the changeset to update
     330     * @param progressMonitor the progress monitor
     331     *
     332     * @throws OsmTransferException if something goes wrong.
     333     */
     334    public void updateChangeset(Changeset changeset, ProgressMonitor progressMonitor) throws OsmTransferException {
     335        try {
     336            progressMonitor.beginTask(tr("Updating changeset..."));
     337            initialize(progressMonitor);
     338            if (this.changeset != null && this.changeset.getId() > 0) {
     339                if (this.changeset.hasEqualSemanticAttributes(changeset)) {
     340                    progressMonitor.setCustomText(tr("Changeset {0} is unchanged. Skipping update.", changeset.getId()));
     341                    return;
     342                }
     343                changeset.id = this.changeset.getId();
     344                this.changeset.cloneFrom(changeset);
     345                progressMonitor.setCustomText(tr("Updating changeset {0}...", changeset.getId()));
     346                sendRequest(
     347                        "PUT",
     348                        OsmPrimitiveType.from(changeset).getAPIName() + "/" + changeset.getId(),
     349                        toXml(changeset, true),
     350                        progressMonitor
     351                );
     352                this.changeset = changeset;
     353            } else
     354                throw new OsmTransferException(tr("Failed to update changeset. Either there is no current changeset or the id of the current changeset is 0"));
     355        } finally {
     356            progressMonitor.finishTask();
     357        }
     358    }
     359
     360    /**
    327361     * Closes a changeset on the server.
    328362     *
  • trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java

    r2040 r2061  
    9191        try {
    9292            progressMonitor.setTicksCount(primitives.size());
    93             api.createChangeset(changeset, changesetProcessingType,progressMonitor.createSubTaskMonitor(0, false));
     93            if (changesetProcessingType.isUseNew()) {
     94                api.createChangeset(changeset, changesetProcessingType,progressMonitor.createSubTaskMonitor(0, false));
     95            } else {
     96                api.updateChangeset(changeset,progressMonitor.createSubTaskMonitor(0, false));
     97            }
    9498            uploadStartTime = System.currentTimeMillis();
    9599            for (OsmPrimitive osm : primitives) {
     
    98102                String msg = "";
    99103                switch(OsmPrimitiveType.from(osm)) {
    100                     case NODE: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading node ''{4}'' (id: {5})"); break;
    101                     case WAY: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading way ''{4}'' (id: {5})"); break;
    102                     case RELATION: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading relation ''{4}'' (id: {5})"); break;
     104                case NODE: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading node ''{4}'' (id: {5})"); break;
     105                case WAY: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading way ''{4}'' (id: {5})"); break;
     106                case RELATION: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading relation ''{4}'' (id: {5})"); break;
    103107                }
    104108                progressMonitor.subTask(
     
    146150        //
    147151        try {
    148             api.createChangeset(changeset, changesetProcessingType, progressMonitor.createSubTaskMonitor(0, false));
     152            if (changesetProcessingType.isUseNew()) {
     153                api.createChangeset(changeset, changesetProcessingType,progressMonitor.createSubTaskMonitor(0, false));
     154            } else {
     155                api.updateChangeset(changeset,progressMonitor.createSubTaskMonitor(0, false));
     156            }
    149157            processed.addAll(api.uploadDiff(primitives, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)));
    150158        } catch(OsmTransferException e) {
     
    173181
    174182        api.initialize(progressMonitor);
    175 
    176183        try {
    177184            // check whether we can use diff upload
Note: See TracChangeset for help on using the changeset viewer.