package com.num.models; import java.util.ArrayList; import java.util.HashMap; import org.json.JSONException; import org.json.JSONObject; import android.content.Context; import com.num.R; import com.num.Values; import com.num.database.DatabaseOutput; import com.num.database.datasource.ThroughputDataSource; import com.num.graph.LinkGraph; import com.num.utils.DeviceUtil; public class Throughput implements MainModel{ public Link downLink; public Link upLink; public boolean isComplete = false; private static String DESCRIPTION = "Upload and Download speeds"; public String getDescription() { return DESCRIPTION; } public Link getDownLink() { return downLink; } public void setDownLink(Link downLink) { this.downLink = downLink; } public Link getUpLink() { return upLink; } public void setUpLink(Link upLink) { this.upLink = upLink; } public Throughput() { super(); Link downLink = new Link(); Link upLink = new Link(); } public JSONObject toJSON() { JSONObject obj = new JSONObject(); try { obj.put("downLink", downLink.toJSON()); obj.put("upLink", upLink.toJSON()); } catch (Exception e) { obj = new JSONObject(); } return obj; } public String getTitle() { return "Throughput"; } public ArrayList<Row> getDisplayData(Context context){ ArrayList<Row> data = new ArrayList<Row>(); int downL = -1; int upL = -1; if (downLink == null) { downL = -1; } else { downL = (int)downLink.speedInBits(); } if (upLink == null) { upL = -1; } else { upL = (int)upLink.speedInBits(); } if (upL>0) { data.add(new Row(new LinkGraph(upLink, Values.UPLINK_DURATION, "Upload", "uplink"))); } if (downL>0) { data.add(new Row(new LinkGraph(downLink, Values.DOWNLINK_DURATION, "Download", "downlink"))); } if(isComplete) { ThroughputDataSource dataSource = new ThroughputDataSource(context); DatabaseOutput output = dataSource.getOutput(); HashMap<String,ArrayList<GraphPoint>> graphPoints = dataSource.getGraphData(); if (output.getLong("avg_download")>0) { String connection = DeviceUtil.getNetworkInfo(context); data.add(new Row("GRAPHS")); data.add(new Row("Avg Download",output.getLong("avg_download") + " Kbps")); GraphData graphdata = new GraphData(graphPoints.get("downlink")); graphdata.setxAxisTitle("Historical trend of Download tests for " + connection); data.add(new Row(graphdata)); if (output.getLong("avg_upload")>0) { data.add(new Row("Avg Upload",output.getLong("avg_upload") + " Kbps")); GraphData graphdata2 = new GraphData(graphPoints.get("uplink")); graphdata2.setxAxisTitle("Historical trend of Upload tests for " + connection); data.add(new Row(graphdata2)); } } } else { data.add(new Row("In progress ...")); } return data; } public int getIcon() { return R.drawable.throughput; } }