blob: 52c709fdf2145057636020f509b4159971634c6f [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.HealthDataCategory.ACTIVITY;
import static android.health.connect.HealthDataCategory.BODY_MEASUREMENTS;
import static android.health.connect.HealthDataCategory.CYCLE_TRACKING;
import static android.health.connect.HealthDataCategory.NUTRITION;
import static android.health.connect.HealthDataCategory.SLEEP;
import static android.health.connect.HealthDataCategory.VITALS;
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.datatypes.RecordTypeIdentifier;
import android.util.SparseIntArray;
import java.util.Objects;
/** @hide */
public final class RecordTypeRecordCategoryMapper {
private static SparseIntArray sRecordTypeToRecordCategoryMapper = new SparseIntArray();
private RecordTypeRecordCategoryMapper() {}
private static void populateRecordTypeToRecordCategoryMap() {
sRecordTypeToRecordCategoryMapper =
new SparseIntArray() {
{
put(RECORD_TYPE_STEPS, ACTIVITY);
put(RECORD_TYPE_HEART_RATE, VITALS);
put(RECORD_TYPE_BASAL_METABOLIC_RATE, BODY_MEASUREMENTS);
put(RECORD_TYPE_CYCLING_PEDALING_CADENCE, ACTIVITY);
put(RECORD_TYPE_POWER, ACTIVITY);
put(RECORD_TYPE_SPEED, ACTIVITY);
put(RECORD_TYPE_STEPS_CADENCE, ACTIVITY);
put(RECORD_TYPE_DISTANCE, ACTIVITY);
put(RECORD_TYPE_WHEELCHAIR_PUSHES, ACTIVITY);
put(RECORD_TYPE_TOTAL_CALORIES_BURNED, ACTIVITY);
put(RECORD_TYPE_FLOORS_CLIMBED, ACTIVITY);
put(RECORD_TYPE_ELEVATION_GAINED, ACTIVITY);
put(RECORD_TYPE_ACTIVE_CALORIES_BURNED, ACTIVITY);
put(RECORD_TYPE_HYDRATION, NUTRITION);
put(RECORD_TYPE_NUTRITION, NUTRITION);
put(RECORD_TYPE_RESPIRATORY_RATE, VITALS);
put(RECORD_TYPE_BONE_MASS, BODY_MEASUREMENTS);
put(RECORD_TYPE_RESTING_HEART_RATE, VITALS);
put(RECORD_TYPE_BODY_FAT, BODY_MEASUREMENTS);
put(RECORD_TYPE_VO2_MAX, ACTIVITY);
put(RECORD_TYPE_CERVICAL_MUCUS, CYCLE_TRACKING);
put(RECORD_TYPE_BASAL_BODY_TEMPERATURE, VITALS);
put(RECORD_TYPE_MENSTRUATION_FLOW, CYCLE_TRACKING);
put(RECORD_TYPE_OXYGEN_SATURATION, VITALS);
put(RECORD_TYPE_BLOOD_PRESSURE, VITALS);
put(RECORD_TYPE_HEIGHT, BODY_MEASUREMENTS);
put(RECORD_TYPE_BLOOD_GLUCOSE, VITALS);
put(RECORD_TYPE_WEIGHT, BODY_MEASUREMENTS);
put(RECORD_TYPE_LEAN_BODY_MASS, BODY_MEASUREMENTS);
put(RECORD_TYPE_SEXUAL_ACTIVITY, CYCLE_TRACKING);
put(RECORD_TYPE_BODY_TEMPERATURE, VITALS);
put(RECORD_TYPE_OVULATION_TEST, CYCLE_TRACKING);
put(RECORD_TYPE_BODY_WATER_MASS, BODY_MEASUREMENTS);
put(RECORD_TYPE_HEART_RATE_VARIABILITY_RMSSD, VITALS);
put(RECORD_TYPE_MENSTRUATION_PERIOD, CYCLE_TRACKING);
put(RECORD_TYPE_INTERMENSTRUAL_BLEEDING, CYCLE_TRACKING);
put(RECORD_TYPE_EXERCISE_SESSION, ACTIVITY);
put(RECORD_TYPE_SLEEP_SESSION, SLEEP);
}
};
}
/** Returns {@link HealthDataCategory} for the input {@link RecordTypeIdentifier.RecordType}. */
@SuppressLint("LongLogTag")
@HealthDataCategory.Type
public static int getRecordCategoryForRecordType(
@RecordTypeIdentifier.RecordType int recordType) {
if (sRecordTypeToRecordCategoryMapper.size() == 0) {
populateRecordTypeToRecordCategoryMap();
}
@HealthDataCategory.Type
Integer recordCategory = sRecordTypeToRecordCategoryMapper.get(recordType);
Objects.requireNonNull(
recordCategory, "Record Category not found for Record Type :" + recordType);
return recordCategory;
}
}