Android Open Source - android-model-record Base Record Configuration






From Project

Back to project page android-model-record.

License

The source code is released under:

MIT License

If you think the Android project android-model-record listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.fanpics.opensource.android.modelrecord.configuration;
//  w  ww. jav a2  s.c o m
import com.fanpics.opensource.android.modelrecord.Result;
import com.fanpics.opensource.android.modelrecord.callback.FailureCallback;
import com.fanpics.opensource.android.modelrecord.callback.SuccessCallback;
import com.fanpics.opensource.android.modelrecord.event.FailureEvent;
import com.fanpics.opensource.android.modelrecord.event.SuccessEvent;

import java.util.Date;

import retrofit.Callback;

public abstract class BaseRecordConfiguration<T> {
    private AsyncNetworkCall asyncNetworkCall;
    private SynchronousNetworkCall synchronousNetworkCall;

    public static enum Type {REFRESH, CACHE_ONLY, NETWORK_AS_FALLBACK, LOAD}

    private SuccessEvent<T> successEvent;
    private SuccessCallback<T> successCallback;
    private FailureEvent failureEvent;
    private FailureCallback failureCallback;
    private final Date createdTime = new Date();

    private boolean runSynchronously;
    private Type type;

    public BaseRecordConfiguration() {
    }

    public BaseRecordConfiguration(Type type) {
        this.type = type;
    }

    public boolean shouldLoadFromCache() {
        final boolean typeSupportsCacheLoading = type != Type.REFRESH;

        return typeSupportsCacheLoading && hasCache();
    }

    public boolean shouldLoadFromNetwork() {
        if (type != Type.NETWORK_AS_FALLBACK) {
            return (type == Type.LOAD) || (type == Type.REFRESH);
        } else {
            return !resultHasLoaded();
        }
    }

    public Type getType() {
        return type;
    }

    public void setSuccessEvent(SuccessEvent<T> successEvent) {
        this.successEvent = successEvent;
    }

    public SuccessEvent<T> getSuccessEvent() {
        return successEvent;
    }

    public void setSuccessCallback(SuccessCallback<T> successCallback) {
        this.successCallback = successCallback;
    }

    public void callSuccessCallback(T object) {
        if (successCallback != null) {
            successCallback.call(object);
        }
    }

    public void setFailureEvent(FailureEvent failureEvent) {
        this.failureEvent = failureEvent;
    }

    public FailureEvent getFailureEvent() {
        return failureEvent;
    }

    public void setFailureCallback(FailureCallback failureCallback) {
        this.failureCallback = failureCallback;
    }

    public void callFailureCallback() {
        if (failureCallback != null) {
            failureCallback.call();
        }
    }

    public long getStartTime() {
        return createdTime.getTime();
    }

    protected boolean resultHasLoaded() {
        return successEvent.resultHasLoaded();
    }

    public boolean shouldRunSynchronously() {
        return runSynchronously;
    }

    public boolean shouldRunAsynchronously() {
        return !runSynchronously;
    }

    public void setRunAsynchronously() {
        runSynchronously = false;
    }

    public void setRunSynchronously() {
        runSynchronously = true;
    }

    public void performAsynchronousNetworkCall(Object key, Callback callback) {
        if (asyncNetworkCall == null) {
            throw new RuntimeException("AsyncNetworkCall must be set with setAsynchronousNetworkCall(call) before performing an async action");
        }

        asyncNetworkCall.call(key, callback);
    }

    public Result performSynchronousNetworkCall(Object key) {
        if (synchronousNetworkCall == null) {
            throw new RuntimeException("SynchronousNetworkCall must be set with setSynchronousNetworkCall(call) before performing an async action");
        }

        return synchronousNetworkCall.call(key);
    }

    public void setAsynchronousNetworkCall(AsyncNetworkCall asyncNetworkCall) {
        this.asyncNetworkCall = asyncNetworkCall;
    }

    public void setSynchronousNetworkCall(SynchronousNetworkCall synchronousNetworkCall) {
        this.synchronousNetworkCall = synchronousNetworkCall;
    }

    public abstract void removeCache();

    protected abstract boolean hasCache();

    public interface AsyncNetworkCall {
        void call(Object key, Callback callback);
    }

    public interface SynchronousNetworkCall {
        Result call(Object key);
    }
}




Java Source Code List

com.fanpics.opensource.android.modelrecord.HttpReport.java
com.fanpics.opensource.android.modelrecord.ModelRecordTest.java
com.fanpics.opensource.android.modelrecord.ModelRecord.java
com.fanpics.opensource.android.modelrecord.RecordCache.java
com.fanpics.opensource.android.modelrecord.ResponseParser.java
com.fanpics.opensource.android.modelrecord.Result.java
com.fanpics.opensource.android.modelrecord.callback.BaseRecordCallback.java
com.fanpics.opensource.android.modelrecord.callback.CreateCallback.java
com.fanpics.opensource.android.modelrecord.callback.DeleteCallbackTest.java
com.fanpics.opensource.android.modelrecord.callback.DeleteCallback.java
com.fanpics.opensource.android.modelrecord.callback.FailureCallback.java
com.fanpics.opensource.android.modelrecord.callback.LoadCallback.java
com.fanpics.opensource.android.modelrecord.callback.LoadListCallback.java
com.fanpics.opensource.android.modelrecord.callback.RecordCallbackTest.java
com.fanpics.opensource.android.modelrecord.callback.RecordCallback.java
com.fanpics.opensource.android.modelrecord.callback.SuccessCallback.java
com.fanpics.opensource.android.modelrecord.callback.UpdateCallback.java
com.fanpics.opensource.android.modelrecord.configuration.BaseRecordConfigurationTest.java
com.fanpics.opensource.android.modelrecord.configuration.BaseRecordConfiguration.java
com.fanpics.opensource.android.modelrecord.configuration.MultiRecordConfigurationTest.java
com.fanpics.opensource.android.modelrecord.configuration.MultiRecordConfiguration.java
com.fanpics.opensource.android.modelrecord.configuration.SingleRecordConfigurationTest.java
com.fanpics.opensource.android.modelrecord.configuration.SingleRecordConfiguration.java
com.fanpics.opensource.android.modelrecord.event.EventProcessor.java
com.fanpics.opensource.android.modelrecord.event.FailureEvent.java
com.fanpics.opensource.android.modelrecord.event.OttoProcessorTest.java
com.fanpics.opensource.android.modelrecord.event.OttoProcessor.java
com.fanpics.opensource.android.modelrecord.event.SuccessEventTest.java
com.fanpics.opensource.android.modelrecord.event.SuccessEvent.java
com.fanpics.opensource.android.modelrecord.sample.data.cache.ImgurDataCache.java
com.fanpics.opensource.android.modelrecord.sample.data.model.ImgurData.java
com.fanpics.opensource.android.modelrecord.sample.data.model.ImgurItem.java
com.fanpics.opensource.android.modelrecord.sample.data.model.record.ImgurDataRecord.java
com.fanpics.opensource.android.modelrecord.sample.data.network.ImgurItemService.java
com.fanpics.opensource.android.modelrecord.sample.event.ImgurDataLoadFailedEvent.java
com.fanpics.opensource.android.modelrecord.sample.event.ImgurDataLoadSucceededEvent.java
com.fanpics.opensource.android.modelrecord.sample.ui.activity.MainActivity.java
com.fanpics.opensource.android.modelrecord.sample.ui.adapter.ImgurAdapter.java