package ru.hflabs.rcd.service.task; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.hflabs.rcd.model.task.TaskProgress; import java.text.MessageFormat; /** * Интерфейс <class>ITaskProgress</class> декларирует методы обновления прогресса выполняемой задачи * * @see TaskProgress */ public interface ITaskProgress { /** Адаптер логгирования прогресса выполнения */ ITaskProgress LOGGER_PROGRESS = new LoggerTaskProgressAdapter(); /** * Возвращает флаг, указывающий, что задача прервана * * @return Возвращает <code>TRUE</code>, если задача прервана */ boolean isTaskCanceled(); /** * Устанавливает текущий прогресс выполняемой задачи * * @param performerName идентификатор исполнителя * @param progress прогресс задачи */ void changeTaskProgress(String performerName, TaskProgress progress); /** * Класс <class>LoggerTaskProgressAdapter</class> реализует адаптер логирования прогресса выполнения задачи * * @see ITaskProgress */ final class LoggerTaskProgressAdapter implements ITaskProgress { private static final Logger LOG = LoggerFactory.getLogger(ITaskProgress.class); @Override public boolean isTaskCanceled() { return false; } @Override public void changeTaskProgress(String performerName, TaskProgress progress) { LOG.info( String.format("Task [%s]: %d - %s", performerName, progress.getPercent(), MessageFormat.format(progress.getStep(), progress.getArguments())) ); } } }