<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">/*
 * 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 ConvertBelow extends NrmvConverter {

 
    StringTokenizer st;
  
    int currentDate;
    private boolean doneWithWarmUp;
    private int numOfLayers, maxLayer = 1;
    private boolean firstTime = true;
    boolean shouldNotReadNextLine;

    /**
     *
     */
    public ConvertBelow() {
        currentDate = 0;
        doneWithWarmUp = false;
    }

    /**
     *
     */
    /**
     *
     */
    public void setVariables() {
        variables = new ArrayList&lt;String&gt;();
        variables.add("time");
        variables.add("id");
        variables.add("cumulative decomp days below ground residue and layer for residue pool 1");
        variables.add("cumulative decomp days below ground residue and layer for residue pool 2");
        variables.add("Buried residue mass by soil layer for residue pool 1");
        variables.add("Buried residue mass by soil layer for residue pool 2");
        variables.add("Buried residue root mass by soil layer for residue pool 1");
        variables.add("Buried residue root mass by soil layer for residue pool 2 ");
        for (int i = 0; i &lt; variables.size(); i++) {
            variables.set(i, WordUtils.capitalize(variables.get(i)));
        }
    }

    /**
     *
     * @param al
     * @return
     */
    @Override
    public ArrayList&lt;String&gt; changeData(ArrayList&lt;String&gt; al) {



        if (al.get(0).equalsIgnoreCase("subr")) {
            if (firstTime) {
                firstTime = false;
            } else {
                try {
                    int layer = Integer.parseInt(previousAl.get(1));
                    if (maxLayer &lt; layer) {
                        maxLayer = layer;
                    }
                } catch (NumberFormatException nfe) {
                    nfe.printStackTrace();
                }
            }
            currentDate++;
            shouldContinue = false;
            shouldNotReadNextLine = true;
            if (!doneWithWarmUp &amp;&amp; al.get(2).equalsIgnoreCase("1/") &amp;&amp; al.get(3).equalsIgnoreCase("1") &amp;&amp; al.get(1).equalsIgnoreCase("1/")) {

                doneWithWarmUp = true;
            } else if (doneWithWarmUp &amp;&amp; al.get(2).equalsIgnoreCase("1/") &amp;&amp; al.get(3).equalsIgnoreCase("1") &amp;&amp; al.get(1).equalsIgnoreCase("1/")) {
                currentDate = 1;
            }
        } else if (shouldNotReadNextLine) {
            shouldContinue = false;
            shouldNotReadNextLine = false;

        } else {
            shouldContinue = true;
            al.add(0, this.convertNumber(currentDate));
        }



        return al;
    }

    @Override
    public void setLinesToSkip() {
        this.linesToSkip = 4;
    }

    /**
     *
     * @param pw
     */
    @Override
    public void printUnits(PrintWriter pw) {
        pw.println();

        pw.print("unit");
        this.printLineCommas(pw, units);
        pw.println();
    }

    @Override
    public void printSummaryUnits(PrintWriter pw) {
        pw.println();


        pw.println("unit,,days,days,kg/m^2,kg/m^2,kg/m^2,kg/m^2");
    }

    @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&lt;String&gt; al) {
//        numOfLayers = Integer.parseInt(al.get(1));
        this.numOfLayers = this.maxLayer;

    }

    @Override
    public void setUnits() {
        units = new ArrayList&lt;String&gt;();
  
        units.add("Date");
        units.add("Double");
        units.add("days");
        units.add("days");
        units.add("kg/m^2");
        units.add("kg/m^2");
        units.add("kg/m^2");
        units.add("kg/m^2");

    }
}
</pre></body></html>