summaryrefslogtreecommitdiffstats
path: root/updater_sample/src/com/example/android/systemupdatersample/util/UpdateConfigs.java
diff options
context:
space:
mode:
authorandroid-build-prod (mdb) <android-build-team-robot@google.com>2018-04-26 02:22:22 +0200
committerandroid-build-merger <android-build-merger@google.com>2018-04-26 02:22:22 +0200
commit4b52553cbb9d11386ecba824c4714f1a88a82fe7 (patch)
tree1dc6010dec08f2af591b6f174d22507fd5792740 /updater_sample/src/com/example/android/systemupdatersample/util/UpdateConfigs.java
parentMerge "sample_updater: add non-streaming demo" (diff)
parentMerge "Rename the dir for SystemUpdaterSample." (diff)
downloadandroid_bootable_recovery-4b52553cbb9d11386ecba824c4714f1a88a82fe7.tar
android_bootable_recovery-4b52553cbb9d11386ecba824c4714f1a88a82fe7.tar.gz
android_bootable_recovery-4b52553cbb9d11386ecba824c4714f1a88a82fe7.tar.bz2
android_bootable_recovery-4b52553cbb9d11386ecba824c4714f1a88a82fe7.tar.lz
android_bootable_recovery-4b52553cbb9d11386ecba824c4714f1a88a82fe7.tar.xz
android_bootable_recovery-4b52553cbb9d11386ecba824c4714f1a88a82fe7.tar.zst
android_bootable_recovery-4b52553cbb9d11386ecba824c4714f1a88a82fe7.zip
Diffstat (limited to 'updater_sample/src/com/example/android/systemupdatersample/util/UpdateConfigs.java')
-rw-r--r--updater_sample/src/com/example/android/systemupdatersample/util/UpdateConfigs.java82
1 files changed, 82 insertions, 0 deletions
diff --git a/updater_sample/src/com/example/android/systemupdatersample/util/UpdateConfigs.java b/updater_sample/src/com/example/android/systemupdatersample/util/UpdateConfigs.java
new file mode 100644
index 000000000..089f8b2f2
--- /dev/null
+++ b/updater_sample/src/com/example/android/systemupdatersample/util/UpdateConfigs.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2018 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 com.example.android.systemupdatersample.util;
+
+import android.content.Context;
+
+import com.example.android.systemupdatersample.UpdateConfig;
+
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Utility class for working with json update configurations.
+ */
+public final class UpdateConfigs {
+
+ private static final String UPDATE_CONFIGS_ROOT = "configs/";
+
+ /**
+ * @param configs update configs
+ * @return list of names
+ */
+ public static String[] configsToNames(List<UpdateConfig> configs) {
+ return configs.stream().map(UpdateConfig::getName).toArray(String[]::new);
+ }
+
+ /**
+ * @param context app context
+ * @return configs root directory
+ */
+ public static String getConfigsRoot(Context context) {
+ return Paths.get(context.getFilesDir().toString(),
+ UPDATE_CONFIGS_ROOT).toString();
+ }
+
+ /**
+ * It parses only {@code .json} files.
+ *
+ * @param context application context
+ * @return list of configs from directory {@link UpdateConfigs#getConfigsRoot}
+ */
+ public static List<UpdateConfig> getUpdateConfigs(Context context) {
+ File root = new File(getConfigsRoot(context));
+ ArrayList<UpdateConfig> configs = new ArrayList<>();
+ if (!root.exists()) {
+ return configs;
+ }
+ for (final File f : root.listFiles()) {
+ if (!f.isDirectory() && f.getName().endsWith(".json")) {
+ try {
+ String json = new String(Files.readAllBytes(f.toPath()),
+ StandardCharsets.UTF_8);
+ configs.add(UpdateConfig.fromJson(json));
+ } catch (Exception e) {
+ throw new RuntimeException(
+ "Can't read/parse config file " + f.getName(), e);
+ }
+ }
+ }
+ return configs;
+ }
+
+ private UpdateConfigs() {}
+}