Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.github.kubatatami.judonetworking.observers;
  
  import  android.content.Context;
  import  android.os.Handler;
  import  android.os.Looper;
  
  
 import java.util.List;
 
 public class ObservableWrapper<T> extends Callback<T> {
     protected T object = null;
     protected final Handler handler = new Handler(Looper.getMainLooper());
     protected final List<WrapObserver<T>> observers = new ArrayList<WrapObserver<T>>();
     protected ObservableWrapperListener<T> listener = null;
     protected boolean notifyInUiThread = true;
     protected long dataSetTime = 0;
     protected long updateTime = 0;
     protected boolean allowNull = false;
     protected boolean forceUpdateOnNetworkStateChange = false;
     protected boolean checkNetworkState = false;
     protected boolean checkUpdateOnGet = false;
     protected long period = 0;
     protected Timer timer;
 
         @Override
         public void onNetworkStateChange(boolean networkAvailable) {
             if (networkAvailable) {
                 if () {
                     forceUpdate();
                 } else {
                     checkUpdate();
                 }
             }
         }
     };
 
     @Override
     public void onSuccess(T result) {
         set(result);
     }
 
     protected final Runnable updateRunnable = new Runnable() {
         @Override
         public void run() {
             .onUpdate(ObservableWrapper.this);
         }
     };
 
     public ObservableWrapper() {
 
     }
 
     public ObservableWrapper(boolean notifyInUiThread) {
         this. = notifyInUiThread;
     }
 
     public ObservableWrapper(long updateTime) {
         this. = updateTime;
     }
 
     public ObservableWrapper(boolean notifyInUiThreadlong updateTime) {
         this. = notifyInUiThread;
         this. = updateTime;
     }
 
     public ObservableWrapper(boolean notifyInUiThreadboolean allowNull) {
         this. = notifyInUiThread;
         this. = allowNull;
     }
 
     public ObservableWrapper(long updateTimeboolean allowNull) {
         this. = updateTime;
         this. = allowNull;
     }
 
     public ObservableWrapper(boolean notifyInUiThreadlong updateTimeboolean allowNull) {
         this. = notifyInUiThread;
         this. = updateTime;
         this. = allowNull;
     }
 
     public void addObserver(WrapObserver<T> observer) {
         addObserver(observertrue);
     }
 
     public void addObserver(WrapObserver<T> observerboolean notify) {
         boolean add = true;
         if ( != null) {
             add = .onAddObserver(thisobserver);
         }
         if (add) {
             .add(observer);
             if (notify) {
                T obj = get();
                if (obj != null || ) {
                    observer.update(obj);
                }
            }
        }
    }
    public void deleteObserver(WrapObserver<T> observer) {
        boolean delete = true;
        if ( != null) {
            delete = .onDeleteObserver(thisobserver);
        }
        if (delete) {
            .remove(observer);
        }
    }
    public void startCheckUpdateOnChangeNetworkState(Context context) {
        startCheckUpdateOnChangeNetworkState(contextfalse);
    }
    public void startCheckUpdateOnChangeNetworkState(Context contextboolean forceUpdate) {
        if (!) {
             = forceUpdate;
            NetworkUtils.addNetworkStateListener(context);
        }
    }
    public void stopCheckUpdateOnChangeNetworkState(Context context) {
        if () {
            NetworkUtils.removeNetworkStateListener(context);
        }
    }
    public boolean isCheckUpdateOnGet() {
        return ;
    }
    public void setCheckUpdateOnGet(boolean checkUpdateOnGet) {
        this. = checkUpdateOnGet;
    }
    public T get() {
        if () {
            checkUpdate();
        }
        if ( != null) {
            .onGet(this);
        }
        return ;
    }
    public void checkUpdate() {
        if ( != null && !isDataActual()) {
            .post();
        }
    }
    public void forceUpdate() {
        if ( != null) {
            .post();
        }
    }
    public boolean isDataActual() {
        return  == 0 || System.currentTimeMillis() - getDataSetTime() <= ;
    }
    public void set(T object) {
         = System.currentTimeMillis();
        this. = object;
        notifyObservers();
        if ( != null) {
            .onSet(thisobject);
        }
    }
    public void startCheckUpdatePeriodically(long period) {
        startCheckUpdatePeriodically(periodfalse);
    }
    public void startCheckUpdatePeriodically(long periodfinal boolean forceUpdate) {
        if ( != null && this. == period) {
            return;
        }
         = new Timer(true);
        this. = period;
        .schedule(new TimerTask() {
            @Override
            public void run() {
                if (forceUpdate) {
                    forceUpdate();
                } else {
                    checkUpdate();
                }
            }
        }, periodperiod);
    }
    public void stopCheckUpdatePeriodically() {
        if ( != null) {
            .cancel();
            .purge();
             = null;
        }
    }
    public long getDataSetTime() {
        return ;
    }
    public void notifyObservers() {
        if ( != null || ) {
            Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    for (int i = .size() - 1; i >= 0; i--) {
                        .get(i).update();
                    }
                }
            };
            if (Looper.getMainLooper().getThread().equals(Thread.currentThread()) || !) {
                runnable.run();
            } else {
                .post(runnable);
            }
        }
    }
    public void setListener(ObservableWrapperListener<T> listener) {
        this. = listener;
    }
    public int getObserversCount() {
        return .size();
    }
    public long getUpdateTime() {
        return ;
    }
    public void setUpdateTime(long updateTime) {
        this. = updateTime;
    }
    public boolean isAllowNull() {
        return ;
    }
    public void setAllowNull(boolean allowNull) {
        this. = allowNull;
    }
New to GrepCode? Check out our FAQ X