[!INDEX]

  1. get name, color, food + CSVParser + getCSVParser +get + CSVRecord + FileResource
  2. display the country which export coffee + method call(parser, item)
  3. find country info, mt call( parser , country name)
  4. listExportersTwoProducts + mt(parser, item1 , item2)
  5. numberOfExporters + mt ( praser, money)
  6. bigExporter mt(parser , money)
  7. max value form a single csv file + new algo
  8. Multiple files + CSVRecord
  9. make above code shorter
  10. lowest humidity
  11. average temperature of a given file

1. get name, color, food + CSVParser + getCSVParser +get + CSVRecord + FileResource

import edu.duke.*;
import org.apache.commons.csv.*;
public class SimpleCsv1 {
    public void readFood(){
    FileResource fr = new FileResource();
    CSVParser parser = fr.getCSVParser();
        for(CSVRecord record : parser){
            System.out.print(record.get("Name")+" ");
            System.out.print(record.get("Favorite Color")+" ");
           // String num = record.get("Favorite Number");
            System.out.println(record.get("Favorite Food"));
        }
    }
}

// csv file details
// Name,Favorite Color,Favorite Food
// rajat,red,rajma
// raman,blue,rice
// tushar,green,ice cream
// manoj,yellow,milk

2. display the country which export coffee + method call(parser, item)


import edu.duke.*;
import org.apache.commons.csv.*;
    public class WhichCountriesExport {
        public void listExporters(CSVParser parser, String exportOfInterest){
            for(CSVRecord record : parser){
                String export = record.get("Exports");
                //if( export.indexOf(exportOfInterest)!= -1 )
                if( export.contains(exportOfInterest)){
                    String country = record.get("Country");
                    System.out.println(country);
                }
            }
        }
    public void whoExportCoffee(){
        FileResource fr = new FileResource();
        CSVParser parser = fr.getCSVParser();
        listExporters(parser,"coffee");

    }    
}

// csv file
// Country,Exports,Value(dollars)
// Macedonia,"tobacco, textiles","$3,41,000,000"
// Madagascar,"coffee, vanilla, shellfish","$864,800,000"
// Malawi,"tea, sugar, cotton, coffee","$1332 000,000"
// Malaysia,"semiconductors, wood","$231,300,000,000"

3. find country info, mt call( parser , country name)


import edu.duke.*;
import org.apache.commons.csv.*;
public class CountryExport2 {
//1- method
    public String countryInfo(CSVParser parser ,String searchcountry){
       String done = null;
       for(CSVRecord record : parser){
             String c1 = record.get("Country");
              if( c1.contains(searchcountry)){
                    String c = record.get("Country");
                    String e = record.get("Exports");
                    String v = record.get("Value (dollars)");                    
                    done = c+" : "+e+" : "+v;
                }
        }
        return done;         
    } 

    public void tester(){
    FileResource fr = new FileResource();
    CSVParser parser = fr.getCSVParser();
    System.out.println(countryInfo(parser,"Germany"));


    } 
}
// Country,Exports,Value(dollars)
// Macedonia,"tobacco, textiles","$3,41,000,000"
// Madagascar,"coffee, vanilla, shellfish","$864,800,000"
// Malawi,"tea, sugar, cotton, coffee","$1332 000,000"
// Malaysia,"semiconductors, wood","$231,300,000,000"

4. listExportersTwoProducts + mt(parser, item1 , item2)


import edu.duke.*;
import org.apache.commons.csv.*;
public class CountryExport2 {

    public void listExportersTwoProducts(CSVParser parser, String exportItem1, String exportItem2){
     for(CSVRecord record : parser){
             String c1 = record.get("Exports");
              if( c1.contains(exportItem1) && c1.contains(exportItem2) ){
                    String c = record.get("Country");
                    System.out.println(c);
                }
        }
    }

// method-4    

