org.openstreetmap.osmosis.core.merge.v0_6
Class ReplicationFileMerger

java.lang.Object
  extended by org.openstreetmap.osmosis.core.merge.v0_6.BaseReplicationDownloader
      extended by org.openstreetmap.osmosis.core.merge.v0_6.ReplicationFileMerger
All Implemented Interfaces:
java.lang.Runnable, RunnableTask, Task

public class ReplicationFileMerger
extends BaseReplicationDownloader

Consumes the files in a replication directory and combines them into larger replication files grouped by a time interval. This allows replication files created at regular intervals to be combined into larger files for more efficient consumption where latency is less of an issue.


Constructor Summary
ReplicationFileMerger(java.io.File workingDirectory)
          Creates a new instance.
 
Method Summary
protected  java.util.Date calculateMaximumTimestamp(ReplicationDownloaderConfiguration configuration, java.util.Date serverTimestamp, java.util.Date localTimestamp)
          Determines the maximum timestamp of data to be downloaded during this invocation.
protected  void processChangeset(XmlChangeReader xmlReader, ReplicationState replicationState)
          Processes the changeset.
protected  void processComplete()
          This is implemented by sub-classes and is called when all changesets have been processed.
protected  void processInitialize(ReplicationState initialState)
          Invoked once during the first execution run to allow initialisation based on the initial replication state downloaded from the server.
protected  void processRelease()
          This is implemented by sub-classes and is called and the completion of all processing regardless of whether it was successful or not.
 
Methods inherited from class org.openstreetmap.osmosis.core.merge.v0_6.BaseReplicationDownloader
getWorkingDirectory, run
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ReplicationFileMerger

public ReplicationFileMerger(java.io.File workingDirectory)
Creates a new instance.

Parameters:
workingDirectory - The directory containing configuration and tracking files.
Method Detail

calculateMaximumTimestamp

protected java.util.Date calculateMaximumTimestamp(ReplicationDownloaderConfiguration configuration,
                                                   java.util.Date serverTimestamp,
                                                   java.util.Date localTimestamp)
Determines the maximum timestamp of data to be downloaded during this invocation. This may be overriden by sub-classes, but the sub-classes must call this implemention first and then limit the maximum timestamp further if needed. A sub-class may never increase the maximum timestamp beyond that calculated by this method.

Overrides:
calculateMaximumTimestamp in class BaseReplicationDownloader
Parameters:
configuration - The configuration.
serverTimestamp - The timestamp of the latest data on the server.
localTimestamp - The timestamp of the most recently downloaded data.
Returns:
The maximum timestamp for this invocation.

processInitialize

protected void processInitialize(ReplicationState initialState)
Invoked once during the first execution run to allow initialisation based on the initial replication state downloaded from the server.

Specified by:
processInitialize in class BaseReplicationDownloader
Parameters:
initialState - The first server state.

processChangeset

protected void processChangeset(XmlChangeReader xmlReader,
                                ReplicationState replicationState)
Processes the changeset.

Specified by:
processChangeset in class BaseReplicationDownloader
Parameters:
xmlReader - The changeset reader initialised to point to the changeset file.
replicationState - The replication state associated with the changeset file.

processComplete

protected void processComplete()
This is implemented by sub-classes and is called when all changesets have been processed. This should perform any completion tasks such as committing changes to a database.

Specified by:
processComplete in class BaseReplicationDownloader

processRelease

protected void processRelease()
This is implemented by sub-classes and is called and the completion of all processing regardless of whether it was successful or not. This should perform any cleanup tasks such as closing files or releasing database connections.

Specified by:
processRelease in class BaseReplicationDownloader