blob: 3a31e31ea1f291fe2547e1aaaa688916b5ee0516 [file] [log] [blame]
/*
* Copyright (C) 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.health.connect.internal.datatypes.utils;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_ACTIVE_CALORIES_BURNED;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_BASAL_BODY_TEMPERATURE;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_BASAL_METABOLIC_RATE;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_BLOOD_GLUCOSE;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_BLOOD_PRESSURE;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_BODY_FAT;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_BODY_TEMPERATURE;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_BODY_WATER_MASS;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_BONE_MASS;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_CERVICAL_MUCUS;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_CYCLING_PEDALING_CADENCE;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_DISTANCE;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_ELEVATION_GAINED;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_EXERCISE_SESSION;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_FLOORS_CLIMBED;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_HEART_RATE;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_HEART_RATE_VARIABILITY_RMSSD;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_HEIGHT;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_HYDRATION;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_INTERMENSTRUAL_BLEEDING;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_LEAN_BODY_MASS;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_MENSTRUATION_FLOW;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_MENSTRUATION_PERIOD;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_NUTRITION;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_OVULATION_TEST;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_OXYGEN_SATURATION;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_POWER;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_RESPIRATORY_RATE;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_RESTING_HEART_RATE;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_SEXUAL_ACTIVITY;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_SLEEP_SESSION;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_SPEED;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_STEPS;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_STEPS_CADENCE;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_TOTAL_CALORIES_BURNED;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_VO2_MAX;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_WEIGHT;
import static android.health.connect.datatypes.RecordTypeIdentifier.RECORD_TYPE_WHEELCHAIR_PUSHES;
import android.annotation.SuppressLint;
import android.health.connect.HealthDataCategory;
import android.health.connect.HealthPermissionCategory;
import android.health.connect.datatypes.RecordTypeIdentifier;
import android.util.SparseIntArray;
import java.util.Objects;
/** @hide */
public final class RecordTypePermissionCategoryMapper {
private static final String TAG = "RecordTypePermissionGroupMapper";
private static SparseIntArray sRecordTypeHealthPermissionCategoryMap = new SparseIntArray();
private RecordTypePermissionCategoryMapper() {}
private static void populateDataTypeHealthPermissionCategoryMap() {
sRecordTypeHealthPermissionCategoryMap =
new SparseIntArray() {
{
put(RECORD_TYPE_STEPS, HealthPermissionCategory.STEPS);
put(RECORD_TYPE_HEART_RATE, HealthPermissionCategory.HEART_RATE);
put(
RECORD_TYPE_BASAL_METABOLIC_RATE,
HealthPermissionCategory.BASAL_METABOLIC_RATE);
put(
RECORD_TYPE_CYCLING_PEDALING_CADENCE,
HealthPermissionCategory.EXERCISE);
put(RECORD_TYPE_POWER, HealthPermissionCategory.POWER);
put(RECORD_TYPE_SPEED, HealthPermissionCategory.SPEED);
put(RECORD_TYPE_STEPS_CADENCE, HealthPermissionCategory.STEPS);
put(RECORD_TYPE_DISTANCE, HealthPermissionCategory.DISTANCE);
put(
RECORD_TYPE_WHEELCHAIR_PUSHES,
HealthPermissionCategory.WHEELCHAIR_PUSHES);
put(
RECORD_TYPE_TOTAL_CALORIES_BURNED,
HealthPermissionCategory.TOTAL_CALORIES_BURNED);
put(RECORD_TYPE_FLOORS_CLIMBED, HealthPermissionCategory.FLOORS_CLIMBED);
put(
RECORD_TYPE_ELEVATION_GAINED,
HealthPermissionCategory.ELEVATION_GAINED);
put(
RECORD_TYPE_ACTIVE_CALORIES_BURNED,
HealthPermissionCategory.ACTIVE_CALORIES_BURNED);
put(RECORD_TYPE_HYDRATION, HealthPermissionCategory.HYDRATION);
put(RECORD_TYPE_NUTRITION, HealthPermissionCategory.NUTRITION);
put(
RECORD_TYPE_BASAL_BODY_TEMPERATURE,
HealthPermissionCategory.BASAL_BODY_TEMPERATURE);
put(RECORD_TYPE_BLOOD_GLUCOSE, HealthPermissionCategory.BLOOD_GLUCOSE);
put(RECORD_TYPE_BLOOD_PRESSURE, HealthPermissionCategory.BLOOD_PRESSURE);
put(RECORD_TYPE_BODY_FAT, HealthPermissionCategory.BODY_FAT);
put(
RECORD_TYPE_BODY_TEMPERATURE,
HealthPermissionCategory.BODY_TEMPERATURE);
put(RECORD_TYPE_BONE_MASS, HealthPermissionCategory.BONE_MASS);
put(RECORD_TYPE_VO2_MAX, HealthPermissionCategory.VO2_MAX);
put(RECORD_TYPE_CERVICAL_MUCUS, HealthPermissionCategory.CERVICAL_MUCUS);
put(RECORD_TYPE_MENSTRUATION_FLOW, HealthPermissionCategory.MENSTRUATION);
put(
RECORD_TYPE_OXYGEN_SATURATION,
HealthPermissionCategory.OXYGEN_SATURATION);
put(RECORD_TYPE_OVULATION_TEST, HealthPermissionCategory.OVULATION_TEST);
put(RECORD_TYPE_LEAN_BODY_MASS, HealthPermissionCategory.LEAN_BODY_MASS);
put(RECORD_TYPE_SEXUAL_ACTIVITY, HealthPermissionCategory.SEXUAL_ACTIVITY);
put(
RECORD_TYPE_RESPIRATORY_RATE,
HealthPermissionCategory.RESPIRATORY_RATE);
put(
RECORD_TYPE_RESTING_HEART_RATE,
HealthPermissionCategory.RESTING_HEART_RATE);
put(RECORD_TYPE_HEIGHT, HealthPermissionCategory.HEIGHT);
put(RECORD_TYPE_WEIGHT, HealthPermissionCategory.WEIGHT);
put(RECORD_TYPE_BODY_WATER_MASS, HealthPermissionCategory.BODY_WATER_MASS);
put(
RECORD_TYPE_HEART_RATE_VARIABILITY_RMSSD,
HealthPermissionCategory.HEART_RATE_VARIABILITY);
put(RECORD_TYPE_MENSTRUATION_PERIOD, HealthPermissionCategory.MENSTRUATION);
put(
RECORD_TYPE_INTERMENSTRUAL_BLEEDING,
HealthPermissionCategory.INTERMENSTRUAL_BLEEDING);
put(RECORD_TYPE_EXERCISE_SESSION, HealthPermissionCategory.EXERCISE);
put(RECORD_TYPE_SLEEP_SESSION, HealthPermissionCategory.SLEEP);
}
};
}
/** Returns {@link HealthDataCategory} for the input {@link RecordTypeIdentifier.RecordType}. */
@SuppressLint("LongLogTag")
@HealthPermissionCategory.Type
public static int getHealthPermissionCategoryForRecordType(
@RecordTypeIdentifier.RecordType int recordType) {
if (sRecordTypeHealthPermissionCategoryMap.size() == 0) {
populateDataTypeHealthPermissionCategoryMap();
}
@HealthPermissionCategory.Type
Integer recordPermission = sRecordTypeHealthPermissionCategoryMap.get(recordType);
Objects.requireNonNull(
recordPermission,
"Health Permission Category not found for " + "RecordType :" + recordType);
return recordPermission;
}
}