From 1902b9374bfd138a9ac88422638e3ff7c4f38cd9 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Mon, 2 Mar 2015 15:20:59 +0100 Subject: [PATCH] Implementation of CSVReader class --- .../uecontrol/core/util/CSVReader.java | 93 +++++++++++++++++++ .../core/util/ThroughputCalculator.java | 4 +- .../uecontrol/gui/HistoryActivity.java | 26 +++++- 3 files changed, 117 insertions(+), 6 deletions(-) create mode 100755 app/src/main/java/com/ericsson/uecontrol/core/util/CSVReader.java diff --git a/app/src/main/java/com/ericsson/uecontrol/core/util/CSVReader.java b/app/src/main/java/com/ericsson/uecontrol/core/util/CSVReader.java new file mode 100755 index 0000000..50781e7 --- /dev/null +++ b/app/src/main/java/com/ericsson/uecontrol/core/util/CSVReader.java @@ -0,0 +1,93 @@ +package com.ericsson.uecontrol.core.util; + +import android.content.Context; +import android.content.Intent; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.net.Uri; +import android.net.wifi.WifiInfo; +import android.net.wifi.WifiManager; +import android.os.Environment; +import android.telephony.TelephonyManager; +import android.telephony.gsm.GsmCellLocation; +import com.ericsson.uecontrol.gui.MainActivity; +import org.apache.log4j.Logger; + +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.ArrayList; + +/** + * Created by ezivkoc on 2014-07-30. + */ +public class CSVReader { + private static final Logger log = Logger.getLogger(CSVReader.class); + + private File file; + private int size; + + private ArrayList downThroughput; + private ArrayList upThroughput; + + public CSVReader(File path){ + file = path; + downThroughput = new ArrayList(); + upThroughput = new ArrayList(); + } + + public void maxNoOfEntries(int n){ + size = n; + } + + public ArrayList getDownThroughput() { + return downThroughput; + } + + public ArrayList getUpThroughput() { + return upThroughput; + } + + public void read() throws IOException { + int everyNLines = getNrOfLines(file) / size; + if(everyNLines <= 0) everyNLines = 1; + BufferedReader in = null; + try { + downThroughput.clear(); + upThroughput.clear(); + in = new BufferedReader(new FileReader(file)); + in.readLine(); // Skip first line with headers + String line = null; + long x = 0, y = 0; + for (int i=0; (line = in.readLine()) != null; i++) { + String[] cols = line.split(CSVWriter.DELIMITER); + if(cols.length > 4) { + if (i % everyNLines == 0){ + downThroughput.add(x); + upThroughput.add(y); + x = Long.parseLong(cols[2]); + y = Long.parseLong(cols[3]); + } + else{ + x = (x + Long.parseLong(cols[2])) / 2; + y = (y + Long.parseLong(cols[3])) / 2; + } + } + } + }finally { + if(in != null) in.close(); + } + } + + private static int getNrOfLines(File file) throws IOException { + LineNumberReader lnr = null; + try { + lnr = new LineNumberReader(new FileReader(file)); + lnr.skip(Long.MAX_VALUE); + } finally { + // Finally, the LineNumberReader object should be closed to prevent resource leak + if (lnr != null) lnr.close(); + } + return lnr.getLineNumber() + 1; //Add 1 because line index starts at 0 + } + +} diff --git a/app/src/main/java/com/ericsson/uecontrol/core/util/ThroughputCalculator.java b/app/src/main/java/com/ericsson/uecontrol/core/util/ThroughputCalculator.java index 85f0507..d1b32c9 100755 --- a/app/src/main/java/com/ericsson/uecontrol/core/util/ThroughputCalculator.java +++ b/app/src/main/java/com/ericsson/uecontrol/core/util/ThroughputCalculator.java @@ -25,13 +25,13 @@ public class ThroughputCalculator { } } - public double getByeThroughput(){ + public double getByteThroughput(){ setHandledData(0); // Update throughput updated = false; return throughput; } public double getBitThroughput(){ - return getByeThroughput()*8; + return getByteThroughput()*8; } public boolean isUpdated(){ diff --git a/app/src/main/java/com/ericsson/uecontrol/gui/HistoryActivity.java b/app/src/main/java/com/ericsson/uecontrol/gui/HistoryActivity.java index 367d380..ccea035 100755 --- a/app/src/main/java/com/ericsson/uecontrol/gui/HistoryActivity.java +++ b/app/src/main/java/com/ericsson/uecontrol/gui/HistoryActivity.java @@ -10,6 +10,7 @@ import android.preference.PreferenceManager; import android.view.*; import android.widget.*; import com.ericsson.uecontrol.R; +import com.ericsson.uecontrol.core.util.CSVReader; import com.jjoe64.graphview.GraphView; import com.jjoe64.graphview.GraphViewSeries; import com.jjoe64.graphview.GraphViewStyle; @@ -17,6 +18,7 @@ import com.jjoe64.graphview.LineGraphView; import org.apache.log4j.Logger; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -24,6 +26,8 @@ import java.util.List; public class HistoryActivity extends ListActivity { private static final Logger log = Logger.getLogger(HistoryActivity.class); + private static final int GRAPH_LENGTH = 60; + @Override protected void onCreate(Bundle savedInstanceState) { @@ -77,18 +81,32 @@ public class HistoryActivity extends ListActivity { TextView fileNameView = (TextView)view.findViewById(R.id.file_name); fileNameView.setText(csvFile.getName()); + // Read CSV File + CSVReader reader = new CSVReader(csvFile); + reader.maxNoOfEntries(GRAPH_LENGTH); + try{reader.read();}catch (IOException e){log.trace(null, e);} + GraphView.GraphViewData[] downThrp = new GraphView.GraphViewData[reader.getDownThroughput().size()]; + GraphView.GraphViewData[] upThrp = new GraphView.GraphViewData[reader.getUpThroughput().size()]; + for(int i=0; i