package usda.weru.weps.reports.query;

import java.util.ArrayList;

/**
 * @author alexblum
 */
public class CropIntervalDataStruct {
    
    private ArrayList<String[]> hydrobalTokens;
    
    public void addToken(String[] s){
        hydrobalTokens.add(s);
    }

    private ArrayList<String> harvest_dates;

    public String getHarvestDate(int i) {
        return harvest_dates.get(i);
    }

    public void addHarvestDate(String s) {
        harvest_dates.add(s);
    }

    public void print_Harvests() {
        System.out.println(harvest_dates);
    }

    public boolean harvest_contains(String s) {
        return harvest_dates.contains(s);
    }

    private ArrayList<Integer> harvest_dates_ind;

    public int getHarvestDateInd(int i) {
        return harvest_dates_ind.get(i);
    }

    public void addHarvestDateInd(int i) {
        harvest_dates_ind.add(i);
    }

    public void print_HarvestsInd() {
        System.out.println(harvest_dates_ind);
    }

    public int harvestsIndSize() {
        return harvest_dates_ind.size();
    }

    public boolean harvestind_contains(int i) {
        return harvest_dates_ind.contains(i);
    }

    private ArrayList<String> hydro_harvestDates;

    public String getHydroHarvestDate(int i) {
        return hydro_harvestDates.get(i);
    }

    public void addHydroHarvestDate(String s) {
        hydro_harvestDates.add(s);
    }

    public void print_HydroHarvests() {
        System.out.println(hydro_harvestDates);
    }

    public void insert_hydroHarvest(int i, String s) {
        hydro_harvestDates.add(i, s);
    }

    private ArrayList<Integer> hydro_harvestDateInd;

    public int getHydroHarvestDateInd(int i) {
        return hydro_harvestDateInd.get(i);
    }

    public void addHydroHarvestDateInd(int i) {
        hydro_harvestDateInd.add(i);
    }

    public void print_HydroHarvestsInd() {
        System.out.println(hydro_harvestDateInd);
    }

    public int hydroHarvestsIndSize() {
        return hydro_harvestDateInd.size();
    }

    public boolean hydroharvestind_contains(int i) {
        return hydro_harvestDateInd.contains(i);
    }

    public void insert_hydroHarvestInd(int i, int e) {
        hydro_harvestDateInd.add(i, e);
    }

    private ArrayList<String> pre_harvest;

    public String getpre_harvest(int i) {
        return pre_harvest.get(i);
    }

    public void addpre_harvest(String s) {
        pre_harvest.add(s);
    }

    public void print_pre_harvest() {
        System.out.println(pre_harvest);
    }

    private ArrayList<Integer> pre_harvestInd;

    public int getpre_harvestInd(int i) {
        return pre_harvestInd.get(i);
    }

    public void addpre_harvestInd(int i) {
        pre_harvestInd.add(i);
    }

    public void print_pre_harvestInd() {
        System.out.println(pre_harvestInd);
    }

    public int pre_harvestIndSize() {
        return pre_harvestInd.size();
    }

    public boolean pre_harvestInd_contains(int i) {
        return pre_harvestInd.contains(i);
    }

    private ArrayList<String> coverCropStart;

    public String getCoverCropStartDate(int i) {
        return coverCropStart.get(i);
    }

    public void addCoverCropStartDate(String s) {
        coverCropStart.add(s);
    }

    public void print_CoverCropStartDates() {
        System.out.println(coverCropStart);
    }

    private final ArrayList<Integer> coverCropStartInd;

    public int getCoverCropStartDateInd(int i) {
        return coverCropStartInd.get(i);
    }

    public void addCoverCropStartDateInd(int i) {
        coverCropStartInd.add(i);
    }

    public int coverCropCount() {
        return this.coverCropStartInd.size();
    }

    public void print_CroverCropStartDateInd() {
        System.out.println(coverCropStartInd);
    }

    private ArrayList<String> coverCropEnd;

    public String getCoverCropEndDate(int i) {
        return coverCropEnd.get(i);
    }

    public void addCropEndDate(String s) {
        coverCropEnd.add(s);
    }

    public int cropEndSize() {
        return this.coverCropEnd.size();
    }

    public void print_CoverCropEndDate() {
        System.out.println(coverCropEnd);
    }

    private ArrayList<Integer> coverCropEndInd;

    public int getCoverCropDateEndInd(int i) {
        return coverCropEndInd.get(i);
    }

    public void addCropEndDateInd(int i) {
        coverCropEndInd.add(i);
    }

    public void print_CoverCropEndDateInd() {
        System.out.println(coverCropEndInd);
    }

    private ArrayList<Integer> op_index;

    public int getOp_index(int i) {
        return op_index.get(i);
    }

    public void addOp_index(int i) {
        op_index.add(i);
    }

    public void print_OpIndex() {
        System.out.println(op_index);
    }

    private ArrayList<Integer> date_index;

    public int getDate_index(int i) {
        return date_index.get(i);
    }

    public void addDate_index(int i) {
        date_index.add(i);
    }

    public void print_DateIndex() {
        System.out.println(date_index);
    }

    private ArrayList<ArrayList<String>> postPlantSets;

    public ArrayList<ArrayList<String>> getPostPlantSets() {
        return postPlantSets;
    }

