Add JobScheduler support in factor controller
Initializes the JobScheduler constants string in Global Settings and takes it through the parsing of creating a map with the key:value pairs linked to the JobScheduler policy. Also changes the way the getter methods work to take a factor policy so we can know what policy to change. Bug: 195056296 Bug: 195056102 Bug: 195055895 Test: Manual Change-Id: Id82101b2a045dd14bb8eacfbe51c363b4bafb1ce
This commit is contained in:
@@ -41,7 +41,9 @@ public class TareFactorController {
|
|||||||
private final KeyValueListParser mParser = new KeyValueListParser(',');
|
private final KeyValueListParser mParser = new KeyValueListParser(',');
|
||||||
private final Resources mResources;
|
private final Resources mResources;
|
||||||
private final ArrayMap<String, TareFactorData> mAlarmManagerMap = new ArrayMap<>();
|
private final ArrayMap<String, TareFactorData> mAlarmManagerMap = new ArrayMap<>();
|
||||||
|
private final ArrayMap<String, TareFactorData> mJobSchedulerMap = new ArrayMap<>();
|
||||||
private String mAlarmManagerConstants;
|
private String mAlarmManagerConstants;
|
||||||
|
private String mJobSchedulerConstants;
|
||||||
|
|
||||||
public TareFactorController(Context context) {
|
public TareFactorController(Context context) {
|
||||||
mContentResolver = context.getContentResolver();
|
mContentResolver = context.getContentResolver();
|
||||||
@@ -50,13 +52,19 @@ public class TareFactorController {
|
|||||||
mAlarmManagerConstants = Settings.Global
|
mAlarmManagerConstants = Settings.Global
|
||||||
.getString(mContentResolver, Settings.Global.TARE_ALARM_MANAGER_CONSTANTS);
|
.getString(mContentResolver, Settings.Global.TARE_ALARM_MANAGER_CONSTANTS);
|
||||||
|
|
||||||
|
mJobSchedulerConstants = Settings.Global
|
||||||
|
.getString(mContentResolver, Settings.Global.TARE_JOB_SCHEDULER_CONSTANTS);
|
||||||
|
|
||||||
initAlarmManagerMap();
|
initAlarmManagerMap();
|
||||||
parseAlarmManagerGlobalSettings();
|
parseAlarmManagerGlobalSettings();
|
||||||
|
|
||||||
|
initJobSchedulerMap();
|
||||||
|
parseJobSchedulerGlobalSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialization for AlarmManager Map that sets a AM factor key to a default value and title
|
* Initialization for AlarmManager Map that sets a AM factor key to a title, default value, and
|
||||||
* in the form of a string.
|
* policy type in a data object.
|
||||||
*/
|
*/
|
||||||
private void initAlarmManagerMap() {
|
private void initAlarmManagerMap() {
|
||||||
mAlarmManagerMap.put(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED,
|
mAlarmManagerMap.put(EconomyManager.KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED,
|
||||||
@@ -237,12 +245,206 @@ public class TareFactorController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Takes a key as input and grabs the default value linked to it.
|
* Initialization for JobScheduler Map that sets a JS factor key to a title, default value, and
|
||||||
|
* policy type in a data object.
|
||||||
|
*/
|
||||||
|
private void initJobSchedulerMap() {
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_EXEMPTED,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_min_satiated_balance),
|
||||||
|
EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_EXEMPTED,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_headless_app),
|
||||||
|
EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_HEADLESS_SYSTEM_APP,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_MIN_SATIATED_BALANCE_OTHER_APP,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_other_app),
|
||||||
|
EconomyManager.DEFAULT_JS_MIN_SATIATED_BALANCE_OTHER_APP,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_MAX_SATIATED_BALANCE,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_max_satiated_balance),
|
||||||
|
EconomyManager.DEFAULT_JS_MAX_SATIATED_BALANCE,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_MAX_CIRCULATION,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_max_circulation),
|
||||||
|
EconomyManager.DEFAULT_JS_MAX_CIRCULATION,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_TOP_ACTIVITY_INSTANT,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_top_activity),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_TOP_ACTIVITY_INSTANT,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
// TODO: Add support to handle floats
|
||||||
|
// mAlarmManagerMap.put(EconomyManager.KEY_JS_REWARD_TOP_ACTIVITY_ONGOING,
|
||||||
|
// new TareFactorData(mResources.getString(R.string.tare_top_activity),
|
||||||
|
// EconomyManager.DEFAULT_JS_REWARD_TOP_ACTIVITY_ONGOING));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_TOP_ACTIVITY_MAX,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_top_activity),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_TOP_ACTIVITY_MAX, POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_NOTIFICATION_SEEN_INSTANT,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_notification_seen),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_SEEN_INSTANT,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_NOTIFICATION_SEEN_ONGOING,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_notification_seen),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_SEEN_ONGOING,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_NOTIFICATION_SEEN_MAX,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_notification_seen),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_SEEN_MAX,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_NOTIFICATION_INTERACTION_INSTANT,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_notification_interaction),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_INSTANT,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_NOTIFICATION_INTERACTION_ONGOING,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_notification_interaction),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_ONGOING,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_NOTIFICATION_INTERACTION_MAX,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_notification_interaction),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_NOTIFICATION_INTERACTION_MAX,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_WIDGET_INTERACTION_INSTANT,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_widget_interaction),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_WIDGET_INTERACTION_INSTANT,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_WIDGET_INTERACTION_ONGOING,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_widget_interaction),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_WIDGET_INTERACTION_ONGOING,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_WIDGET_INTERACTION_MAX,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_widget_interaction),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_WIDGET_INTERACTION_MAX,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_OTHER_USER_INTERACTION_INSTANT,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_other_interaction),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_INSTANT,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_OTHER_USER_INTERACTION_ONGOING,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_other_interaction),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_ONGOING,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_REWARD_OTHER_USER_INTERACTION_MAX,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_other_interaction),
|
||||||
|
EconomyManager.DEFAULT_JS_REWARD_OTHER_USER_INTERACTION_MAX,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_MAX_START_CTP,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_max_start),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_MAX_START_CTP,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_MAX_RUNNING_CTP,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_max_running),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_MAX_RUNNING_CTP,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_HIGH_START_CTP,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_high_start),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_HIGH_START_CTP,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_HIGH_RUNNING_CTP,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_high_running),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_HIGH_RUNNING_CTP,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_DEFAULT_START_CTP,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_default_start),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_DEFAULT_START_CTP,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_DEFAULT_RUNNING_CTP,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_default_running),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_DEFAULT_RUNNING_CTP,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_LOW_START_CTP,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_low_start),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_LOW_START_CTP,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(
|
||||||
|
EconomyManager.KEY_JS_ACTION_JOB_LOW_RUNNING_CTP,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_low_running),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_LOW_RUNNING_CTP,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_MIN_START_CTP,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_min_start),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_START_CTP,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(
|
||||||
|
EconomyManager.KEY_JS_ACTION_JOB_MIN_RUNNING_CTP,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_min_running),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_RUNNING_CTP,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_TIMEOUT_PENALTY_CTP,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_timeout_penalty),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_TIMEOUT_PENALTY_CTP,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_MAX_START_BASE_PRICE,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_max_start),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_MAX_START_BASE_PRICE,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(
|
||||||
|
EconomyManager.KEY_JS_ACTION_JOB_MAX_RUNNING_BASE_PRICE,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_max_running),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_MAX_RUNNING_BASE_PRICE,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(
|
||||||
|
EconomyManager.KEY_JS_ACTION_JOB_HIGH_START_BASE_PRICE,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_high_start),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_HIGH_START_BASE_PRICE,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_HIGH_RUNNING_BASE_PRICE,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_high_running),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_HIGH_RUNNING_BASE_PRICE,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_DEFAULT_START_BASE_PRICE,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_default_start),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_DEFAULT_START_BASE_PRICE,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(
|
||||||
|
EconomyManager.KEY_JS_ACTION_JOB_DEFAULT_RUNNING_BASE_PRICE,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_default_running),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_DEFAULT_RUNNING_BASE_PRICE,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_LOW_START_BASE_PRICE,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_low_start),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_LOW_START_BASE_PRICE,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(
|
||||||
|
EconomyManager.KEY_JS_ACTION_JOB_LOW_RUNNING_BASE_PRICE,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_low_running),
|
||||||
|
EconomyManager
|
||||||
|
.DEFAULT_JS_ACTION_JOB_LOW_RUNNING_BASE_PRICE,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_MIN_START_BASE_PRICE,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_min_start),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_START_BASE_PRICE,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_MIN_RUNNING_BASE_PRICE,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_min_running),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_MIN_RUNNING_BASE_PRICE,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
mJobSchedulerMap.put(EconomyManager.KEY_JS_ACTION_JOB_TIMEOUT_PENALTY_BASE_PRICE,
|
||||||
|
new TareFactorData(mResources.getString(R.string.tare_job_timeout_penalty),
|
||||||
|
EconomyManager.DEFAULT_JS_ACTION_JOB_TIMEOUT_PENALTY_BASE_PRICE,
|
||||||
|
POLICY_JOB_SCHEDULER));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Takes a key and factor policy as input and grabs the default value linked to it.
|
||||||
*
|
*
|
||||||
* @param key the key of the factor you want to get the default value of
|
* @param key the key of the factor you want to get the default value of
|
||||||
|
* @param factorPolicy the policy you want the default value of
|
||||||
*/
|
*/
|
||||||
private int getDefaultValue(String key) {
|
private int getDefaultValue(String key, int factorPolicy) {
|
||||||
return mAlarmManagerMap.get(key).defaultValue;
|
ArrayMap<String, TareFactorData> currentMap;
|
||||||
|
switch (factorPolicy) {
|
||||||
|
case POLICY_ALARM_MANAGER:
|
||||||
|
currentMap = mAlarmManagerMap;
|
||||||
|
break;
|
||||||
|
case POLICY_JOB_SCHEDULER:
|
||||||
|
currentMap = mJobSchedulerMap;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("Invalid factor policy given");
|
||||||
|
}
|
||||||
|
return currentMap.get(key).defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -259,26 +461,68 @@ public class TareFactorController {
|
|||||||
for (int i = 0; i < size - 1; i++) {
|
for (int i = 0; i < size - 1; i++) {
|
||||||
String key = mParser.keyAt(i);
|
String key = mParser.keyAt(i);
|
||||||
TareFactorData data = mAlarmManagerMap.get(key);
|
TareFactorData data = mAlarmManagerMap.get(key);
|
||||||
data.currentValue = mParser.getInt(key, getDefaultValue(key));
|
data.currentValue = mParser.getInt(key, getDefaultValue(key, getFactorType(key)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Takes a key as input and grabs the title linked to it.
|
* Parses the JS constant from Settings.Global to get to the current value.
|
||||||
*
|
|
||||||
* @param key the key of the factor you want to get the title of
|
|
||||||
*/
|
*/
|
||||||
private String getTitle(String key) {
|
private void parseJobSchedulerGlobalSettings() {
|
||||||
return mAlarmManagerMap.get(key).title;
|
try {
|
||||||
|
mParser.setString(mJobSchedulerConstants);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Slog.e(TAG, "Bad value string constants", e);
|
||||||
|
}
|
||||||
|
int size = mParser.size();
|
||||||
|
|
||||||
|
for (int i = 0; i < size - 1; i++) {
|
||||||
|
String key = mParser.keyAt(i);
|
||||||
|
TareFactorData data = mJobSchedulerMap.get(key);
|
||||||
|
data.currentValue = mParser.getInt(key, getDefaultValue(key, getFactorType(key)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Takes a key as input and grabs the current value linked to it.
|
* Takes a key and factor policy as input and grabs the title linked to it.
|
||||||
|
*
|
||||||
|
* @param key the key of the factor you want to get the title of
|
||||||
|
* @param factorPolicy the policy you want the title of
|
||||||
|
*/
|
||||||
|
private String getTitle(String key, int factorPolicy) {
|
||||||
|
ArrayMap<String, TareFactorData> currentMap;
|
||||||
|
switch (factorPolicy) {
|
||||||
|
case POLICY_ALARM_MANAGER:
|
||||||
|
currentMap = mAlarmManagerMap;
|
||||||
|
break;
|
||||||
|
case POLICY_JOB_SCHEDULER:
|
||||||
|
currentMap = mJobSchedulerMap;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("Invalid factor policy given");
|
||||||
|
}
|
||||||
|
return currentMap.get(key).title;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Takes a key and factor policy as input and grabs the current value linked to it.
|
||||||
*
|
*
|
||||||
* @param key the key of the factor you want to get the default value of
|
* @param key the key of the factor you want to get the default value of
|
||||||
|
* @param factorPolicy the policy you want the current value of
|
||||||
*/
|
*/
|
||||||
private int getCurrentValue(String key) {
|
private int getCurrentValue(String key, int factorPolicy) {
|
||||||
return mAlarmManagerMap.get(key).currentValue;
|
ArrayMap<String, TareFactorData> currentMap;
|
||||||
|
switch (factorPolicy) {
|
||||||
|
case POLICY_ALARM_MANAGER:
|
||||||
|
currentMap = mAlarmManagerMap;
|
||||||
|
break;
|
||||||
|
case POLICY_JOB_SCHEDULER:
|
||||||
|
currentMap = mJobSchedulerMap;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("Invalid factor policy given");
|
||||||
|
}
|
||||||
|
return currentMap.get(key).currentValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -287,56 +531,98 @@ public class TareFactorController {
|
|||||||
* @param key the key of the factor you want to get the factor type of
|
* @param key the key of the factor you want to get the factor type of
|
||||||
*/
|
*/
|
||||||
private int getFactorType(String key) {
|
private int getFactorType(String key) {
|
||||||
return mAlarmManagerMap.get(key).factorPolicy;
|
ArrayMap<String, TareFactorData> currentMap;
|
||||||
|
if (mAlarmManagerMap.containsKey(key)) {
|
||||||
|
currentMap = mAlarmManagerMap;
|
||||||
|
} else if (mJobSchedulerMap.containsKey(key)) {
|
||||||
|
currentMap = mJobSchedulerMap;
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException("Couldn't link key to policy map");
|
||||||
|
}
|
||||||
|
return currentMap.get(key).factorPolicy;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Takes a key and edited value as input and assigns the new edited value to be the new current
|
* Takes a key,edited value, and factor policy as input and assigns the new edited value to
|
||||||
* value for that factors key.
|
* be the new current value for that factors key.
|
||||||
*
|
*
|
||||||
* @param key the key of the factor you want to get the default value of
|
* @param key the key of the factor you want to get the default value of
|
||||||
* @param editedValue the value entered by the user in the dialog
|
* @param editedValue the value entered by the user in the dialog
|
||||||
|
* @param factorPolicy policy being updated
|
||||||
*/
|
*/
|
||||||
public void updateValue(String key, int editedValue, int factorPolicy) {
|
public void updateValue(String key, int editedValue, int factorPolicy) {
|
||||||
switch (factorPolicy) {
|
switch (factorPolicy) {
|
||||||
case POLICY_ALARM_MANAGER:
|
case POLICY_ALARM_MANAGER:
|
||||||
mAlarmManagerMap.get(key).currentValue = editedValue;
|
mAlarmManagerMap.get(key).currentValue = editedValue;
|
||||||
rebuildAlarmManagerConstants();
|
rebuildPolicyConstants(factorPolicy);
|
||||||
break;
|
break;
|
||||||
case POLICY_JOB_SCHEDULER:
|
case POLICY_JOB_SCHEDULER:
|
||||||
// TODO: Add JobScheduler
|
mJobSchedulerMap.get(key).currentValue = editedValue;
|
||||||
|
rebuildPolicyConstants(factorPolicy);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Slog.e(TAG, "Invalid factor policy given");
|
throw new IllegalArgumentException("Invalid factor policy given");
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Iterates through the AM map for keys and current values to rebuild a current string that is
|
* Iterates through the factor policy map for keys and current values to
|
||||||
* then assigned to be the new global settings string.
|
* rebuild a current string that is then assigned to be the new global settings string.
|
||||||
|
*
|
||||||
|
* @param factorPolicy policy being updated
|
||||||
*/
|
*/
|
||||||
private void rebuildAlarmManagerConstants() {
|
private void rebuildPolicyConstants(int factorPolicy) {
|
||||||
StringBuilder newConstantsStringBuilder = new StringBuilder();
|
StringBuilder newConstantsStringBuilder = new StringBuilder();
|
||||||
|
|
||||||
int size = mAlarmManagerMap.size();
|
switch (factorPolicy) {
|
||||||
|
case POLICY_ALARM_MANAGER:
|
||||||
|
int sizeAM = mAlarmManagerMap.size();
|
||||||
|
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < sizeAM; i++) {
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
newConstantsStringBuilder.append(",");
|
newConstantsStringBuilder.append(",");
|
||||||
}
|
}
|
||||||
|
|
||||||
String key = mAlarmManagerMap.keyAt(i);
|
String key = mAlarmManagerMap.keyAt(i);
|
||||||
newConstantsStringBuilder.append(key + "=" + mAlarmManagerMap.get(key).currentValue);
|
newConstantsStringBuilder.append(key + "=" + mAlarmManagerMap.get(key)
|
||||||
|
.currentValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
String newAMConstantsString = newConstantsStringBuilder.toString();
|
||||||
|
|
||||||
|
Settings.Global.putString(mContentResolver, Settings.Global
|
||||||
|
.TARE_ALARM_MANAGER_CONSTANTS,
|
||||||
|
newAMConstantsString);
|
||||||
|
|
||||||
|
mAlarmManagerConstants = Settings.Global
|
||||||
|
.getString(mContentResolver, Settings.Global
|
||||||
|
.TARE_ALARM_MANAGER_CONSTANTS);
|
||||||
|
break;
|
||||||
|
case POLICY_JOB_SCHEDULER:
|
||||||
|
int sizeJS = mJobSchedulerMap.size();
|
||||||
|
|
||||||
|
for (int i = 0; i < sizeJS; i++) {
|
||||||
|
if (i > 0) {
|
||||||
|
newConstantsStringBuilder.append(",");
|
||||||
|
}
|
||||||
|
|
||||||
|
String key = mJobSchedulerMap.keyAt(i);
|
||||||
|
newConstantsStringBuilder.append(key + "=" + mJobSchedulerMap.get(key)
|
||||||
|
.currentValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
String newJSConstantsString = newConstantsStringBuilder.toString();
|
||||||
|
|
||||||
|
Settings.Global.putString(mContentResolver, Settings.Global
|
||||||
|
.TARE_JOB_SCHEDULER_CONSTANTS,
|
||||||
|
newJSConstantsString);
|
||||||
|
|
||||||
|
mJobSchedulerConstants = Settings.Global
|
||||||
|
.getString(mContentResolver, Settings.Global
|
||||||
|
.TARE_JOB_SCHEDULER_CONSTANTS);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
String newConstantsString = newConstantsStringBuilder.toString();
|
|
||||||
|
|
||||||
Settings.Global.putString(mContentResolver, Settings.Global.TARE_ALARM_MANAGER_CONSTANTS,
|
|
||||||
newConstantsString);
|
|
||||||
|
|
||||||
mAlarmManagerConstants = Settings.Global
|
|
||||||
.getString(mContentResolver, Settings.Global.TARE_ALARM_MANAGER_CONSTANTS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -345,8 +631,9 @@ public class TareFactorController {
|
|||||||
* @param key the key of the factor you want to get the default value of
|
* @param key the key of the factor you want to get the default value of
|
||||||
*/
|
*/
|
||||||
public TareFactorDialogFragment createDialog(String key) {
|
public TareFactorDialogFragment createDialog(String key) {
|
||||||
return new TareFactorDialogFragment(getTitle(key), key, getCurrentValue(key),
|
int policy = getFactorType(key);
|
||||||
getFactorType(key), this);
|
return new TareFactorDialogFragment(getTitle(key, policy), key,
|
||||||
|
getCurrentValue(key, policy), policy , this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user