diff --git a/app/src/apkFlavor/java/com/jens/automation2/Rule.java b/app/src/apkFlavor/java/com/jens/automation2/Rule.java index 45538642..629499bf 100644 --- a/app/src/apkFlavor/java/com/jens/automation2/Rule.java +++ b/app/src/apkFlavor/java/com/jens/automation2/Rule.java @@ -351,7 +351,10 @@ public class Rule implements Comparable if(applies(context)) { if(hasNotAppliedSinceLastExecution()) + { + Miscellaneous.logEvent("i", "getsGreenLight()", "Rule " + getName() + " applies and has flipped since its last execution.", 4); return true; + } else Miscellaneous.logEvent("i", "getsGreenLight()", "Rule " + getName() + " has not flipped since its last execution.", 4); } @@ -434,7 +437,7 @@ public class Rule implements Comparable Thread.setDefaultUncaughtExceptionHandler(Miscellaneous.uncaughtExceptionHandler); - // without this line debugger will - for some reason - skip all breakpoints in this class + // without this line the debugger will - for some reason - skip all breakpoints in this class if(android.os.Debug.isDebuggerConnected()) android.os.Debug.waitForDebugger(); @@ -442,7 +445,7 @@ public class Rule implements Comparable Looper.prepare(); setLastExecution(Calendar.getInstance()); - wasActivated = activateInternally((AutomationService)params[0], (Boolean)params[1]); + wasActivated = activateInternally((AutomationService)params[0]); return null; } @@ -477,66 +480,57 @@ public class Rule implements Comparable * Will activate the rule. Should be called by a separate execution thread * @param automationService */ - protected boolean activateInternally(AutomationService automationService, boolean force) + protected boolean activateInternally(AutomationService automationService) { - boolean isActuallyToggable = isActuallyToggable(); + boolean isActuallyToggleable = isActuallyToggable(); boolean notLastActive = getLastActivatedRule() == null || !getLastActivatedRule().equals(Rule.this); - boolean doToggle = ruleToggle && isActuallyToggable; + boolean doToggle = ruleToggle && isActuallyToggleable; - //if(notLastActive || force || doToggle) -// if(force || doToggle) -// { - String message; - if(!doToggle) - message = String.format(automationService.getResources().getString(R.string.ruleActivate), Rule.this.getName()); - else - message = String.format(automationService.getResources().getString(R.string.ruleActivateToggle), Rule.this.getName()); - Miscellaneous.logEvent("i", "Rule", message, 2); -// automationService.speak(message); -// Toast.makeText(automationService, message, Toast.LENGTH_LONG).show(); - if(Settings.startNewThreadForRuleActivation) - publishProgress(message); + String message; + if(!doToggle) + message = String.format(automationService.getResources().getString(R.string.ruleActivate), Rule.this.getName()); + else + message = String.format(automationService.getResources().getString(R.string.ruleActivateToggle), Rule.this.getName()); - for(int i = 0; i< Rule.this.getActionSet().size(); i++) - { - try - { - Rule.this.getActionSet().get(i).run(automationService, doToggle); - } - catch(Exception e) - { - Miscellaneous.logEvent("e", "RuleExecution", "Error running action of rule " + Rule.this.getName() + ": " + Log.getStackTraceString(e), 1); - } - } + Miscellaneous.logEvent("i", "Rule", message, 2); - // Keep log of last x rule activations (Settings) + if(Settings.startNewThreadForRuleActivation) + publishProgress(message); + + for(int i = 0; i< Rule.this.getActionSet().size(); i++) + { try { - Rule.ruleRunHistory.add(0, Rule.this); // add at beginning for better visualization - Rule.lastActivatedRuleActivationTime = new Date(); - - while(ruleRunHistory.size() > Settings.rulesThatHaveBeenRanHistorySize) - ruleRunHistory.remove(ruleRunHistory.size()-1); - String history = ""; - for(Rule rule : ruleRunHistory) - history += rule.getName() + ", "; - if(history.length() > 0) - history = history.substring(0, history.length()-2); - Miscellaneous.logEvent("i", "Rule history", "Most recent first: " + history, 4); + Rule.this.getActionSet().get(i).run(automationService, doToggle); } catch(Exception e) { - Miscellaneous.logEvent("e", "Rule history error", Log.getStackTraceString(e), 3); + Miscellaneous.logEvent("e", "RuleExecution", "Error running action of rule " + Rule.this.getName() + ": " + Log.getStackTraceString(e), 1); } + } - Miscellaneous.logEvent("i", "Rule", String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.ruleActivationComplete), Rule.this.getName()), 2); -// } -// else -// { -// Miscellaneous.logEvent("i", "Rule", "Request to activate rule " + Rule.this.getName() + ", but it is the last one that was activated. Won't do it again.", 3); -// return false; -// } + // Keep log of last x rule activations (Settings) + try + { + Rule.ruleRunHistory.add(0, Rule.this); // add at beginning for better visualization + Rule.lastActivatedRuleActivationTime = new Date(); + + while(ruleRunHistory.size() > Settings.rulesThatHaveBeenRanHistorySize) + ruleRunHistory.remove(ruleRunHistory.size()-1); + String history = ""; + for(Rule rule : ruleRunHistory) + history += rule.getName() + ", "; + if(history.length() > 0) + history = history.substring(0, history.length()-2); + Miscellaneous.logEvent("i", "Rule history", "Most recent first: " + history, 4); + } + catch(Exception e) + { + Miscellaneous.logEvent("e", "Rule history error", Log.getStackTraceString(e), 3); + } + + Miscellaneous.logEvent("i", "Rule", String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.ruleActivationComplete), Rule.this.getName()), 2); return true; } diff --git a/app/src/fdroidFlavor/java/com/jens/automation2/Rule.java b/app/src/fdroidFlavor/java/com/jens/automation2/Rule.java index 81ccdfa9..2642dad8 100644 --- a/app/src/fdroidFlavor/java/com/jens/automation2/Rule.java +++ b/app/src/fdroidFlavor/java/com/jens/automation2/Rule.java @@ -348,7 +348,10 @@ public class Rule implements Comparable if(applies(context)) { if(hasNotAppliedSinceLastExecution()) + { + Miscellaneous.logEvent("i", "getsGreenLight()", "Rule " + getName() + " applies and has flipped since its last execution.", 4); return true; + } else Miscellaneous.logEvent("i", "getsGreenLight()", "Rule " + getName() + " has not flipped since its last execution.", 4); } @@ -414,7 +417,7 @@ public class Rule implements Comparable Looper.prepare(); setLastExecution(Calendar.getInstance()); - wasActivated = activateInternally((AutomationService)params[0], (Boolean)params[1]); + wasActivated = activateInternally((AutomationService)params[0]); return null; } @@ -449,66 +452,57 @@ public class Rule implements Comparable * Will activate the rule. Should be called by a separate execution thread * @param automationService */ - protected boolean activateInternally(AutomationService automationService, boolean force) + protected boolean activateInternally(AutomationService automationService) { - boolean isActuallyToggable = isActuallyToggable(); + boolean isActuallyToggleable = isActuallyToggable(); boolean notLastActive = getLastActivatedRule() == null || !getLastActivatedRule().equals(Rule.this); - boolean doToggle = ruleToggle && isActuallyToggable; + boolean doToggle = ruleToggle && isActuallyToggleable; - //if(notLastActive || force || doToggle) -// if(force || doToggle) -// { - String message; - if(!doToggle) - message = String.format(automationService.getResources().getString(R.string.ruleActivate), Rule.this.getName()); - else - message = String.format(automationService.getResources().getString(R.string.ruleActivateToggle), Rule.this.getName()); - Miscellaneous.logEvent("i", "Rule", message, 2); -// automationService.speak(message); -// Toast.makeText(automationService, message, Toast.LENGTH_LONG).show(); - if(Settings.startNewThreadForRuleActivation) - publishProgress(message); + String message; + if(!doToggle) + message = String.format(automationService.getResources().getString(R.string.ruleActivate), Rule.this.getName()); + else + message = String.format(automationService.getResources().getString(R.string.ruleActivateToggle), Rule.this.getName()); - for(int i = 0; i< Rule.this.getActionSet().size(); i++) - { - try - { - Rule.this.getActionSet().get(i).run(automationService, doToggle); - } - catch(Exception e) - { - Miscellaneous.logEvent("e", "RuleExecution", "Error running action of rule " + Rule.this.getName() + ": " + Log.getStackTraceString(e), 1); - } - } + Miscellaneous.logEvent("i", "Rule", message, 2); - // Keep log of last x rule activations (Settings) + if(Settings.startNewThreadForRuleActivation) + publishProgress(message); + + for(int i = 0; i< Rule.this.getActionSet().size(); i++) + { try { - Rule.ruleRunHistory.add(0, Rule.this); // add at beginning for better visualization - Rule.lastActivatedRuleActivationTime = new Date(); - - while(ruleRunHistory.size() > Settings.rulesThatHaveBeenRanHistorySize) - ruleRunHistory.remove(ruleRunHistory.size()-1); - String history = ""; - for(Rule rule : ruleRunHistory) - history += rule.getName() + ", "; - if(history.length() > 0) - history = history.substring(0, history.length()-2); - Miscellaneous.logEvent("i", "Rule history", "Most recent first: " + history, 4); + Rule.this.getActionSet().get(i).run(automationService, doToggle); } catch(Exception e) { - Miscellaneous.logEvent("e", "Rule history error", Log.getStackTraceString(e), 3); + Miscellaneous.logEvent("e", "RuleExecution", "Error running action of rule " + Rule.this.getName() + ": " + Log.getStackTraceString(e), 1); } + } - Miscellaneous.logEvent("i", "Rule", String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.ruleActivationComplete), Rule.this.getName()), 2); -// } -// else -// { -// Miscellaneous.logEvent("i", "Rule", "Request to activate rule " + Rule.this.getName() + ", but it is the last one that was activated. Won't do it again.", 3); -// return false; -// } + // Keep log of last x rule activations (Settings) + try + { + Rule.ruleRunHistory.add(0, Rule.this); // add at beginning for better visualization + Rule.lastActivatedRuleActivationTime = new Date(); + + while(ruleRunHistory.size() > Settings.rulesThatHaveBeenRanHistorySize) + ruleRunHistory.remove(ruleRunHistory.size()-1); + String history = ""; + for(Rule rule : ruleRunHistory) + history += rule.getName() + ", "; + if(history.length() > 0) + history = history.substring(0, history.length()-2); + Miscellaneous.logEvent("i", "Rule history", "Most recent first: " + history, 4); + } + catch(Exception e) + { + Miscellaneous.logEvent("e", "Rule history error", Log.getStackTraceString(e), 3); + } + + Miscellaneous.logEvent("i", "Rule", String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.ruleActivationComplete), Rule.this.getName()), 2); return true; } diff --git a/app/src/googlePlayFlavor/java/com/jens/automation2/Rule.java b/app/src/googlePlayFlavor/java/com/jens/automation2/Rule.java index 7a4d7570..4810f013 100644 --- a/app/src/googlePlayFlavor/java/com/jens/automation2/Rule.java +++ b/app/src/googlePlayFlavor/java/com/jens/automation2/Rule.java @@ -351,7 +351,10 @@ public class Rule implements Comparable if(applies(context)) { if(hasNotAppliedSinceLastExecution()) + { + Miscellaneous.logEvent("i", "getsGreenLight()", "Rule " + getName() + " applies and has flipped since its last execution.", 4); return true; + } else Miscellaneous.logEvent("i", "getsGreenLight()", "Rule " + getName() + " has not flipped since its last execution.", 4); } @@ -433,7 +436,7 @@ public class Rule implements Comparable Thread.setDefaultUncaughtExceptionHandler(Miscellaneous.uncaughtExceptionHandler); - // without this line debugger will - for some reason - skip all breakpoints in this class + // without this line the debugger will - for some reason - skip all breakpoints in this class if(android.os.Debug.isDebuggerConnected()) android.os.Debug.waitForDebugger(); @@ -441,7 +444,7 @@ public class Rule implements Comparable Looper.prepare(); setLastExecution(Calendar.getInstance()); - wasActivated = activateInternally((AutomationService)params[0], (Boolean)params[1]); + wasActivated = activateInternally((AutomationService)params[0]); return null; } @@ -476,66 +479,57 @@ public class Rule implements Comparable * Will activate the rule. Should be called by a separate execution thread * @param automationService */ - protected boolean activateInternally(AutomationService automationService, boolean force) + protected boolean activateInternally(AutomationService automationService) { - boolean isActuallyToggable = isActuallyToggable(); + boolean isActuallyToggleable = isActuallyToggable(); boolean notLastActive = getLastActivatedRule() == null || !getLastActivatedRule().equals(Rule.this); - boolean doToggle = ruleToggle && isActuallyToggable; + boolean doToggle = ruleToggle && isActuallyToggleable; - //if(notLastActive || force || doToggle) -// if(force || doToggle) -// { - String message; - if(!doToggle) - message = String.format(automationService.getResources().getString(R.string.ruleActivate), Rule.this.getName()); - else - message = String.format(automationService.getResources().getString(R.string.ruleActivateToggle), Rule.this.getName()); - Miscellaneous.logEvent("i", "Rule", message, 2); -// automationService.speak(message); -// Toast.makeText(automationService, message, Toast.LENGTH_LONG).show(); - if(Settings.startNewThreadForRuleActivation) - publishProgress(message); + String message; + if(!doToggle) + message = String.format(automationService.getResources().getString(R.string.ruleActivate), Rule.this.getName()); + else + message = String.format(automationService.getResources().getString(R.string.ruleActivateToggle), Rule.this.getName()); - for(int i = 0; i< Rule.this.getActionSet().size(); i++) - { - try - { - Rule.this.getActionSet().get(i).run(automationService, doToggle); - } - catch(Exception e) - { - Miscellaneous.logEvent("e", "RuleExecution", "Error running action of rule " + Rule.this.getName() + ": " + Log.getStackTraceString(e), 1); - } - } + Miscellaneous.logEvent("i", "Rule", message, 2); - // Keep log of last x rule activations (Settings) + if(Settings.startNewThreadForRuleActivation) + publishProgress(message); + + for(int i = 0; i< Rule.this.getActionSet().size(); i++) + { try { - Rule.ruleRunHistory.add(0, Rule.this); // add at beginning for better visualization - Rule.lastActivatedRuleActivationTime = new Date(); - - while(ruleRunHistory.size() > Settings.rulesThatHaveBeenRanHistorySize) - ruleRunHistory.remove(ruleRunHistory.size()-1); - String history = ""; - for(Rule rule : ruleRunHistory) - history += rule.getName() + ", "; - if(history.length() > 0) - history = history.substring(0, history.length()-2); - Miscellaneous.logEvent("i", "Rule history", "Most recent first: " + history, 4); + Rule.this.getActionSet().get(i).run(automationService, doToggle); } catch(Exception e) { - Miscellaneous.logEvent("e", "Rule history error", Log.getStackTraceString(e), 3); + Miscellaneous.logEvent("e", "RuleExecution", "Error running action of rule " + Rule.this.getName() + ": " + Log.getStackTraceString(e), 1); } + } - Miscellaneous.logEvent("i", "Rule", String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.ruleActivationComplete), Rule.this.getName()), 2); -// } -// else -// { -// Miscellaneous.logEvent("i", "Rule", "Request to activate rule " + Rule.this.getName() + ", but it is the last one that was activated. Won't do it again.", 3); -// return false; -// } + // Keep log of last x rule activations (Settings) + try + { + Rule.ruleRunHistory.add(0, Rule.this); // add at beginning for better visualization + Rule.lastActivatedRuleActivationTime = new Date(); + + while(ruleRunHistory.size() > Settings.rulesThatHaveBeenRanHistorySize) + ruleRunHistory.remove(ruleRunHistory.size()-1); + String history = ""; + for(Rule rule : ruleRunHistory) + history += rule.getName() + ", "; + if(history.length() > 0) + history = history.substring(0, history.length()-2); + Miscellaneous.logEvent("i", "Rule history", "Most recent first: " + history, 4); + } + catch(Exception e) + { + Miscellaneous.logEvent("e", "Rule history error", Log.getStackTraceString(e), 3); + } + + Miscellaneous.logEvent("i", "Rule", String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.ruleActivationComplete), Rule.this.getName()), 2); return true; } diff --git a/app/src/main/java/com/jens/automation2/ActivityMainRules.java b/app/src/main/java/com/jens/automation2/ActivityMainRules.java index 7b830d3f..85221de8 100644 --- a/app/src/main/java/com/jens/automation2/ActivityMainRules.java +++ b/app/src/main/java/com/jens/automation2/ActivityMainRules.java @@ -199,6 +199,7 @@ public class ActivityMainRules extends ActivityGeneric AutomationService runContext = AutomationService.getInstance(); if(runContext != null) { + Miscellaneous.logEvent("i", "ActivityMainRules", "Initiating manual execution of rule " + ruleThisIsAbout.getName(), 3); ruleThisIsAbout.activate(runContext, true); break; }