package org.schmivits.airball.dataproxy.data;
import java.util.ArrayList;
import java.util.List;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
public abstract class AbstractProcess implements ProcessNode {
private final List<ChangeListener> mListeners = new ArrayList<ChangeListener>();
private final List<ProcessNode> mChildren = new ArrayList<ProcessNode>();
private final Context mContext;
private final ProcessNode mParent;
private final String mTitle;
private RunMode mRunMode = RunMode.NOT_STARTED;
private String mStatus = "";
protected AbstractProcess(Context context, ProcessNode parent, String title) {
mContext = context;
mParent = parent;
mTitle = title;
}
protected void setStatus(String status) {
mStatus = status;
for (ChangeListener l : mListeners) {
l.statusChanged();
}
}
@Override
public String getTitle() {
return mTitle;
}
@Override
public String getStatus() {
return mStatus;
}
@Override
public RunMode getRunMode() {
return mRunMode;
}
@Override
public void addChangeListener(ChangeListener l) {
mListeners.add(l);
}
@Override
public void removeChangeListener(ChangeListener l) {
mListeners.remove(l);
}
@Override
public ProcessNode[] getChildren() {
return mChildren.toArray(new ProcessNode[0]);
}
@Override
public void cleanupChild(ProcessNode child) {
if (mChildren.contains(child)) {
if (child.getRunMode() == RunMode.FINISHED && child.getChildren().length == 0) {
removeChild(child);
}
}
}
@Override
public ProcessNode getParent() {
return mParent;
}
@Override
public void signal() {
for (ProcessNode t : mChildren) { t.signal(); }
}
protected final void addChild(ProcessNode child) {
mChildren.add(child);
for (ChangeListener l : mListeners) {
l.childrenChanged();
}
}
protected final void removeChild(ProcessNode child) {
mChildren.remove(child);
for (ChangeListener l : mListeners) {
l.childrenChanged();
}
}
protected final void setRunMode(RunMode runMode) {
mRunMode = runMode;
for (ChangeListener l : mListeners) {
l.runModeChanged();
}
}
protected final Context getContext() {
return mContext;
}
protected BluetoothAdapter findBluetoothAdapter() {
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if (adapter == null) {
adapter = (BluetoothAdapter) mContext.getSystemService("BLUETOOTH_SERVICE");
}
return adapter;
}
}