class UserSyncStatusToUserSyncStatusResponseConverter implements Converter<UserSyncStatus, UserSyncStatusResponse> {

    @Override
    public UserSyncStatusResponse convert(UserSyncStatus userSyncStatus) {
        UserSyncStatusResponse response = new UserSyncStatusResponse();
        Optional.ofNullable(userSyncStatus.getLastStartedFullSync()).ifPresent(op -> response.setLastStartedUserSyncId(op.getOperationId()));
        Optional.ofNullable(userSyncStatus.getLastSuccessfulFullSync()).ifPresent(op -> response.setLastSuccessfulUserSyncId(op.getOperationId()));
        Optional.ofNullable(userSyncStatus.getUmsEventGenerationIds()).ifPresent(eids -> {
            try {
                response.setEventGenerationIds(eids.get(UmsEventGenerationIds.class).getEventGenerationIds());
            } catch (IOException e) {
                LOGGER.warn("Failed to convert event generation ids [{}] for environment '{}'",
                        userSyncStatus.getUmsEventGenerationIds(), userSyncStatus.getStack().getEnvironmentCrn());
            }
        });
        return response;
    }

}