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 OsmApiapiprivate booleancanceledprivate static java.util.List<OsmServerWritePostprocessor>postprocessorsprivate java.util.Collection<OsmPrimitive>processedThis list contains all successfully processed objects.private longuploadStartTime
-
Constructor Summary
Constructors Constructor Description OsmServerWriter()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcancel()Cancel operation.voidexecutePostprocessors(ProgressMonitor pm)Calls all registered upload postprocessors.java.util.Collection<OsmPrimitive>getProcessedPrimitives()Replies the collection of successfully processed primitives(package private) voidmakeApiRequest(OsmPrimitive osm, ProgressMonitor progressMonitor)static voidregisterPostprocessor(OsmServerWritePostprocessor pp)Registers a post-processor.protected java.lang.StringtimeLeft(int progress, int listSize)static voidunregisterPostprocessor(OsmServerWritePostprocessor pp)Unregisters a post-processor.protected voiduploadChangesAsDiffUpload(java.util.Collection<? extends OsmPrimitive> primitives, ProgressMonitor progressMonitor)Upload all changes in one diff uploadprotected voiduploadChangesInChunks(java.util.Collection<? extends OsmPrimitive> primitives, ProgressMonitor progressMonitor, int chunkSize)Upload all changes in one diff uploadprotected voiduploadChangesIndividually(java.util.Collection<? extends OsmPrimitive> primitives, ProgressMonitor progressMonitor)Uploads the changes individually.voiduploadOsm(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
-
-