Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Analyzer {
- List<Days> myDaysList;
- List<Double> averageForce = new ArrayList<>();
- List<Double> averageTemperature = new ArrayList<>();
- //use the file in the directory to generate analyzer class
- public Analyzer(File file){
- myDaysList = new ArrayList<>();
- try {
- BufferedReader br = new BufferedReader(new FileReader(file));
- //first line introduces item: force,temp,month,day,time1,time2
- String line = br.readLine();
- Log.v("line",line);
- line = br.readLine();
- int year = 0;
- int month = 0;
- int day = 0;
- int hour;
- int minute;
- int oldDay = 0;
- int oldMonth = 0;
- double force;
- double temperature;
- Days myDays = new Days(year,month,day);
- Records myRecords;
- boolean firstOneRemove = true;
- while ((line = br.readLine()) != null) {
- Log.v("line",line);
- try{
- String[] values = line.split(", ");
- force = Double.valueOf(values[0]);
- temperature = Double.valueOf(values[1]);
- year = Integer.valueOf(values[2]);
- month = Integer.valueOf(values[3]);
- day = Integer.valueOf(values[4]);
- hour = Integer.valueOf(values[5]);
- minute = Integer.valueOf(values[6]);
- myRecords = new Records(year,month,day,hour,minute,force,temperature);
- //create new day
- if (oldDay != day){
- myDaysList.add(myDays);
- if (firstOneRemove){
- firstOneRemove = false;
- myDaysList.remove(0);
- }
- //check month
- if (oldMonth != month){
- //check if need to change year
- if((oldMonth == 12) && (month == 1)) {
- year ++;
- }
- oldMonth = month;
- }
- myDays = new Days(year,month,day);
- oldDay = day;
- }
- myDays.recordsList.add(myRecords);
- }
- catch (Exception e){
- continue;
- }
- }
- myDaysList.add(myDays);
- br.close();
- double[] averageF = new double[15];
- double[] averageT = new double[15];
- int counter = 0;
- for (Days days:myDaysList){
- for (Records rec:days.getRecordsList()){
- averageF[counter%15] = rec.getForceVal();
- averageT[counter%15] = rec.getTempVal();
- if (counter == 15){
- for (int i = 0; i < 15; i++) {
- averageForce.add(calculateAvg(averageF));
- averageTemperature.add(calculateAvg(averageT));
- }
- }
- if (counter > 15){
- averageForce.add(calculateAvg(averageF));
- averageTemperature.add(calculateAvg(averageT));
- }
- counter++;
- }
- }
- }
- catch(FileNotFoundException e){
- }
- catch (IOException e) {
- //You'll need to add proper error handling here
- }
- }
- public List<Days> getMyDaysList() {
- return myDaysList;
- }
- private double calculateAvg(double[] arrays){
- double total = 0;
- for(int i=0; i<arrays.length; i++){
- total = total + arrays[i];
- }
- return total/arrays.length;
- }
- public List<Double> getAverageForce(){
- return averageForce;
- }
- public List<Double> getAverageTemperature(){
- return averageTemperature;
- }
- public Days getDaysFromDaysList(int year, int month, int day){
- for (Days days:myDaysList){
- if (days.isEqual(year,month,day)){
- return days;
- }
- }
- return null;
- }
- public int[] getStartEndIndex(int[] startTime, int[] endTime){
- int[] result = new int[]{0,0};
- int counter = 0;
- Records startRecord = new Records(startTime[0],startTime[1],startTime[2],startTime[3],startTime[4],0,0);
- Records endRecord = new Records(endTime[0],endTime[1],endTime[2],endTime[3],endTime[4],0,0);
- for (Days days:myDaysList){
- for (Records rec:days.getRecordsList()) {
- if (rec.dateEquals(startRecord)){
- result[0] = counter;
- }
- if (rec.dateEquals(endRecord)){
- result[1] = counter;
- break;
- }
- counter++;
- }
- }
- return result;
- }
- //use the downloaded data object to generate analyzer class
- public Analyzer(List<Records> downloadedData){
- //first line must be Header+year
- myDaysList = new ArrayList<>();
- int year = downloadedData.get(0).getYear();
- int month= downloadedData.get(0).getMonth();
- int day= downloadedData.get(0).getDate();
- int hour,minute;
- int oldDay = 0;
- int oldMonth = 0;
- double force;
- double temperature;
- Days myDays = new Days(year,month,day);
- boolean firstOneRemove = true;
- for (int i =1;i<downloadedData.size();i++){
- Records myRecords = downloadedData.get(i);
- try{
- //create new day
- if (oldDay != day){
- myDaysList.add(myDays);
- if (firstOneRemove){
- firstOneRemove = false;
- myDaysList.remove(0);
- }
- //check month
- if (oldMonth != month){
- //check if need to change year
- if((oldMonth == 12) && (month == 1)) {
- year ++;
- }
- oldMonth = month;
- }
- myDays = new Days(year,month,day);
- oldDay = day;
- }
- myDays.recordsList.add(myRecords);
- }
- catch (Exception e){
- continue;
- }
- }
- myDaysList.add(myDays);
- double[] averageF = new double[15];
- double[] averageT = new double[15];
- int counter = 0;
- for (Days days:myDaysList){
- for (Records rec:days.getRecordsList()){
- averageF[counter%15] = rec.getForceVal();
- averageT[counter%15] = rec.getTempVal();
- if (counter == 15){
- for (int i = 0; i < 15; i++) {
- averageForce.add(calculateAvg(averageF));
- averageTemperature.add(calculateAvg(averageT));
- }
- }
- if (counter > 15){
- averageForce.add(calculateAvg(averageF));
- averageTemperature.add(calculateAvg(averageT));
- }
- counter++;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement