Changeset 2077 in josm for trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskList.java
- Timestamp:
- 2009-09-07T23:06:19+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskList.java
r2017 r2077 125 125 final OsmDataLayer editLayer = Main.map.mapView.getEditLayer(); 126 126 if (editLayer != null) { 127 Set<Long> myPrimitiveIds = editLayer.data.getCompletePrimitiveIds(); 128 Set<Long> downloadedIds = getDownloadedIds(); 129 myPrimitiveIds.removeAll(downloadedIds); 130 myPrimitiveIds.remove(new Long(0)); // ignore new primitives 131 if (! myPrimitiveIds.isEmpty()) { 132 handlePotentiallyDeletedPrimitives(myPrimitiveIds); 133 } 134 } 127 Set<OsmPrimitive> myPrimitives = getCompletePrimitives(editLayer.data); 128 for (DownloadTask task : osmTasks) { 129 if(task instanceof DownloadOsmTask) { 130 DataSet ds = ((DownloadOsmTask)task).getDownloadedData(); 131 if (ds != null) { 132 myPrimitives.removeAll(ds.nodes); 133 myPrimitives.removeAll(ds.ways); 134 myPrimitives.removeAll(ds.relations); 135 } 136 } 137 } 138 if (! myPrimitives.isEmpty()) { 139 handlePotentiallyDeletedPrimitives(myPrimitives); 140 } 141 } 142 } 143 144 145 /** 146 * Replies the set of ids of all complete primitives (i.e. those with 147 * ! primitive.incomplete) 148 * 149 * @return the set of ids of all complete primitives 150 */ 151 protected Set<OsmPrimitive> getCompletePrimitives(DataSet ds) { 152 HashSet<OsmPrimitive> ret = new HashSet<OsmPrimitive>(); 153 for (OsmPrimitive primitive : ds.nodes) { 154 if (!primitive.incomplete && primitive.getId() == 0) { 155 ret.add(primitive); 156 } 157 } 158 for (OsmPrimitive primitive : ds.ways) { 159 if (! primitive.incomplete && primitive.getId() == 0) { 160 ret.add(primitive); 161 } 162 } 163 for (OsmPrimitive primitive : ds.relations) { 164 if (! primitive.incomplete && primitive.getId() == 0) { 165 ret.add(primitive);; 166 } 167 } 168 return ret; 135 169 } 136 170 … … 141 175 * @param potentiallyDeleted a set of ids to check update from the server 142 176 */ 143 protected void updatePotentiallyDeletedPrimitives(Set<Long> potentiallyDeleted) { 144 DataSet ds = Main.map.mapView.getEditLayer().data; 177 protected void updatePotentiallyDeletedPrimitives(Set<OsmPrimitive> potentiallyDeleted) { 145 178 final ArrayList<OsmPrimitive> toSelect = new ArrayList<OsmPrimitive>(); 146 for (Long id : potentiallyDeleted) { 147 OsmPrimitive primitive = ds.getPrimitiveById(id); 179 for (OsmPrimitive primitive : potentiallyDeleted) { 148 180 if (primitive != null) { 149 181 toSelect.add(primitive); … … 167 199 * @param potentiallyDeleted a set of primitives (given by their ids) 168 200 */ 169 protected void handlePotentiallyDeletedPrimitives(Set< Long> potentiallyDeleted) {201 protected void handlePotentiallyDeletedPrimitives(Set<OsmPrimitive> potentiallyDeleted) { 170 202 String [] options = { 171 203 "Check on the server", … … 197 229 ); 198 230 switch(ret) { 199 case JOptionPane.CLOSED_OPTION: return; 200 case JOptionPane.NO_OPTION: return; 201 case JOptionPane.YES_OPTION: updatePotentiallyDeletedPrimitives(potentiallyDeleted); break; 202 } 203 } 204 205 /** 206 * replies true, if the primitive with id <code>id</code> was downloaded into the 207 * dataset <code>ds</code> 208 * 209 * @param id the id 210 * @param ds the dataset 211 * @return true, if the primitive with id <code>id</code> was downloaded into the 212 * dataset <code>ds</code>; false otherwise 213 */ 214 protected boolean wasDownloaded(long id, DataSet ds) { 215 OsmPrimitive primitive = ds.getPrimitiveById(id); 216 return primitive != null; 217 } 218 219 /** 220 * replies true, if the primitive with id <code>id</code> was downloaded into the 221 * dataset of one of the download tasks 222 * 223 * @param id the id 224 * @return true, if the primitive with id <code>id</code> was downloaded into the 225 * dataset of one of the download tasks 226 * 227 */ 228 public boolean wasDownloaded(long id) { 229 for (DownloadTask task : osmTasks) { 230 if(task instanceof DownloadOsmTask) { 231 DataSet ds = ((DownloadOsmTask)task).getDownloadedData(); 232 if(wasDownloaded(id,ds)) return true; 233 } 234 } 235 return false; 231 case JOptionPane.CLOSED_OPTION: return; 232 case JOptionPane.NO_OPTION: return; 233 case JOptionPane.YES_OPTION: updatePotentiallyDeletedPrimitives(potentiallyDeleted); break; 234 } 236 235 } 237 236 … … 241 240 * @return the set of primitive ids which have been downloaded by this task list 242 241 */ 243 public Set< Long> getDownloadedIds() {244 HashSet< Long> ret = new HashSet<Long>();242 public Set<OsmPrimitive> getDownloadedPrimitives() { 243 HashSet<OsmPrimitive> ret = new HashSet<OsmPrimitive>(); 245 244 for (DownloadTask task : osmTasks) { 246 245 if(task instanceof DownloadOsmTask) { 247 246 DataSet ds = ((DownloadOsmTask)task).getDownloadedData(); 248 247 if (ds != null) { 249 ret.addAll(ds.getPrimitiveIds()); 248 ret.addAll(ds.nodes); 249 ret.addAll(ds.ways); 250 ret.addAll(ds.relations); 250 251 } 251 252 }
Note:
See TracChangeset
for help on using the changeset viewer.