    public void addPostPlantSets(ArrayList<String> als) {
        postPlantSets.add(als);
    }

    public void print_PostPlantSets() {
        System.out.println(postPlantSets);
    }

    private ArrayList<String> plant;

    public String getPlantOpDates(int i) {
        return plant.get(i);
    }

    public void addPlantOpDates(String plant_operations) {
        this.plant.add(plant_operations);
    }

    public void setPlantOpDates(int i, String s) {
        plant.set(i, s);
    }

    public void clearPlantOpDates() {
        this.plant.clear();
    }

    public void print_Plant() {
        System.out.println(plant);
    }

    public boolean plant_contains(String s) {
        return plant.contains(s);
    }

    private ArrayList<Integer> plant_ind;

    public int getPlantIndex(int i) {
        return plant_ind.get(i);
    }

    public void addPlantIndex(Integer plant_operation_index) {
        this.plant_ind.add(plant_operation_index);
    }

    public void setPlantIndex(int i, int k) {
        plant_ind.set(i, k);
    }

    public void clearPlantIndex() {
        this.plant_ind.clear();
    }

    public void print_PlantInd() {
        System.out.println(plant_ind);
    }

    private ArrayList<String> preplant;

    public String getPreOpDates(int i) {
        return preplant.get(i);
    }

    public void addPreOpDates(String pre_plant_operations) {
        this.preplant.add(pre_plant_operations);
    }

    public void print_PrePlant() {
        System.out.println(preplant);
    }

    public int prePlantSize() {
        return preplant.size();
    }

    private ArrayList<Integer> prePlant_ind;

    public int getPreIndex(int i) {
        return prePlant_ind.get(i);
    }

    public void addPreIndex(Integer pre_plant_operation_index) {
        this.prePlant_ind.add(pre_plant_operation_index);
    }

    public void print_PrePlantInd() {
        System.out.println(prePlant_ind);
    }

    private ArrayList<String> postPlant;

    public String getPostOpDate(int i) {
        return postPlant.get(i);
    }

    public void addPostOpDate(String post_plant_operations) {
        this.postPlant.add(post_plant_operations);
    }

    public int postOpSize() {
        return this.postPlant.size();
    }

    public void setPost(int i, String s) {
        postPlant.set(i, s);
    }

    public boolean isPostEmpty() {
        return this.postPlant.isEmpty();
    }

    public boolean postContains(String s) {
        return postPlant.contains(s);
    }

    public void print_PostPlant() {
        System.out.println(postPlant);
    }

    public int indexof_post(String s) {
        return postPlant.indexOf(s);
    }

    public int postPlantSize() {
        return postPlant.size();
    }

    private ArrayList<Integer> postPlant_ind;

    public int getPostIndex(int i) {
        return postPlant_ind.get(i);
    }

    public void addPostPostIndex(Integer post_plant_operation_index) {
        this.postPlant_ind.add(post_plant_operation_index);
    }

    public void setPostInt(int i, int k) {
        this.postPlant_ind.set(i, k);
    }

    public void print_PostPlantInd() {
        System.out.println(postPlant_ind);
    }

    private ArrayList<ArrayList<String>> multiHarvestDates;

    public ArrayList<ArrayList<String>> getMultiHarvestDates() {
        return multiHarvestDates;
    }

    public void addMultiHarvestDates(ArrayList<String> alhx) {
        multiHarvestDates.add(alhx);
    }

    public int multiHarvestDateCount() {
        return this.multiHarvestDates.size();
    }

    public void print_MultiHarvestDates() {
        System.out.println(multiHarvestDates);
    }

    private ArrayList<ArrayList<Integer>> multiHarvestDateInd;

    public ArrayList<ArrayList<Integer>> getMultiHarvestDateInd() {
        return multiHarvestDateInd;
    }

    public void add_multiHarvestDateInd(ArrayList<Integer> alhxi) {
        multiHarvestDateInd.add(alhxi);
    }

    public int multiHarvestDateIndCount() {
        return this.multiHarvestDateInd.size();
    }

    public void print_MutliHarvestDateInd() {
        System.out.println(multiHarvestDateInd);
    }

    public int operationCount() {
        return plant.size();
    }

    public CropIntervalDataStruct() {

        harvest_dates = new ArrayList<>();
        harvest_dates_ind = new ArrayList<>();
        hydro_harvestDates = new ArrayList<>();
        hydro_harvestDateInd = new ArrayList<>();
        pre_harvestInd = new ArrayList<>();
        pre_harvest = new ArrayList<>();

        coverCropStartInd = new ArrayList<>();
        coverCropStart = new ArrayList<>();
        coverCropEnd = new ArrayList<>();
        coverCropEndInd = new ArrayList<>();

        //used for cover crop data...
        op_index = new ArrayList<>();
        date_index = new ArrayList<>();
        postPlantSets = new ArrayList<>();

        //capture preplant, planting, and harvest(s) infomration
        preplant = new ArrayList<>();
        prePlant_ind = new ArrayList<>();
        plant = new ArrayList<>();
        plant_ind = new ArrayList<>();
        postPlant = new ArrayList<>();
        postPlant_ind = new ArrayList<>();
        //multiple harvest information...
        multiHarvestDates = new ArrayList<>();
        multiHarvestDateInd = new ArrayList<>();
    }
}
