package io.pivotal.arca.fragments;
import android.annotation.TargetApi;
import android.app.Fragment;
import android.os.Build;
import android.os.Bundle;
import io.pivotal.arca.dispatcher.Delete;
import io.pivotal.arca.dispatcher.DeleteResult;
import io.pivotal.arca.dispatcher.Error;
import io.pivotal.arca.dispatcher.Insert;
import io.pivotal.arca.dispatcher.InsertResult;
import io.pivotal.arca.dispatcher.Query;
import io.pivotal.arca.dispatcher.QueryListener;
import io.pivotal.arca.dispatcher.Update;
import io.pivotal.arca.dispatcher.UpdateResult;
import io.pivotal.arca.monitor.ArcaDispatcher;
import io.pivotal.arca.monitor.RequestMonitor;
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public abstract class ArcaQueryFragment extends Fragment implements QueryListener {
private ArcaDispatcher mDispatcher;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mDispatcher = onCreateDispatcher(savedInstanceState);
}
public ArcaDispatcher onCreateDispatcher(final Bundle savedInstanceState) {
return ArcaDispatcherFactory.generateDispatcher(this);
}
protected ArcaDispatcher getRequestDispatcher() {
return mDispatcher;
}
protected RequestMonitor getRequestMonitor() {
final ArcaDispatcher dispatcher = getRequestDispatcher();
if (dispatcher != null) {
return dispatcher.getRequestMonitor();
} else {
return null;
}
}
protected void setRequestMonitor(final RequestMonitor monitor) {
final ArcaDispatcher dispatcher = getRequestDispatcher();
if (dispatcher != null) {
dispatcher.setRequestMonitor(monitor);
}
}
protected void execute(final Query request) {
final ArcaDispatcher dispatcher = getRequestDispatcher();
if (dispatcher != null) {
dispatcher.execute(request, this);
}
}
protected InsertResult execute(final Insert request) {
final ArcaDispatcher dispatcher = getRequestDispatcher();
if (dispatcher != null) {
return dispatcher.execute(request);
} else {
return new InsertResult(new Error(0, "No dispatcher found"));
}
}
protected UpdateResult execute(final Update request) {
final ArcaDispatcher dispatcher = getRequestDispatcher();
if (dispatcher != null) {
return dispatcher.execute(request);
} else {
return new UpdateResult(new Error(0, "No dispatcher found"));
}
}
protected DeleteResult execute(final Delete request) {
final ArcaDispatcher dispatcher = getRequestDispatcher();
if (dispatcher != null) {
return dispatcher.execute(request);
} else {
return new DeleteResult(new Error(0, "No dispatcher found"));
}
}
}