package com.lechucksoftware.proxy.proxysettings;
import android.net.wifi.ScanResult;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;
import be.shouldit.proxy.lib.APLNetworkId;
import be.shouldit.proxy.lib.WiFiApConfig;
import timber.log.Timber;
/**
* Created by Marco on 21/08/14.
*/
public class WifiNetworkStatus
{
private Map<APLNetworkId, WiFiApConfig> wifiApConfigsByAPLNetId;
// Wi-Fi networks available but still not configured into Android's Wi-Fi settings
private Map<APLNetworkId, ScanResult> notConfiguredWifi;
private WiFiApConfig currentConfiguration;
public WifiNetworkStatus()
{
wifiApConfigsByAPLNetId = new ConcurrentHashMap<APLNetworkId, WiFiApConfig>();
notConfiguredWifi = new ConcurrentHashMap<APLNetworkId, ScanResult>();
}
public boolean isEmpty()
{
return wifiApConfigsByAPLNetId != null && wifiApConfigsByAPLNetId.isEmpty();
}
public boolean containsKey(APLNetworkId aplNetworkId)
{
return wifiApConfigsByAPLNetId != null && wifiApConfigsByAPLNetId.containsKey(aplNetworkId);
}
public WiFiApConfig get(APLNetworkId aplNetworkId)
{
return wifiApConfigsByAPLNetId.get(aplNetworkId);
}
public void put(APLNetworkId aplNetworkId, WiFiApConfig wiFiApConfig)
{
if (aplNetworkId == null)
{
Timber.e(new Exception(),"Trying to put a Wi-Fi network using a NULL APLNetworkId");
return;
}
if (wiFiApConfig == null)
{
Timber.e(new Exception(),"Trying to put a Wi-Fi network using a NULL WiFiApConfig");
return;
}
Timber.d("Adding '%s' Wi-Fi network to WifiNetworkStatus object", wiFiApConfig.getSSID());
wifiApConfigsByAPLNetId.put(aplNetworkId, wiFiApConfig);
// wifiApConfigsByWifiNetworkId.put(wiFiApConfig.getNetworkId(), wiFiApConfig);
}
public void remove(APLNetworkId aplNetworkId)
{
if (aplNetworkId == null)
{
Timber.e(new Exception(),"Trying to remove a Wi-Fi network using a NULL APLNetworkId");
return;
}
Timber.d("Removing '%s' Wi-Fi network from WifiNetworkStatus object", aplNetworkId.SSID);
WiFiApConfig toRemove = null;
if (wifiApConfigsByAPLNetId.containsKey(aplNetworkId))
{
toRemove = wifiApConfigsByAPLNetId.remove(aplNetworkId);
}
else
{
Timber.w("Trying to remove a Wi-Fi network not available into the wifiApConfigsByAPLNetId MAP");
}
// if (toRemove != null && wifiApConfigsByWifiNetworkId.containsKey(toRemove.getNetworkId()))
// {
// wifiApConfigsByWifiNetworkId.remove(toRemove.getNetworkId());
// }
// else
// {
// Timber.w("Trying to remove a Wi-Fi network not available into the wifiApConfigsByWifiNetworkId MAP");
// }
}
public Collection<WiFiApConfig> values()
{
return wifiApConfigsByAPLNetId.values();
}
public Map<APLNetworkId, ScanResult> getNotConfiguredWifi()
{
return notConfiguredWifi;
}
public WiFiApConfig getCurrentConfiguration()
{
return currentConfiguration;
}
public void setCurrentConfiguration(WiFiApConfig currentConfiguration)
{
this.currentConfiguration = currentConfiguration;
}
}