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






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.callback;
/*  w  w w. j a v  a  2  s.  com*/
import android.os.Handler;

import com.fanpics.opensource.android.modelrecord.HttpReport;
import com.fanpics.opensource.android.modelrecord.event.EventProcessor;
import com.fanpics.opensource.android.modelrecord.event.FailureEvent;
import com.fanpics.opensource.android.modelrecord.event.SuccessEvent;
import com.fanpics.opensource.android.modelrecord.configuration.BaseRecordConfiguration;

import java.util.Date;

import retrofit.RetrofitError;
import retrofit.client.Response;

public abstract class BaseRecordCallback {

    private final HttpReport httpReport;
    protected EventProcessor eventProcessor;
    protected Handler handler;

    protected BaseRecordCallback(EventProcessor eventProcessor, HttpReport httpReport){
        this.eventProcessor = eventProcessor;
        this.httpReport = httpReport;
    }

    public BaseRecordCallback(EventProcessor eventProcessor, HttpReport httpReport, Handler handler) {
        this.eventProcessor = eventProcessor;
        this.httpReport = httpReport;
        this.handler = handler;
    }

    protected void postSuccessEvent(SuccessEvent event) {
        final Runnable successRunnable = createSuccessRunnable(event);

        if (handler != null){
            handler.post(successRunnable);
        } else {
            successRunnable.run();
        }
    }

    private Runnable createSuccessRunnable(final SuccessEvent event) {
        return new Runnable() {
            @Override
            public void run() {
                eventProcessor.process(event);
            }
        };
    }

    protected void postFailure(RetrofitError retrofitError) {
        if (retrofitError != null) {
            reportHttpFailure(retrofitError);
        }

        getRecordConfiguration().callFailureCallback();
        postFailureEvent(retrofitError);
    }

    private void reportHttpFailure(RetrofitError retrofitError) {
        final Throwable cause = retrofitError.getCause();
        final Response response = retrofitError.getResponse();
        final boolean isNetworkError = retrofitError.getKind() == RetrofitError.Kind.NETWORK;
        if (isNetworkError) {
            reportNetworkError(cause, retrofitError);
        } else if (response != null) {
            sendHttpReport(response);
        }
    }

    private void reportNetworkError(Throwable cause, RetrofitError error) {
        Exception exception = null;
        if(cause instanceof Exception) {
            exception = (Exception) cause;
        }

        if (httpReport != null) {
            final String url = error.getUrl();
            final long startTime = getRecordConfiguration().getStartTime();
            final long currentTime = new Date().getTime();
            httpReport.reportHttpError(url, startTime, currentTime, exception, error);
        }
    }

    protected void sendHttpReport(Response response) {
        if (response != null && httpReport != null) {
            final String url = response.getUrl();
            final int status = response.getStatus();
            final long startTime = getRecordConfiguration().getStartTime();
            final long currentTime = new Date().getTime();
            httpReport.reportHttpSuccess(url, status, startTime, currentTime, response);
        }
    }

    private void postFailureEvent(RetrofitError retrofitError) {
        final Runnable failureRunnable = createFailureRunnable(retrofitError);

        if (handler != null){
            handler.post(failureRunnable);
        } else {
            failureRunnable.run();
        }
    }

    private Runnable createFailureRunnable(final RetrofitError retrofitError) {
        return new Runnable() {
            @Override
            public void run() {
                final FailureEvent event = getRecordConfiguration().getFailureEvent();
                event.setError(retrofitError);
                eventProcessor.process(event);
            }
        };
    }

    public void disableCaching() {
        getRecordConfiguration().removeCache();
    }

    protected abstract BaseRecordConfiguration getRecordConfiguration();
}




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