Displaying differences for changeset
 
display as  

tools/GetLatLonCokey/src/getlatloncokey/CliWindSoilFile.java

@@ -45,643 +45,642 @@
  */
 public class CliWindSoilFile {
 
-    protected static final String SOILS_RETURN = "soils.json";
-    protected static final String SOILS_REQUEST = "request.json";
-    protected static final String CLIMATE_FILE = ".cli";
-    protected static final String WIND_FILE = ".win";
-    protected static final String LATITUDE = "latitude";
-    protected static final String LONGITUDE = "longitude";
-    protected static final String COKEY = TableComponent.COKEY;
-    protected static final String SLOPE_R = TableComponent.SLOPE_R_NAME;
-    protected static final String LENGTH_R = TableComponentCalculations.LENGTH_R_NAME;
-    protected static final String WATER_CLAY_TOTAL = "water_" + TableHorizon.CLAYTOTAL_R;
-    protected static final String WATER_SAND_TOTAL = "water_" + TableHorizon.SANDTOTAL_R_NAME;
-    protected static final String WATER_OM_R = "water_" + TableHorizon.OM_R_NAME;
-    protected static final String WIND_CLAY_TOTAL = "wind_" + TableHorizon.CLAYTOTAL_R;
-    protected static final String WIND_SAND_TOTAL = "wind_" + TableHorizon.SANDTOTAL_R_NAME;
-    protected static final String WIND_OM_R = "wind_" + TableHorizon.OM_R_NAME;
-    protected static final String KFFACT = TableComponentCalculations.KFFACT_NAME;
-    protected static final String TILLAGE_LAYER_CLAY_TOTAL = TableComponentCalculations.TILLAGE_LAYER_CLAY_TOTAL;
+  protected static final String SOILS_RETURN = "soils.json";
+  protected static final String SOILS_REQUEST = "request.json";
+  protected static final String CLIMATE_FILE = ".cli";
+  protected static final String WIND_FILE = ".win";
+  protected static final String LATITUDE = "latitude";
+  protected static final String LONGITUDE = "longitude";
+  protected static final String COKEY = TableComponent.COKEY;
+  protected static final String SLOPE_R = TableComponent.SLOPE_R_NAME;
+  protected static final String LENGTH_R = TableComponentCalculations.LENGTH_R_NAME;
+  protected static final String WATER_CLAY_TOTAL = "water_" + TableHorizon.CLAYTOTAL_R;
+  protected static final String WATER_SAND_TOTAL = "water_" + TableHorizon.SANDTOTAL_R_NAME;
+  protected static final String WATER_OM_R = "water_" + TableHorizon.OM_R_NAME;
+  protected static final String WIND_CLAY_TOTAL = "wind_" + TableHorizon.CLAYTOTAL_R;
+  protected static final String WIND_SAND_TOTAL = "wind_" + TableHorizon.SANDTOTAL_R_NAME;
+  protected static final String WIND_OM_R = "wind_" + TableHorizon.OM_R_NAME;
+  protected static final String KFFACT = TableComponentCalculations.KFFACT_NAME;
+  protected static final String TILLAGE_LAYER_CLAY_TOTAL = TableComponentCalculations.TILLAGE_LAYER_CLAY_TOTAL;
 
-    protected static final String SIM_AVG_PRECIP = "100yr_avg_precip";
-    protected static final String SIM_OBS_AVG_PRECIP = "100yr_obs_avg_precip";
-    protected static final String SIM_AVG_WIND_ENERGY = "wind_energy_100yr_avg";
-    protected static final String ANNUAL_AVG_PRECIP = "annual_avg_precip";
-    protected static final String ANNUAL_OBS_AVG_PRECIP = "annual_obs_avg_precip";
-    protected static final String ANNUAL_WIND_ENERGY_AVG = "annual_wind_energy_avg";
-    protected static final String ANNUAL_WIND_ENEGERY_AVG_NON_ZERO = "annual_wind_energy_avg_non_zero";
-    protected static final String ANNUAL_WIND_ENERGY_AVG_PEAK = "annual_wind_energy_avg_peak";
-    protected static final String MONTHLY_AVG_PRECIP = "monthly_avg_precip";
-    protected static final String MONTLY_OBS_AVG_PRECIP = "monthly_obs_avg_precip";
-    protected static final String MONTHLY_WIND_ENGERY_AVG = "monthly_wind_energy_avg";
-    protected static final String MONTHLY_WIND_ENERGY_AVG_NON_ZERO = "monthly_wind_energy_avg_non_zero";
-    protected static final String MONTHLY_WIND_ENERGY_AVG_PEAK = "monthly_wind_energy_avg_peak";
+  protected static final String SIM_AVG_PRECIP = "100yr_avg_precip";
+  protected static final String SIM_OBS_AVG_PRECIP = "100yr_obs_avg_precip";
+  protected static final String SIM_AVG_WIND_ENERGY = "wind_energy_100yr_avg";
+  protected static final String ANNUAL_AVG_PRECIP = "annual_avg_precip";
+  protected static final String ANNUAL_OBS_AVG_PRECIP = "annual_obs_avg_precip";
+  protected static final String ANNUAL_WIND_ENERGY_AVG = "annual_wind_energy_avg";
+  protected static final String ANNUAL_WIND_ENEGERY_AVG_NON_ZERO = "annual_wind_energy_avg_non_zero";
+  protected static final String ANNUAL_WIND_ENERGY_AVG_PEAK = "annual_wind_energy_avg_peak";
+  protected static final String MONTHLY_AVG_PRECIP = "monthly_avg_precip";
+  protected static final String MONTLY_OBS_AVG_PRECIP = "monthly_obs_avg_precip";
+  protected static final String MONTHLY_WIND_ENGERY_AVG = "monthly_wind_energy_avg";
+  protected static final String MONTHLY_WIND_ENERGY_AVG_NON_ZERO = "monthly_wind_energy_avg_non_zero";
+  protected static final String MONTHLY_WIND_ENERGY_AVG_PEAK = "monthly_wind_energy_avg_peak";
 
-    public static final ArrayList<String> soilFields = new ArrayList<>(Arrays.asList(
-            LATITUDE,
-            LONGITUDE,
-            COKEY,
-            KFFACT,
-            SLOPE_R,
-            LENGTH_R,
-            WATER_CLAY_TOTAL,
-            WATER_SAND_TOTAL,
-            WATER_OM_R,
-            WIND_CLAY_TOTAL,
-            WIND_SAND_TOTAL,
-            WIND_OM_R,
-            TILLAGE_LAYER_CLAY_TOTAL
-    ));
+  public static final ArrayList<String> soilFields = new ArrayList<>(Arrays.asList(
+      LATITUDE,
+      LONGITUDE,
+      COKEY,
+      KFFACT,
+      SLOPE_R,
+      LENGTH_R,
+      WATER_CLAY_TOTAL,
+      WATER_SAND_TOTAL,
+      WATER_OM_R,
+      WIND_CLAY_TOTAL,
+      WIND_SAND_TOTAL,
+      WIND_OM_R,
+      TILLAGE_LAYER_CLAY_TOTAL
+  ));
 
-    public static final ArrayList<String> simTotalFields = new ArrayList<>(Arrays.asList(    
-            LATITUDE,
-            LONGITUDE,
-            COKEY,
-            KFFACT,
-            SLOPE_R,
-            LENGTH_R,
-            WATER_CLAY_TOTAL,
-            WATER_SAND_TOTAL,
-            WATER_OM_R,
-            WIND_CLAY_TOTAL,
-            WIND_SAND_TOTAL,
-            WIND_OM_R,
-            TILLAGE_LAYER_CLAY_TOTAL,            
-            SIM_AVG_PRECIP,
-            SIM_OBS_AVG_PRECIP,
-            SIM_AVG_WIND_ENERGY
-    ));
+  public static final ArrayList<String> simTotalFields = new ArrayList<>(Arrays.asList(
+      LATITUDE,
+      LONGITUDE,
+      COKEY,
+      KFFACT,
+      SLOPE_R,
+      LENGTH_R,
+      WATER_CLAY_TOTAL,
+      WATER_SAND_TOTAL,
+      WATER_OM_R,
+      WIND_CLAY_TOTAL,
+      WIND_SAND_TOTAL,
+      WIND_OM_R,
+      TILLAGE_LAYER_CLAY_TOTAL,
+      SIM_AVG_PRECIP,
+      SIM_OBS_AVG_PRECIP,
+      SIM_AVG_WIND_ENERGY
+  ));
 
-    public static final ArrayList<String> annualAverageFields = new ArrayList<>(Arrays.asList(
-            LATITUDE,
-            LONGITUDE,
-            COKEY,            
-            ANNUAL_AVG_PRECIP,
-            ANNUAL_OBS_AVG_PRECIP,
-            ANNUAL_WIND_ENERGY_AVG,
-            ANNUAL_WIND_ENEGERY_AVG_NON_ZERO,
-            ANNUAL_WIND_ENERGY_AVG_PEAK
-    ));
+  public static final ArrayList<String> annualAverageFields = new ArrayList<>(Arrays.asList(
+      LATITUDE,
+      LONGITUDE,
+      COKEY,
+      ANNUAL_AVG_PRECIP,
+      ANNUAL_OBS_AVG_PRECIP,
+      ANNUAL_WIND_ENERGY_AVG,
+      ANNUAL_WIND_ENEGERY_AVG_NON_ZERO,
+      ANNUAL_WIND_ENERGY_AVG_PEAK
+  ));
 
-    public static final ArrayList<String> monthlyAverageFields = new ArrayList<>(Arrays.asList(
-            LATITUDE,
-            LONGITUDE,
-            COKEY,            
-            MONTHLY_AVG_PRECIP,
-            MONTLY_OBS_AVG_PRECIP,
-            MONTHLY_WIND_ENGERY_AVG,
-            MONTHLY_WIND_ENERGY_AVG_NON_ZERO,
-            MONTHLY_WIND_ENERGY_AVG_PEAK
-    ));
+  public static final ArrayList<String> monthlyAverageFields = new ArrayList<>(Arrays.asList(
+      LATITUDE,
+      LONGITUDE,
+      COKEY,
+      MONTHLY_AVG_PRECIP,
+      MONTLY_OBS_AVG_PRECIP,
+      MONTHLY_WIND_ENGERY_AVG,
+      MONTHLY_WIND_ENERGY_AVG_NON_ZERO,
+      MONTHLY_WIND_ENERGY_AVG_PEAK
+  ));
 
-    protected JSONArray soilsReturn;
-    protected JSONArray returnVal;
-    protected JSONObject request;
-    protected Double latitude = Double.NaN, longitude = Double.NaN;
-    protected String cokey = "";
-    protected soils.AoA aoa;
-    protected ArrayList<String> simFields;
-    protected ArrayList<String> annualFields;
-    protected ArrayList<String> monthlyFields;
-    protected Component maxComponent = null;
-    protected MapUnit maxMapUnit = null;
-    protected HashMap<String, Object> fieldData = new HashMap<>();
-    protected CligenData climateData;
-    protected WindGenData windData;
-    protected TableHorizon waterHorizon;
-    protected TableHorizon windHorizon;
-    protected boolean wroteHeader = false;
-    protected ArrayList<String> fields;
+  protected JSONArray soilsReturn;
+  protected JSONArray returnVal;
+  protected JSONObject request;
+  protected Double latitude = Double.NaN, longitude = Double.NaN;
+  protected String cokey = "";
+  protected soils.AoA aoa;
+  protected ArrayList<String> simFields;
+  protected ArrayList<String> annualFields;
+  protected ArrayList<String> monthlyFields;
+  protected Component maxComponent = null;
+  protected MapUnit maxMapUnit = null;
+  protected HashMap<String, Object> fieldData = new HashMap<>();
+  protected CligenData climateData;
+  protected WindGenData windData;
+  protected TableHorizon waterHorizon;
+  protected TableHorizon windHorizon;
+  protected boolean wroteHeader = false;
+  protected ArrayList<String> fields;
 
-    public CliWindSoilFile(File filename, ArrayList<String> _fields, boolean _wroteHeader) throws IOException, JSONException, ServiceException {
-        boolean gotSoilsResponse = false;
-        boolean gotRequest = false;
-        boolean gotWind = false;
-        boolean gotClimate = false;
-        boolean gotAllFields = true;
+  public CliWindSoilFile(File filename, ArrayList<String> _fields, boolean _wroteHeader) throws IOException, JSONException, ServiceException {
+    boolean gotSoilsResponse = false;
+    boolean gotRequest = false;
+    boolean gotWind = false;
+    boolean gotClimate = false;
+    boolean gotAllFields = true;
 
-        wroteHeader = _wroteHeader;
-        
-        if (null == _fields) {
-            throw new ServiceException("No field names specified for extraction.");
-        } else {
-            fields = _fields;
+    wroteHeader = _wroteHeader;
+
+    if (null == _fields) {
+      throw new ServiceException("No field names specified for extraction.");
+    } else {
+      fields = _fields;
+    }
+
+    //simTotalFields.
+    InputStream zipFile = new FileInputStream(filename);
+
+    try (ZipInputStream zin = new ZipInputStream(zipFile)) {
+      ZipEntry entry;
+
+      while ((entry = zin.getNextEntry()) != null) {
+        if (entry.getName().contains(SOILS_RETURN) && !gotSoilsResponse) {
+          returnVal = new JSONArray(readInputFile(zin));
+          //soilsReturn = returnVal.getJSONArray(KEY_RESULT).getJSONArray(0);
+
+          Map<String, JSONObject> inputMap = JSONUtils.preprocess(returnVal);
+          soils.AoA.setRequiredInputs(new ArrayList<>(Arrays.asList(AoA.MAP_UNIT_LIST)),
+              null, null, null);
+
+          MapUnit.setDefaultUsedColumns(new ArrayList<>(Arrays.asList(TableMapUnit.MUKEY, TableMapUnitCalculations.AREA_NAME, SoilsData.MAPUNIT_COMPONENT_LIST_NAME)));
+          Component.setDefaultUsedColumns(new ArrayList<>(Arrays.asList(TableComponent.COKEY, TableComponent.SLOPE_R_NAME,
+              TableComponent.HYDGRP_NAME, TableComponent.COMPPCT_R_NAME,
+              TableComponentCalculations.COMP_AREA_NAME, TableComponentCalculations.LENGTH_R_NAME, TableComponentCalculations.AREA_PCT_NAME,
+              TableComponentCalculations.TILLAGE_LAYER_CLAY_TOTAL, TableComponentCalculations.KFFACT_NAME)));
+
+          aoa = new soils.AoA(inputMap);
+
+          if (aoa.getMapUnits().size() <= 0) {
+            throw new ServiceException("Mapunits returned for this AoA did not match expected number of 1.  Mapunit size is: " + aoa.getMapUnits().size());
+          }
+
+          maxMapUnit = null;
+          for (String mukey : aoa.getMapUnits().keySet()) {
+            MapUnit mapunit = aoa.getMapUnits().get(mukey);
+            if (null == maxMapUnit) {
+              maxMapUnit = mapunit;
+            } else {
+              if (mapunit.area() > maxMapUnit.area()) {
+                maxMapUnit = mapunit;
+              }
+            }
+          }
+
+          maxComponent = null;
+          if (null != maxMapUnit) {
+            for (String cokey : maxMapUnit.components().keySet()) {
+              Component component = maxMapUnit.components().get(cokey);
+              if (null == maxComponent) {
+                maxComponent = component;
+              } else {
+                if (component.area_pct() > maxComponent.area_pct()) {
+                  maxComponent = component;
+                  maxComponent.mukey(maxMapUnit.mukey());
+                }
+              }
+            }
+          } else {
+            throw new ServiceException("No max mapunit was found.");
+          }
+          if (null != maxComponent) {
+            cokey = maxComponent.cokey();
+            JSONArray map_units = JSONUtils.getJSONArrayParam(inputMap, AoA.MAP_UNIT_LIST);
+            for (int mapUnitIndex = 0; mapUnitIndex < map_units.length(); mapUnitIndex++) {
+              JSONArray map_unit = map_units.getJSONArray(mapUnitIndex);
+
+              Map<String, JSONObject> tmap_unit = JSONUtils.preprocess(map_unit);
+
+              String mukey = JSONUtils.getStringParam(tmap_unit, TableMapUnit.MUKEY, "");
+              if (!mukey.isEmpty()) {
+                if (mukey.equalsIgnoreCase(maxMapUnit.mukey())) {
+                  JSONArray components = JSONUtils.getJSONArrayParam(tmap_unit, MAPUNIT_COMPONENT_LIST_NAME);
+
+                  for (int componentIndex = 0; componentIndex < components.length(); componentIndex++) {
+                    JSONArray component = components.getJSONArray(componentIndex);
+
+                    Map<String, JSONObject> tcomponent = JSONUtils.preprocess(component);
+
+                    String cokey = JSONUtils.getStringParam(tcomponent, TableComponent.COKEY, "");
+                    if (!cokey.isEmpty()) {
+                      if (cokey.equalsIgnoreCase(maxComponent.cokey())) {
+                        JSONArray waterHorizons = JSONUtils.getJSONArrayParam(tcomponent, "water horizons");
+                        JSONArray windHorizons = JSONUtils.getJSONArrayParam(tcomponent, "wind horizons");
+                        if (waterHorizons.length() >= 1) {
+                          JSONArray horizon = waterHorizons.getJSONArray(0);
+
+                          waterHorizon = new TableHorizon();
+                          waterHorizon.setUsedColumns(new ArrayList<>(Arrays.asList(
+                              TableHorizon.CHKEY_NAME, TableHorizon.SANDTOTAL_R_NAME,
+                              TableHorizon.SILTTOTAL_R, TableHorizon.CLAYTOTAL_R, TableHorizon.OM_R_NAME,
+                              TableHorizon.HZTHK_R_NAME, TableHorizon.HZDEPB_R_NAME, TableHorizon.HZDEPT_R_NAME,
+                              TableHorizonCalculations.FRAGVOL_R_NAME
+                          )));
+                          Map<String, JSONObject> horizonMap = JSONUtils.preprocess(horizon);
+
+                          waterHorizon.readValuesFromJSON(horizonMap);
+                          waterHorizon.cokey(cokey);
+                        }
+
+                        if (windHorizons.length() >= 1) {
+                          JSONArray horizon = windHorizons.getJSONArray(0);
+
+                          windHorizon = new TableHorizon();
+                          windHorizon.setUsedColumns(new ArrayList<>(Arrays.asList(
+                              TableHorizon.CHKEY_NAME, TableHorizon.SANDTOTAL_R_NAME,
+                              TableHorizon.SILTTOTAL_R, TableHorizon.CLAYTOTAL_R, TableHorizon.OM_R_NAME,
+                              TableHorizon.HZTHK_R_NAME, TableHorizon.HZDEPB_R_NAME, TableHorizon.HZDEPT_R_NAME,
+                              TableHorizonCalculations.FRAGVOL_R_NAME
+                          )));
+                          Map<String, JSONObject> horizonMap = JSONUtils.preprocess(horizon);
+
+                          windHorizon.readValuesFromJSON(horizonMap);
+                          windHorizon.cokey(cokey);
+                        }
+
+                        if ((null != windHorizon) && (null != waterHorizon)) {
+                          gotSoilsResponse = true;
+                        }
+
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
         }
 
-        //simTotalFields.
-        InputStream zipFile = new FileInputStream(filename);
+        if (entry.getName().contains(SOILS_REQUEST) && !gotRequest) {
+          request = new JSONObject(readInputFile(zin));
+          String coordinates = request.getString("coordinates");
+          String type = request.getString("type");
 
-        try (ZipInputStream zin = new ZipInputStream(zipFile)) {
-            ZipEntry entry;
-
-            while ((entry = zin.getNextEntry()) != null) {
-                if (entry.getName().contains(SOILS_RETURN) && !gotSoilsResponse) {
-                    returnVal = new JSONArray(readInputFile(zin));
-                    //soilsReturn = returnVal.getJSONArray(KEY_RESULT).getJSONArray(0);
-
-                    Map<String, JSONObject> inputMap = JSONUtils.preprocess(returnVal);
-                    soils.AoA.setRequiredInputs(new ArrayList<>(Arrays.asList(AoA.MAP_UNIT_LIST)),
-                            null, null, null);
-
-                    MapUnit.setDefaultUsedColumns(new ArrayList<>(Arrays.asList(TableMapUnit.MUKEY, TableMapUnitCalculations.AREA_NAME, SoilsData.MAPUNIT_COMPONENT_LIST_NAME)));
-                    Component.setDefaultUsedColumns(new ArrayList<>(Arrays.asList(TableComponent.COKEY, TableComponent.SLOPE_R_NAME,
-                            TableComponent.HYDGRP_NAME, TableComponent.COMPPCT_R_NAME,
-                            TableComponentCalculations.COMP_AREA_NAME, TableComponentCalculations.LENGTH_R_NAME, TableComponentCalculations.AREA_PCT_NAME,
-                            TableComponentCalculations.TILLAGE_LAYER_CLAY_TOTAL, TableComponentCalculations.KFFACT_NAME)));
-
-                    aoa = new soils.AoA(inputMap);
-
-                    if (aoa.getMapUnits().size() <= 0) {
-                        throw new ServiceException("Mapunits returned for this AoA did not match expected number of 1.  Mapunit size is: " + aoa.getMapUnits().size());
-                    }
-
-                    maxMapUnit = null;
-                    for (String mukey : aoa.getMapUnits().keySet()) {
-                        MapUnit mapunit = aoa.getMapUnits().get(mukey);
-                        if (null == maxMapUnit) {
-                            maxMapUnit = mapunit;
-                        } else {
-                            if (mapunit.area() > maxMapUnit.area()) {
-                                maxMapUnit = mapunit;
-                            }
-                        }
-                    }
-
-                    maxComponent = null;
-                    if (null != maxMapUnit) {
-                        for (String cokey : maxMapUnit.components().keySet()) {
-                            Component component = maxMapUnit.components().get(cokey);
-                            if (null == maxComponent) {
-                                maxComponent = component;
-                            } else {
-                                if (component.area_pct() > maxComponent.area_pct()) {
-                                    maxComponent = component;
-                                    maxComponent.mukey(maxMapUnit.mukey());
-                                }
-                            }
-                        }
-                    } else {
-                        throw new ServiceException("No max mapunit was found.");
-                    }
-                    if (null != maxComponent) {
-                        cokey = maxComponent.cokey();
-                        JSONArray map_units = JSONUtils.getJSONArrayParam(inputMap, AoA.MAP_UNIT_LIST);
-                        for (int mapUnitIndex = 0; mapUnitIndex < map_units.length(); mapUnitIndex++) {
-                            JSONArray map_unit = map_units.getJSONArray(mapUnitIndex);
-
-                            Map<String, JSONObject> tmap_unit = JSONUtils.preprocess(map_unit);
-
-                            String mukey = JSONUtils.getStringParam(tmap_unit, TableMapUnit.MUKEY, "");
-                            if (!mukey.isEmpty()) {
-                                if (mukey.equalsIgnoreCase(maxMapUnit.mukey())) {
-                                    JSONArray components = JSONUtils.getJSONArrayParam(tmap_unit, MAPUNIT_COMPONENT_LIST_NAME);
-
-                                    for (int componentIndex = 0; componentIndex < components.length(); componentIndex++) {
-                                        JSONArray component = components.getJSONArray(componentIndex);
-
-                                        Map<String, JSONObject> tcomponent = JSONUtils.preprocess(component);
-
-                                        String cokey = JSONUtils.getStringParam(tcomponent, TableComponent.COKEY, "");
-                                        if (!cokey.isEmpty()) {
-                                            if (cokey.equalsIgnoreCase(maxComponent.cokey())) {
-                                                JSONArray waterHorizons = JSONUtils.getJSONArrayParam(tcomponent, "water horizons");
-                                                JSONArray windHorizons = JSONUtils.getJSONArrayParam(tcomponent, "wind horizons");
-                                                if (waterHorizons.length() >= 1) {
-                                                    JSONArray horizon = waterHorizons.getJSONArray(0);
-
-                                                    waterHorizon = new TableHorizon();
-                                                    waterHorizon.setUsedColumns(new ArrayList<>(Arrays.asList(
-                                                            TableHorizon.CHKEY_NAME, TableHorizon.SANDTOTAL_R_NAME,
-                                                            TableHorizon.SILTTOTAL_R, TableHorizon.CLAYTOTAL_R, TableHorizon.OM_R_NAME,
-                                                            TableHorizon.HZTHK_R_NAME, TableHorizon.HZDEPB_R_NAME, TableHorizon.HZDEPT_R_NAME,
-                                                            TableHorizonCalculations.FRAGVOL_R_NAME
-                                                    )));
-                                                    Map<String, JSONObject> horizonMap = JSONUtils.preprocess(horizon);
-
-                                                    waterHorizon.readValuesFromJSON(horizonMap);
-                                                    waterHorizon.cokey(cokey);
-                                                }
-
-                                                if (windHorizons.length() >= 1) {
-                                                    JSONArray horizon = windHorizons.getJSONArray(0);
-
-                                                    windHorizon = new TableHorizon();
-                                                    windHorizon.setUsedColumns(new ArrayList<>(Arrays.asList(
-                                                            TableHorizon.CHKEY_NAME, TableHorizon.SANDTOTAL_R_NAME,
-                                                            TableHorizon.SILTTOTAL_R, TableHorizon.CLAYTOTAL_R, TableHorizon.OM_R_NAME,
-                                                            TableHorizon.HZTHK_R_NAME, TableHorizon.HZDEPB_R_NAME, TableHorizon.HZDEPT_R_NAME,
-                                                            TableHorizonCalculations.FRAGVOL_R_NAME
-                                                    )));
-                                                    Map<String, JSONObject> horizonMap = JSONUtils.preprocess(horizon);
-
-                                                    windHorizon.readValuesFromJSON(horizonMap);
-                                                    windHorizon.cokey(cokey);
-                                                }
-
-                                                if ((null != windHorizon) && (null != waterHorizon)) {
-                                                    gotSoilsResponse = true;
-                                                }
-
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-
-                if (entry.getName().contains(SOILS_REQUEST) && !gotRequest) {
-                    request = new JSONObject(readInputFile(zin));
-                    String coordinates = request.getString("coordinates");
-                    String type = request.getString("type");
-
-                    if (type.equalsIgnoreCase("point")) {
-                        coordinates = coordinates.replace("[", " ");
-                        coordinates = coordinates.replace("]", " ");
-                        String[] coord = coordinates.split(",");
-                        if (coord.length == 2) {
-                            longitude = Double.parseDouble(coord[0]);
-                            latitude = Double.parseDouble(coord[1]);
-                            gotRequest = true;
-                        }
-                    }
-                }
-
-                if (entry.getName().contains(CLIMATE_FILE) && !gotClimate) {
-                    climateData = new CligenData(readInputFile(zin));
-                    if (!climateData.badClimateData()) {
-                        gotClimate = true;
-                    }
-                }
-
-                if (entry.getName().contains(WIND_FILE) && !gotWind) {
-                    windData = new WindGenData(readInputFile(zin));
-                    if (!windData.badWindData()) {
-                        gotWind = true;
-                    }
-                }
-
-                if (gotRequest && gotSoilsResponse && gotClimate && gotWind) {
-                    break;
-                }
+          if (type.equalsIgnoreCase("point")) {
+            coordinates = coordinates.replace("[", " ");
+            coordinates = coordinates.replace("]", " ");
+            String[] coord = coordinates.split(",");
+            if (coord.length == 2) {
+              longitude = Double.parseDouble(coord[0]);
+              latitude = Double.parseDouble(coord[1]);
+              gotRequest = true;
             }
-
-            if (gotRequest && gotSoilsResponse && gotClimate && gotWind) {
-                for (String field : fields) {
-                    switch (field) {
-                        case LONGITUDE:
-                            fieldData.put(LONGITUDE, longitude);
-                            break;
-                            
-                        case LATITUDE:
-                            fieldData.put(LATITUDE, latitude);
-                            break;
-                            
-                        case COKEY:
-                            fieldData.put(COKEY, cokey);
-                            break;
-
-                        case WATER_CLAY_TOTAL:
-                            fieldData.put(WATER_CLAY_TOTAL, waterHorizon.claytotal_r());
-                            break;
-
-                        case WIND_CLAY_TOTAL:
-                            fieldData.put(WIND_CLAY_TOTAL, windHorizon.claytotal_r());
-                            break;
-
-                        case WATER_SAND_TOTAL:
-                            fieldData.put(WATER_SAND_TOTAL, waterHorizon.sandtotal_r());
-                            break;
-
-                        case WIND_SAND_TOTAL:
-                            fieldData.put(WIND_SAND_TOTAL, windHorizon.sandtotal_r());
-                            break;
-
-                        case KFFACT:
-                            fieldData.put(KFFACT, maxComponent.calculated_kffact());
-                            break;
-
-                        case WATER_OM_R:
-                            fieldData.put(WATER_OM_R, waterHorizon.om_r());
-                            break;
-
-                        case WIND_OM_R:
-                            fieldData.put(WIND_OM_R, windHorizon.om_r());
-                            break;
-
-                        case SLOPE_R:
-                            fieldData.put(SLOPE_R, maxComponent.slope_r());
-                            break;
-
-                        case LENGTH_R:
-                            fieldData.put(LENGTH_R, maxComponent.length_r());
-                            break;
-
-                        case TILLAGE_LAYER_CLAY_TOTAL:
-                            fieldData.put(TILLAGE_LAYER_CLAY_TOTAL, maxComponent.calculated_tl_claytotal());
-                            break;
-
-                        case ANNUAL_AVG_PRECIP:
-                            for (int i = 0; i < climateData.yearsInFile(); i++) {
-                                fieldData.put(ANNUAL_AVG_PRECIP + "_" + (i + 1), climateData.yearlySummary(i, CligenData.PRCP_INDEX));
-                            }
-                            break;
-
-                        case SIM_OBS_AVG_PRECIP:
-                            fieldData.put(SIM_OBS_AVG_PRECIP, climateData.annualAvgPrecip());
-                            break;
-
-                        case ANNUAL_WIND_ENERGY_AVG:
-                            for (int i = 0; i < windData.yearsInFile(); i++) {
-                                fieldData.put(ANNUAL_WIND_ENERGY_AVG + "_" + (i + 1), windData.yearlyAverage(i));
-                            }
-                            break;
-
-                        case SIM_AVG_WIND_ENERGY:
-                            fieldData.put(SIM_AVG_WIND_ENERGY, windData.simulationAverage());
-                            break;
-
-                        case SIM_AVG_PRECIP:
-                            fieldData.put(SIM_AVG_PRECIP, climateData.simulationAverage(PRCP_INDEX));
-                            break;
-
-                        case ANNUAL_OBS_AVG_PRECIP:
-                            fieldData.put(ANNUAL_OBS_AVG_PRECIP, climateData.observedAnnualAverage(OBS_MONTHLY_PRCP));
-                            break;
-
-                        case MONTHLY_AVG_PRECIP:
-                            for (int i = 0; i < 12; i++) {
-                                fieldData.put(MONTHLY_AVG_PRECIP + "_" + (i + 1), climateData.monthlyAverages(i, PRCP_INDEX));
-                            }
-                            break;
-
-                        case MONTLY_OBS_AVG_PRECIP:
-                            for (int i = 0; i < 12; i++) {
-                                fieldData.put(MONTLY_OBS_AVG_PRECIP + "_" + (i + 1), climateData.observedMonthlyAverages(i, OBS_MONTHLY_PRCP));
-                            }
-                            break;
-
-                        case ANNUAL_WIND_ENEGERY_AVG_NON_ZERO:
-                            break;
-
-                        case ANNUAL_WIND_ENERGY_AVG_PEAK:
-                            break;
-
-                        case MONTHLY_WIND_ENGERY_AVG:
-                            break;
-
-                        case MONTHLY_WIND_ENERGY_AVG_NON_ZERO:
-                            break;
-
-                        case MONTHLY_WIND_ENERGY_AVG_PEAK:
-                            break;
-
-                        default:
-                            gotAllFields = false;
-                    }
-                }
-            }
-
-            if (!gotRequest || !gotSoilsResponse || !gotAllFields || !gotWind || !gotClimate) {
-                ArrayList<String> missingList = new ArrayList<>();
-
-                if (!gotRequest) {
-                    missingList.add(" Request JSON");
-                }
-
-                if (!gotSoilsResponse) {
-                    missingList.add(" Response JSON");
-                }
-
-                if (!gotAllFields) {
-                    missingList.add(" Soils file and matching requested field names");
-                }
-
-                if (!gotWind) {
-                    missingList.add(" Wind file" + ((null != windData) ? (":  " + windData.windDataMessages()) : ""));
-                }
-                if (!gotClimate) {
-                    missingList.add(" Climate file" + ((null != climateData) ? (":  " + climateData.cligenDataMessages()) : ""));
-                }
-
-                throw new ServiceException("Could not parse all of the service zip file properly: " + filename + ".  " + "Parse isses with: " + missingList);
-            }
+          }
         }
 
+        if (entry.getName().contains(CLIMATE_FILE) && !gotClimate) {
+          climateData = new CligenData(readInputFile(zin));
+          if (!climateData.badClimateData()) {
+            gotClimate = true;
+          }
+        }
+
+        if (entry.getName().contains(WIND_FILE) && !gotWind) {
+          windData = new WindGenData(readInputFile(zin));
+          if (!windData.badWindData()) {
+            gotWind = true;
+          }
+        }
+
+        if (gotRequest && gotSoilsResponse && gotClimate && gotWind) {
+          break;
+        }
+      }
+
+      if (gotRequest && gotSoilsResponse && gotClimate && gotWind) {
+        for (String field : fields) {
+          switch (field) {
+            case LONGITUDE:
+              fieldData.put(LONGITUDE, longitude);
+              break;
+
+            case LATITUDE:
+              fieldData.put(LATITUDE, latitude);
+              break;
+
+            case COKEY:
+              fieldData.put(COKEY, cokey);
+              break;
+
+            case WATER_CLAY_TOTAL:
+              fieldData.put(WATER_CLAY_TOTAL, waterHorizon.claytotal_r());
+              break;
+
+            case WIND_CLAY_TOTAL:
+              fieldData.put(WIND_CLAY_TOTAL, windHorizon.claytotal_r());
+              break;
+
+            case WATER_SAND_TOTAL:
+              fieldData.put(WATER_SAND_TOTAL, waterHorizon.sandtotal_r());
+              break;
+
+            case WIND_SAND_TOTAL:
+              fieldData.put(WIND_SAND_TOTAL, windHorizon.sandtotal_r());
+              break;
+
+            case KFFACT:
+              fieldData.put(KFFACT, maxComponent.calculated_kffact());
+              break;
+
+            case WATER_OM_R:
+              fieldData.put(WATER_OM_R, waterHorizon.om_r());
+              break;
+
+            case WIND_OM_R:
+              fieldData.put(WIND_OM_R, windHorizon.om_r());
+              break;
+
+            case SLOPE_R:
+              fieldData.put(SLOPE_R, maxComponent.slope_r());
+              break;
+
+            case LENGTH_R:
+              fieldData.put(LENGTH_R, maxComponent.length_r());
+              break;
+
+            case TILLAGE_LAYER_CLAY_TOTAL:
+              fieldData.put(TILLAGE_LAYER_CLAY_TOTAL, maxComponent.calculated_tl_claytotal());
+              break;
+
+            case ANNUAL_AVG_PRECIP:
+              for (int i = 0; i < climateData.yearsInFile(); i++) {
+                fieldData.put(ANNUAL_AVG_PRECIP + "_" + (i + 1), climateData.yearlySummary(i, CligenData.PRCP_INDEX));
+              }
+              break;
+
+            case SIM_OBS_AVG_PRECIP:
+              fieldData.put(SIM_OBS_AVG_PRECIP, climateData.annualAvgPrecip());
+              break;
+
+            case ANNUAL_WIND_ENERGY_AVG:
+              for (int i = 0; i < windData.yearsInFile(); i++) {
+                fieldData.put(ANNUAL_WIND_ENERGY_AVG + "_" + (i + 1), windData.yearlyAverage(i));
+              }
+              break;
+
+            case SIM_AVG_WIND_ENERGY:
+              fieldData.put(SIM_AVG_WIND_ENERGY, windData.simulationAverage());
+              break;
+
+            case SIM_AVG_PRECIP:
+              fieldData.put(SIM_AVG_PRECIP, climateData.simulationAverage(PRCP_INDEX));
+              break;
+
+            case ANNUAL_OBS_AVG_PRECIP:
+              fieldData.put(ANNUAL_OBS_AVG_PRECIP, climateData.observedAnnualAverage(OBS_MONTHLY_PRCP));
+              break;
+
+            case MONTHLY_AVG_PRECIP:
+              for (int i = 0; i < 12; i++) {
+                fieldData.put(MONTHLY_AVG_PRECIP + "_" + (i + 1), climateData.monthlyAverages(i, PRCP_INDEX));
+              }
+              break;
+
+            case MONTLY_OBS_AVG_PRECIP:
+              for (int i = 0; i < 12; i++) {
+                fieldData.put(MONTLY_OBS_AVG_PRECIP + "_" + (i + 1), climateData.observedMonthlyAverages(i, OBS_MONTHLY_PRCP));
+              }
+              break;
+
+            case ANNUAL_WIND_ENEGERY_AVG_NON_ZERO:
+              break;
+
+            case ANNUAL_WIND_ENERGY_AVG_PEAK:
+              break;
+
+            case MONTHLY_WIND_ENGERY_AVG:
+              break;
+
+            case MONTHLY_WIND_ENERGY_AVG_NON_ZERO:
+              break;
+
+            case MONTHLY_WIND_ENERGY_AVG_PEAK:
+              break;
+
+            default:
+              gotAllFields = false;
+          }
+        }
+      }
+
+      if (!gotRequest || !gotSoilsResponse || !gotAllFields || !gotWind || !gotClimate) {
+        ArrayList<String> missingList = new ArrayList<>();
+
+        if (!gotRequest) {
+          missingList.add(" Request JSON");
+        }
+
+        if (!gotSoilsResponse) {
+          missingList.add(" Response JSON");
+        }
+
+        if (!gotAllFields) {
+          missingList.add(" Soils file and matching requested field names");
+        }
+
+        if (!gotWind) {
+          missingList.add(" Wind file" + ((null != windData) ? (":  " + windData.windDataMessages()) : ""));
+        }
+        if (!gotClimate) {
+          missingList.add(" Climate file" + ((null != climateData) ? (":  " + climateData.cligenDataMessages()) : ""));
+        }
+
+        throw new ServiceException("Could not parse all of the service zip file properly: " + filename + ".  " + "Parse isses with: " + missingList);
+      }
     }
 
-    protected String readInputFile(ZipInputStream zin) throws IOException {
-        String ret_val = "";
+  }
 
-        BufferedReader bReader = new BufferedReader(new InputStreamReader(zin));
-        StringBuilder fileContent = new StringBuilder();
-        String inputStr;
+  protected String readInputFile(ZipInputStream zin) throws IOException {
+    String ret_val = "";
 
-        while ((inputStr = bReader.readLine()) != null) {
-            fileContent.append(inputStr + System.lineSeparator());
+    BufferedReader bReader = new BufferedReader(new InputStreamReader(zin));
+    StringBuilder fileContent = new StringBuilder();
+    String inputStr;
+
+    while ((inputStr = bReader.readLine()) != null) {
+      fileContent.append(inputStr + System.lineSeparator());
+    }
+
+    ret_val = fileContent.toString();
+
+    return ret_val;
+  }
+
+  public double latitude() {
+    return latitude;
+  }
+
+  public double longitude() {
+    return longitude;
+  }
+
+  public String cokey() {
+    return cokey;
+  }
+
+  public void writeCSV(BufferedWriter simAvg, BufferedWriter annualAvg, BufferedWriter monthlyAvg) throws IOException {
+    if (null != simAvg) {
+      if (!wroteHeader) {
+        // Write header
+        String header;
+
+        header = buildSimTotalHeader();
+        if ((null != header) && (!header.isEmpty())) {
+          simAvg.write(header + System.lineSeparator());
+          simAvg.flush();
         }
 
-        ret_val = fileContent.toString();
+        header = buildAnnualTotalHeader();
+        if ((null != header) && (!header.isEmpty())) {
+          annualAvg.write(header + System.lineSeparator());
+          annualAvg.flush();
+        }
 
-        return ret_val;
+        header = buildMonthlyTotalHeader();
+        if ((null != header) && (!header.isEmpty())) {
+          monthlyAvg.write(header + System.lineSeparator());
+          monthlyAvg.flush();
+        }
+
+        wroteHeader = true;
+      }
+
+      String outString;
+
+      outString = buildSimTotalsLine();
+      if ((null != outString) && (!outString.isEmpty())) {
+        simAvg.write(outString + System.lineSeparator());
+        simAvg.flush();
+      }
+
+      outString = buildAnnualTotalsLine();
+      if ((null != outString) && (!outString.isEmpty())) {
+        annualAvg.write(outString + System.lineSeparator());
+        annualAvg.flush();
+      }
+
+      outString = buildMonthlyTotalsLine();
+      if ((null != outString) && (!outString.isEmpty())) {
+        monthlyAvg.write(outString + System.lineSeparator());
+        monthlyAvg.flush();
+      }
+    }
+  }
+
+  protected String buildSimTotalHeader() {
+    String ret_val = "";
+
+    for (String key : simTotalFields) {
+      if (fields.contains(key)) {
+        ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key;
+      }
     }
 
-    public double latitude() {
-        return latitude;
+    return ret_val;
+  }
+
+  protected String buildAnnualTotalHeader() {
+    String ret_val = "";
+
+    for (String key : annualAverageFields) {
+      if (fields.contains(key)) {
+        switch (key) {
+
+          case ANNUAL_AVG_PRECIP:
+            for (int i = 0; i < climateData.yearsSimulated(); i++) {
+              ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key + "_" + (i + 1);
+            }
+            break;
+
+          case ANNUAL_WIND_ENERGY_AVG:
+          case ANNUAL_WIND_ENEGERY_AVG_NON_ZERO:
+          case ANNUAL_WIND_ENERGY_AVG_PEAK:
+            for (int i = 0; i < windData.yearsSimulated(); i++) {
+              ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key + "_" + (i + 1);
+            }
+            break;
+
+          default:
+            ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key;
+        }
+      }
     }
 
-    public double longitude() {
-        return longitude;
+    return ret_val;
+  }
+
+  protected String buildMonthlyTotalHeader() {
+    String ret_val = "";
+
+    for (String key : monthlyAverageFields) {
+      if (fields.contains(key)) {
+        switch (key) {
+
+          case MONTHLY_AVG_PRECIP:
+          case MONTLY_OBS_AVG_PRECIP:
+          case MONTHLY_WIND_ENGERY_AVG:
+          case MONTHLY_WIND_ENERGY_AVG_NON_ZERO:
+          case MONTHLY_WIND_ENERGY_AVG_PEAK:
+            for (int i = 0; i < 12; i++) {
+              ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key + "_" + (i + 1);
+            }
+            break;
+
+          default:
+            ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key;
+        }
+      }
     }
 
-    public String cokey() {
-        return cokey;
+    return ret_val;
+  }
+
+  protected String buildSimTotalsLine() {
+    String ret_val = "";
+
+    for (String key : simTotalFields) {
+      if (fields.contains(key)) {
+        if (fieldData.containsKey(key)) {
+          ret_val += ((!ret_val.isEmpty()) ? ", " : "") + fieldData.get(key);
+        }
+      }
     }
 
-    public void writeCSV(BufferedWriter simAvg, BufferedWriter annualAvg, BufferedWriter monthlyAvg) throws IOException {
-        if (null != simAvg) {
-            if (!wroteHeader) {
-                // Write header
-                String header;
+    return ret_val;
+  }
 
-                header = buildSimTotalHeader();
-                if ((null != header) && (!header.isEmpty())) {
-                    simAvg.write(header + System.lineSeparator());
-                    simAvg.flush();
-                }
+  protected String buildAnnualTotalsLine() {
+    String ret_val = "";
 
-                header = buildAnnualTotalHeader();
-                if ((null != header) && (!header.isEmpty())) {
-                    annualAvg.write(header + System.lineSeparator());
-                    annualAvg.flush();
-                }
+    for (String key : annualAverageFields) {
+      if (fields.contains(key)) {
+        switch (key) {
+          case ANNUAL_AVG_PRECIP:
+            for (int i = 0; i < climateData.yearsSimulated(); i++) {
+              ret_val += ((!ret_val.isEmpty()) ? ", " : "") + fieldData.get(key + "_" + (i + 1));
+            }
+            break;
 
-                header = buildMonthlyTotalHeader();
-                if ((null != header) && (!header.isEmpty())) {
-                    monthlyAvg.write(header + System.lineSeparator());
-                    monthlyAvg.flush();
-                }
+          case ANNUAL_WIND_ENERGY_AVG:
+          case ANNUAL_WIND_ENEGERY_AVG_NON_ZERO:
+          case ANNUAL_WIND_ENERGY_AVG_PEAK:
+            for (int i = 0; i < windData.yearsSimulated(); i++) {
+              ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key + "_" + (i + 1);
+            }
+            break;
 
-                wroteHeader = true;
-            }
-
-            
-            String outString;
-
-            outString = buildSimTotalsLine();
-            if ((null != outString) && (!outString.isEmpty())) {
-                simAvg.write(outString + System.lineSeparator());
-                simAvg.flush();
-            }
-
-            outString = buildAnnualTotalsLine();
-            if ((null != outString) && (!outString.isEmpty())) {
-                annualAvg.write(outString + System.lineSeparator());
-                annualAvg.flush();
-            }
-
-            outString = buildMonthlyTotalsLine();
-            if ((null != outString) && (!outString.isEmpty())) {
-                monthlyAvg.write(outString + System.lineSeparator());
-                monthlyAvg.flush();
-            }
+          default:
+            ret_val += ((!ret_val.isEmpty()) ? ", " : "") + fieldData.get(key);
         }
+      }
     }
 
-    protected String buildSimTotalHeader() {
-        String ret_val = "";
+    return ret_val;
+  }
 
-        for (String key : simTotalFields) {
-            if (fields.contains(key)) {
-                ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key;
+  protected String buildMonthlyTotalsLine() {
+    String ret_val = "";
+
+    for (String key : monthlyAverageFields) {
+      if (fields.contains(key)) {
+        switch (key) {
+          case MONTHLY_AVG_PRECIP:
+          case MONTLY_OBS_AVG_PRECIP:
+          case MONTHLY_WIND_ENGERY_AVG:
+          case MONTHLY_WIND_ENERGY_AVG_NON_ZERO:
+          case MONTHLY_WIND_ENERGY_AVG_PEAK:
+            for (int i = 0; i < 12; i++) {
+              ret_val += ((!ret_val.isEmpty()) ? ", " : "") + fieldData.get(key + "_" + (i + 1));
             }
+            break;
+
+          default:
+            ret_val += ((!ret_val.isEmpty()) ? ", " : "") + fieldData.get(key);
         }
-
-        return ret_val;
+      }
     }
 
-    protected String buildAnnualTotalHeader() {
-        String ret_val = "";
-
-        for (String key : annualAverageFields) {
-            if (fields.contains(key)) {
-                switch (key) {
-
-                    case ANNUAL_AVG_PRECIP:
-                        for (int i = 0; i < climateData.yearsSimulated(); i++) {
-                            ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key + "_" + (i + 1);
-                        }
-                        break;
-
-                    case ANNUAL_WIND_ENERGY_AVG:
-                    case ANNUAL_WIND_ENEGERY_AVG_NON_ZERO:
-                    case ANNUAL_WIND_ENERGY_AVG_PEAK:
-                        for (int i = 0; i < windData.yearsSimulated(); i++) {
-                            ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key + "_" + (i + 1);
-                        }
-                        break;
-
-                    default:
-                        ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key;
-                }
-            }
-        }
-
-        return ret_val;
-    }
-
-    protected String buildMonthlyTotalHeader() {
-        String ret_val = "";
-
-        for (String key : monthlyAverageFields) {
-            if (fields.contains(key)) {
-                switch (key) {
-
-                    case MONTHLY_AVG_PRECIP:
-                    case MONTLY_OBS_AVG_PRECIP:
-                    case MONTHLY_WIND_ENGERY_AVG:
-                    case MONTHLY_WIND_ENERGY_AVG_NON_ZERO:
-                    case MONTHLY_WIND_ENERGY_AVG_PEAK:
-                        for (int i = 0; i < 12; i++) {
-                            ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key + "_" + (i + 1);
-                        }
-                        break;
-
-                    default:
-                        ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key;
-                }
-            }
-        }
-
-        return ret_val;
-    }
-
-    protected String buildSimTotalsLine() {
-        String ret_val = "";
-
-        for (String key : simTotalFields) {
-            if (fields.contains(key)) {
-                if (fieldData.containsKey(key)) {
-                    ret_val += ((!ret_val.isEmpty()) ? ", " : "") + fieldData.get(key);
-                }
-            }
-        }
-
-        return ret_val;
-    }
-
-    protected String buildAnnualTotalsLine() {
-        String ret_val = "";
-
-        for (String key : annualAverageFields) {
-            if (fields.contains(key)) {
-                switch (key) {
-                    case ANNUAL_AVG_PRECIP:
-                        for (int i = 0; i < climateData.yearsSimulated(); i++) {
-                            ret_val += ((!ret_val.isEmpty()) ? ", " : "") + fieldData.get(key + "_" + (i + 1));
-                        }
-                        break;
-
-                    case ANNUAL_WIND_ENERGY_AVG:
-                    case ANNUAL_WIND_ENEGERY_AVG_NON_ZERO:
-                    case ANNUAL_WIND_ENERGY_AVG_PEAK:
-                        for (int i = 0; i < windData.yearsSimulated(); i++) {
-                            ret_val += ((!ret_val.isEmpty()) ? ", " : "") + key + "_" + (i + 1);
-                        }
-                        break;
-
-                    default:
-                        ret_val += ((!ret_val.isEmpty()) ? ", " : "") + fieldData.get(key);
-                }
-            }
-        }
-
-        return ret_val;
-    }
-
-    protected String buildMonthlyTotalsLine() {
-        String ret_val = "";
-
-        for (String key : monthlyAverageFields) {
-            if (fields.contains(key)) {
-                switch (key) {
-                    case MONTHLY_AVG_PRECIP:
-                    case MONTLY_OBS_AVG_PRECIP:
-                    case MONTHLY_WIND_ENGERY_AVG:
-                    case MONTHLY_WIND_ENERGY_AVG_NON_ZERO:
-                    case MONTHLY_WIND_ENERGY_AVG_PEAK:
-                        for (int i = 0; i < 12; i++) {
-                            ret_val += ((!ret_val.isEmpty()) ? ", " : "") + fieldData.get(key + "_" + (i + 1));
-                        }
-                        break;
-
-                    default:
-                        ret_val += ((!ret_val.isEmpty()) ? ", " : "") + fieldData.get(key);
-                }
-            }
-        }
-
-        return ret_val;
-    }
+    return ret_val;
+  }
 }

tools/GetLatLonCokey/src/getlatloncokey/GetLatLonCokey.java

@@ -25,65 +25,65 @@
  */
 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<>();
+  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";
 
-        MapUnit.setDefaultUsedColumns(new ArrayList<>(Arrays.asList(TableMapUnit.MUKEY, TableMapUnit.MUACRES)));
-        Component.setDefaultUsedColumns(new ArrayList<>(Arrays.asList(TableComponent.COKEY, TableComponent.COMPPCT_R_NAME)));
+  /**
+   * @param args the command line arguments
+   */
+  public static void main(String[] args) throws IOException {
+    ArrayList<String> fields = new ArrayList<>();
 
-        FileOutputStream outFile = new FileOutputStream(SIM_OUT_FILE);
-        BufferedWriter simWriter = new BufferedWriter(new OutputStreamWriter(outFile));
+    MapUnit.setDefaultUsedColumns(new ArrayList<>(Arrays.asList(TableMapUnit.MUKEY, TableMapUnit.MUACRES)));
+    Component.setDefaultUsedColumns(new ArrayList<>(Arrays.asList(TableComponent.COKEY, TableComponent.COMPPCT_R_NAME)));
 
-        FileOutputStream annualOutFile = new FileOutputStream(SIM_ANNUAL_OUT_FILE);
-        BufferedWriter annualWriter = new BufferedWriter(new OutputStreamWriter(annualOutFile));
+    FileOutputStream outFile = new FileOutputStream(SIM_OUT_FILE);
+    BufferedWriter simWriter = new BufferedWriter(new OutputStreamWriter(outFile));
 
-        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(",");
+    FileOutputStream annualOutFile = new FileOutputStream(SIM_ANNUAL_OUT_FILE);
+    BufferedWriter annualWriter = new BufferedWriter(new OutputStreamWriter(annualOutFile));
 
-            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();
+    FileOutputStream monthlyOutFile = new FileOutputStream(SIM_MONTHLY_OUT_FILE);
+    BufferedWriter monthlyWriter = new BufferedWriter(new OutputStreamWriter(monthlyOutFile));
 
-        boolean wroteHeader = false;
-        
-        for (File file : listOfFiles) {
-            if (file.isFile()) {
-                if (file.getName().contains(".zip")) {
-                    System.out.println(file.getName());
+    //  Write header
+    if (args.length >= 1) {
+      String tFields = args[0].trim();
+      String[] fieldList = tFields.split(",");
 
-                    CliWindSoilFile cwsFile;
-                    try {
-                        cwsFile = new CliWindSoilFile(file, fields, wroteHeader);
-                        cwsFile.writeCSV(simWriter, annualWriter, monthlyWriter);
-                        wroteHeader = true;
-                    } catch (JSONException | ServiceException ex) {
-                        System.err.println(ex);
-                    }
-                }
+      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();
+      }
     }
+
+    simWriter.close();
+  }
 }