ModelArchiveFactory.java [tools/MetaModelTools/src/models] Revision: ec5f4cade4553a8341e1cd241b111bfdb77a87a8  Date: Fri Jan 10 10:59:55 MST 2020
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package models;

import java.io.IOException;
import org.bson.Document;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;

/**
 *
 * @author <a href="mailto:shaun.case@colostate.edu">Shaun Case</a>
 */
public class ModelArchiveFactory {

  public static ModelArchive getModelArchive(String serviceName, Document doc) {
    ModelArchive model = null;

    model = getModelArchive(serviceName, doc, false);

    return model;
  }

  public static ModelArchive getModelArchive(String serviceName, Document doc, boolean returnBasicArchive) {
    ModelArchive model = null;

    if (returnBasicArchive) {
      model = new ModelArchive(doc.getString("_id"),
          doc.getString("ctime"),
          doc.getString("etime"),
          serviceName,
          doc.getString("status"),
          doc.getString("req_ip"),
          doc.getString("filename")
      );
    } else {
      if (serviceName.contains("weps/5.2")) {
        model = new WEPSModelArchive(doc.getString("_id"),
            doc.getString("ctime"),
            doc.getString("etime"),
            serviceName,
            doc.getString("status"),
            doc.getString("req_ip"),
            doc.getString("filename")
        );
      } else {
        if (serviceName.contains("wepp/")) {
          model = new WEPPModelArchive(doc.getString("_id"),
              doc.getString("ctime"),
              doc.getString("etime"),
              serviceName,
              doc.getString("status"),
              doc.getString("req_ip"),
              doc.getString("filename")
          );
        } else {
          //Not a service we are interested in...
        }
      }
    }

    return model;
  }

  public static ModelArchive getModelArchive(String serviceName, Document doc, byte[] fileData) throws IOException, JSONException {
    ModelArchive model = null;

    if (serviceName.contains("weps/5.2")) {
      model = new WEPSModelArchive(doc.getString("_id"),
          doc.getString("ctime"),
          doc.getString("etime"),
          serviceName,
          doc.getString("status"),
          doc.getString("req_ip"),
          doc.getString("filename"),
          fileData
      );
    } else {
      if (serviceName.contains("wepp/")) {
        model = new WEPPModelArchive(doc.getString("_id"),
            doc.getString("ctime"),
            doc.getString("etime"),
            serviceName,
            doc.getString("status"),
            doc.getString("req_ip"),
            doc.getString("filename"),
            fileData
        );
      } else {
        //Not a service we are interested in...
      }
    }

    return model;
  }

  public static ModelArchive getModelArchive(JSONObject metaData) throws JSONException {
    ModelArchive model = null;
    String serviceName = metaData.getString(csip.ModelDataService.KEY_SERVICE_URL);

    if (serviceName.contains("weps/5.2")) {
      model = new WEPSModelArchive(metaData);
    } else {
      if (serviceName.contains("wepp/")) {
        model = new WEPPModelArchive(metaData);
      } else {
        //Not a service we are interested in...
      }
    }

    return model;
  }

  public static ModelArchive getModelArchive(JSONObject metaData, byte[] fileData) throws JSONException, IOException {
    ModelArchive model = null;
    String serviceName = metaData.getString(csip.ModelDataService.KEY_SERVICE_URL);

    if (serviceName.contains("weps/5.2")) {
      model = new WEPSModelArchive(metaData, fileData);
    } else {
      if (serviceName.contains("wepp/")) {
        model = new WEPPModelArchive(metaData, fileData);
      } else {
        //Not a service we are interested in...
      }
    }

    return model;
  }
}