Package org.openstreetmap.josm.io
Class OsmServerWriter
- java.lang.Object
-
- org.openstreetmap.josm.io.OsmServerWriter
-
public class OsmServerWriter extends java.lang.Object
Class that uploads all changes to the osm server. This is done like this: - All objects with id = 0 are uploaded as new, except those in deleted, which are ignored - All objects in deleted list are deleted. - All remaining objects with modified flag set are updated.
-
-
Field Summary
Fields Modifier and Type Field Description private OsmApi
api
private boolean
canceled
private static java.util.List<OsmServerWritePostprocessor>
postprocessors
private java.util.Collection<OsmPrimitive>
processed
This list contains all successfully processed objects.private long
uploadStartTime
-
Constructor Summary
Constructors Constructor Description OsmServerWriter()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
cancel()
Cancel operation.void
executePostprocessors(ProgressMonitor pm)
Calls all registered upload postprocessors.java.util.Collection<OsmPrimitive>
getProcessedPrimitives()
Replies the collection of successfully processed primitives(package private) void
makeApiRequest(OsmPrimitive osm, ProgressMonitor progressMonitor)
static void
registerPostprocessor(OsmServerWritePostprocessor pp)
Registers a post-processor.protected java.lang.String
timeLeft(int progress, int listSize)
static void
unregisterPostprocessor(OsmServerWritePostprocessor pp)
Unregisters a post-processor.protected void
uploadChangesAsDiffUpload(java.util.Collection<? extends OsmPrimitive> primitives, ProgressMonitor progressMonitor)
Upload all changes in one diff uploadprotected void
uploadChangesInChunks(java.util.Collection<? extends OsmPrimitive> primitives, ProgressMonitor progressMonitor, int chunkSize)
Upload all changes in one diff uploadprotected void
uploadChangesIndividually(java.util.Collection<? extends OsmPrimitive> primitives, ProgressMonitor progressMonitor)
Uploads the changes individually.void
uploadOsm(UploadStrategySpecification strategy, java.util.Collection<? extends OsmPrimitive> primitives, Changeset changeset, ProgressMonitor monitor)
Send the dataset to the server.
-
-
-
Field Detail
-
processed
private java.util.Collection<OsmPrimitive> processed
This list contains all successfully processed objects. The caller of upload* has to check this after the call and update its dataset. If a server connection error occurs, this may contain fewer entries than where passed in the list to upload*.
-
postprocessors
private static volatile java.util.List<OsmServerWritePostprocessor> postprocessors
-
canceled
private boolean canceled
-
uploadStartTime
private long uploadStartTime
-
-
Constructor Detail
-
OsmServerWriter
public OsmServerWriter()
-
-
Method Detail
-
registerPostprocessor
public static void registerPostprocessor(OsmServerWritePostprocessor pp)
Registers a post-processor.- Parameters:
pp
- post-processor to register
-
unregisterPostprocessor
public static void unregisterPostprocessor(OsmServerWritePostprocessor pp)
Unregisters a post-processor.- Parameters:
pp
- post-processor to unregister
-
timeLeft
protected java.lang.String timeLeft(int progress, int listSize)
-
uploadChangesIndividually
protected void uploadChangesIndividually(java.util.Collection<? extends OsmPrimitive> primitives, ProgressMonitor progressMonitor) throws OsmTransferException
Uploads the changes individually. Invokes one API call per uploaded primitive.- Parameters:
primitives
- the collection of primitives to uploadprogressMonitor
- the progress monitor- Throws:
OsmTransferException
- if an exception occurs
-
uploadChangesAsDiffUpload
protected void uploadChangesAsDiffUpload(java.util.Collection<? extends OsmPrimitive> primitives, ProgressMonitor progressMonitor) throws OsmTransferException
Upload all changes in one diff upload- Parameters:
primitives
- the collection of primitives to uploadprogressMonitor
- the progress monitor- Throws:
OsmTransferException
- if an exception occurs
-
uploadChangesInChunks
protected void uploadChangesInChunks(java.util.Collection<? extends OsmPrimitive> primitives, ProgressMonitor progressMonitor, int chunkSize) throws OsmTransferException
Upload all changes in one diff upload- Parameters:
primitives
- the collection of primitives to uploadprogressMonitor
- the progress monitorchunkSize
- the size of the individual upload chunks. > 0 required.- Throws:
java.lang.IllegalArgumentException
- if chunkSize <= 0OsmTransferException
- if an exception occurs
-
uploadOsm
public void uploadOsm(UploadStrategySpecification strategy, java.util.Collection<? extends OsmPrimitive> primitives, Changeset changeset, ProgressMonitor monitor) throws OsmTransferException
Send the dataset to the server.- Parameters:
strategy
- the upload strategy. Must not be null.primitives
- list of objects to sendchangeset
- the changeset the data is uploaded to. Must not be null.monitor
- the progress monitor. If null, assumesNullProgressMonitor.INSTANCE
- Throws:
java.lang.IllegalArgumentException
- if changeset is nulljava.lang.IllegalArgumentException
- if strategy is nullOsmTransferException
- if something goes wrong
-
makeApiRequest
void makeApiRequest(OsmPrimitive osm, ProgressMonitor progressMonitor) throws OsmTransferException
- Throws:
OsmTransferException
-
cancel
public void cancel()
Cancel operation.
-
getProcessedPrimitives
public java.util.Collection<OsmPrimitive> getProcessedPrimitives()
Replies the collection of successfully processed primitives- Returns:
- the collection of successfully processed primitives
-
executePostprocessors
public void executePostprocessors(ProgressMonitor pm)
Calls all registered upload postprocessors.- Parameters:
pm
- progress monitor
-
-