    public void tester(){
    FileResource fr = new FileResource();
    CSVParser parser = fr.getCSVParser();

    parser = fr.getCSVParser();
    listExportersTwoProducts(parser,"gold","diamonds");

    } 
}
// Country,Exports,Value(dollars)
// Macedonia,"tobacco, textiles","$3,41,000,000"
// Madagascar,"coffee, vanilla, shellfish","$864,800,000"
// Malawi,"tea, sugar, cotton, coffee","$1332 000,000"
// Malaysia,"semiconductors, wood","$231,300,000,000"

5. numberOfExporters + mt ( praser, money)

import edu.duke.*;
import org.apache.commons.csv.*;
public class CountryExport2 {

    public int numberOfExporters(CSVParser parser,String searchItem){
    int count = 0;    
        for(CSVRecord record : parser){
            String c1 = record.get("Exports");
                if(c1.contains(searchItem)){
                    count = count+1;
                }
        }
    return count;
    }

    public void tester(){
    FileResource fr = new FileResource();
    CSVParser parser = fr.getCSVParser();

    parser = fr.getCSVParser();
    int receiveVal = numberOfExporters(parser,"gold");   
    System.out.println(receiveVal);
    } 
}
// Country,Exports,Value(dollars)
// Macedonia,"tobacco, textiles","$3,41,000,000"
// Madagascar,"coffee, vanilla, shellfish","$864,800,000"
// Malawi,"tea, sugar, cotton, coffee","$1332 000,000"
// Malaysia,"semiconductors, wood","$231,300,000,000"

6. bigExporter mt(parser , money)

import edu.duke.*;
import org.apache.commons.csv.*;
public class CountryExport2 {

    public void bigExporter(CSVParser parser,String money){
        for(CSVRecord record:parser){     
            String c1 = record.get("Value (dollars)");
               if(c1.length() >= money.length()){
                 System.out.println(c1);
               }
        }    
    }

    public void tester(){
    FileResource fr = new FileResource();
    CSVParser parser = fr.getCSVParser();

    parser = fr.getCSVParser();
    bigExporter(parser,"$999,999,999,");   

    } 
}
// Country,Exports,Value(dollars)
// Macedonia,"tobacco, textiles","$3,41,000,000"
// Madagascar,"coffee, vanilla, shellfish","$864,800,000"
// Malawi,"tea, sugar, cotton, coffee","$1332 000,000"
// Malaysia,"semiconductors, wood","$231,300,000,000"

7. max value form a single csv file + new algo

import edu.duke.*;
import org.apache.commons.csv.*;
public class CSVMax {
    public CSVRecord hottestHourInFile(CSVParser parser ){
      CSVRecord largestSoFar = null; // for making pattern
        for(CSVRecord currentRow : parser){
          if(largestSoFar == null){ // if null,which is YES  
            largestSoFar = currentRow;// update largestSoFar to first value of CSV file, create current and previous value
              }
          else { // calculate if not 
            double currentTemp = Double.parseDouble(currentRow.get("TemperatureF"));// CURRENT 
            double largestTemp = Double.parseDouble(largestSoFar.get("TemperatureF"));// largest so far or PREVIOUS              
              if(currentTemp > largestTemp){
                largestSoFar = currentRow;
              }
          }    
        }
        return largestSoFar;    
    }
    public void testHottestDay (){
        FileResource fr = new FileResource("data/2015/weather-2015-01-02.csv");
        CSVRecord largest = hottestHourInFile(fr.getCSVParser());
        System.out.println("hottest temperature was "+largest.get("TemperatureF")+" at "+largest.get("TimeEST"));
    }
}

8. Multiple files + CSVRecord


import edu.duke.*;
import org.apache.commons.csv.*;
import java.io.File;

