package org.jvalue.ods.notifications.sender;
import org.jvalue.ods.api.notifications.Client;
import org.jvalue.ods.api.sources.DataSource;
abstract class AbstractSender<T extends Client> implements Sender<T> {
protected final DataSource source;
protected final T client;
private SenderResult senderResult;
protected AbstractSender(DataSource source, T client) {
this.source = source;
this.client = client;
}
public final SenderResult getSenderResult() {
return senderResult;
}
protected final void setSuccessResult() {
senderResult = new SenderResult.Builder(SenderResult.Status.SUCCESS).build();
}
protected final void setErrorResult(String msg) {
senderResult = new SenderResult.Builder(SenderResult.Status.ERROR).errorMsg(msg).build();
}
protected final void setErrorResult(Throwable cause) {
senderResult = new SenderResult.Builder(SenderResult.Status.ERROR).errorCause(cause).build();
}
protected final void setUpdateClientResult(Client oldClient, Client newClient) {
senderResult = new SenderResult.Builder(SenderResult.Status.UPDATE_CLIENT)
.oldClient(oldClient)
.newClient(newClient)
.build();
}
protected final void setRemoveClientResult(Client oldClient) {
senderResult = new SenderResult.Builder(SenderResult.Status.REMOVE_CLIENT)
.oldClient(oldClient)
.build();
}
}