| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package io.v.android; |
| |
| import android.content.SharedPreferences; |
| |
| import com.google.common.base.Strings; |
| |
| import io.v.v23.OptionDefs; |
| import io.v.v23.Options; |
| import java8.util.Optional; |
| import lombok.experimental.UtilityClass; |
| |
| @UtilityClass |
| public class VOptionPreferenceUtils { |
| public static Optional<Integer> readVLevel(final SharedPreferences prefs) { |
| final String raw = prefs.getString(OptionDefs.LOG_VLEVEL, ""); |
| try { |
| return Optional.of(Integer.parseInt(raw)); |
| } catch (final NumberFormatException|NullPointerException e) { |
| return Optional.empty(); |
| } |
| } |
| |
| public static Optional<String> readVModule(final SharedPreferences prefs) { |
| final String raw = prefs.getString(OptionDefs.LOG_VMODULE, ""); |
| if (Strings.isNullOrEmpty(raw)) { |
| return Optional.empty(); |
| } else { |
| return Optional.of(raw); |
| } |
| } |
| |
| public static Options getOptionsFromPreferences(final SharedPreferences prefs) { |
| final Options opts = new Options(); |
| /* It would be nice to copy this map naively, but Vanadium options are type-specific and |
| Android stores some numeric preferences as strings. */ |
| readVLevel(prefs).ifPresent(v -> opts.set(OptionDefs.LOG_VLEVEL, v)); |
| readVModule(prefs).ifPresent(v -> opts.set(OptionDefs.LOG_VMODULE, v)); |
| return opts; |
| } |
| } |