CRLMODData.java [src/java/crlmod] Revision:   Date:
/*
 * $Id: 1.0+62 CRLMODData.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 com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import crlmod.nodes.Barrier;
import crlmod.nodes.Contour;
import crlmod.nodes.Fuel;
import crlmod.nodes.HydraulicElementSystem;
import crlmod.nodes.PermeableBarrier;
import crlmod.nodes.Strip;
import java.lang.reflect.Type;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import rotation_utils.nodes.*;

/**
 *
 * @author LYaege
 */
public class CRLMODData {

  public List<RotationFile> rotationFiles = new ArrayList<>();
  public int rotationFileCount;
  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().registerTypeAdapter(LocalDate.class, new JsonSerializer<LocalDate>() {
      @Override
      public JsonElement serialize(LocalDate t, Type type, JsonSerializationContext jsc) {
        JsonPrimitive e = new JsonPrimitive(t.format(DateTimeFormatter.ISO_DATE));
        return e;
      }
    }).create();
    return new JSONObject(gson.toJson(this));
  }


  public void addRotation(Rotation rot) {
    RotationFile rFile = new RotationFile();
    rFile.rotation = rot;
    rotationFiles.add(rFile);
  }


  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);
  }
}