package org.wikipedia.database.http;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import org.wikipedia.database.async.AsyncRow;
public class HttpRow<T> extends AsyncRow<HttpStatus, T> {
public HttpRow(@NonNull String key, @Nullable T dat) {
super(key, HttpStatus.SYNCHRONIZED, dat);
}
public HttpRow(@NonNull HttpRow<T> httpRow, @Nullable T dat) {
super(httpRow, dat);
}
public HttpRow(@NonNull String key, @NonNull HttpStatus status, long timestamp,
long transactionId) {
super(key, status, timestamp, transactionId);
}
@Override public boolean completable(@Nullable AsyncRow<HttpStatus, T> query) {
boolean recordable = !(query == null && status() == HttpStatus.DELETED);
return super.completable(query) && recordable;
}
@Override public void completeTransaction(long timestamp) {
super.completeTransaction(timestamp);
resetTransaction(next(status()));
}
@NonNull private HttpStatus next(@NonNull HttpStatus current) {
switch (current) {
case SYNCHRONIZED:
case OUTDATED:
case MODIFIED:
case ADDED:
return HttpStatus.SYNCHRONIZED;
case DELETED:
return HttpStatus.DELETED;
default:
throw new RuntimeException("current=" + current);
}
}
}