ModelArchiveFactory.java [tools/MetaModelTools/src/models] Revision: c5437c546f842322a9b8b01231553a8cf0635857  Date: Tue Dec 17 11:39:47 MST 2019
/*
 * 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;
    }
}