class MetadataSyncPreProcessor {

    public MetadataVersion handleCurrentMetadataVersion( MetadataRetryContext context )
    {
        log.debug( "Getting the current version of the system" );
        MetadataVersion metadataVersion;

        try
        {
            metadataVersion = metadataVersionService.getCurrentVersion();
            log.info( "Current Metadata Version of the system: " + metadataVersion );
        }
        catch ( MetadataVersionServiceException ex )
        {
            context.updateRetryContext( MetadataSyncJob.GET_METADATAVERSION, ex.getMessage(), null, null );
            throw new MetadataSyncServiceException( ex.getMessage(), ex );
        }

        return metadataVersion;
    }

    public  MetadataSyncPreProcessor(
        SystemSettingManager systemSettingManager,
        MetadataVersionService metadataVersionService,
        MetadataVersionDelegate metadataVersionDelegate,
        TrackerSynchronization trackerSync,
        EventSynchronization eventSync,
        DataValueSynchronization dataValueSync,
        CompleteDataSetRegistrationSynchronization completeDataSetRegistrationSync );

}