Example usage for com.google.common.collect ImmutableBiMap of

List of usage examples for com.google.common.collect ImmutableBiMap of

Introduction

In this page you can find the example usage for com.google.common.collect ImmutableBiMap of.

Prototype

public static <K, V> ImmutableBiMap<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3) 

Source Link

Usage

From source file:com.android.tools.idea.gradle.structure.editors.KeyValuePane.java

public KeyValuePane(@NotNull Project project, @NotNull ModificationListener listener) {
    myProject = project;//  ww  w .  j  av a 2s.  co m
    myListener = listener;
    AndroidSdkHandler sdkHandler = null;
    AndroidSdkData androidSdkData = AndroidSdks.getInstance().tryToChooseAndroidSdk();
    if (androidSdkData != null) {
        sdkHandler = androidSdkData.getSdkHandler();
    }
    // Use immutable maps with builders for our built-in value maps because ImmutableBiMap ensures that iteration order is the same as
    // insertion order.
    ImmutableBiMap.Builder<String, String> buildToolsMapBuilder = ImmutableBiMap.builder();
    ImmutableBiMap.Builder<String, String> apisMapBuilder = ImmutableBiMap.builder();
    ImmutableBiMap.Builder<String, String> compiledApisMapBuilder = ImmutableBiMap.builder();

    if (sdkHandler != null) {
        ProgressIndicator logger = new StudioLoggerProgressIndicator(getClass());
        RepositoryPackages packages = sdkHandler.getSdkManager(logger).getPackages();
        Set<String> buildToolKeys = Sets.newHashSet();
        for (LocalPackage p : packages.getLocalPackagesForPrefix(SdkConstants.FD_BUILD_TOOLS)) {
            String key = p.getVersion().toString();
            // It's possible to end up with multiple build tools with the same key; for example
            // "build-tools;24.0.0-preview" and "build-tools;24.0.0-rc4" - these both have the
            // version name 24.0.0 rc4.  Prevent an exception in this scenario where the PSD
            // can't be opened because a bi-map can't be constructed.
            if (!buildToolKeys.contains(key)) {
                buildToolsMapBuilder.put(key, key);
                buildToolKeys.add(key);
            }
        }

        for (IAndroidTarget target : sdkHandler.getAndroidTargetManager(logger).getTargets(logger)) {
            String label = getTargetLabel(target);
            String apiString, platformString;
            if (target.isPlatform()) {
                String value = target.getVersion().getApiString();
                if (target.getVersion().isPreview()) {
                    platformString = AndroidTargetHash.getPlatformHashString(target.getVersion());
                } else {
                    platformString = value;
                }
                apiString = value;
                apisMapBuilder.put(apiString, label);
            } else {
                platformString = getAddonHashString(target.getVendor(), target.getName(), target.getVersion());
            }
            compiledApisMapBuilder.put(platformString, label);
        }
    }

    BiMap<String, String> installedBuildTools = buildToolsMapBuilder.build();
    BiMap<String, String> installedApis = apisMapBuilder.build();
    BiMap<String, String> installedCompileApis = compiledApisMapBuilder.build();

    BiMap<String, String> javaCompatibility;
    if (installedApis.containsKey("N")) {
        javaCompatibility = ImmutableBiMap.of("JavaVersion.VERSION_1_6", "1.6", "JavaVersion.VERSION_1_7",
                "1.7", "JavaVersion.VERSION_1_8", "1.8");
    } else {
        javaCompatibility = ImmutableBiMap.of("JavaVersion.VERSION_1_6", "1.6", "JavaVersion.VERSION_1_7",
                "1.7");
    }

    myKeysWithKnownValues = ImmutableMap.<BuildFileKey, BiMap<String, String>>builder()
            .put(BuildFileKey.MIN_SDK_VERSION, installedApis)
            .put(BuildFileKey.TARGET_SDK_VERSION, installedApis)
            .put(BuildFileKey.COMPILE_SDK_VERSION, installedCompileApis)
            .put(BuildFileKey.BUILD_TOOLS_VERSION, installedBuildTools)
            .put(BuildFileKey.SOURCE_COMPATIBILITY, javaCompatibility)
            .put(BuildFileKey.TARGET_COMPATIBILITY, javaCompatibility).build();
}