class ReconstructionService {

    public ReconstructionResponseItem reconstruct(ReconstructionRequestItem reconstructionItem)
        throws DatabaseException {
        ParametersChecker.checkParameter(RECONSTRUCTION_ITEM_MONDATORY_MSG, reconstructionItem);
        ParametersChecker.checkParameter(RECONSTRUCTION_TENANT_MONDATORY_MSG, reconstructionItem.getTenant());
        if (reconstructionItem.getLimit() < 0) {
            throw new IllegalArgumentException(RECONSTRUCTION_LIMIT_POSITIVE_MSG);
        }
        LOGGER
            .info(String.format(
                "[Reconstruction]: Reconstruction of {%s} Collection on {%s} Vitam tenant",
                DataCategory.BACKUP_OPERATION.name(), reconstructionItem.getTenant()));
        return reconstructCollection(reconstructionItem.getTenant(),
            reconstructionItem.getLimit());
    }

    public  ReconstructionService(VitamRepositoryProvider vitamRepositoryProvider,
        OffsetRepository offsetRepository);
    @VisibleForTesting public  ReconstructionService(VitamRepositoryProvider vitamRepositoryProvider,
        RestoreBackupService recoverBackupService, AdminManagementClientFactory adminManagementClientFactory,
        LogbookTransformData logbookTransformData,
        OffsetRepository offsetRepository);

}