package com.novoda.event;
import rx.Observer;
public abstract class EventObserver<T> implements Observer<Event<T>> {
@Override
public void onNext(Event<T> event) {
switch (event.state()) {
case IDLE:
onIdle(event);
break;
case LOADING:
onLoading(event);
break;
case ERROR:
onError(event);
break;
default:
break;
}
}
@Override
public void onError(Throwable e) {
throw new IllegalStateException("Event Pipeline failed, this should never happen", e);
}
@Override
public void onCompleted() {
throw new IllegalStateException("Event Pipeline completed, this should never happen");
}
public abstract void onLoading(Event<T> event);
public abstract void onIdle(Event<T> event);
public abstract void onError(Event<T> event);
}