1 /* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.health.connect.datatypes; 18 19 import static android.health.connect.datatypes.validation.ValidationUtils.validateIntDefValue; 20 21 import android.annotation.IntDef; 22 import android.health.connect.HealthConnectManager; 23 24 import java.lang.annotation.Retention; 25 import java.lang.annotation.RetentionPolicy; 26 import java.util.Set; 27 28 /** 29 * Class to represent aggregation types in {@link Record} classes. 30 * 31 * <p>New objects of this class cannot be created. 32 * 33 * <p>Pre-created (defined in health {@link Record} types) objects of this class can be used to 34 * query and fetch aggregate results using aggregate APIs in {@link HealthConnectManager} 35 * 36 * @see HealthConnectManager#aggregate 37 */ 38 public final class AggregationType<T> { 39 /** @hide */ 40 public static final int MAX = 0; 41 42 /** @hide */ 43 public static final int MIN = 1; 44 45 /** @hide */ 46 public static final int AVG = 2; 47 48 /** @hide */ 49 public static final int SUM = 3; 50 51 /** @hide */ 52 public static final int COUNT = 4; 53 54 @AggregationTypeIdentifier.Id private final int mId; 55 @AggregateOperationType private final int mType; 56 @RecordTypeIdentifier.RecordType private final int mApplicableRecordTypeId; 57 private final Class<T> mClass; 58 59 /** @hide */ AggregationType( @ggregationTypeIdentifier.Id int id, @AggregateOperationType int type, @RecordTypeIdentifier.RecordType int applicableRecordTypeId, Class<T> templateClass)60 AggregationType( 61 @AggregationTypeIdentifier.Id int id, 62 @AggregateOperationType int type, 63 @RecordTypeIdentifier.RecordType int applicableRecordTypeId, 64 Class<T> templateClass) { 65 validateIntDefValue( 66 id, 67 AggregationTypeIdentifier.IDENTIFIER_VALID_TYPES, 68 AggregationTypeIdentifier.class.getSimpleName()); 69 validateIntDefValue( 70 type, OPERATION_VALID_TYPES, AggregateOperationType.class.getSimpleName()); 71 72 mId = id; 73 mType = type; 74 mApplicableRecordTypeId = applicableRecordTypeId; 75 mClass = templateClass; 76 } 77 78 /** @hide */ 79 @AggregationTypeIdentifier.Id getAggregationTypeIdentifier()80 public int getAggregationTypeIdentifier() { 81 return mId; 82 } 83 84 /** @hide */ 85 @RecordTypeIdentifier.RecordType getApplicableRecordTypeId()86 public int getApplicableRecordTypeId() { 87 return mApplicableRecordTypeId; 88 } 89 90 /** @hide */ 91 @AggregateOperationType getAggregateOperationType()92 public int getAggregateOperationType() { 93 return mType; 94 } 95 96 /** @hide */ getAggregateResultClass()97 public Class<T> getAggregateResultClass() { 98 return mClass; 99 } 100 101 /** 102 * Identifier for each aggregate type, as returned by {@link 103 * AggregationType#getAggregationTypeIdentifier()}. This is used at various places to determine 104 * operations to perform on aggregate type. 105 * 106 * @hide 107 */ 108 public @interface AggregationTypeIdentifier { 109 int HEART_RATE_RECORD_BPM_MAX = 0; 110 int HEART_RATE_RECORD_BPM_MIN = 1; 111 int STEPS_RECORD_COUNT_TOTAL = 2; 112 int ACTIVE_CALORIES_BURNED_RECORD_ACTIVE_CALORIES_TOTAL = 3; 113 int BMR_RECORD_BASAL_CALORIES_TOTAL = 4; 114 int DISTANCE_RECORD_DISTANCE_TOTAL = 5; 115 int ELEVATION_RECORD_ELEVATION_GAINED_TOTAL = 6; 116 int HEART_RATE_RECORD_BPM_AVG = 7; 117 int POWER_RECORD_POWER_MIN = 8; 118 int POWER_RECORD_POWER_MAX = 9; 119 int POWER_RECORD_POWER_AVG = 10; 120 int HYDRATION_RECORD_VOLUME_TOTAL = 11; 121 int FLOORS_CLIMBED_RECORD_FLOORS_CLIMBED_TOTAL = 12; 122 int NUTRITION_RECORD_BIOTIN_TOTAL = 13; 123 int NUTRITION_RECORD_CAFFEINE_TOTAL = 14; 124 int NUTRITION_RECORD_CALCIUM_TOTAL = 15; 125 int NUTRITION_RECORD_CHLORIDE_TOTAL = 16; 126 int NUTRITION_RECORD_CHOLESTEROL_TOTAL = 17; 127 int NUTRITION_RECORD_CHROMIUM_TOTAL = 18; 128 int NUTRITION_RECORD_COPPER_TOTAL = 19; 129 int NUTRITION_RECORD_DIETARY_FIBER_TOTAL = 20; 130 int NUTRITION_RECORD_ENERGY_TOTAL = 21; 131 int NUTRITION_RECORD_ENERGY_FROM_FAT_TOTAL = 22; 132 int NUTRITION_RECORD_FOLATE_TOTAL = 23; 133 int NUTRITION_RECORD_FOLIC_ACID_TOTAL = 24; 134 int NUTRITION_RECORD_IODINE_TOTAL = 25; 135 int NUTRITION_RECORD_IRON_TOTAL = 26; 136 int NUTRITION_RECORD_MAGNESIUM_TOTAL = 27; 137 int NUTRITION_RECORD_MANGANESE_TOTAL = 28; 138 int NUTRITION_RECORD_MOLYBDENUM_TOTAL = 29; 139 int NUTRITION_RECORD_MONOUNSATURATED_FAT_TOTAL = 30; 140 int NUTRITION_RECORD_NIACIN_TOTAL = 31; 141 int NUTRITION_RECORD_PANTOTHENIC_ACID_TOTAL = 32; 142 int NUTRITION_RECORD_PHOSPHORUS_TOTAL = 33; 143 int NUTRITION_RECORD_POLYUNSATURATED_FAT_TOTAL = 34; 144 int NUTRITION_RECORD_POTASSIUM_TOTAL = 35; 145 int NUTRITION_RECORD_PROTEIN_TOTAL = 36; 146 int NUTRITION_RECORD_RIBOFLAVIN_TOTAL = 37; 147 int NUTRITION_RECORD_SATURATED_FAT_TOTAL = 38; 148 int NUTRITION_RECORD_SELENIUM_TOTAL = 39; 149 int NUTRITION_RECORD_SODIUM_TOTAL = 40; 150 int NUTRITION_RECORD_SUGAR_TOTAL = 41; 151 int NUTRITION_RECORD_THIAMIN_TOTAL = 42; 152 int NUTRITION_RECORD_TOTAL_CARBOHYDRATE_TOTAL = 43; 153 int NUTRITION_RECORD_TOTAL_FAT_TOTAL = 44; 154 int NUTRITION_RECORD_UNSATURATED_FAT_TOTAL = 45; 155 int NUTRITION_RECORD_VITAMIN_A_TOTAL = 46; 156 int NUTRITION_RECORD_VITAMIN_B12_TOTAL = 47; 157 int NUTRITION_RECORD_VITAMIN_B6_TOTAL = 48; 158 int NUTRITION_RECORD_VITAMIN_C_TOTAL = 49; 159 int NUTRITION_RECORD_VITAMIN_D_TOTAL = 50; 160 int NUTRITION_RECORD_VITAMIN_E_TOTAL = 51; 161 int NUTRITION_RECORD_VITAMIN_K_TOTAL = 52; 162 int NUTRITION_RECORD_ZINC_TOTAL = 53; 163 int HEIGHT_RECORD_HEIGHT_AVG = 54; 164 int HEIGHT_RECORD_HEIGHT_MAX = 55; 165 int HEIGHT_RECORD_HEIGHT_MIN = 56; 166 int RESTING_HEART_RATE_RECORD_BPM_MAX = 57; 167 int RESTING_HEART_RATE_RECORD_BPM_MIN = 58; 168 int TOTAL_CALORIES_BURNED_RECORD_ENERGY_TOTAL = 59; 169 int WEIGHT_RECORD_WEIGHT_AVG = 60; 170 int WEIGHT_RECORD_WEIGHT_MAX = 61; 171 int WEIGHT_RECORD_WEIGHT_MIN = 62; 172 int WHEEL_CHAIR_PUSHES_RECORD_COUNT_TOTAL = 63; 173 int HEART_RATE_RECORD_MEASUREMENTS_COUNT = 64; 174 int RESTING_HEART_RATE_RECORD_BPM_AVG = 65; 175 int SLEEP_SESSION_DURATION_TOTAL = 66; 176 int EXERCISE_SESSION_DURATION_TOTAL = 67; 177 int BLOOD_PRESSURE_RECORD_DIASTOLIC_AVG = 68; 178 int BLOOD_PRESSURE_RECORD_DIASTOLIC_MAX = 69; 179 int BLOOD_PRESSURE_RECORD_DIASTOLIC_MIN = 70; 180 int BLOOD_PRESSURE_RECORD_SYSTOLIC_AVG = 71; 181 int BLOOD_PRESSURE_RECORD_SYSTOLIC_MAX = 72; 182 int BLOOD_PRESSURE_RECORD_SYSTOLIC_MIN = 73; 183 int NUTRITION_RECORD_TRANS_FAT_TOTAL = 74; 184 int CYCLING_PEDALING_CADENCE_RECORD_RPM_AVG = 75; 185 int CYCLING_PEDALING_CADENCE_RECORD_RPM_MIN = 76; 186 int CYCLING_PEDALING_CADENCE_RECORD_RPM_MAX = 77; 187 int SPEED_RECORD_SPEED_AVG = 78; 188 int SPEED_RECORD_SPEED_MIN = 79; 189 int SPEED_RECORD_SPEED_MAX = 80; 190 int STEPS_CADENCE_RECORD_RATE_AVG = 81; 191 int STEPS_CADENCE_RECORD_RATE_MIN = 82; 192 int STEPS_CADENCE_RECORD_RATE_MAX = 83; 193 int SKIN_TEMPERATURE_RECORD_DELTA_AVG = 84; 194 int SKIN_TEMPERATURE_RECORD_DELTA_MIN = 85; 195 int SKIN_TEMPERATURE_RECORD_DELTA_MAX = 86; 196 int MINDFULNESS_SESSION_DURATION_TOTAL = 87; 197 int ACTIVITY_INTENSITY_MODERATE_DURATION_TOTAL = 88; 198 int ACTIVITY_INTENSITY_VIGOROUS_DURATION_TOTAL = 89; 199 int ACTIVITY_INTENSITY_DURATION_TOTAL = 90; 200 int ACTIVITY_INTENSITY_MINUTES_TOTAL = 91; 201 202 /** 203 * Valid set of values for this IntDef. Update this set when add new type or deprecate 204 * existing type. 205 * 206 * @hide 207 */ 208 Set<Integer> IDENTIFIER_VALID_TYPES = 209 Set.of( 210 HEART_RATE_RECORD_BPM_MAX, 211 HEART_RATE_RECORD_BPM_MIN, 212 STEPS_RECORD_COUNT_TOTAL, 213 ACTIVE_CALORIES_BURNED_RECORD_ACTIVE_CALORIES_TOTAL, 214 BMR_RECORD_BASAL_CALORIES_TOTAL, 215 DISTANCE_RECORD_DISTANCE_TOTAL, 216 ELEVATION_RECORD_ELEVATION_GAINED_TOTAL, 217 HEART_RATE_RECORD_BPM_AVG, 218 POWER_RECORD_POWER_MIN, 219 POWER_RECORD_POWER_MAX, 220 POWER_RECORD_POWER_AVG, 221 HYDRATION_RECORD_VOLUME_TOTAL, 222 FLOORS_CLIMBED_RECORD_FLOORS_CLIMBED_TOTAL, 223 CYCLING_PEDALING_CADENCE_RECORD_RPM_AVG, 224 CYCLING_PEDALING_CADENCE_RECORD_RPM_MIN, 225 CYCLING_PEDALING_CADENCE_RECORD_RPM_MAX, 226 NUTRITION_RECORD_BIOTIN_TOTAL, 227 NUTRITION_RECORD_CAFFEINE_TOTAL, 228 NUTRITION_RECORD_CALCIUM_TOTAL, 229 NUTRITION_RECORD_CHLORIDE_TOTAL, 230 NUTRITION_RECORD_CHOLESTEROL_TOTAL, 231 NUTRITION_RECORD_CHROMIUM_TOTAL, 232 NUTRITION_RECORD_COPPER_TOTAL, 233 NUTRITION_RECORD_DIETARY_FIBER_TOTAL, 234 NUTRITION_RECORD_ENERGY_TOTAL, 235 NUTRITION_RECORD_ENERGY_FROM_FAT_TOTAL, 236 NUTRITION_RECORD_FOLATE_TOTAL, 237 NUTRITION_RECORD_FOLIC_ACID_TOTAL, 238 NUTRITION_RECORD_IODINE_TOTAL, 239 NUTRITION_RECORD_IRON_TOTAL, 240 NUTRITION_RECORD_MAGNESIUM_TOTAL, 241 NUTRITION_RECORD_MANGANESE_TOTAL, 242 NUTRITION_RECORD_MOLYBDENUM_TOTAL, 243 NUTRITION_RECORD_MONOUNSATURATED_FAT_TOTAL, 244 NUTRITION_RECORD_NIACIN_TOTAL, 245 NUTRITION_RECORD_PANTOTHENIC_ACID_TOTAL, 246 NUTRITION_RECORD_PHOSPHORUS_TOTAL, 247 NUTRITION_RECORD_POLYUNSATURATED_FAT_TOTAL, 248 NUTRITION_RECORD_POTASSIUM_TOTAL, 249 NUTRITION_RECORD_PROTEIN_TOTAL, 250 NUTRITION_RECORD_RIBOFLAVIN_TOTAL, 251 NUTRITION_RECORD_SATURATED_FAT_TOTAL, 252 NUTRITION_RECORD_SELENIUM_TOTAL, 253 NUTRITION_RECORD_SODIUM_TOTAL, 254 NUTRITION_RECORD_SUGAR_TOTAL, 255 NUTRITION_RECORD_THIAMIN_TOTAL, 256 NUTRITION_RECORD_TOTAL_CARBOHYDRATE_TOTAL, 257 NUTRITION_RECORD_TOTAL_FAT_TOTAL, 258 NUTRITION_RECORD_TRANS_FAT_TOTAL, 259 NUTRITION_RECORD_UNSATURATED_FAT_TOTAL, 260 NUTRITION_RECORD_VITAMIN_A_TOTAL, 261 NUTRITION_RECORD_VITAMIN_B12_TOTAL, 262 NUTRITION_RECORD_VITAMIN_B6_TOTAL, 263 NUTRITION_RECORD_VITAMIN_C_TOTAL, 264 NUTRITION_RECORD_VITAMIN_D_TOTAL, 265 NUTRITION_RECORD_VITAMIN_E_TOTAL, 266 NUTRITION_RECORD_VITAMIN_K_TOTAL, 267 NUTRITION_RECORD_ZINC_TOTAL, 268 HEIGHT_RECORD_HEIGHT_AVG, 269 HEIGHT_RECORD_HEIGHT_MAX, 270 HEIGHT_RECORD_HEIGHT_MIN, 271 RESTING_HEART_RATE_RECORD_BPM_MAX, 272 RESTING_HEART_RATE_RECORD_BPM_MIN, 273 TOTAL_CALORIES_BURNED_RECORD_ENERGY_TOTAL, 274 WEIGHT_RECORD_WEIGHT_AVG, 275 WEIGHT_RECORD_WEIGHT_MAX, 276 WEIGHT_RECORD_WEIGHT_MIN, 277 WHEEL_CHAIR_PUSHES_RECORD_COUNT_TOTAL, 278 HEART_RATE_RECORD_MEASUREMENTS_COUNT, 279 RESTING_HEART_RATE_RECORD_BPM_AVG, 280 SLEEP_SESSION_DURATION_TOTAL, 281 EXERCISE_SESSION_DURATION_TOTAL, 282 BLOOD_PRESSURE_RECORD_DIASTOLIC_AVG, 283 BLOOD_PRESSURE_RECORD_DIASTOLIC_MAX, 284 BLOOD_PRESSURE_RECORD_DIASTOLIC_MIN, 285 BLOOD_PRESSURE_RECORD_SYSTOLIC_AVG, 286 BLOOD_PRESSURE_RECORD_SYSTOLIC_MAX, 287 BLOOD_PRESSURE_RECORD_SYSTOLIC_MIN, 288 SPEED_RECORD_SPEED_AVG, 289 SPEED_RECORD_SPEED_MIN, 290 SPEED_RECORD_SPEED_MAX, 291 STEPS_CADENCE_RECORD_RATE_AVG, 292 STEPS_CADENCE_RECORD_RATE_MIN, 293 STEPS_CADENCE_RECORD_RATE_MAX, 294 SKIN_TEMPERATURE_RECORD_DELTA_AVG, 295 SKIN_TEMPERATURE_RECORD_DELTA_MIN, 296 SKIN_TEMPERATURE_RECORD_DELTA_MAX, 297 MINDFULNESS_SESSION_DURATION_TOTAL, 298 ACTIVITY_INTENSITY_MODERATE_DURATION_TOTAL, 299 ACTIVITY_INTENSITY_VIGOROUS_DURATION_TOTAL, 300 ACTIVITY_INTENSITY_DURATION_TOTAL, 301 ACTIVITY_INTENSITY_MINUTES_TOTAL); 302 303 /** @hide */ 304 @IntDef({ 305 HEART_RATE_RECORD_BPM_MAX, 306 HEART_RATE_RECORD_BPM_MIN, 307 STEPS_RECORD_COUNT_TOTAL, 308 ACTIVE_CALORIES_BURNED_RECORD_ACTIVE_CALORIES_TOTAL, 309 BMR_RECORD_BASAL_CALORIES_TOTAL, 310 DISTANCE_RECORD_DISTANCE_TOTAL, 311 ELEVATION_RECORD_ELEVATION_GAINED_TOTAL, 312 HEART_RATE_RECORD_BPM_AVG, 313 POWER_RECORD_POWER_MIN, 314 POWER_RECORD_POWER_MAX, 315 POWER_RECORD_POWER_AVG, 316 HYDRATION_RECORD_VOLUME_TOTAL, 317 FLOORS_CLIMBED_RECORD_FLOORS_CLIMBED_TOTAL, 318 NUTRITION_RECORD_BIOTIN_TOTAL, 319 NUTRITION_RECORD_CAFFEINE_TOTAL, 320 NUTRITION_RECORD_CALCIUM_TOTAL, 321 NUTRITION_RECORD_CHLORIDE_TOTAL, 322 NUTRITION_RECORD_CHOLESTEROL_TOTAL, 323 NUTRITION_RECORD_CHROMIUM_TOTAL, 324 NUTRITION_RECORD_COPPER_TOTAL, 325 NUTRITION_RECORD_DIETARY_FIBER_TOTAL, 326 NUTRITION_RECORD_ENERGY_TOTAL, 327 NUTRITION_RECORD_ENERGY_FROM_FAT_TOTAL, 328 NUTRITION_RECORD_FOLATE_TOTAL, 329 NUTRITION_RECORD_FOLIC_ACID_TOTAL, 330 NUTRITION_RECORD_IODINE_TOTAL, 331 NUTRITION_RECORD_IRON_TOTAL, 332 NUTRITION_RECORD_MAGNESIUM_TOTAL, 333 NUTRITION_RECORD_MANGANESE_TOTAL, 334 NUTRITION_RECORD_MOLYBDENUM_TOTAL, 335 NUTRITION_RECORD_MONOUNSATURATED_FAT_TOTAL, 336 NUTRITION_RECORD_NIACIN_TOTAL, 337 NUTRITION_RECORD_PANTOTHENIC_ACID_TOTAL, 338 NUTRITION_RECORD_PHOSPHORUS_TOTAL, 339 NUTRITION_RECORD_POLYUNSATURATED_FAT_TOTAL, 340 NUTRITION_RECORD_POTASSIUM_TOTAL, 341 NUTRITION_RECORD_PROTEIN_TOTAL, 342 NUTRITION_RECORD_RIBOFLAVIN_TOTAL, 343 NUTRITION_RECORD_SATURATED_FAT_TOTAL, 344 NUTRITION_RECORD_SELENIUM_TOTAL, 345 NUTRITION_RECORD_SODIUM_TOTAL, 346 NUTRITION_RECORD_SUGAR_TOTAL, 347 NUTRITION_RECORD_THIAMIN_TOTAL, 348 NUTRITION_RECORD_TOTAL_CARBOHYDRATE_TOTAL, 349 NUTRITION_RECORD_TOTAL_FAT_TOTAL, 350 NUTRITION_RECORD_UNSATURATED_FAT_TOTAL, 351 NUTRITION_RECORD_VITAMIN_A_TOTAL, 352 NUTRITION_RECORD_VITAMIN_B12_TOTAL, 353 NUTRITION_RECORD_VITAMIN_B6_TOTAL, 354 NUTRITION_RECORD_VITAMIN_C_TOTAL, 355 NUTRITION_RECORD_VITAMIN_D_TOTAL, 356 NUTRITION_RECORD_VITAMIN_E_TOTAL, 357 NUTRITION_RECORD_VITAMIN_K_TOTAL, 358 NUTRITION_RECORD_ZINC_TOTAL, 359 HEIGHT_RECORD_HEIGHT_AVG, 360 HEIGHT_RECORD_HEIGHT_MAX, 361 HEIGHT_RECORD_HEIGHT_MIN, 362 RESTING_HEART_RATE_RECORD_BPM_MAX, 363 RESTING_HEART_RATE_RECORD_BPM_MIN, 364 TOTAL_CALORIES_BURNED_RECORD_ENERGY_TOTAL, 365 WEIGHT_RECORD_WEIGHT_AVG, 366 WEIGHT_RECORD_WEIGHT_MAX, 367 WEIGHT_RECORD_WEIGHT_MIN, 368 WHEEL_CHAIR_PUSHES_RECORD_COUNT_TOTAL, 369 HEART_RATE_RECORD_MEASUREMENTS_COUNT, 370 RESTING_HEART_RATE_RECORD_BPM_AVG, 371 SLEEP_SESSION_DURATION_TOTAL, 372 EXERCISE_SESSION_DURATION_TOTAL, 373 NUTRITION_RECORD_TRANS_FAT_TOTAL, 374 CYCLING_PEDALING_CADENCE_RECORD_RPM_AVG, 375 CYCLING_PEDALING_CADENCE_RECORD_RPM_MIN, 376 CYCLING_PEDALING_CADENCE_RECORD_RPM_MAX, 377 BLOOD_PRESSURE_RECORD_DIASTOLIC_AVG, 378 BLOOD_PRESSURE_RECORD_DIASTOLIC_MAX, 379 BLOOD_PRESSURE_RECORD_DIASTOLIC_MIN, 380 BLOOD_PRESSURE_RECORD_SYSTOLIC_AVG, 381 BLOOD_PRESSURE_RECORD_SYSTOLIC_MAX, 382 BLOOD_PRESSURE_RECORD_SYSTOLIC_MIN, 383 SPEED_RECORD_SPEED_AVG, 384 SPEED_RECORD_SPEED_MIN, 385 SPEED_RECORD_SPEED_MAX, 386 STEPS_CADENCE_RECORD_RATE_AVG, 387 STEPS_CADENCE_RECORD_RATE_MIN, 388 STEPS_CADENCE_RECORD_RATE_MAX, 389 SKIN_TEMPERATURE_RECORD_DELTA_AVG, 390 SKIN_TEMPERATURE_RECORD_DELTA_MIN, 391 SKIN_TEMPERATURE_RECORD_DELTA_MAX, 392 MINDFULNESS_SESSION_DURATION_TOTAL, 393 ACTIVITY_INTENSITY_MODERATE_DURATION_TOTAL, 394 ACTIVITY_INTENSITY_VIGOROUS_DURATION_TOTAL, 395 ACTIVITY_INTENSITY_DURATION_TOTAL, 396 ACTIVITY_INTENSITY_MINUTES_TOTAL 397 }) 398 @Retention(RetentionPolicy.SOURCE) 399 @interface Id {} 400 } 401 402 /** 403 * Valid set of values for this IntDef. Update this set when add new type or deprecate existing 404 * type. 405 * 406 * @hide 407 */ 408 public static final Set<Integer> OPERATION_VALID_TYPES = Set.of(MAX, MIN, AVG, SUM, COUNT); 409 410 /** @hide */ 411 @IntDef({MAX, MIN, AVG, SUM, COUNT}) 412 @Retention(RetentionPolicy.SOURCE) 413 public @interface AggregateOperationType {} 414 } 415