package nucleus.presenter.delivery;
import android.support.annotation.Nullable;
import rx.Notification;
import rx.functions.Action2;
/**
* A class that represents a couple of View and Data.
*
* @param <View>
* @param <T>
*/
public final class Delivery<View, T> {
private final View view;
private final Notification<T> notification;
public Delivery(View view, Notification<T> notification) {
this.view = view;
this.notification = notification;
}
public void split(Action2<View, T> onNext, @Nullable Action2<View, Throwable> onError) {
if (notification.getKind() == Notification.Kind.OnNext)
onNext.call(view, notification.getValue());
else if (onError != null && notification.getKind() == Notification.Kind.OnError)
onError.call(view, notification.getThrowable());
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Delivery<?, ?> delivery = (Delivery<?, ?>)o;
if (view != null ? !view.equals(delivery.view) : delivery.view != null) return false;
return !(notification != null ? !notification.equals(delivery.notification) : delivery.notification != null);
}
@Override
public int hashCode() {
int result = view != null ? view.hashCode() : 0;
result = 31 * result + (notification != null ? notification.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "Delivery{" +
"view=" + view +
", notification=" + notification +
'}';
}
}