/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package usda.weru.nrmv;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.StringTokenizer;
import org.apache.commons.lang.WordUtils;

/**
 *
 * @author benjamin.todd
 */
public class ConvertSoilLayer extends NrmvConverter {

    StringTokenizer st;
    boolean warmUpDone;
    int myCount;
    private int numOfLayers;

    /**
     *
     */
    public ConvertSoilLayer() {
        myCount = 0;
        secondDate = false;

        warmUpDone = false;
        doubleFirstDate = false;
    }

    /**
     *
     */
    @Override
    public void setLinesToSkip() {
        this.linesToSkip = 3;
    }

    /**
     *
     * @param pw
     */

      @Override
    public void printSummaryUnits(PrintWriter pw) {
        pw.println();
        pw.println("unit,,mm,mm,Mg/m^3,J/kg,J/kg,J/kg,J/kg,mm,mm,mm,mm,mm,mm,MG/m^3,non-dimensional,non-dimensional,0-1,0-1,0-1,0-1,0-1,0-1,0-1,0-1");
    }

    /**
     *
     */
    @Override
    public void setVariables() {
        variables = new ArrayList<String>();
        variables.add("time");
        variables.add("id");
        variables.add("depth");
        variables.add("soil layer thickness");
        variables.add("bulk density");
        variables.add("aggregate stability");
        variables.add("minimum aggregate stability");
        variables.add("mean aggregate stability");
        variables.add("maximum aggregate stability");
        variables.add("minimum aggregate size");
        variables.add("minimum gmd aggregate size");
        variables.add("gmd aggregate size");
        variables.add("maximum gmd aggregate size");
        variables.add("maximum aggregate size");
        variables.add("gsd aggregate size");
        variables.add("aggregate density");
        variables.add("relative aggregate stability");
        variables.add("relative gmd aggregate size");
        variables.add("freeze transition");
        variables.add("freeze-thaw transition");
        variables.add("thaw transition");
        variables.add("soil remains frozen");
        variables.add("wetting transition");
        variables.add("drying transition");
        variables.add("warm puddling transition");
        variables.add("bulk density change with wetting");
        for (int i = 0; i < variables.size(); i++) {
            variables.set(i, WordUtils.capitalize(variables.get(i)));
        }
    }

    /**
     *
     * @param al
     * @return
     */
    @Override
    public ArrayList<String> changeData(ArrayList<String> al) {
        myCount++;
        try {
            int myDate = Integer.parseInt(al.get(0));
            String convertedDate = this.convertNumber(myDate);
            al.set(0, convertedDate);
        } catch (Exception e) {
          //  System.out.println("Incorrect input in ConvertSoil at count " + myCount);
        }
        String layer = al.get(3);
        al.set(1, layer);
        al.subList(1, 3).clear();


        return al;
    }

    @Override
    public boolean addToSum() {
        return false;
    }

    @Override
    public boolean addToLayers() {
        return true;
    }

    @Override
    public boolean hasMoreThanOneLayer() {
        return true;
    }

    @Override
    public int getLayerAmount() {
        return this.numOfLayers;
    }

    @Override
    public void setLayerAmount(ArrayList<String> al) {
        numOfLayers = Integer.parseInt(al.get(1));

    }

    @Override
    public void setUnits() {
         units = new ArrayList<String>();
       String sUnit = ",Date ,Double ,mm,mm,Mg/m^3,J/kg,J/kg,J/kg,J/kg,mm,mm,mm,mm,mm,mm,MG/m^3,non-dimensional,non-dimensional,0-1,0-1,0-1,0-1,0-1,0-1,0-1,0-1";
       StringTokenizer st = new StringTokenizer(sUnit,",", false);
       while(st.hasMoreTokens())
               {
        units.add(st.nextToken());
    }
    }
}