public class CSVMaxMultipleFile {
 public CSVRecord hottestHourInFile(CSVParser parser ){
  CSVRecord largestSoFar = null; // for making pattern
    for(CSVRecord currentRow : parser){
      if(largestSoFar == null){ // if null,which is YES  
        largestSoFar = currentRow;// set it to the first entry 
      }
      else { // calculate if not 
       double currentTemp = Double.parseDouble(currentRow.get("TemperatureF"));// current 
       double largestTemp = Double.parseDouble(largestSoFar.get("TemperatureF"));// largest so far                 
           if(currentTemp > largestTemp){
             largestSoFar = currentRow;
           }
       }    
      }
  return largestSoFar;    
}

// OPEN DIRECTORY FOR FILES
public CSVRecord hottestInManyDays(){
 CSVRecord largestSoFar = null;
 DirectoryResource dr = new DirectoryResource();
 for(File f :dr.selectedFiles()){
      FileResource fr = new FileResource(f);
      // FETCH FIRST FILE AND NOW SEND IT TO MT TO FIND THE HOTTEST HOUR
      CSVParser findfile = fr.getCSVParser();
      CSVRecord currentRow = hottestHourInFile(findfile);// get current and match it
  if(largestSoFar == null){
      largestSoFar = currentRow;
  }
  else{            
  double currentTemp = Double.parseDouble(currentRow.get("TemperatureF"));// current 
  double largestTemp = Double.parseDouble(largestSoFar.get("TemperatureF"));// largest so far              
   if(currentTemp > largestTemp){
       largestSoFar = currentRow;
   }
   }   
  }
    return largestSoFar;     
    }
public void testhottestInManyDays(){
     CSVRecord largest = hottestInManyDays();
     System.out.println("hottest temperature was "+largest.get("TemperatureF")+" at "+largest.get("DateUTC"));   
 }
}

9. make above code shorter

// remove duplicate code    
import edu.duke.*;
import org.apache.commons.csv.*;
import java.io.File;

public class MaxMultipleFileRefactor     {
    public CSVRecord hottestHourInFile(CSVParser parser ){
        CSVRecord largestSoFar = null; // for making pattern
            for(CSVRecord currentRow : parser){
              largestSoFar = getLargestOfTwo(currentRow, largestSoFar);
            }
        return largestSoFar;    
    }

    public CSVRecord getLargestOfTwo(CSVRecord currentRow, CSVRecord largestSoFar){

                if(largestSoFar == null){ // if null,which is YES  
                    largestSoFar = currentRow;// set it to the first entry 
                }
                else { // calculate if not 
                    double currentTemp = Double.parseDouble(currentRow.get("TemperatureF"));// current 
                    double largestTemp = Double.parseDouble(largestSoFar.get("TemperatureF"));// largest so far                 
                    if(currentTemp > largestTemp){
                        largestSoFar = currentRow;
                    }
                }    
     return largestSoFar;                  
        }

    public CSVRecord hottestInManyDays(){
        CSVRecord largestSoFar = null;
        DirectoryResource dr = new DirectoryResource();
        for(File f :dr.selectedFiles()){
         FileResource fr = new FileResource(f);
         CSVRecord currentRow = hottestHourInFile(fr.getCSVParser());
         largestSoFar = getLargestOfTwo(currentRow, largestSoFar);
        }
    return largestSoFar;     
    }

    public void testhottestInManyDays(){
        CSVRecord largest = hottestInManyDays();
        System.out.println("hottest temperature was "+largest.get("TemperatureF")+" at "+largest.get("DateUTC"));    
    }
}

10. lowest humidity

import edu.duke.*;
import org.apache.commons.csv.*;
import java.io.File;

public class LowestHumidityInFile1 {
public CSVRecord lowestHumidityInFile(CSVParser humidity){
    CSVRecord smallestSoFar = null; // for making pattern
            for(CSVRecord currentRow : humidity){
              smallestSoFar = getHumidityOfTwo(currentRow, smallestSoFar);
            }
        return smallestSoFar; 

}
    public void testLowestHumidityInFile(){
        FileResource fr1 = new FileResource("nc_weather/2014/weather-2014-01-20.csv");
        CSVRecord humidity = lowestHumidityInFile(fr1.getCSVParser());
//        System.out.println(humidity);
        String temp1 = humidity.get("Humidity");
        String temp2 = humidity.get("DateUTC");
        System.out.println("Lowest Humidity was "+temp1+ " at " +temp2);  
    }


