Changeset 1894 in josm for trunk/src/org/openstreetmap/josm/io
- Timestamp:
- 2009-08-03T15:00:34+02:00 (16 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/io
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/io/OsmApi.java
r1879 r1894 507 507 } 508 508 509 /** 510 * Replies the current changeset 511 * 512 * @return the current changeset 513 */ 514 public Changeset getCurrentChangeset() { 515 return changeset; 516 } 509 517 } -
trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java
r1879 r1894 5 5 6 6 import java.util.Collection; 7 import java.util.Collections; 7 8 import java.util.LinkedList; 8 9 import java.util.List; … … 11 12 import org.openstreetmap.josm.Main; 12 13 import org.openstreetmap.josm.actions.UploadAction; 14 import org.openstreetmap.josm.data.osm.Changeset; 13 15 import org.openstreetmap.josm.data.osm.OsmPrimitive; 14 16 import org.openstreetmap.josm.data.osm.OsmPrimitiveType; … … 34 36 * than where passed in the list to upload*. 35 37 */ 36 p ublicCollection<OsmPrimitive> processed;38 private Collection<OsmPrimitive> processed; 37 39 38 40 private OsmApi api = OsmApi.getOsmApi(); … … 79 81 80 82 /** 83 * Uploads the changes individually. Invokes one API call per uploaded primitmive. 84 * 85 * @param primitives the collection of primitives to upload 86 * @param progressMonitor the progress monitor 87 * @throws OsmTransferException thrown if an exception occurs 88 */ 89 protected void uploadChangesIndividually(Collection<OsmPrimitive> primitives, ProgressMonitor progressMonitor) throws OsmTransferException { 90 try { 91 progressMonitor.setTicksCount(primitives.size()); 92 api.createChangeset(getChangesetComment(), progressMonitor.createSubTaskMonitor(0, false)); 93 uploadStartTime = System.currentTimeMillis(); 94 for (OsmPrimitive osm : primitives) { 95 int progress = progressMonitor.getTicks(); 96 String time_left_str = timeLeft(progress, primitives.size()); 97 progressMonitor.subTask( 98 tr("{0}% ({1}/{2}), {3} left. Uploading {4}: {5} (id: {6})", 99 Math.round(100.0*progress/primitives.size()), progress, 100 primitives.size(), time_left_str, 101 OsmPrimitiveType.from(osm).getLocalizedDisplayNameSingular(), 102 NAME_FORMATTER.getName(osm), 103 osm.id)); 104 makeApiRequest(osm,progressMonitor); 105 processed.add(osm); 106 progressMonitor.worked(1); 107 } 108 } catch(OsmTransferException e) { 109 throw e; 110 } catch(Exception e) { 111 throw new OsmTransferException(e); 112 } finally { 113 try { 114 api.stopChangeset(progressMonitor.createSubTaskMonitor(0, false)); 115 } catch(Exception e) { 116 Changeset changeset = api.getCurrentChangeset(); 117 String changesetId = (changeset == null ? tr("unknown") : Long.toString(changeset.id)); 118 logger.warning(tr("Failed to close changeset {0}, will be closed by server after timeout. Exception was: {1}", 119 changesetId, e.toString())); 120 } 121 } 122 } 123 124 /** 125 * Upload all changes in one diff upload 126 * 127 * @param primitives the collection of primitives to upload 128 * @param progressMonitor the progress monitor 129 * @throws OsmTransferException thrown if an exception occurs 130 */ 131 protected void uploadChangesAsDiffUpload(Collection<OsmPrimitive> primitives, ProgressMonitor progressMonitor) throws OsmTransferException { 132 // upload everything in one changeset 133 // 134 try { 135 api.createChangeset(getChangesetComment(), progressMonitor.createSubTaskMonitor(0, false)); 136 processed.addAll(api.uploadDiff(primitives, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false))); 137 } catch(OsmTransferException e) { 138 throw e; 139 } catch(Exception e) { 140 throw new OsmTransferException(e); 141 } finally { 142 try { 143 api.stopChangeset(progressMonitor.createSubTaskMonitor(0, false)); 144 } catch (Exception ee) { 145 Changeset changeset = api.getCurrentChangeset(); 146 String changesetId = (changeset == null ? tr("unknown") : Long.toString(changeset.id)); 147 logger.warning(tr("Failed to close changeset {0}, will be closed by server after timeout. Exception was: {1}", 148 changesetId, ee.toString())); 149 } 150 } 151 } 152 153 /** 81 154 * Send the dataset to the server. 82 155 * … … 92 165 93 166 try { 94 95 167 // check whether we can use changeset 96 168 // … … 103 175 104 176 if (useChangeset) { 105 // upload everything in one changeset 106 // 107 try { 108 api.createChangeset(getChangesetComment(), progressMonitor.createSubTaskMonitor(0, false)); 109 processed.addAll(api.uploadDiff(primitives, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false))); 110 } catch(OsmTransferException e) { 111 throw e; 112 } finally { 113 try { 114 if (canUseChangeset) { 115 api.stopChangeset(progressMonitor.createSubTaskMonitor(0, false)); 116 } 117 } catch (Exception ee) { 118 ee.printStackTrace(); 119 // ignore nested exception 120 } 121 } 177 uploadChangesAsDiffUpload(primitives, progressMonitor); 122 178 } else { 123 // upload changes individually (90% of code is for the status display...) 124 // 125 progressMonitor.setTicksCount(primitives.size()); 126 api.createChangeset(getChangesetComment(), progressMonitor.createSubTaskMonitor(0, false)); 127 uploadStartTime = System.currentTimeMillis(); 128 for (OsmPrimitive osm : primitives) { 129 int progress = progressMonitor.getTicks(); 130 String time_left_str = timeLeft(progress, primitives.size()); 131 progressMonitor.subTask( 132 tr("{0}% ({1}/{2}), {3} left. Uploading {4}: {5} (id: {6})", 133 Math.round(100.0*progress/primitives.size()), progress, 134 primitives.size(), time_left_str, 135 OsmPrimitiveType.from(osm).getLocalizedDisplayNameSingular(), 136 NAME_FORMATTER.getName(osm), 137 osm.id)); 138 makeApiRequest(osm,progressMonitor); 139 processed.add(osm); 140 progressMonitor.worked(1); 141 } 142 api.stopChangeset(progressMonitor.createSubTaskMonitor(0, false)); 143 } 144 179 uploadChangesIndividually(primitives, progressMonitor); 180 } 145 181 } finally { 146 182 progressMonitor.finishTask(); … … 163 199 } 164 200 } 201 202 /** 203 * Replies the collection of successfully processed primitives 204 * 205 * @return the collection of successfully processed primitives 206 */ 207 public Collection<OsmPrimitive> getProcessedPrimitives() { 208 return processed; 209 } 165 210 }
Note:
See TracChangeset
for help on using the changeset viewer.