GetLatLonCokey.java [tools/GetLatLonCokey/src/getlatloncokey] Revision: 69ab6eb5379799363ea8548530ac0cb331f66446  Date: Fri Jan 10 11:03:01 MST 2020
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package getlatloncokey;

import csip.ServiceException;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Arrays;
import org.codehaus.jettison.json.JSONException;
import soils.Component;
import soils.MapUnit;
import soils.db.tables.TableComponent;
import soils.db.tables.TableMapUnit;

/**
 *
 * @author <a href="mailto:shaun.case@colostate.edu">Shaun Case</a>
 */
public class GetLatLonCokey {

  private static final String SIM_OUT_FILE = "sim_totals.csv";
  private static final String SIM_ANNUAL_OUT_FILE = "sim_annual_totals.csv";
  private static final String SIM_MONTHLY_OUT_FILE = "sim_monthly_totals.csv";

  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) throws IOException {
    ArrayList<String> fields = new ArrayList<>();

    MapUnit.setDefaultUsedColumns(new ArrayList<>(Arrays.asList(TableMapUnit.MUKEY, TableMapUnit.MUACRES)));
    Component.setDefaultUsedColumns(new ArrayList<>(Arrays.asList(TableComponent.COKEY, TableComponent.COMPPCT_R_NAME)));

    FileOutputStream outFile = new FileOutputStream(SIM_OUT_FILE);
    BufferedWriter simWriter = new BufferedWriter(new OutputStreamWriter(outFile));

    FileOutputStream annualOutFile = new FileOutputStream(SIM_ANNUAL_OUT_FILE);
    BufferedWriter annualWriter = new BufferedWriter(new OutputStreamWriter(annualOutFile));

    FileOutputStream monthlyOutFile = new FileOutputStream(SIM_MONTHLY_OUT_FILE);
    BufferedWriter monthlyWriter = new BufferedWriter(new OutputStreamWriter(monthlyOutFile));

    //  Write header
    if (args.length >= 1) {
      String tFields = args[0].trim();
      String[] fieldList = tFields.split(",");

      for (String field : fieldList) {
        fields.add(field.trim().toLowerCase());
      }
    } else {
      fields.add("latitude");
      fields.add("longitude");
      fields.add("cokey");
    }

    File folder = new File(new java.io.File(".").getCanonicalPath());
    File[] listOfFiles = folder.listFiles();

    boolean wroteHeader = false;

    for (File file : listOfFiles) {
      if (file.isFile()) {
        if (file.getName().contains(".zip")) {
          System.out.println(file.getName());

          CliWindSoilFile cwsFile;
          try {
            cwsFile = new CliWindSoilFile(file, fields, wroteHeader);
            cwsFile.writeCSV(simWriter, annualWriter, monthlyWriter);
            wroteHeader = true;
          } catch (JSONException | ServiceException ex) {
            System.err.println(ex);
          }
        }

      }
    }

    simWriter.close();
  }
}