package no.nordicsemi.puckcentral.triggers; import org.droidparts.Injector; import org.droidparts.util.L; import org.json.JSONException; import java.util.ArrayList; import no.nordicsemi.puckcentral.actuators.Actuator; import no.nordicsemi.puckcentral.db.RuleManager; import no.nordicsemi.puckcentral.models.Action; import no.nordicsemi.puckcentral.models.Puck; import no.nordicsemi.puckcentral.models.Rule; public abstract class Trigger { public static final String TRIGGER_CLOSEST_PUCK_CHANGED = "trigger_closest_puck_changed"; public static final String TRIGGER_CONNECTION_STATE_CHANGED = "trigger_connection_state_changed"; public static final String TRIGGER_ENTER_ZONE = "trigger_enter_zone"; public static final String TRIGGER_LEAVE_ZONE = "trigger_leave_zone"; public static final String TRIGGER_ZONE_DISCOVERED = "trigger_zone_discovered"; public static final String TRIGGER_ADD_ACTUATOR_FOR_EXISTING_RULE = "trigger_add_actuator_for_existing_rule"; public static final String TRIGGER_REMOVE_RULE = "trigger_remove_rule"; public static final String TRIGGER_ROTATE_CUBE_UP = "trigger_rotate_cube_up"; public static final String TRIGGER_ROTATE_CUBE_DOWN = "trigger_rotate_cube_down"; public static final String TRIGGER_ROTATE_CUBE_LEFT = "trigger_rotate_cube_left"; public static final String TRIGGER_ROTATE_CUBE_RIGHT = "trigger_rotate_cube_right"; public static final String TRIGGER_ROTATE_CUBE_FRONT = "trigger_rotate_cube_front"; public static final String TRIGGER_ROTATE_CUBE_BACK = "trigger_rotate_cube_back"; public static final String TRIGGER_ADD_RULE_FOR_EXISTING_PUCK = "trigger_add_rule_for_existing_puck"; public static void trigger(Puck puck, String trigger) { L.i("Triggering event for puck " + puck + " and trigger " + trigger); ArrayList<Rule> rules = Injector.getDependency(Injector.getApplicationContext(), RuleManager.class).getRulesForPuckAndTrigger(puck, trigger); L.i("With matching rules " + rules); for(Rule rule : rules) { for (Action action : rule.getActions()) { try { Actuator.actuate(action.getActuatorId(), action.getArguments()); } catch (JSONException e) { L.e(e); } } } } }