1 /**
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5  * in compliance with the License. You may obtain a copy of the License at
6  *
7  * ```
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * ```
10  *
11  * Unless required by applicable law or agreed to in writing, software distributed under the License
12  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
13  * or implied. See the License for the specific language governing permissions and limitations under
14  * the License.
15  */
16 package com.android.healthconnect.controller.shared
17 
18 import android.health.connect.datatypes.ActiveCaloriesBurnedRecord
19 import android.health.connect.datatypes.BasalBodyTemperatureRecord
20 import android.health.connect.datatypes.BasalMetabolicRateRecord
21 import android.health.connect.datatypes.BloodGlucoseRecord
22 import android.health.connect.datatypes.BloodPressureRecord
23 import android.health.connect.datatypes.BodyFatRecord
24 import android.health.connect.datatypes.BodyTemperatureRecord
25 import android.health.connect.datatypes.BodyWaterMassRecord
26 import android.health.connect.datatypes.BoneMassRecord
27 import android.health.connect.datatypes.CervicalMucusRecord
28 import android.health.connect.datatypes.CyclingPedalingCadenceRecord
29 import android.health.connect.datatypes.DistanceRecord
30 import android.health.connect.datatypes.ElevationGainedRecord
31 import android.health.connect.datatypes.ExerciseSessionRecord
32 import android.health.connect.datatypes.FloorsClimbedRecord
33 import android.health.connect.datatypes.HeartRateRecord
34 import android.health.connect.datatypes.HeartRateVariabilityRmssdRecord
35 import android.health.connect.datatypes.HeightRecord
36 import android.health.connect.datatypes.HydrationRecord
37 import android.health.connect.datatypes.IntermenstrualBleedingRecord
38 import android.health.connect.datatypes.LeanBodyMassRecord
39 import android.health.connect.datatypes.MenstruationFlowRecord
40 import android.health.connect.datatypes.MenstruationPeriodRecord
41 import android.health.connect.datatypes.NutritionRecord
42 import android.health.connect.datatypes.OvulationTestRecord
43 import android.health.connect.datatypes.OxygenSaturationRecord
44 import android.health.connect.datatypes.PlannedExerciseSessionRecord
45 import android.health.connect.datatypes.PowerRecord
46 import android.health.connect.datatypes.Record
47 import android.health.connect.datatypes.RespiratoryRateRecord
48 import android.health.connect.datatypes.RestingHeartRateRecord
49 import android.health.connect.datatypes.SexualActivityRecord
50 import android.health.connect.datatypes.SkinTemperatureRecord
51 import android.health.connect.datatypes.SleepSessionRecord
52 import android.health.connect.datatypes.SpeedRecord
53 import android.health.connect.datatypes.StepsCadenceRecord
54 import android.health.connect.datatypes.StepsRecord
55 import android.health.connect.datatypes.TotalCaloriesBurnedRecord
56 import android.health.connect.datatypes.Vo2MaxRecord
57 import android.health.connect.datatypes.WeightRecord
58 import android.health.connect.datatypes.WheelchairPushesRecord
59 import com.android.healthconnect.controller.permissions.data.HealthPermissionType
60 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.ACTIVE_CALORIES_BURNED
61 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BASAL_BODY_TEMPERATURE
62 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BASAL_METABOLIC_RATE
63 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BLOOD_GLUCOSE
64 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BLOOD_PRESSURE
65 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BODY_FAT
66 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BODY_TEMPERATURE
67 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BODY_WATER_MASS
68 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BONE_MASS
69 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.CERVICAL_MUCUS
70 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.DISTANCE
71 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.ELEVATION_GAINED
72 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.EXERCISE
73 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.FLOORS_CLIMBED
74 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.HEART_RATE
75 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.HEART_RATE_VARIABILITY
76 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.HEIGHT
77 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.HYDRATION
78 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.INTERMENSTRUAL_BLEEDING
79 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.LEAN_BODY_MASS
80 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.MENSTRUATION
81 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.NUTRITION
82 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.OVULATION_TEST
83 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.OXYGEN_SATURATION
84 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.PLANNED_EXERCISE
85 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.POWER
86 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.RESPIRATORY_RATE
87 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.RESTING_HEART_RATE
88 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.SEXUAL_ACTIVITY
89 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.SKIN_TEMPERATURE
90 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.SLEEP
91 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.SPEED
92 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.STEPS
93 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.TOTAL_CALORIES_BURNED
94 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.VO2_MAX
95 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.WEIGHT
96 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.WHEELCHAIR_PUSHES
97 
98 object HealthPermissionToDatatypeMapper {
99     private val map =
100         mapOf(
101             STEPS to listOf(StepsRecord::class.java, StepsCadenceRecord::class.java),
102             HEART_RATE to listOf(HeartRateRecord::class.java),
103             BASAL_METABOLIC_RATE to listOf(BasalMetabolicRateRecord::class.java),
104             SPEED to listOf(SpeedRecord::class.java),
105             DISTANCE to listOf(DistanceRecord::class.java),
106             POWER to listOf(PowerRecord::class.java),
107             ACTIVE_CALORIES_BURNED to listOf(ActiveCaloriesBurnedRecord::class.java),
108             TOTAL_CALORIES_BURNED to listOf(TotalCaloriesBurnedRecord::class.java),
109             HEIGHT to listOf(HeightRecord::class.java),
110             BODY_FAT to listOf(BodyFatRecord::class.java),
111             OXYGEN_SATURATION to listOf(OxygenSaturationRecord::class.java),
112             BODY_TEMPERATURE to listOf(BodyTemperatureRecord::class.java),
113             BASAL_BODY_TEMPERATURE to listOf(BasalBodyTemperatureRecord::class.java),
114             WHEELCHAIR_PUSHES to listOf(WheelchairPushesRecord::class.java),
115             RESTING_HEART_RATE to listOf(RestingHeartRateRecord::class.java),
116             RESPIRATORY_RATE to listOf(RespiratoryRateRecord::class.java),
117             HYDRATION to listOf(HydrationRecord::class.java),
118             FLOORS_CLIMBED to listOf(FloorsClimbedRecord::class.java),
119             ELEVATION_GAINED to listOf(ElevationGainedRecord::class.java),
120             BONE_MASS to listOf(BoneMassRecord::class.java),
121             LEAN_BODY_MASS to listOf(LeanBodyMassRecord::class.java),
122             WEIGHT to listOf(WeightRecord::class.java),
123             BLOOD_GLUCOSE to listOf(BloodGlucoseRecord::class.java),
124             NUTRITION to listOf(NutritionRecord::class.java),
125             BLOOD_PRESSURE to listOf(BloodPressureRecord::class.java),
126             VO2_MAX to listOf(Vo2MaxRecord::class.java),
127             EXERCISE to
128                 listOf(ExerciseSessionRecord::class.java, CyclingPedalingCadenceRecord::class.java),
129             CERVICAL_MUCUS to listOf(CervicalMucusRecord::class.java),
130             SEXUAL_ACTIVITY to listOf(SexualActivityRecord::class.java),
131             OVULATION_TEST to listOf(OvulationTestRecord::class.java),
132             MENSTRUATION to
133                 listOf(MenstruationFlowRecord::class.java, MenstruationPeriodRecord::class.java),
134             SLEEP to listOf(SleepSessionRecord::class.java),
135             BODY_WATER_MASS to listOf(BodyWaterMassRecord::class.java),
136             INTERMENSTRUAL_BLEEDING to listOf(IntermenstrualBleedingRecord::class.java),
137             HEART_RATE_VARIABILITY to listOf(HeartRateVariabilityRmssdRecord::class.java),
138             SKIN_TEMPERATURE to listOf(SkinTemperatureRecord::class.java),
139             PLANNED_EXERCISE to listOf(PlannedExerciseSessionRecord::class.java))
140 
getDataTypesnull141     fun getDataTypes(permissionType: HealthPermissionType): List<Class<out Record>> {
142         return map[permissionType].orEmpty()
143     }
144 
getAllDataTypesnull145     fun getAllDataTypes(): Map<HealthPermissionType, List<Class<out Record>>> {
146         return map
147     }
148 }
149