package org.sejda.core;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.junit.Ignore;
import org.sejda.model.notification.EventListener;
import org.sejda.model.notification.event.AbstractNotificationEvent;
import org.sejda.model.notification.event.PercentageOfWorkDoneChangedEvent;
import org.sejda.model.notification.event.TaskExecutionFailedEvent;
import org.sejda.model.notification.event.TaskExecutionStartedEvent;
import org.sejda.model.notification.event.TaskExecutionWarningEvent;
/**
* Factory used by tests to create event listeners.
*
* @author Andrea Vacondio
*
*/
@Ignore
public final class TestListenerFactory {
private TestListenerFactory() {
// Factory
}
/**
* @return a percentage listener to use in tests.
*/
public static TestListenerPercentage newPercentageListener() {
return new TestListenerPercentage();
}
/**
* @return a start listener to use in tests.
*/
public static TestListenerStart newStartListener() {
return new TestListenerStart();
}
/**
* @return a start listener to use in tests.
*/
public static TestListenerFailed newFailedListener() {
return new TestListenerFailed();
}
public static TestListenerWarnings newWarningsListener() {
return new TestListenerWarnings();
}
/**
* @return a general listener that can listen on any event to use in tests.
*/
public static <T extends AbstractNotificationEvent> TestListenerAny<T> newGeneralListener() {
return new TestListenerAny<T>();
}
/**
* Simple listener to use during tests. General purpose, can listen on any event
*
* @author Andrea Vacondio
*
*/
public static class TestListenerAny<T extends AbstractNotificationEvent> implements EventListener<T> {
private boolean listened = false;
@Override
public void onEvent(T event) {
listened = true;
}
public boolean hasListened() {
return listened;
}
}
/**
* Simple listener to use during tests. Listens for a percentage of work done event.
*
* @author Andrea Vacondio
*
*/
public static class TestListenerPercentage implements EventListener<PercentageOfWorkDoneChangedEvent> {
private BigDecimal percentage;
private boolean undeterminate;
@Override
public void onEvent(PercentageOfWorkDoneChangedEvent event) {
percentage = event.getPercentage();
undeterminate = event.isUndetermined();
}
public BigDecimal getPercentage() {
return percentage;
}
public boolean isUndeterminate() {
return undeterminate;
}
}
/**
* Simple listener to use during tests. Listens for a start event.
*
* @author Andrea Vacondio
*
*/
public static class TestListenerStart implements EventListener<TaskExecutionStartedEvent> {
private boolean started = false;
@Override
public void onEvent(TaskExecutionStartedEvent event) {
started = true;
}
public boolean isStarted() {
return started;
}
}
/**
* Simple listener to use during tests. Listens for a start event.
*
* @author Andrea Vacondio
*
*/
public static class TestListenerFailed implements EventListener<TaskExecutionFailedEvent> {
private boolean failed = false;
@Override
public void onEvent(TaskExecutionFailedEvent event) {
failed = true;
}
public boolean isFailed() {
return failed;
}
}
/**
* Simple listener to use during tests. Listens for a warning event.
*
*/
public static class TestListenerWarnings implements EventListener<TaskExecutionWarningEvent> {
private List<String> warnings = new ArrayList<>();
@Override
public void onEvent(TaskExecutionWarningEvent event) {
warnings.add(event.getWarning());
}
public List<String> getWarnings() {
return warnings;
}
}
}