
// CSVReader.java
// Andrew Davison, ad@coe.psu.ac.th, Nov. 2022

/* Read in a specified CSV file, which is assumed to 
   have a header line, and list it.

    Usage:
      > compile CSVReader.java
      > run CSVReader  <fnm>
    e.g.
      > run CSVReader CCTVCameras.csv

*/


import java.io.*;
import java.util.*;

import org.apache.commons.csv.*;


public class CSVReader 
{
  public static void main(String[] args)
  {
    if (args.length != 1) {
      System.out.println("Usage: run CSVReader <fnm>");
      return;
    }

    try {
      Reader in = new FileReader(args[0]);

      CSVFormat.Builder builder = CSVFormat.DEFAULT.builder();
      CSVFormat format = builder.setHeader().
                           setSkipHeaderRecord(true).
                           setTrim(true).build();

      CSVParser parser = new CSVParser(in, format);

      System.out.println( parser.getHeaderNames());

      for (CSVRecord record : parser) {   // a few ways to print a record
        // System.out.println(record);
        System.out.println(record.toList());
        // System.out.println(record.get(0));       // print 1st column
        // System.out.println(record.get("City"));  // print "City" column
      }
    }
    catch(IOException e)
    { System.out.println(e);  }
  }  // end of main()


} // end of CSVReader class