     public CSVRecord getHumidityOfTwo(CSVRecord currentRow, CSVRecord humiditySoFar){  
        if(humiditySoFar == null){ // if null,which is YES  
            humiditySoFar = currentRow;// set it to the first entry 
        }
        else { // calculate if not 
            double currenthum = Double.parseDouble(currentRow.get("Humidity"));// current 
            double smallesthum = Double.parseDouble(humiditySoFar.get("Humidity"));// largest so far                 
            if(currenthum < smallesthum){
                humiditySoFar = currentRow;
            }
        }    
     return humiditySoFar;                  
    } 
}

11 . average temperature of a given file

import edu.duke.*;
import org.apache.commons.csv.*;
import java.io.File;
public class AverageTemperature1 {
    FileResource fr ;
    public double averageTemperatureInFile(CSVParser avgTemp){
        double averageSoFar = 0.0; // for making pattern
        int count=0;
            for(CSVRecord currentRow : avgTemp){
                double currentAvg = Double.parseDouble(currentRow.get("TemperatureF"));// curr
                averageSoFar = currentAvg + averageSoFar;
                count=count+1;
            }
            double xx = averageSoFar/count;
            return xx; 
    }
    public void testAverageTemperatureInFile(){
      FileResource fr2 = new FileResource("nc_weather/2014/weather-2014-01-20.csv");
      double avgTemp1 = averageTemperatureInFile(fr2.getCSVParser());   

    System.out.println("Average temperature in file is "+avgTemp1);
    }
    public CSVRecord getSmallestOfTwo(CSVRecord currentRow, CSVRecord smallestSoFar){   
        if(smallestSoFar == null){ // if null,which is YES  
            smallestSoFar = currentRow;// set it to the first entry 
        }
        else { // calculate if not 
            double currentTemp = Double.parseDouble(currentRow.get("TemperatureF"));// current 
            double smallestTemp = Double.parseDouble(smallestSoFar.get("TemperatureF"));// largest so far                 
            if(currentTemp < smallestTemp){
                smallestSoFar = currentRow;
            }
        }    
     return smallestSoFar;                  
    }       
}

12 .averageTemperatureWithHighHumidityInFile

import edu.duke.*;
import org.apache.commons.csv.*;
import java.io.File;
public class AverageTemperatureWithHighHumidityInFile1 {
    FileResource fr ;

    public double averageTemperatureWithHighHumidityInFile(CSVParser avgTemp){
        double averageSoFar = 0.0; // for making pattern
        int count=0;
        double currentAvg;
            for(CSVRecord currentRow : avgTemp){
                double avghumifdity = Double.parseDouble(currentRow.get("Humidity"));
                if(avghumifdity>=80){
                    currentAvg = Double.parseDouble(currentRow.get("TemperatureF"));// curr
                    averageSoFar = currentAvg + averageSoFar;
                    count=count+1;
                }  
                else{
                }
            }
            double xx = averageSoFar/count;
            return xx; 
    }

    public void testAverageTemperatureWithHighHumidityInFile(){
      double avgTemp1 = 0.0;   
      FileResource fr2 = new FileResource("nc_weather/2014/weather-2014-01-20.csv");
      avgTemp1 = averageTemperatureWithHighHumidityInFile(fr2.getCSVParser());   
      if(avgTemp1==0.00){
       System.out.println("No temperatures with that humidity");
      }
      else{
       System.out.println("Average temperature in file is "+avgTemp1);
      }
    }

    public CSVRecord getSmallestOfTwo(CSVRecord currentRow, CSVRecord smallestSoFar){    
        if(smallestSoFar == null){ // if null,which is YES  
            smallestSoFar = currentRow;// set it to the first entry 
        }
        else { // calculate if not 
            double currentTemp = Double.parseDouble(currentRow.get("TemperatureF"));// current 
            double smallestTemp = Double.parseDouble(smallestSoFar.get("TemperatureF"));// largest so far                 
            if(currentTemp < smallestTemp){
                smallestSoFar = currentRow;
            }
        }    
     return smallestSoFar;                  
    }    

}