Changeset 1811 in josm for trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java
- Timestamp:
- 2009-07-19T17:38:55+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java
r1750 r1811 13 13 import org.openstreetmap.josm.data.osm.OsmPrimitive; 14 14 import org.openstreetmap.josm.data.osm.visitor.NameVisitor; 15 import org.openstreetmap.josm.gui.progress.ProgressMonitor; 15 16 16 17 /** … … 81 82 * @param primitives list of objects to send 82 83 */ 83 public void uploadOsm(String apiVersion, Collection<OsmPrimitive> primitives ) throws OsmTransferException {84 public void uploadOsm(String apiVersion, Collection<OsmPrimitive> primitives, ProgressMonitor progressMonitor) throws OsmTransferException { 84 85 processed = new LinkedList<OsmPrimitive>(); 85 86 86 87 api.initialize(); 87 88 88 Main.pleaseWaitDlg.progress.setMaximum(primitives.size()); 89 Main.pleaseWaitDlg.progress.setValue(0); 89 progressMonitor.beginTask(""); 90 90 91 // check whether we can use changeset 92 // 93 boolean canUseChangeset = api.hasChangesetSupport(); 94 boolean useChangeset = Main.pref.getBoolean("osm-server.atomic-upload", apiVersion.compareTo("0.6")>=0); 95 if (useChangeset && ! canUseChangeset) { 96 System.out.println(tr("WARNING: preference ''{0}'' or api version ''{1}'' of dataset requires to use changesets, but API is not able to handle them. Ignoring changesets.", "osm-server.atomic-upload", apiVersion)); 97 useChangeset = false; 98 } 91 try { 99 92 100 if (useChangeset) { 101 // upload everything in one changeset 93 // check whether we can use changeset 102 94 // 103 try { 104 api.createChangeset(getChangesetComment()); 105 processed.addAll(api.uploadDiff(primitives)); 106 } catch(OsmTransferException e) { 107 throw e; 108 } finally { 95 boolean canUseChangeset = api.hasChangesetSupport(); 96 boolean useChangeset = Main.pref.getBoolean("osm-server.atomic-upload", apiVersion.compareTo("0.6")>=0); 97 if (useChangeset && ! canUseChangeset) { 98 System.out.println(tr("WARNING: preference ''{0}'' or api version ''{1}'' of dataset requires to use changesets, but API is not able to handle them. Ignoring changesets.", "osm-server.atomic-upload", apiVersion)); 99 useChangeset = false; 100 } 101 102 if (useChangeset) { 103 // upload everything in one changeset 104 // 109 105 try { 110 if (canUseChangeset) { 111 api.stopChangeset(); 106 api.createChangeset(getChangesetComment(), progressMonitor.createSubTaskMonitor(0, false)); 107 processed.addAll(api.uploadDiff(primitives, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false))); 108 } catch(OsmTransferException e) { 109 throw e; 110 } finally { 111 try { 112 if (canUseChangeset) { 113 api.stopChangeset(progressMonitor.createSubTaskMonitor(0, false)); 114 } 115 } catch (Exception ee) { 116 ee.printStackTrace(); 117 // ignore nested exception 112 118 } 113 } catch (Exception ee) {114 ee.printStackTrace();115 // ignore nested exception116 119 } 120 } else { 121 // upload changes individually (90% of code is for the status display...) 122 // 123 progressMonitor.setTicksCount(primitives.size()); 124 api.createChangeset(getChangesetComment(), progressMonitor.createSubTaskMonitor(0, false)); 125 NameVisitor v = new NameVisitor(); 126 uploadStartTime = System.currentTimeMillis(); 127 for (OsmPrimitive osm : primitives) { 128 osm.visit(v); 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, tr(v.className), v.name, osm.id)); 135 makeApiRequest(osm); 136 processed.add(osm); 137 progressMonitor.worked(1); 138 } 139 api.stopChangeset(progressMonitor.createSubTaskMonitor(0, false)); 117 140 } 118 } else { 119 // upload changes individually (90% of code is for the status display...) 120 // 121 api.createChangeset(getChangesetComment()); 122 NameVisitor v = new NameVisitor(); 123 uploadStartTime = System.currentTimeMillis(); 124 for (OsmPrimitive osm : primitives) { 125 osm.visit(v); 126 int progress = Main.pleaseWaitDlg.progress.getValue(); 127 String time_left_str = timeLeft(progress, primitives.size()); 128 Main.pleaseWaitDlg.currentAction.setText( 129 tr("{0}% ({1}/{2}), {3} left. Uploading {4}: {5} (id: {6})", 130 Math.round(100.0*progress/primitives.size()), progress, 131 primitives.size(), time_left_str, tr(v.className), v.name, osm.id)); 132 makeApiRequest(osm); 133 processed.add(osm); 134 Main.pleaseWaitDlg.progress.setValue(progress+1); 135 } 136 api.stopChangeset(); 141 } finally { 142 progressMonitor.finishTask(); 137 143 } 138 144 }
Note:
See TracChangeset
for help on using the changeset viewer.