ConfigurationMap.java revision 3552d3bc8329aa9bc843f62c3a854e5ad2b41037
1package com.android.server.wifi; 2 3import android.net.wifi.WifiConfiguration; 4 5import java.util.ArrayList; 6import java.util.Collection; 7import java.util.HashMap; 8import java.util.Iterator; 9import java.util.List; 10import java.util.Map; 11 12public class ConfigurationMap { 13 private final Map<Integer, WifiConfiguration> mPerID = new HashMap<>(); 14 private final Map<Integer, WifiConfiguration> mPerConfigKey = new HashMap<>(); 15 private final Map<String, Integer> mPerFQDN = new HashMap<>(); 16 17 // RW methods: 18 public WifiConfiguration put(int netid, WifiConfiguration config) { 19 WifiConfiguration current = mPerID.put(netid, config); 20 mPerConfigKey.put(config.configKey().hashCode(), config); // This is ridiculous... 21 if (config.FQDN != null && config.FQDN.length() > 0) { 22 mPerFQDN.put(config.FQDN, netid); 23 } 24 return current; 25 } 26 27 public WifiConfiguration remove(int netID) { 28 WifiConfiguration config = mPerID.remove(netID); 29 if (config == null) { 30 return null; 31 } 32 mPerConfigKey.remove(config.configKey().hashCode()); 33 34 Iterator<Map.Entry<String, Integer>> entries = mPerFQDN.entrySet().iterator(); 35 while (entries.hasNext()) { 36 if (entries.next().getValue() == netID) { 37 entries.remove(); 38 break; 39 } 40 } 41 return config; 42 } 43 44 public void clear() { 45 mPerID.clear(); 46 mPerConfigKey.clear(); 47 mPerFQDN.clear(); 48 } 49 50 // RO methods: 51 public WifiConfiguration get(int netid) { 52 return mPerID.get(netid); 53 } 54 55 public int size() { 56 return mPerID.size(); 57 } 58 59 public boolean isEmpty() { 60 return mPerID.size() == 0; 61 } 62 63 public WifiConfiguration getByFQDN(String fqdn) { 64 Integer id = mPerFQDN.get(fqdn); 65 return id != null ? mPerID.get(id) : null; 66 } 67 68 public WifiConfiguration getByConfigKey(String key) { 69 if (key == null) { 70 return null; 71 } 72 for (WifiConfiguration config : mPerID.values()) { 73 if (config.configKey().equals(key)) { 74 return config; 75 } 76 } 77 return null; 78 } 79 80 public WifiConfiguration getByConfigKeyID(int id) { 81 return mPerConfigKey.get(id); 82 } 83 84 public Collection<WifiConfiguration> getEnabledNetworks() { 85 List<WifiConfiguration> list = new ArrayList<>(); 86 for (WifiConfiguration config : mPerID.values()) { 87 if (config.status != WifiConfiguration.Status.DISABLED) { 88 list.add(config); 89 } 90 } 91 return list; 92 } 93 94 public WifiConfiguration getEphemeral(String ssid) { 95 for (WifiConfiguration config : mPerID.values()) { 96 if (ssid.equals(config.SSID) && config.ephemeral) { 97 return config; 98 } 99 } 100 return null; 101 } 102 103 public Collection<WifiConfiguration> values() { 104 return mPerID.values(); 105 } 106} 107