package com.papagiannis.tuberun.fetchers; import java.io.Serializable; import java.util.ArrayList; import java.util.Date; import android.util.Log; public abstract class Fetcher implements Serializable { private static final long serialVersionUID = 1L; protected static String UserAgent = "TubeRun 1.0 (Android)"; transient protected ArrayList<Observer> callbacks = new ArrayList<Observer>(); public synchronized Fetcher registerCallback(Observer cb) { if (callbacks==null) callbacks=new ArrayList<Observer>(); if (!callbacks.contains(cb)) callbacks.add(cb); return this; } public synchronized void deregisterCallback(Observer cb) { callbacks.remove(cb); } public synchronized void notifyClients() { for (Observer cb : callbacks) { try { cb.update(); } catch (Exception e) { Log.w("Fetcher", e); } } } public abstract void update(); public abstract Date getUpdateTime(); public synchronized void clearCallbacks() { if (callbacks!=null) callbacks.clear(); else callbacks=new ArrayList<Observer>(); } public abstract void abort() ; }