LMODData.java [src/java/crlmod] Revision:   Date:
/*
 * $Id: 1.0+62 LMODData.java a170e1637ffa 2021-12-20 od $
 *
 * This file is part of the Cloud Services Integration Platform (CSIP),
 * a Model-as-a-Service framework, API, and application suite.
 *
 * 2012-2024, OMSLab, Colorado State University.
 *
 * OMSLab licenses this file to you under the MIT license.
 * See the LICENSE file in the project root for more information.
 */
package crlmod;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.ArrayList;
import crlmod.nodes.Barrier;
import crlmod.nodes.Contour;
import crlmod.nodes.Crop;
import crlmod.nodes.Fuel;
import crlmod.nodes.HydraulicElementSystem;
import crlmod.nodes.Operation;
import crlmod.nodes.PermeableBarrier;
import crlmod.nodes.Strip;
import crlmod.nodes.Residue;
import crlmod.nodes.Rotation;
import java.util.List;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;

/**
 *
 * @author LYaege
 */
public class LMODData {
//    public ArrayList<LMODError> errors = new ArrayList<>();

  public List<Rotation> rotations = new ArrayList<>();
  public int rotationCount;
  public List<Operation> operations = new ArrayList<>();
  public int operationCount;
  public List<Crop> crops = new ArrayList<>();
  public int cropCount;
  public List<Residue> residues = new ArrayList<>();
  public int residueCount;
  public List<Barrier> barriers = new ArrayList<>();
  public int barriersCount;
  public List<Contour> contours = new ArrayList<>();
  public int contoursCount;
  public List<Fuel> fuels = new ArrayList<>();
  public int fuelsCount;
  public List<Strip> strips = new ArrayList<>();
  public int stripsCount;
  public List<PermeableBarrier> permeablebarriers = new ArrayList<>();
  public int permeableBarrierCount;
  public List<HydraulicElementSystem> hydraulicElementSystems = new ArrayList<>();
  public int hydraulicElementSystemCount;


  public JSONObject getJson() throws JSONException {
    Gson gson = new GsonBuilder()
        .setDateFormat("yyyy-MM-dd").create();
    return new JSONObject(gson.toJson(this));
  }


  public void addRotation(Rotation rot) {
    rotations.add(rot);
  }


  public void addOperation(Operation op) {
    operations.add(op);
  }


  public void addCrop(Crop crop) {
    crops.add(crop);
  }


  public void addResidue(Residue residue) {
    residues.add(residue);
  }


  public void addBarrier(Barrier barrier) {
    barriers.add(barrier);
  }


  public void addContour(Contour contour) {
    contours.add(contour);
  }


  public void addStrip(Strip strip) {
    strips.add(strip);
  }


  public void addFuel(Fuel fuel) {
    fuels.add(fuel);
  }


  public void addPermeableBarrier(PermeableBarrier pmb) {
    permeablebarriers.add(pmb);
  }


  public void addHydraulicElementSystem(HydraulicElementSystem hes) {
    hydraulicElementSystems.add(hes);
  }

  // <editor-fold defaultstate="collapsed" desc="Nested Classes">
  public class LMODOperation {

    public String name;
    public String path;
    public String r2data;
    public String status;


    public LMODOperation(String name, String path, String r2data, String status) {
      this.name = name;
      this.path = path;
      this.r2data = r2data;
      this.status = status;
    }
  }

  public class LMODCrop {

    public String name;
    public String path;
    public String r2data;
    public String status;


    public LMODCrop(String name, String path, String r2data, String status) {
      this.name = name;
      this.path = path;
      this.r2data = r2data;
      this.status = status;
    }
  }

  public class LMODResidue {

    public String name;
    public String path;
    public String r2data;
    public String status;


    public LMODResidue(String name, String path, String r2data, String status) {
      this.name = name;
      this.path = path;
      this.r2data = r2data;
      this.status = status;
    }
  }

  public static class LMODManLine {

    public String date;
    public String operation;
    public String crop;


    public LMODManLine(String date, String operation, String crop) {
      this.date = date;
      this.operation = operation;
      this.crop = crop;
    }
  }
  // </editor-fold>
}