package com.num.models;
import java.util.ArrayList;
import java.util.Collections;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;
import com.num.utils.SHA1Util;
import com.num.R;
public class Wifi implements MainModel{
public boolean isWifi = false;
public int strength = -1;
public int ipAddress = -1;
public int speed = -1;
public int networkId = -1;
public int rssi = -1;
public String macAddress = "";
public String ssid = "";
public String detailedInfo = "";
public String units = "";
public boolean isPreferred = false;
public ArrayList<WifiNeighbor> neighbors;
public ArrayList<WifiPreference> preference;
private static String DESCRIPTION = "Details of your current and neighboring WiFi connections";
public String getDescription() {
return DESCRIPTION;
}
public Wifi()
{
setNeighbors(new ArrayList<WifiNeighbor>());
setPreference(new ArrayList<WifiPreference>());
}
public boolean isWifi() {
return isWifi;
}
public void setWifi(boolean isWifi) {
this.isWifi = isWifi;
}
public boolean isPreferred() {
return isPreferred;
}
public void setPreferred(boolean isPreferred) {
this.isPreferred = isPreferred;
}
public ArrayList<WifiPreference> getPreference() {
return preference;
}
public void setPreference(ArrayList<WifiPreference> preference) {
this.preference = preference;
}
public int getStrength() {
return strength;
}
public void setStrength(int strength) {
this.strength = strength;
}
public int getIpAddress() {
return ipAddress;
}
public void setIpAddress(int ipAddress) {
this.ipAddress = ipAddress;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public int getNetworkId() {
return networkId;
}
public void setNetworkId(int networkId) {
this.networkId = networkId;
}
public int getRssi() {
return rssi;
}
public void setRssi(int rssi) {
this.rssi = rssi;
}
public String getMacAddress() {
return macAddress;
}
public void setMacAddress(String macAddress) {
this.macAddress = macAddress;
}
public String getSsid() {
return ssid;
}
public void setSsid(String ssid) {
this.ssid = ssid;
}
public String getDetailedInfo() {
return detailedInfo;
}
public void setDetailedInfo(String detailedInfo) {
this.detailedInfo = detailedInfo;
}
public String getUnits() {
return units;
}
public void setUnits(String units) {
this.units = units;
}
public ArrayList<WifiNeighbor> getNeighbors() {
return neighbors;
}
public void setNeighbors(ArrayList<WifiNeighbor> neighbors) {
this.neighbors = neighbors;
}
public JSONObject toJSON() {
JSONObject obj = new JSONObject();
try {
obj.putOpt("strength", "" + strength);
obj.putOpt("ipAddress", "" + ipAddress);
obj.putOpt("speed", "" + speed);
obj.putOpt("networkId", "" + networkId);
obj.putOpt("rssi", "" + rssi);
obj.putOpt("macAddress", SHA1Util.SHA1(macAddress));
obj.putOpt("ssid", "" + SHA1Util.SHA1(ssid));
obj.putOpt("detailedInfo", "" + detailedInfo);
obj.putOpt("units", "" + units);
obj.putOpt("isPreferred", "" + isPreferred);
JSONArray neighbor = new JSONArray();
JSONArray prefer = new JSONArray();
for (WifiNeighbor wn: neighbors) {
neighbor.put(wn.toJSON());
}
for (WifiPreference wp: preference) {
prefer.put(wp.toJSON());
}
obj.putOpt("wifiNeighbors", neighbor);
//obj.putOpt("wifiPreference", prefer);
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
public String getTitle() {
return "Wifi";
}
public ArrayList<Row> getDisplayData(Context context){
ArrayList<Row> data = new ArrayList<Row>();
if(this.getSpeed()<1){
data.add(new Row("THE WIFI IS UNAVAILABLE"));
return data;
}
data.add(new Row("YOUR INFO"));
data.add(new Row("Hotspot",this.getSsid()));
data.add(new Row("Status",this.getDetailedInfo()));
data.add(new Row("Speed",this.getSpeed() + " " + this.getUnits()));
data.add(new Row("Strength",this.getStrength()*10));
data.add(new Row("Neighbors",""+this.getNeighbors().size()));
data.add(new Row("NEIGHBORING WIFIS"));
Collections.sort(this.getNeighbors());
ArrayList<String> used = new ArrayList<String>();
for(WifiNeighbor wifi: this.getNeighbors()){
if(!used.contains(wifi.getSSID())){
if(wifi.capability.length()<=1)
data.add(new Row(wifi.getSSID(),wifi.getSignalPercentage()));
else
data.add(new Row(wifi.getSSID(),R.drawable.lock,wifi.getSignalPercentage()));
}
used.add(wifi.getSSID());
}
return data;
}
public int getIcon() {
return R.drawable.wifi;
}
}