All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.airavata.model.process.ProcessModel Maven / Gradle / Ivy

/**
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Autogenerated by Thrift Compiler (0.9.3)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package org.apache.airavata.model.process;

import org.apache.thrift.scheme.IScheme;
import org.apache.thrift.scheme.SchemeFactory;
import org.apache.thrift.scheme.StandardScheme;

import org.apache.thrift.scheme.TupleScheme;
import org.apache.thrift.protocol.TTupleProtocol;
import org.apache.thrift.protocol.TProtocolException;
import org.apache.thrift.EncodingUtils;
import org.apache.thrift.TException;
import org.apache.thrift.async.AsyncMethodCallback;
import org.apache.thrift.server.AbstractNonblockingServer.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.EnumMap;
import java.util.Set;
import java.util.HashSet;
import java.util.EnumSet;
import java.util.Collections;
import java.util.BitSet;
import java.nio.ByteBuffer;
import java.util.Arrays;
import javax.annotation.Generated;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
/**
 * ProcessModel: A structure holding the process details. The infromation is derived based on user provided
 *          configuration data or system inferred information from scheduling and QoS parameters.
 * 
 * processDetail:
 *   A friendly description of the process, usally used to communicate information to users.
 * 
 * 
 */
@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2016-07-13")
public class ProcessModel implements org.apache.thrift.TBase, java.io.Serializable, Cloneable, Comparable {
  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProcessModel");

  private static final org.apache.thrift.protocol.TField PROCESS_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("processId", org.apache.thrift.protocol.TType.STRING, (short)1);
  private static final org.apache.thrift.protocol.TField EXPERIMENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentId", org.apache.thrift.protocol.TType.STRING, (short)2);
  private static final org.apache.thrift.protocol.TField CREATION_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("creationTime", org.apache.thrift.protocol.TType.I64, (short)3);
  private static final org.apache.thrift.protocol.TField LAST_UPDATE_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastUpdateTime", org.apache.thrift.protocol.TType.I64, (short)4);
  private static final org.apache.thrift.protocol.TField PROCESS_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("processStatus", org.apache.thrift.protocol.TType.STRUCT, (short)5);
  private static final org.apache.thrift.protocol.TField PROCESS_DETAIL_FIELD_DESC = new org.apache.thrift.protocol.TField("processDetail", org.apache.thrift.protocol.TType.STRING, (short)6);
  private static final org.apache.thrift.protocol.TField APPLICATION_INTERFACE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("applicationInterfaceId", org.apache.thrift.protocol.TType.STRING, (short)7);
  private static final org.apache.thrift.protocol.TField APPLICATION_DEPLOYMENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("applicationDeploymentId", org.apache.thrift.protocol.TType.STRING, (short)8);
  private static final org.apache.thrift.protocol.TField COMPUTE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("computeResourceId", org.apache.thrift.protocol.TType.STRING, (short)9);
  private static final org.apache.thrift.protocol.TField PROCESS_INPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("processInputs", org.apache.thrift.protocol.TType.LIST, (short)10);
  private static final org.apache.thrift.protocol.TField PROCESS_OUTPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("processOutputs", org.apache.thrift.protocol.TType.LIST, (short)11);
  private static final org.apache.thrift.protocol.TField RESOURCE_SCHEDULE_FIELD_DESC = new org.apache.thrift.protocol.TField("resourceSchedule", org.apache.thrift.protocol.TType.STRUCT, (short)12);
  private static final org.apache.thrift.protocol.TField TASKS_FIELD_DESC = new org.apache.thrift.protocol.TField("tasks", org.apache.thrift.protocol.TType.LIST, (short)13);
  private static final org.apache.thrift.protocol.TField TASK_DAG_FIELD_DESC = new org.apache.thrift.protocol.TField("taskDag", org.apache.thrift.protocol.TType.STRING, (short)14);
  private static final org.apache.thrift.protocol.TField PROCESS_ERROR_FIELD_DESC = new org.apache.thrift.protocol.TField("processError", org.apache.thrift.protocol.TType.STRUCT, (short)15);
  private static final org.apache.thrift.protocol.TField GATEWAY_EXECUTION_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayExecutionId", org.apache.thrift.protocol.TType.STRING, (short)16);
  private static final org.apache.thrift.protocol.TField ENABLE_EMAIL_NOTIFICATION_FIELD_DESC = new org.apache.thrift.protocol.TField("enableEmailNotification", org.apache.thrift.protocol.TType.BOOL, (short)17);
  private static final org.apache.thrift.protocol.TField EMAIL_ADDRESSES_FIELD_DESC = new org.apache.thrift.protocol.TField("emailAddresses", org.apache.thrift.protocol.TType.LIST, (short)18);
  private static final org.apache.thrift.protocol.TField STORAGE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageResourceId", org.apache.thrift.protocol.TType.STRING, (short)19);
  private static final org.apache.thrift.protocol.TField USER_DN_FIELD_DESC = new org.apache.thrift.protocol.TField("userDn", org.apache.thrift.protocol.TType.STRING, (short)20);
  private static final org.apache.thrift.protocol.TField GENERATE_CERT_FIELD_DESC = new org.apache.thrift.protocol.TField("generateCert", org.apache.thrift.protocol.TType.BOOL, (short)21);
  private static final org.apache.thrift.protocol.TField EXPERIMENT_DATA_DIR_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentDataDir", org.apache.thrift.protocol.TType.STRING, (short)22);
  private static final org.apache.thrift.protocol.TField USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)23);

  private static final Map, SchemeFactory> schemes = new HashMap, SchemeFactory>();
  static {
    schemes.put(StandardScheme.class, new ProcessModelStandardSchemeFactory());
    schemes.put(TupleScheme.class, new ProcessModelTupleSchemeFactory());
  }

  private String processId; // required
  private String experimentId; // required
  private long creationTime; // optional
  private long lastUpdateTime; // optional
  private org.apache.airavata.model.status.ProcessStatus processStatus; // optional
  private String processDetail; // optional
  private String applicationInterfaceId; // optional
  private String applicationDeploymentId; // optional
  private String computeResourceId; // optional
  private List processInputs; // optional
  private List processOutputs; // optional
  private org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel resourceSchedule; // optional
  private List tasks; // optional
  private String taskDag; // optional
  private org.apache.airavata.model.commons.ErrorModel processError; // optional
  private String gatewayExecutionId; // optional
  private boolean enableEmailNotification; // optional
  private List emailAddresses; // optional
  private String storageResourceId; // optional
  private String userDn; // optional
  private boolean generateCert; // optional
  private String experimentDataDir; // optional
  private String userName; // optional

  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
    PROCESS_ID((short)1, "processId"),
    EXPERIMENT_ID((short)2, "experimentId"),
    CREATION_TIME((short)3, "creationTime"),
    LAST_UPDATE_TIME((short)4, "lastUpdateTime"),
    PROCESS_STATUS((short)5, "processStatus"),
    PROCESS_DETAIL((short)6, "processDetail"),
    APPLICATION_INTERFACE_ID((short)7, "applicationInterfaceId"),
    APPLICATION_DEPLOYMENT_ID((short)8, "applicationDeploymentId"),
    COMPUTE_RESOURCE_ID((short)9, "computeResourceId"),
    PROCESS_INPUTS((short)10, "processInputs"),
    PROCESS_OUTPUTS((short)11, "processOutputs"),
    RESOURCE_SCHEDULE((short)12, "resourceSchedule"),
    TASKS((short)13, "tasks"),
    TASK_DAG((short)14, "taskDag"),
    PROCESS_ERROR((short)15, "processError"),
    GATEWAY_EXECUTION_ID((short)16, "gatewayExecutionId"),
    ENABLE_EMAIL_NOTIFICATION((short)17, "enableEmailNotification"),
    EMAIL_ADDRESSES((short)18, "emailAddresses"),
    STORAGE_RESOURCE_ID((short)19, "storageResourceId"),
    USER_DN((short)20, "userDn"),
    GENERATE_CERT((short)21, "generateCert"),
    EXPERIMENT_DATA_DIR((short)22, "experimentDataDir"),
    USER_NAME((short)23, "userName");

    private static final Map byName = new HashMap();

    static {
      for (_Fields field : EnumSet.allOf(_Fields.class)) {
        byName.put(field.getFieldName(), field);
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, or null if its not found.
     */
    public static _Fields findByThriftId(int fieldId) {
      switch(fieldId) {
        case 1: // PROCESS_ID
          return PROCESS_ID;
        case 2: // EXPERIMENT_ID
          return EXPERIMENT_ID;
        case 3: // CREATION_TIME
          return CREATION_TIME;
        case 4: // LAST_UPDATE_TIME
          return LAST_UPDATE_TIME;
        case 5: // PROCESS_STATUS
          return PROCESS_STATUS;
        case 6: // PROCESS_DETAIL
          return PROCESS_DETAIL;
        case 7: // APPLICATION_INTERFACE_ID
          return APPLICATION_INTERFACE_ID;
        case 8: // APPLICATION_DEPLOYMENT_ID
          return APPLICATION_DEPLOYMENT_ID;
        case 9: // COMPUTE_RESOURCE_ID
          return COMPUTE_RESOURCE_ID;
        case 10: // PROCESS_INPUTS
          return PROCESS_INPUTS;
        case 11: // PROCESS_OUTPUTS
          return PROCESS_OUTPUTS;
        case 12: // RESOURCE_SCHEDULE
          return RESOURCE_SCHEDULE;
        case 13: // TASKS
          return TASKS;
        case 14: // TASK_DAG
          return TASK_DAG;
        case 15: // PROCESS_ERROR
          return PROCESS_ERROR;
        case 16: // GATEWAY_EXECUTION_ID
          return GATEWAY_EXECUTION_ID;
        case 17: // ENABLE_EMAIL_NOTIFICATION
          return ENABLE_EMAIL_NOTIFICATION;
        case 18: // EMAIL_ADDRESSES
          return EMAIL_ADDRESSES;
        case 19: // STORAGE_RESOURCE_ID
          return STORAGE_RESOURCE_ID;
        case 20: // USER_DN
          return USER_DN;
        case 21: // GENERATE_CERT
          return GENERATE_CERT;
        case 22: // EXPERIMENT_DATA_DIR
          return EXPERIMENT_DATA_DIR;
        case 23: // USER_NAME
          return USER_NAME;
        default:
          return null;
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, throwing an exception
     * if it is not found.
     */
    public static _Fields findByThriftIdOrThrow(int fieldId) {
      _Fields fields = findByThriftId(fieldId);
      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
      return fields;
    }

    /**
     * Find the _Fields constant that matches name, or null if its not found.
     */
    public static _Fields findByName(String name) {
      return byName.get(name);
    }

    private final short _thriftId;
    private final String _fieldName;

    _Fields(short thriftId, String fieldName) {
      _thriftId = thriftId;
      _fieldName = fieldName;
    }

    public short getThriftFieldId() {
      return _thriftId;
    }

    public String getFieldName() {
      return _fieldName;
    }
  }

  // isset id assignments
  private static final int __CREATIONTIME_ISSET_ID = 0;
  private static final int __LASTUPDATETIME_ISSET_ID = 1;
  private static final int __ENABLEEMAILNOTIFICATION_ISSET_ID = 2;
  private static final int __GENERATECERT_ISSET_ID = 3;
  private byte __isset_bitfield = 0;
  private static final _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.LAST_UPDATE_TIME,_Fields.PROCESS_STATUS,_Fields.PROCESS_DETAIL,_Fields.APPLICATION_INTERFACE_ID,_Fields.APPLICATION_DEPLOYMENT_ID,_Fields.COMPUTE_RESOURCE_ID,_Fields.PROCESS_INPUTS,_Fields.PROCESS_OUTPUTS,_Fields.RESOURCE_SCHEDULE,_Fields.TASKS,_Fields.TASK_DAG,_Fields.PROCESS_ERROR,_Fields.GATEWAY_EXECUTION_ID,_Fields.ENABLE_EMAIL_NOTIFICATION,_Fields.EMAIL_ADDRESSES,_Fields.STORAGE_RESOURCE_ID,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.EXPERIMENT_DATA_DIR,_Fields.USER_NAME};
  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
  static {
    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
    tmpMap.put(_Fields.PROCESS_ID, new org.apache.thrift.meta_data.FieldMetaData("processId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.EXPERIMENT_ID, new org.apache.thrift.meta_data.FieldMetaData("experimentId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.CREATION_TIME, new org.apache.thrift.meta_data.FieldMetaData("creationTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.LAST_UPDATE_TIME, new org.apache.thrift.meta_data.FieldMetaData("lastUpdateTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.PROCESS_STATUS, new org.apache.thrift.meta_data.FieldMetaData("processStatus", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.status.ProcessStatus.class)));
    tmpMap.put(_Fields.PROCESS_DETAIL, new org.apache.thrift.meta_data.FieldMetaData("processDetail", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.APPLICATION_INTERFACE_ID, new org.apache.thrift.meta_data.FieldMetaData("applicationInterfaceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.APPLICATION_DEPLOYMENT_ID, new org.apache.thrift.meta_data.FieldMetaData("applicationDeploymentId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.COMPUTE_RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("computeResourceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.PROCESS_INPUTS, new org.apache.thrift.meta_data.FieldMetaData("processInputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.application.io.InputDataObjectType.class))));
    tmpMap.put(_Fields.PROCESS_OUTPUTS, new org.apache.thrift.meta_data.FieldMetaData("processOutputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.application.io.OutputDataObjectType.class))));
    tmpMap.put(_Fields.RESOURCE_SCHEDULE, new org.apache.thrift.meta_data.FieldMetaData("resourceSchedule", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel.class)));
    tmpMap.put(_Fields.TASKS, new org.apache.thrift.meta_data.FieldMetaData("tasks", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.task.TaskModel.class))));
    tmpMap.put(_Fields.TASK_DAG, new org.apache.thrift.meta_data.FieldMetaData("taskDag", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.PROCESS_ERROR, new org.apache.thrift.meta_data.FieldMetaData("processError", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.commons.ErrorModel.class)));
    tmpMap.put(_Fields.GATEWAY_EXECUTION_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayExecutionId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.ENABLE_EMAIL_NOTIFICATION, new org.apache.thrift.meta_data.FieldMetaData("enableEmailNotification", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.EMAIL_ADDRESSES, new org.apache.thrift.meta_data.FieldMetaData("emailAddresses", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
    tmpMap.put(_Fields.STORAGE_RESOURCE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageResourceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.USER_DN, new org.apache.thrift.meta_data.FieldMetaData("userDn", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.GENERATE_CERT, new org.apache.thrift.meta_data.FieldMetaData("generateCert", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.EXPERIMENT_DATA_DIR, new org.apache.thrift.meta_data.FieldMetaData("experimentDataDir", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.USER_NAME, new org.apache.thrift.meta_data.FieldMetaData("userName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    metaDataMap = Collections.unmodifiableMap(tmpMap);
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ProcessModel.class, metaDataMap);
  }

  public ProcessModel() {
    this.processId = "DO_NOT_SET_AT_CLIENTS";

    this.generateCert = false;

  }

  public ProcessModel(
    String processId,
    String experimentId)
  {
    this();
    this.processId = processId;
    this.experimentId = experimentId;
  }

  /**
   * Performs a deep copy on other.
   */
  public ProcessModel(ProcessModel other) {
    __isset_bitfield = other.__isset_bitfield;
    if (other.isSetProcessId()) {
      this.processId = other.processId;
    }
    if (other.isSetExperimentId()) {
      this.experimentId = other.experimentId;
    }
    this.creationTime = other.creationTime;
    this.lastUpdateTime = other.lastUpdateTime;
    if (other.isSetProcessStatus()) {
      this.processStatus = new org.apache.airavata.model.status.ProcessStatus(other.processStatus);
    }
    if (other.isSetProcessDetail()) {
      this.processDetail = other.processDetail;
    }
    if (other.isSetApplicationInterfaceId()) {
      this.applicationInterfaceId = other.applicationInterfaceId;
    }
    if (other.isSetApplicationDeploymentId()) {
      this.applicationDeploymentId = other.applicationDeploymentId;
    }
    if (other.isSetComputeResourceId()) {
      this.computeResourceId = other.computeResourceId;
    }
    if (other.isSetProcessInputs()) {
      List __this__processInputs = new ArrayList(other.processInputs.size());
      for (org.apache.airavata.model.application.io.InputDataObjectType other_element : other.processInputs) {
        __this__processInputs.add(new org.apache.airavata.model.application.io.InputDataObjectType(other_element));
      }
      this.processInputs = __this__processInputs;
    }
    if (other.isSetProcessOutputs()) {
      List __this__processOutputs = new ArrayList(other.processOutputs.size());
      for (org.apache.airavata.model.application.io.OutputDataObjectType other_element : other.processOutputs) {
        __this__processOutputs.add(new org.apache.airavata.model.application.io.OutputDataObjectType(other_element));
      }
      this.processOutputs = __this__processOutputs;
    }
    if (other.isSetResourceSchedule()) {
      this.resourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel(other.resourceSchedule);
    }
    if (other.isSetTasks()) {
      List __this__tasks = new ArrayList(other.tasks.size());
      for (org.apache.airavata.model.task.TaskModel other_element : other.tasks) {
        __this__tasks.add(new org.apache.airavata.model.task.TaskModel(other_element));
      }
      this.tasks = __this__tasks;
    }
    if (other.isSetTaskDag()) {
      this.taskDag = other.taskDag;
    }
    if (other.isSetProcessError()) {
      this.processError = new org.apache.airavata.model.commons.ErrorModel(other.processError);
    }
    if (other.isSetGatewayExecutionId()) {
      this.gatewayExecutionId = other.gatewayExecutionId;
    }
    this.enableEmailNotification = other.enableEmailNotification;
    if (other.isSetEmailAddresses()) {
      List __this__emailAddresses = new ArrayList(other.emailAddresses);
      this.emailAddresses = __this__emailAddresses;
    }
    if (other.isSetStorageResourceId()) {
      this.storageResourceId = other.storageResourceId;
    }
    if (other.isSetUserDn()) {
      this.userDn = other.userDn;
    }
    this.generateCert = other.generateCert;
    if (other.isSetExperimentDataDir()) {
      this.experimentDataDir = other.experimentDataDir;
    }
    if (other.isSetUserName()) {
      this.userName = other.userName;
    }
  }

  public ProcessModel deepCopy() {
    return new ProcessModel(this);
  }

  @Override
  public void clear() {
    this.processId = "DO_NOT_SET_AT_CLIENTS";

    this.experimentId = null;
    setCreationTimeIsSet(false);
    this.creationTime = 0;
    setLastUpdateTimeIsSet(false);
    this.lastUpdateTime = 0;
    this.processStatus = null;
    this.processDetail = null;
    this.applicationInterfaceId = null;
    this.applicationDeploymentId = null;
    this.computeResourceId = null;
    this.processInputs = null;
    this.processOutputs = null;
    this.resourceSchedule = null;
    this.tasks = null;
    this.taskDag = null;
    this.processError = null;
    this.gatewayExecutionId = null;
    setEnableEmailNotificationIsSet(false);
    this.enableEmailNotification = false;
    this.emailAddresses = null;
    this.storageResourceId = null;
    this.userDn = null;
    this.generateCert = false;

    this.experimentDataDir = null;
    this.userName = null;
  }

  public String getProcessId() {
    return this.processId;
  }

  public void setProcessId(String processId) {
    this.processId = processId;
  }

  public void unsetProcessId() {
    this.processId = null;
  }

  /** Returns true if field processId is set (has been assigned a value) and false otherwise */
  public boolean isSetProcessId() {
    return this.processId != null;
  }

  public void setProcessIdIsSet(boolean value) {
    if (!value) {
      this.processId = null;
    }
  }

  public String getExperimentId() {
    return this.experimentId;
  }

  public void setExperimentId(String experimentId) {
    this.experimentId = experimentId;
  }

  public void unsetExperimentId() {
    this.experimentId = null;
  }

  /** Returns true if field experimentId is set (has been assigned a value) and false otherwise */
  public boolean isSetExperimentId() {
    return this.experimentId != null;
  }

  public void setExperimentIdIsSet(boolean value) {
    if (!value) {
      this.experimentId = null;
    }
  }

  public long getCreationTime() {
    return this.creationTime;
  }

  public void setCreationTime(long creationTime) {
    this.creationTime = creationTime;
    setCreationTimeIsSet(true);
  }

  public void unsetCreationTime() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CREATIONTIME_ISSET_ID);
  }

  /** Returns true if field creationTime is set (has been assigned a value) and false otherwise */
  public boolean isSetCreationTime() {
    return EncodingUtils.testBit(__isset_bitfield, __CREATIONTIME_ISSET_ID);
  }

  public void setCreationTimeIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CREATIONTIME_ISSET_ID, value);
  }

  public long getLastUpdateTime() {
    return this.lastUpdateTime;
  }

  public void setLastUpdateTime(long lastUpdateTime) {
    this.lastUpdateTime = lastUpdateTime;
    setLastUpdateTimeIsSet(true);
  }

  public void unsetLastUpdateTime() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __LASTUPDATETIME_ISSET_ID);
  }

  /** Returns true if field lastUpdateTime is set (has been assigned a value) and false otherwise */
  public boolean isSetLastUpdateTime() {
    return EncodingUtils.testBit(__isset_bitfield, __LASTUPDATETIME_ISSET_ID);
  }

  public void setLastUpdateTimeIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __LASTUPDATETIME_ISSET_ID, value);
  }

  public org.apache.airavata.model.status.ProcessStatus getProcessStatus() {
    return this.processStatus;
  }

  public void setProcessStatus(org.apache.airavata.model.status.ProcessStatus processStatus) {
    this.processStatus = processStatus;
  }

  public void unsetProcessStatus() {
    this.processStatus = null;
  }

  /** Returns true if field processStatus is set (has been assigned a value) and false otherwise */
  public boolean isSetProcessStatus() {
    return this.processStatus != null;
  }

  public void setProcessStatusIsSet(boolean value) {
    if (!value) {
      this.processStatus = null;
    }
  }

  public String getProcessDetail() {
    return this.processDetail;
  }

  public void setProcessDetail(String processDetail) {
    this.processDetail = processDetail;
  }

  public void unsetProcessDetail() {
    this.processDetail = null;
  }

  /** Returns true if field processDetail is set (has been assigned a value) and false otherwise */
  public boolean isSetProcessDetail() {
    return this.processDetail != null;
  }

  public void setProcessDetailIsSet(boolean value) {
    if (!value) {
      this.processDetail = null;
    }
  }

  public String getApplicationInterfaceId() {
    return this.applicationInterfaceId;
  }

  public void setApplicationInterfaceId(String applicationInterfaceId) {
    this.applicationInterfaceId = applicationInterfaceId;
  }

  public void unsetApplicationInterfaceId() {
    this.applicationInterfaceId = null;
  }

  /** Returns true if field applicationInterfaceId is set (has been assigned a value) and false otherwise */
  public boolean isSetApplicationInterfaceId() {
    return this.applicationInterfaceId != null;
  }

  public void setApplicationInterfaceIdIsSet(boolean value) {
    if (!value) {
      this.applicationInterfaceId = null;
    }
  }

  public String getApplicationDeploymentId() {
    return this.applicationDeploymentId;
  }

  public void setApplicationDeploymentId(String applicationDeploymentId) {
    this.applicationDeploymentId = applicationDeploymentId;
  }

  public void unsetApplicationDeploymentId() {
    this.applicationDeploymentId = null;
  }

  /** Returns true if field applicationDeploymentId is set (has been assigned a value) and false otherwise */
  public boolean isSetApplicationDeploymentId() {
    return this.applicationDeploymentId != null;
  }

  public void setApplicationDeploymentIdIsSet(boolean value) {
    if (!value) {
      this.applicationDeploymentId = null;
    }
  }

  public String getComputeResourceId() {
    return this.computeResourceId;
  }

  public void setComputeResourceId(String computeResourceId) {
    this.computeResourceId = computeResourceId;
  }

  public void unsetComputeResourceId() {
    this.computeResourceId = null;
  }

  /** Returns true if field computeResourceId is set (has been assigned a value) and false otherwise */
  public boolean isSetComputeResourceId() {
    return this.computeResourceId != null;
  }

  public void setComputeResourceIdIsSet(boolean value) {
    if (!value) {
      this.computeResourceId = null;
    }
  }

  public int getProcessInputsSize() {
    return (this.processInputs == null) ? 0 : this.processInputs.size();
  }

  public java.util.Iterator getProcessInputsIterator() {
    return (this.processInputs == null) ? null : this.processInputs.iterator();
  }

  public void addToProcessInputs(org.apache.airavata.model.application.io.InputDataObjectType elem) {
    if (this.processInputs == null) {
      this.processInputs = new ArrayList();
    }
    this.processInputs.add(elem);
  }

  public List getProcessInputs() {
    return this.processInputs;
  }

  public void setProcessInputs(List processInputs) {
    this.processInputs = processInputs;
  }

  public void unsetProcessInputs() {
    this.processInputs = null;
  }

  /** Returns true if field processInputs is set (has been assigned a value) and false otherwise */
  public boolean isSetProcessInputs() {
    return this.processInputs != null;
  }

  public void setProcessInputsIsSet(boolean value) {
    if (!value) {
      this.processInputs = null;
    }
  }

  public int getProcessOutputsSize() {
    return (this.processOutputs == null) ? 0 : this.processOutputs.size();
  }

  public java.util.Iterator getProcessOutputsIterator() {
    return (this.processOutputs == null) ? null : this.processOutputs.iterator();
  }

  public void addToProcessOutputs(org.apache.airavata.model.application.io.OutputDataObjectType elem) {
    if (this.processOutputs == null) {
      this.processOutputs = new ArrayList();
    }
    this.processOutputs.add(elem);
  }

  public List getProcessOutputs() {
    return this.processOutputs;
  }

  public void setProcessOutputs(List processOutputs) {
    this.processOutputs = processOutputs;
  }

  public void unsetProcessOutputs() {
    this.processOutputs = null;
  }

  /** Returns true if field processOutputs is set (has been assigned a value) and false otherwise */
  public boolean isSetProcessOutputs() {
    return this.processOutputs != null;
  }

  public void setProcessOutputsIsSet(boolean value) {
    if (!value) {
      this.processOutputs = null;
    }
  }

  public org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel getResourceSchedule() {
    return this.resourceSchedule;
  }

  public void setResourceSchedule(org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel resourceSchedule) {
    this.resourceSchedule = resourceSchedule;
  }

  public void unsetResourceSchedule() {
    this.resourceSchedule = null;
  }

  /** Returns true if field resourceSchedule is set (has been assigned a value) and false otherwise */
  public boolean isSetResourceSchedule() {
    return this.resourceSchedule != null;
  }

  public void setResourceScheduleIsSet(boolean value) {
    if (!value) {
      this.resourceSchedule = null;
    }
  }

  public int getTasksSize() {
    return (this.tasks == null) ? 0 : this.tasks.size();
  }

  public java.util.Iterator getTasksIterator() {
    return (this.tasks == null) ? null : this.tasks.iterator();
  }

  public void addToTasks(org.apache.airavata.model.task.TaskModel elem) {
    if (this.tasks == null) {
      this.tasks = new ArrayList();
    }
    this.tasks.add(elem);
  }

  public List getTasks() {
    return this.tasks;
  }

  public void setTasks(List tasks) {
    this.tasks = tasks;
  }

  public void unsetTasks() {
    this.tasks = null;
  }

  /** Returns true if field tasks is set (has been assigned a value) and false otherwise */
  public boolean isSetTasks() {
    return this.tasks != null;
  }

  public void setTasksIsSet(boolean value) {
    if (!value) {
      this.tasks = null;
    }
  }

  public String getTaskDag() {
    return this.taskDag;
  }

  public void setTaskDag(String taskDag) {
    this.taskDag = taskDag;
  }

  public void unsetTaskDag() {
    this.taskDag = null;
  }

  /** Returns true if field taskDag is set (has been assigned a value) and false otherwise */
  public boolean isSetTaskDag() {
    return this.taskDag != null;
  }

  public void setTaskDagIsSet(boolean value) {
    if (!value) {
      this.taskDag = null;
    }
  }

  public org.apache.airavata.model.commons.ErrorModel getProcessError() {
    return this.processError;
  }

  public void setProcessError(org.apache.airavata.model.commons.ErrorModel processError) {
    this.processError = processError;
  }

  public void unsetProcessError() {
    this.processError = null;
  }

  /** Returns true if field processError is set (has been assigned a value) and false otherwise */
  public boolean isSetProcessError() {
    return this.processError != null;
  }

  public void setProcessErrorIsSet(boolean value) {
    if (!value) {
      this.processError = null;
    }
  }

  public String getGatewayExecutionId() {
    return this.gatewayExecutionId;
  }

  public void setGatewayExecutionId(String gatewayExecutionId) {
    this.gatewayExecutionId = gatewayExecutionId;
  }

  public void unsetGatewayExecutionId() {
    this.gatewayExecutionId = null;
  }

  /** Returns true if field gatewayExecutionId is set (has been assigned a value) and false otherwise */
  public boolean isSetGatewayExecutionId() {
    return this.gatewayExecutionId != null;
  }

  public void setGatewayExecutionIdIsSet(boolean value) {
    if (!value) {
      this.gatewayExecutionId = null;
    }
  }

  public boolean isEnableEmailNotification() {
    return this.enableEmailNotification;
  }

  public void setEnableEmailNotification(boolean enableEmailNotification) {
    this.enableEmailNotification = enableEmailNotification;
    setEnableEmailNotificationIsSet(true);
  }

  public void unsetEnableEmailNotification() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ENABLEEMAILNOTIFICATION_ISSET_ID);
  }

  /** Returns true if field enableEmailNotification is set (has been assigned a value) and false otherwise */
  public boolean isSetEnableEmailNotification() {
    return EncodingUtils.testBit(__isset_bitfield, __ENABLEEMAILNOTIFICATION_ISSET_ID);
  }

  public void setEnableEmailNotificationIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ENABLEEMAILNOTIFICATION_ISSET_ID, value);
  }

  public int getEmailAddressesSize() {
    return (this.emailAddresses == null) ? 0 : this.emailAddresses.size();
  }

  public java.util.Iterator getEmailAddressesIterator() {
    return (this.emailAddresses == null) ? null : this.emailAddresses.iterator();
  }

  public void addToEmailAddresses(String elem) {
    if (this.emailAddresses == null) {
      this.emailAddresses = new ArrayList();
    }
    this.emailAddresses.add(elem);
  }

  public List getEmailAddresses() {
    return this.emailAddresses;
  }

  public void setEmailAddresses(List emailAddresses) {
    this.emailAddresses = emailAddresses;
  }

  public void unsetEmailAddresses() {
    this.emailAddresses = null;
  }

  /** Returns true if field emailAddresses is set (has been assigned a value) and false otherwise */
  public boolean isSetEmailAddresses() {
    return this.emailAddresses != null;
  }

  public void setEmailAddressesIsSet(boolean value) {
    if (!value) {
      this.emailAddresses = null;
    }
  }

  public String getStorageResourceId() {
    return this.storageResourceId;
  }

  public void setStorageResourceId(String storageResourceId) {
    this.storageResourceId = storageResourceId;
  }

  public void unsetStorageResourceId() {
    this.storageResourceId = null;
  }

  /** Returns true if field storageResourceId is set (has been assigned a value) and false otherwise */
  public boolean isSetStorageResourceId() {
    return this.storageResourceId != null;
  }

  public void setStorageResourceIdIsSet(boolean value) {
    if (!value) {
      this.storageResourceId = null;
    }
  }

  public String getUserDn() {
    return this.userDn;
  }

  public void setUserDn(String userDn) {
    this.userDn = userDn;
  }

  public void unsetUserDn() {
    this.userDn = null;
  }

  /** Returns true if field userDn is set (has been assigned a value) and false otherwise */
  public boolean isSetUserDn() {
    return this.userDn != null;
  }

  public void setUserDnIsSet(boolean value) {
    if (!value) {
      this.userDn = null;
    }
  }

  public boolean isGenerateCert() {
    return this.generateCert;
  }

  public void setGenerateCert(boolean generateCert) {
    this.generateCert = generateCert;
    setGenerateCertIsSet(true);
  }

  public void unsetGenerateCert() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __GENERATECERT_ISSET_ID);
  }

  /** Returns true if field generateCert is set (has been assigned a value) and false otherwise */
  public boolean isSetGenerateCert() {
    return EncodingUtils.testBit(__isset_bitfield, __GENERATECERT_ISSET_ID);
  }

  public void setGenerateCertIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __GENERATECERT_ISSET_ID, value);
  }

  public String getExperimentDataDir() {
    return this.experimentDataDir;
  }

  public void setExperimentDataDir(String experimentDataDir) {
    this.experimentDataDir = experimentDataDir;
  }

  public void unsetExperimentDataDir() {
    this.experimentDataDir = null;
  }

  /** Returns true if field experimentDataDir is set (has been assigned a value) and false otherwise */
  public boolean isSetExperimentDataDir() {
    return this.experimentDataDir != null;
  }

  public void setExperimentDataDirIsSet(boolean value) {
    if (!value) {
      this.experimentDataDir = null;
    }
  }

  public String getUserName() {
    return this.userName;
  }

  public void setUserName(String userName) {
    this.userName = userName;
  }

  public void unsetUserName() {
    this.userName = null;
  }

  /** Returns true if field userName is set (has been assigned a value) and false otherwise */
  public boolean isSetUserName() {
    return this.userName != null;
  }

  public void setUserNameIsSet(boolean value) {
    if (!value) {
      this.userName = null;
    }
  }

  public void setFieldValue(_Fields field, Object value) {
    switch (field) {
    case PROCESS_ID:
      if (value == null) {
        unsetProcessId();
      } else {
        setProcessId((String)value);
      }
      break;

    case EXPERIMENT_ID:
      if (value == null) {
        unsetExperimentId();
      } else {
        setExperimentId((String)value);
      }
      break;

    case CREATION_TIME:
      if (value == null) {
        unsetCreationTime();
      } else {
        setCreationTime((Long)value);
      }
      break;

    case LAST_UPDATE_TIME:
      if (value == null) {
        unsetLastUpdateTime();
      } else {
        setLastUpdateTime((Long)value);
      }
      break;

    case PROCESS_STATUS:
      if (value == null) {
        unsetProcessStatus();
      } else {
        setProcessStatus((org.apache.airavata.model.status.ProcessStatus)value);
      }
      break;

    case PROCESS_DETAIL:
      if (value == null) {
        unsetProcessDetail();
      } else {
        setProcessDetail((String)value);
      }
      break;

    case APPLICATION_INTERFACE_ID:
      if (value == null) {
        unsetApplicationInterfaceId();
      } else {
        setApplicationInterfaceId((String)value);
      }
      break;

    case APPLICATION_DEPLOYMENT_ID:
      if (value == null) {
        unsetApplicationDeploymentId();
      } else {
        setApplicationDeploymentId((String)value);
      }
      break;

    case COMPUTE_RESOURCE_ID:
      if (value == null) {
        unsetComputeResourceId();
      } else {
        setComputeResourceId((String)value);
      }
      break;

    case PROCESS_INPUTS:
      if (value == null) {
        unsetProcessInputs();
      } else {
        setProcessInputs((List)value);
      }
      break;

    case PROCESS_OUTPUTS:
      if (value == null) {
        unsetProcessOutputs();
      } else {
        setProcessOutputs((List)value);
      }
      break;

    case RESOURCE_SCHEDULE:
      if (value == null) {
        unsetResourceSchedule();
      } else {
        setResourceSchedule((org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel)value);
      }
      break;

    case TASKS:
      if (value == null) {
        unsetTasks();
      } else {
        setTasks((List)value);
      }
      break;

    case TASK_DAG:
      if (value == null) {
        unsetTaskDag();
      } else {
        setTaskDag((String)value);
      }
      break;

    case PROCESS_ERROR:
      if (value == null) {
        unsetProcessError();
      } else {
        setProcessError((org.apache.airavata.model.commons.ErrorModel)value);
      }
      break;

    case GATEWAY_EXECUTION_ID:
      if (value == null) {
        unsetGatewayExecutionId();
      } else {
        setGatewayExecutionId((String)value);
      }
      break;

    case ENABLE_EMAIL_NOTIFICATION:
      if (value == null) {
        unsetEnableEmailNotification();
      } else {
        setEnableEmailNotification((Boolean)value);
      }
      break;

    case EMAIL_ADDRESSES:
      if (value == null) {
        unsetEmailAddresses();
      } else {
        setEmailAddresses((List)value);
      }
      break;

    case STORAGE_RESOURCE_ID:
      if (value == null) {
        unsetStorageResourceId();
      } else {
        setStorageResourceId((String)value);
      }
      break;

    case USER_DN:
      if (value == null) {
        unsetUserDn();
      } else {
        setUserDn((String)value);
      }
      break;

    case GENERATE_CERT:
      if (value == null) {
        unsetGenerateCert();
      } else {
        setGenerateCert((Boolean)value);
      }
      break;

    case EXPERIMENT_DATA_DIR:
      if (value == null) {
        unsetExperimentDataDir();
      } else {
        setExperimentDataDir((String)value);
      }
      break;

    case USER_NAME:
      if (value == null) {
        unsetUserName();
      } else {
        setUserName((String)value);
      }
      break;

    }
  }

  public Object getFieldValue(_Fields field) {
    switch (field) {
    case PROCESS_ID:
      return getProcessId();

    case EXPERIMENT_ID:
      return getExperimentId();

    case CREATION_TIME:
      return getCreationTime();

    case LAST_UPDATE_TIME:
      return getLastUpdateTime();

    case PROCESS_STATUS:
      return getProcessStatus();

    case PROCESS_DETAIL:
      return getProcessDetail();

    case APPLICATION_INTERFACE_ID:
      return getApplicationInterfaceId();

    case APPLICATION_DEPLOYMENT_ID:
      return getApplicationDeploymentId();

    case COMPUTE_RESOURCE_ID:
      return getComputeResourceId();

    case PROCESS_INPUTS:
      return getProcessInputs();

    case PROCESS_OUTPUTS:
      return getProcessOutputs();

    case RESOURCE_SCHEDULE:
      return getResourceSchedule();

    case TASKS:
      return getTasks();

    case TASK_DAG:
      return getTaskDag();

    case PROCESS_ERROR:
      return getProcessError();

    case GATEWAY_EXECUTION_ID:
      return getGatewayExecutionId();

    case ENABLE_EMAIL_NOTIFICATION:
      return isEnableEmailNotification();

    case EMAIL_ADDRESSES:
      return getEmailAddresses();

    case STORAGE_RESOURCE_ID:
      return getStorageResourceId();

    case USER_DN:
      return getUserDn();

    case GENERATE_CERT:
      return isGenerateCert();

    case EXPERIMENT_DATA_DIR:
      return getExperimentDataDir();

    case USER_NAME:
      return getUserName();

    }
    throw new IllegalStateException();
  }

  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
  public boolean isSet(_Fields field) {
    if (field == null) {
      throw new IllegalArgumentException();
    }

    switch (field) {
    case PROCESS_ID:
      return isSetProcessId();
    case EXPERIMENT_ID:
      return isSetExperimentId();
    case CREATION_TIME:
      return isSetCreationTime();
    case LAST_UPDATE_TIME:
      return isSetLastUpdateTime();
    case PROCESS_STATUS:
      return isSetProcessStatus();
    case PROCESS_DETAIL:
      return isSetProcessDetail();
    case APPLICATION_INTERFACE_ID:
      return isSetApplicationInterfaceId();
    case APPLICATION_DEPLOYMENT_ID:
      return isSetApplicationDeploymentId();
    case COMPUTE_RESOURCE_ID:
      return isSetComputeResourceId();
    case PROCESS_INPUTS:
      return isSetProcessInputs();
    case PROCESS_OUTPUTS:
      return isSetProcessOutputs();
    case RESOURCE_SCHEDULE:
      return isSetResourceSchedule();
    case TASKS:
      return isSetTasks();
    case TASK_DAG:
      return isSetTaskDag();
    case PROCESS_ERROR:
      return isSetProcessError();
    case GATEWAY_EXECUTION_ID:
      return isSetGatewayExecutionId();
    case ENABLE_EMAIL_NOTIFICATION:
      return isSetEnableEmailNotification();
    case EMAIL_ADDRESSES:
      return isSetEmailAddresses();
    case STORAGE_RESOURCE_ID:
      return isSetStorageResourceId();
    case USER_DN:
      return isSetUserDn();
    case GENERATE_CERT:
      return isSetGenerateCert();
    case EXPERIMENT_DATA_DIR:
      return isSetExperimentDataDir();
    case USER_NAME:
      return isSetUserName();
    }
    throw new IllegalStateException();
  }

  @Override
  public boolean equals(Object that) {
    if (that == null)
      return false;
    if (that instanceof ProcessModel)
      return this.equals((ProcessModel)that);
    return false;
  }

  public boolean equals(ProcessModel that) {
    if (that == null)
      return false;

    boolean this_present_processId = true && this.isSetProcessId();
    boolean that_present_processId = true && that.isSetProcessId();
    if (this_present_processId || that_present_processId) {
      if (!(this_present_processId && that_present_processId))
        return false;
      if (!this.processId.equals(that.processId))
        return false;
    }

    boolean this_present_experimentId = true && this.isSetExperimentId();
    boolean that_present_experimentId = true && that.isSetExperimentId();
    if (this_present_experimentId || that_present_experimentId) {
      if (!(this_present_experimentId && that_present_experimentId))
        return false;
      if (!this.experimentId.equals(that.experimentId))
        return false;
    }

    boolean this_present_creationTime = true && this.isSetCreationTime();
    boolean that_present_creationTime = true && that.isSetCreationTime();
    if (this_present_creationTime || that_present_creationTime) {
      if (!(this_present_creationTime && that_present_creationTime))
        return false;
      if (this.creationTime != that.creationTime)
        return false;
    }

    boolean this_present_lastUpdateTime = true && this.isSetLastUpdateTime();
    boolean that_present_lastUpdateTime = true && that.isSetLastUpdateTime();
    if (this_present_lastUpdateTime || that_present_lastUpdateTime) {
      if (!(this_present_lastUpdateTime && that_present_lastUpdateTime))
        return false;
      if (this.lastUpdateTime != that.lastUpdateTime)
        return false;
    }

    boolean this_present_processStatus = true && this.isSetProcessStatus();
    boolean that_present_processStatus = true && that.isSetProcessStatus();
    if (this_present_processStatus || that_present_processStatus) {
      if (!(this_present_processStatus && that_present_processStatus))
        return false;
      if (!this.processStatus.equals(that.processStatus))
        return false;
    }

    boolean this_present_processDetail = true && this.isSetProcessDetail();
    boolean that_present_processDetail = true && that.isSetProcessDetail();
    if (this_present_processDetail || that_present_processDetail) {
      if (!(this_present_processDetail && that_present_processDetail))
        return false;
      if (!this.processDetail.equals(that.processDetail))
        return false;
    }

    boolean this_present_applicationInterfaceId = true && this.isSetApplicationInterfaceId();
    boolean that_present_applicationInterfaceId = true && that.isSetApplicationInterfaceId();
    if (this_present_applicationInterfaceId || that_present_applicationInterfaceId) {
      if (!(this_present_applicationInterfaceId && that_present_applicationInterfaceId))
        return false;
      if (!this.applicationInterfaceId.equals(that.applicationInterfaceId))
        return false;
    }

    boolean this_present_applicationDeploymentId = true && this.isSetApplicationDeploymentId();
    boolean that_present_applicationDeploymentId = true && that.isSetApplicationDeploymentId();
    if (this_present_applicationDeploymentId || that_present_applicationDeploymentId) {
      if (!(this_present_applicationDeploymentId && that_present_applicationDeploymentId))
        return false;
      if (!this.applicationDeploymentId.equals(that.applicationDeploymentId))
        return false;
    }

    boolean this_present_computeResourceId = true && this.isSetComputeResourceId();
    boolean that_present_computeResourceId = true && that.isSetComputeResourceId();
    if (this_present_computeResourceId || that_present_computeResourceId) {
      if (!(this_present_computeResourceId && that_present_computeResourceId))
        return false;
      if (!this.computeResourceId.equals(that.computeResourceId))
        return false;
    }

    boolean this_present_processInputs = true && this.isSetProcessInputs();
    boolean that_present_processInputs = true && that.isSetProcessInputs();
    if (this_present_processInputs || that_present_processInputs) {
      if (!(this_present_processInputs && that_present_processInputs))
        return false;
      if (!this.processInputs.equals(that.processInputs))
        return false;
    }

    boolean this_present_processOutputs = true && this.isSetProcessOutputs();
    boolean that_present_processOutputs = true && that.isSetProcessOutputs();
    if (this_present_processOutputs || that_present_processOutputs) {
      if (!(this_present_processOutputs && that_present_processOutputs))
        return false;
      if (!this.processOutputs.equals(that.processOutputs))
        return false;
    }

    boolean this_present_resourceSchedule = true && this.isSetResourceSchedule();
    boolean that_present_resourceSchedule = true && that.isSetResourceSchedule();
    if (this_present_resourceSchedule || that_present_resourceSchedule) {
      if (!(this_present_resourceSchedule && that_present_resourceSchedule))
        return false;
      if (!this.resourceSchedule.equals(that.resourceSchedule))
        return false;
    }

    boolean this_present_tasks = true && this.isSetTasks();
    boolean that_present_tasks = true && that.isSetTasks();
    if (this_present_tasks || that_present_tasks) {
      if (!(this_present_tasks && that_present_tasks))
        return false;
      if (!this.tasks.equals(that.tasks))
        return false;
    }

    boolean this_present_taskDag = true && this.isSetTaskDag();
    boolean that_present_taskDag = true && that.isSetTaskDag();
    if (this_present_taskDag || that_present_taskDag) {
      if (!(this_present_taskDag && that_present_taskDag))
        return false;
      if (!this.taskDag.equals(that.taskDag))
        return false;
    }

    boolean this_present_processError = true && this.isSetProcessError();
    boolean that_present_processError = true && that.isSetProcessError();
    if (this_present_processError || that_present_processError) {
      if (!(this_present_processError && that_present_processError))
        return false;
      if (!this.processError.equals(that.processError))
        return false;
    }

    boolean this_present_gatewayExecutionId = true && this.isSetGatewayExecutionId();
    boolean that_present_gatewayExecutionId = true && that.isSetGatewayExecutionId();
    if (this_present_gatewayExecutionId || that_present_gatewayExecutionId) {
      if (!(this_present_gatewayExecutionId && that_present_gatewayExecutionId))
        return false;
      if (!this.gatewayExecutionId.equals(that.gatewayExecutionId))
        return false;
    }

    boolean this_present_enableEmailNotification = true && this.isSetEnableEmailNotification();
    boolean that_present_enableEmailNotification = true && that.isSetEnableEmailNotification();
    if (this_present_enableEmailNotification || that_present_enableEmailNotification) {
      if (!(this_present_enableEmailNotification && that_present_enableEmailNotification))
        return false;
      if (this.enableEmailNotification != that.enableEmailNotification)
        return false;
    }

    boolean this_present_emailAddresses = true && this.isSetEmailAddresses();
    boolean that_present_emailAddresses = true && that.isSetEmailAddresses();
    if (this_present_emailAddresses || that_present_emailAddresses) {
      if (!(this_present_emailAddresses && that_present_emailAddresses))
        return false;
      if (!this.emailAddresses.equals(that.emailAddresses))
        return false;
    }

    boolean this_present_storageResourceId = true && this.isSetStorageResourceId();
    boolean that_present_storageResourceId = true && that.isSetStorageResourceId();
    if (this_present_storageResourceId || that_present_storageResourceId) {
      if (!(this_present_storageResourceId && that_present_storageResourceId))
        return false;
      if (!this.storageResourceId.equals(that.storageResourceId))
        return false;
    }

    boolean this_present_userDn = true && this.isSetUserDn();
    boolean that_present_userDn = true && that.isSetUserDn();
    if (this_present_userDn || that_present_userDn) {
      if (!(this_present_userDn && that_present_userDn))
        return false;
      if (!this.userDn.equals(that.userDn))
        return false;
    }

    boolean this_present_generateCert = true && this.isSetGenerateCert();
    boolean that_present_generateCert = true && that.isSetGenerateCert();
    if (this_present_generateCert || that_present_generateCert) {
      if (!(this_present_generateCert && that_present_generateCert))
        return false;
      if (this.generateCert != that.generateCert)
        return false;
    }

    boolean this_present_experimentDataDir = true && this.isSetExperimentDataDir();
    boolean that_present_experimentDataDir = true && that.isSetExperimentDataDir();
    if (this_present_experimentDataDir || that_present_experimentDataDir) {
      if (!(this_present_experimentDataDir && that_present_experimentDataDir))
        return false;
      if (!this.experimentDataDir.equals(that.experimentDataDir))
        return false;
    }

    boolean this_present_userName = true && this.isSetUserName();
    boolean that_present_userName = true && that.isSetUserName();
    if (this_present_userName || that_present_userName) {
      if (!(this_present_userName && that_present_userName))
        return false;
      if (!this.userName.equals(that.userName))
        return false;
    }

    return true;
  }

  @Override
  public int hashCode() {
    List list = new ArrayList();

    boolean present_processId = true && (isSetProcessId());
    list.add(present_processId);
    if (present_processId)
      list.add(processId);

    boolean present_experimentId = true && (isSetExperimentId());
    list.add(present_experimentId);
    if (present_experimentId)
      list.add(experimentId);

    boolean present_creationTime = true && (isSetCreationTime());
    list.add(present_creationTime);
    if (present_creationTime)
      list.add(creationTime);

    boolean present_lastUpdateTime = true && (isSetLastUpdateTime());
    list.add(present_lastUpdateTime);
    if (present_lastUpdateTime)
      list.add(lastUpdateTime);

    boolean present_processStatus = true && (isSetProcessStatus());
    list.add(present_processStatus);
    if (present_processStatus)
      list.add(processStatus);

    boolean present_processDetail = true && (isSetProcessDetail());
    list.add(present_processDetail);
    if (present_processDetail)
      list.add(processDetail);

    boolean present_applicationInterfaceId = true && (isSetApplicationInterfaceId());
    list.add(present_applicationInterfaceId);
    if (present_applicationInterfaceId)
      list.add(applicationInterfaceId);

    boolean present_applicationDeploymentId = true && (isSetApplicationDeploymentId());
    list.add(present_applicationDeploymentId);
    if (present_applicationDeploymentId)
      list.add(applicationDeploymentId);

    boolean present_computeResourceId = true && (isSetComputeResourceId());
    list.add(present_computeResourceId);
    if (present_computeResourceId)
      list.add(computeResourceId);

    boolean present_processInputs = true && (isSetProcessInputs());
    list.add(present_processInputs);
    if (present_processInputs)
      list.add(processInputs);

    boolean present_processOutputs = true && (isSetProcessOutputs());
    list.add(present_processOutputs);
    if (present_processOutputs)
      list.add(processOutputs);

    boolean present_resourceSchedule = true && (isSetResourceSchedule());
    list.add(present_resourceSchedule);
    if (present_resourceSchedule)
      list.add(resourceSchedule);

    boolean present_tasks = true && (isSetTasks());
    list.add(present_tasks);
    if (present_tasks)
      list.add(tasks);

    boolean present_taskDag = true && (isSetTaskDag());
    list.add(present_taskDag);
    if (present_taskDag)
      list.add(taskDag);

    boolean present_processError = true && (isSetProcessError());
    list.add(present_processError);
    if (present_processError)
      list.add(processError);

    boolean present_gatewayExecutionId = true && (isSetGatewayExecutionId());
    list.add(present_gatewayExecutionId);
    if (present_gatewayExecutionId)
      list.add(gatewayExecutionId);

    boolean present_enableEmailNotification = true && (isSetEnableEmailNotification());
    list.add(present_enableEmailNotification);
    if (present_enableEmailNotification)
      list.add(enableEmailNotification);

    boolean present_emailAddresses = true && (isSetEmailAddresses());
    list.add(present_emailAddresses);
    if (present_emailAddresses)
      list.add(emailAddresses);

    boolean present_storageResourceId = true && (isSetStorageResourceId());
    list.add(present_storageResourceId);
    if (present_storageResourceId)
      list.add(storageResourceId);

    boolean present_userDn = true && (isSetUserDn());
    list.add(present_userDn);
    if (present_userDn)
      list.add(userDn);

    boolean present_generateCert = true && (isSetGenerateCert());
    list.add(present_generateCert);
    if (present_generateCert)
      list.add(generateCert);

    boolean present_experimentDataDir = true && (isSetExperimentDataDir());
    list.add(present_experimentDataDir);
    if (present_experimentDataDir)
      list.add(experimentDataDir);

    boolean present_userName = true && (isSetUserName());
    list.add(present_userName);
    if (present_userName)
      list.add(userName);

    return list.hashCode();
  }

  @Override
  public int compareTo(ProcessModel other) {
    if (!getClass().equals(other.getClass())) {
      return getClass().getName().compareTo(other.getClass().getName());
    }

    int lastComparison = 0;

    lastComparison = Boolean.valueOf(isSetProcessId()).compareTo(other.isSetProcessId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetProcessId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processId, other.processId);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetExperimentId()).compareTo(other.isSetExperimentId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetExperimentId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.experimentId, other.experimentId);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetCreationTime()).compareTo(other.isSetCreationTime());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetCreationTime()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.creationTime, other.creationTime);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetLastUpdateTime()).compareTo(other.isSetLastUpdateTime());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetLastUpdateTime()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.lastUpdateTime, other.lastUpdateTime);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetProcessStatus()).compareTo(other.isSetProcessStatus());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetProcessStatus()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processStatus, other.processStatus);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetProcessDetail()).compareTo(other.isSetProcessDetail());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetProcessDetail()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processDetail, other.processDetail);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetApplicationInterfaceId()).compareTo(other.isSetApplicationInterfaceId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetApplicationInterfaceId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.applicationInterfaceId, other.applicationInterfaceId);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetApplicationDeploymentId()).compareTo(other.isSetApplicationDeploymentId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetApplicationDeploymentId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.applicationDeploymentId, other.applicationDeploymentId);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetComputeResourceId()).compareTo(other.isSetComputeResourceId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetComputeResourceId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.computeResourceId, other.computeResourceId);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetProcessInputs()).compareTo(other.isSetProcessInputs());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetProcessInputs()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processInputs, other.processInputs);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetProcessOutputs()).compareTo(other.isSetProcessOutputs());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetProcessOutputs()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processOutputs, other.processOutputs);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetResourceSchedule()).compareTo(other.isSetResourceSchedule());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetResourceSchedule()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.resourceSchedule, other.resourceSchedule);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetTasks()).compareTo(other.isSetTasks());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetTasks()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tasks, other.tasks);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetTaskDag()).compareTo(other.isSetTaskDag());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetTaskDag()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.taskDag, other.taskDag);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetProcessError()).compareTo(other.isSetProcessError());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetProcessError()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processError, other.processError);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetGatewayExecutionId()).compareTo(other.isSetGatewayExecutionId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetGatewayExecutionId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gatewayExecutionId, other.gatewayExecutionId);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetEnableEmailNotification()).compareTo(other.isSetEnableEmailNotification());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetEnableEmailNotification()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.enableEmailNotification, other.enableEmailNotification);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetEmailAddresses()).compareTo(other.isSetEmailAddresses());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetEmailAddresses()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.emailAddresses, other.emailAddresses);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetStorageResourceId()).compareTo(other.isSetStorageResourceId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetStorageResourceId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageResourceId, other.storageResourceId);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetUserDn()).compareTo(other.isSetUserDn());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetUserDn()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userDn, other.userDn);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetGenerateCert()).compareTo(other.isSetGenerateCert());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetGenerateCert()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.generateCert, other.generateCert);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetExperimentDataDir()).compareTo(other.isSetExperimentDataDir());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetExperimentDataDir()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.experimentDataDir, other.experimentDataDir);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetUserName()).compareTo(other.isSetUserName());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetUserName()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userName, other.userName);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    return 0;
  }

  public _Fields fieldForId(int fieldId) {
    return _Fields.findByThriftId(fieldId);
  }

  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
  }

  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder("ProcessModel(");
    boolean first = true;

    sb.append("processId:");
    if (this.processId == null) {
      sb.append("null");
    } else {
      sb.append(this.processId);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("experimentId:");
    if (this.experimentId == null) {
      sb.append("null");
    } else {
      sb.append(this.experimentId);
    }
    first = false;
    if (isSetCreationTime()) {
      if (!first) sb.append(", ");
      sb.append("creationTime:");
      sb.append(this.creationTime);
      first = false;
    }
    if (isSetLastUpdateTime()) {
      if (!first) sb.append(", ");
      sb.append("lastUpdateTime:");
      sb.append(this.lastUpdateTime);
      first = false;
    }
    if (isSetProcessStatus()) {
      if (!first) sb.append(", ");
      sb.append("processStatus:");
      if (this.processStatus == null) {
        sb.append("null");
      } else {
        sb.append(this.processStatus);
      }
      first = false;
    }
    if (isSetProcessDetail()) {
      if (!first) sb.append(", ");
      sb.append("processDetail:");
      if (this.processDetail == null) {
        sb.append("null");
      } else {
        sb.append(this.processDetail);
      }
      first = false;
    }
    if (isSetApplicationInterfaceId()) {
      if (!first) sb.append(", ");
      sb.append("applicationInterfaceId:");
      if (this.applicationInterfaceId == null) {
        sb.append("null");
      } else {
        sb.append(this.applicationInterfaceId);
      }
      first = false;
    }
    if (isSetApplicationDeploymentId()) {
      if (!first) sb.append(", ");
      sb.append("applicationDeploymentId:");
      if (this.applicationDeploymentId == null) {
        sb.append("null");
      } else {
        sb.append(this.applicationDeploymentId);
      }
      first = false;
    }
    if (isSetComputeResourceId()) {
      if (!first) sb.append(", ");
      sb.append("computeResourceId:");
      if (this.computeResourceId == null) {
        sb.append("null");
      } else {
        sb.append(this.computeResourceId);
      }
      first = false;
    }
    if (isSetProcessInputs()) {
      if (!first) sb.append(", ");
      sb.append("processInputs:");
      if (this.processInputs == null) {
        sb.append("null");
      } else {
        sb.append(this.processInputs);
      }
      first = false;
    }
    if (isSetProcessOutputs()) {
      if (!first) sb.append(", ");
      sb.append("processOutputs:");
      if (this.processOutputs == null) {
        sb.append("null");
      } else {
        sb.append(this.processOutputs);
      }
      first = false;
    }
    if (isSetResourceSchedule()) {
      if (!first) sb.append(", ");
      sb.append("resourceSchedule:");
      if (this.resourceSchedule == null) {
        sb.append("null");
      } else {
        sb.append(this.resourceSchedule);
      }
      first = false;
    }
    if (isSetTasks()) {
      if (!first) sb.append(", ");
      sb.append("tasks:");
      if (this.tasks == null) {
        sb.append("null");
      } else {
        sb.append(this.tasks);
      }
      first = false;
    }
    if (isSetTaskDag()) {
      if (!first) sb.append(", ");
      sb.append("taskDag:");
      if (this.taskDag == null) {
        sb.append("null");
      } else {
        sb.append(this.taskDag);
      }
      first = false;
    }
    if (isSetProcessError()) {
      if (!first) sb.append(", ");
      sb.append("processError:");
      if (this.processError == null) {
        sb.append("null");
      } else {
        sb.append(this.processError);
      }
      first = false;
    }
    if (isSetGatewayExecutionId()) {
      if (!first) sb.append(", ");
      sb.append("gatewayExecutionId:");
      if (this.gatewayExecutionId == null) {
        sb.append("null");
      } else {
        sb.append(this.gatewayExecutionId);
      }
      first = false;
    }
    if (isSetEnableEmailNotification()) {
      if (!first) sb.append(", ");
      sb.append("enableEmailNotification:");
      sb.append(this.enableEmailNotification);
      first = false;
    }
    if (isSetEmailAddresses()) {
      if (!first) sb.append(", ");
      sb.append("emailAddresses:");
      if (this.emailAddresses == null) {
        sb.append("null");
      } else {
        sb.append(this.emailAddresses);
      }
      first = false;
    }
    if (isSetStorageResourceId()) {
      if (!first) sb.append(", ");
      sb.append("storageResourceId:");
      if (this.storageResourceId == null) {
        sb.append("null");
      } else {
        sb.append(this.storageResourceId);
      }
      first = false;
    }
    if (isSetUserDn()) {
      if (!first) sb.append(", ");
      sb.append("userDn:");
      if (this.userDn == null) {
        sb.append("null");
      } else {
        sb.append(this.userDn);
      }
      first = false;
    }
    if (isSetGenerateCert()) {
      if (!first) sb.append(", ");
      sb.append("generateCert:");
      sb.append(this.generateCert);
      first = false;
    }
    if (isSetExperimentDataDir()) {
      if (!first) sb.append(", ");
      sb.append("experimentDataDir:");
      if (this.experimentDataDir == null) {
        sb.append("null");
      } else {
        sb.append(this.experimentDataDir);
      }
      first = false;
    }
    if (isSetUserName()) {
      if (!first) sb.append(", ");
      sb.append("userName:");
      if (this.userName == null) {
        sb.append("null");
      } else {
        sb.append(this.userName);
      }
      first = false;
    }
    sb.append(")");
    return sb.toString();
  }

  public void validate() throws org.apache.thrift.TException {
    // check for required fields
    if (!isSetProcessId()) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'processId' is unset! Struct:" + toString());
    }

    if (!isSetExperimentId()) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'experimentId' is unset! Struct:" + toString());
    }

    // check for sub-struct validity
    if (processStatus != null) {
      processStatus.validate();
    }
    if (resourceSchedule != null) {
      resourceSchedule.validate();
    }
    if (processError != null) {
      processError.validate();
    }
  }

  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
    try {
      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
    try {
      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
      __isset_bitfield = 0;
      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private static class ProcessModelStandardSchemeFactory implements SchemeFactory {
    public ProcessModelStandardScheme getScheme() {
      return new ProcessModelStandardScheme();
    }
  }

  private static class ProcessModelStandardScheme extends StandardScheme {

    public void read(org.apache.thrift.protocol.TProtocol iprot, ProcessModel struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TField schemeField;
      iprot.readStructBegin();
      while (true)
      {
        schemeField = iprot.readFieldBegin();
        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
          break;
        }
        switch (schemeField.id) {
          case 1: // PROCESS_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.processId = iprot.readString();
              struct.setProcessIdIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 2: // EXPERIMENT_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.experimentId = iprot.readString();
              struct.setExperimentIdIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 3: // CREATION_TIME
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.creationTime = iprot.readI64();
              struct.setCreationTimeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 4: // LAST_UPDATE_TIME
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.lastUpdateTime = iprot.readI64();
              struct.setLastUpdateTimeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 5: // PROCESS_STATUS
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.processStatus = new org.apache.airavata.model.status.ProcessStatus();
              struct.processStatus.read(iprot);
              struct.setProcessStatusIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 6: // PROCESS_DETAIL
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.processDetail = iprot.readString();
              struct.setProcessDetailIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 7: // APPLICATION_INTERFACE_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.applicationInterfaceId = iprot.readString();
              struct.setApplicationInterfaceIdIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 8: // APPLICATION_DEPLOYMENT_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.applicationDeploymentId = iprot.readString();
              struct.setApplicationDeploymentIdIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 9: // COMPUTE_RESOURCE_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.computeResourceId = iprot.readString();
              struct.setComputeResourceIdIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 10: // PROCESS_INPUTS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
                struct.processInputs = new ArrayList(_list0.size);
                org.apache.airavata.model.application.io.InputDataObjectType _elem1;
                for (int _i2 = 0; _i2 < _list0.size; ++_i2)
                {
                  _elem1 = new org.apache.airavata.model.application.io.InputDataObjectType();
                  _elem1.read(iprot);
                  struct.processInputs.add(_elem1);
                }
                iprot.readListEnd();
              }
              struct.setProcessInputsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 11: // PROCESS_OUTPUTS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list3 = iprot.readListBegin();
                struct.processOutputs = new ArrayList(_list3.size);
                org.apache.airavata.model.application.io.OutputDataObjectType _elem4;
                for (int _i5 = 0; _i5 < _list3.size; ++_i5)
                {
                  _elem4 = new org.apache.airavata.model.application.io.OutputDataObjectType();
                  _elem4.read(iprot);
                  struct.processOutputs.add(_elem4);
                }
                iprot.readListEnd();
              }
              struct.setProcessOutputsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 12: // RESOURCE_SCHEDULE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.resourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel();
              struct.resourceSchedule.read(iprot);
              struct.setResourceScheduleIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 13: // TASKS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list6 = iprot.readListBegin();
                struct.tasks = new ArrayList(_list6.size);
                org.apache.airavata.model.task.TaskModel _elem7;
                for (int _i8 = 0; _i8 < _list6.size; ++_i8)
                {
                  _elem7 = new org.apache.airavata.model.task.TaskModel();
                  _elem7.read(iprot);
                  struct.tasks.add(_elem7);
                }
                iprot.readListEnd();
              }
              struct.setTasksIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 14: // TASK_DAG
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.taskDag = iprot.readString();
              struct.setTaskDagIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 15: // PROCESS_ERROR
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.processError = new org.apache.airavata.model.commons.ErrorModel();
              struct.processError.read(iprot);
              struct.setProcessErrorIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 16: // GATEWAY_EXECUTION_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.gatewayExecutionId = iprot.readString();
              struct.setGatewayExecutionIdIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 17: // ENABLE_EMAIL_NOTIFICATION
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.enableEmailNotification = iprot.readBool();
              struct.setEnableEmailNotificationIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 18: // EMAIL_ADDRESSES
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list9 = iprot.readListBegin();
                struct.emailAddresses = new ArrayList(_list9.size);
                String _elem10;
                for (int _i11 = 0; _i11 < _list9.size; ++_i11)
                {
                  _elem10 = iprot.readString();
                  struct.emailAddresses.add(_elem10);
                }
                iprot.readListEnd();
              }
              struct.setEmailAddressesIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 19: // STORAGE_RESOURCE_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.storageResourceId = iprot.readString();
              struct.setStorageResourceIdIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 20: // USER_DN
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.userDn = iprot.readString();
              struct.setUserDnIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 21: // GENERATE_CERT
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.generateCert = iprot.readBool();
              struct.setGenerateCertIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 22: // EXPERIMENT_DATA_DIR
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.experimentDataDir = iprot.readString();
              struct.setExperimentDataDirIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 23: // USER_NAME
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.userName = iprot.readString();
              struct.setUserNameIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          default:
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
        }
        iprot.readFieldEnd();
      }
      iprot.readStructEnd();
      struct.validate();
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot, ProcessModel struct) throws org.apache.thrift.TException {
      struct.validate();

      oprot.writeStructBegin(STRUCT_DESC);
      if (struct.processId != null) {
        oprot.writeFieldBegin(PROCESS_ID_FIELD_DESC);
        oprot.writeString(struct.processId);
        oprot.writeFieldEnd();
      }
      if (struct.experimentId != null) {
        oprot.writeFieldBegin(EXPERIMENT_ID_FIELD_DESC);
        oprot.writeString(struct.experimentId);
        oprot.writeFieldEnd();
      }
      if (struct.isSetCreationTime()) {
        oprot.writeFieldBegin(CREATION_TIME_FIELD_DESC);
        oprot.writeI64(struct.creationTime);
        oprot.writeFieldEnd();
      }
      if (struct.isSetLastUpdateTime()) {
        oprot.writeFieldBegin(LAST_UPDATE_TIME_FIELD_DESC);
        oprot.writeI64(struct.lastUpdateTime);
        oprot.writeFieldEnd();
      }
      if (struct.processStatus != null) {
        if (struct.isSetProcessStatus()) {
          oprot.writeFieldBegin(PROCESS_STATUS_FIELD_DESC);
          struct.processStatus.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.processDetail != null) {
        if (struct.isSetProcessDetail()) {
          oprot.writeFieldBegin(PROCESS_DETAIL_FIELD_DESC);
          oprot.writeString(struct.processDetail);
          oprot.writeFieldEnd();
        }
      }
      if (struct.applicationInterfaceId != null) {
        if (struct.isSetApplicationInterfaceId()) {
          oprot.writeFieldBegin(APPLICATION_INTERFACE_ID_FIELD_DESC);
          oprot.writeString(struct.applicationInterfaceId);
          oprot.writeFieldEnd();
        }
      }
      if (struct.applicationDeploymentId != null) {
        if (struct.isSetApplicationDeploymentId()) {
          oprot.writeFieldBegin(APPLICATION_DEPLOYMENT_ID_FIELD_DESC);
          oprot.writeString(struct.applicationDeploymentId);
          oprot.writeFieldEnd();
        }
      }
      if (struct.computeResourceId != null) {
        if (struct.isSetComputeResourceId()) {
          oprot.writeFieldBegin(COMPUTE_RESOURCE_ID_FIELD_DESC);
          oprot.writeString(struct.computeResourceId);
          oprot.writeFieldEnd();
        }
      }
      if (struct.processInputs != null) {
        if (struct.isSetProcessInputs()) {
          oprot.writeFieldBegin(PROCESS_INPUTS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processInputs.size()));
            for (org.apache.airavata.model.application.io.InputDataObjectType _iter12 : struct.processInputs)
            {
              _iter12.write(oprot);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.processOutputs != null) {
        if (struct.isSetProcessOutputs()) {
          oprot.writeFieldBegin(PROCESS_OUTPUTS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processOutputs.size()));
            for (org.apache.airavata.model.application.io.OutputDataObjectType _iter13 : struct.processOutputs)
            {
              _iter13.write(oprot);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.resourceSchedule != null) {
        if (struct.isSetResourceSchedule()) {
          oprot.writeFieldBegin(RESOURCE_SCHEDULE_FIELD_DESC);
          struct.resourceSchedule.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.tasks != null) {
        if (struct.isSetTasks()) {
          oprot.writeFieldBegin(TASKS_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.tasks.size()));
            for (org.apache.airavata.model.task.TaskModel _iter14 : struct.tasks)
            {
              _iter14.write(oprot);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.taskDag != null) {
        if (struct.isSetTaskDag()) {
          oprot.writeFieldBegin(TASK_DAG_FIELD_DESC);
          oprot.writeString(struct.taskDag);
          oprot.writeFieldEnd();
        }
      }
      if (struct.processError != null) {
        if (struct.isSetProcessError()) {
          oprot.writeFieldBegin(PROCESS_ERROR_FIELD_DESC);
          struct.processError.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.gatewayExecutionId != null) {
        if (struct.isSetGatewayExecutionId()) {
          oprot.writeFieldBegin(GATEWAY_EXECUTION_ID_FIELD_DESC);
          oprot.writeString(struct.gatewayExecutionId);
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetEnableEmailNotification()) {
        oprot.writeFieldBegin(ENABLE_EMAIL_NOTIFICATION_FIELD_DESC);
        oprot.writeBool(struct.enableEmailNotification);
        oprot.writeFieldEnd();
      }
      if (struct.emailAddresses != null) {
        if (struct.isSetEmailAddresses()) {
          oprot.writeFieldBegin(EMAIL_ADDRESSES_FIELD_DESC);
          {
            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.emailAddresses.size()));
            for (String _iter15 : struct.emailAddresses)
            {
              oprot.writeString(_iter15);
            }
            oprot.writeListEnd();
          }
          oprot.writeFieldEnd();
        }
      }
      if (struct.storageResourceId != null) {
        if (struct.isSetStorageResourceId()) {
          oprot.writeFieldBegin(STORAGE_RESOURCE_ID_FIELD_DESC);
          oprot.writeString(struct.storageResourceId);
          oprot.writeFieldEnd();
        }
      }
      if (struct.userDn != null) {
        if (struct.isSetUserDn()) {
          oprot.writeFieldBegin(USER_DN_FIELD_DESC);
          oprot.writeString(struct.userDn);
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetGenerateCert()) {
        oprot.writeFieldBegin(GENERATE_CERT_FIELD_DESC);
        oprot.writeBool(struct.generateCert);
        oprot.writeFieldEnd();
      }
      if (struct.experimentDataDir != null) {
        if (struct.isSetExperimentDataDir()) {
          oprot.writeFieldBegin(EXPERIMENT_DATA_DIR_FIELD_DESC);
          oprot.writeString(struct.experimentDataDir);
          oprot.writeFieldEnd();
        }
      }
      if (struct.userName != null) {
        if (struct.isSetUserName()) {
          oprot.writeFieldBegin(USER_NAME_FIELD_DESC);
          oprot.writeString(struct.userName);
          oprot.writeFieldEnd();
        }
      }
      oprot.writeFieldStop();
      oprot.writeStructEnd();
    }

  }

  private static class ProcessModelTupleSchemeFactory implements SchemeFactory {
    public ProcessModelTupleScheme getScheme() {
      return new ProcessModelTupleScheme();
    }
  }

  private static class ProcessModelTupleScheme extends TupleScheme {

    @Override
    public void write(org.apache.thrift.protocol.TProtocol prot, ProcessModel struct) throws org.apache.thrift.TException {
      TTupleProtocol oprot = (TTupleProtocol) prot;
      oprot.writeString(struct.processId);
      oprot.writeString(struct.experimentId);
      BitSet optionals = new BitSet();
      if (struct.isSetCreationTime()) {
        optionals.set(0);
      }
      if (struct.isSetLastUpdateTime()) {
        optionals.set(1);
      }
      if (struct.isSetProcessStatus()) {
        optionals.set(2);
      }
      if (struct.isSetProcessDetail()) {
        optionals.set(3);
      }
      if (struct.isSetApplicationInterfaceId()) {
        optionals.set(4);
      }
      if (struct.isSetApplicationDeploymentId()) {
        optionals.set(5);
      }
      if (struct.isSetComputeResourceId()) {
        optionals.set(6);
      }
      if (struct.isSetProcessInputs()) {
        optionals.set(7);
      }
      if (struct.isSetProcessOutputs()) {
        optionals.set(8);
      }
      if (struct.isSetResourceSchedule()) {
        optionals.set(9);
      }
      if (struct.isSetTasks()) {
        optionals.set(10);
      }
      if (struct.isSetTaskDag()) {
        optionals.set(11);
      }
      if (struct.isSetProcessError()) {
        optionals.set(12);
      }
      if (struct.isSetGatewayExecutionId()) {
        optionals.set(13);
      }
      if (struct.isSetEnableEmailNotification()) {
        optionals.set(14);
      }
      if (struct.isSetEmailAddresses()) {
        optionals.set(15);
      }
      if (struct.isSetStorageResourceId()) {
        optionals.set(16);
      }
      if (struct.isSetUserDn()) {
        optionals.set(17);
      }
      if (struct.isSetGenerateCert()) {
        optionals.set(18);
      }
      if (struct.isSetExperimentDataDir()) {
        optionals.set(19);
      }
      if (struct.isSetUserName()) {
        optionals.set(20);
      }
      oprot.writeBitSet(optionals, 21);
      if (struct.isSetCreationTime()) {
        oprot.writeI64(struct.creationTime);
      }
      if (struct.isSetLastUpdateTime()) {
        oprot.writeI64(struct.lastUpdateTime);
      }
      if (struct.isSetProcessStatus()) {
        struct.processStatus.write(oprot);
      }
      if (struct.isSetProcessDetail()) {
        oprot.writeString(struct.processDetail);
      }
      if (struct.isSetApplicationInterfaceId()) {
        oprot.writeString(struct.applicationInterfaceId);
      }
      if (struct.isSetApplicationDeploymentId()) {
        oprot.writeString(struct.applicationDeploymentId);
      }
      if (struct.isSetComputeResourceId()) {
        oprot.writeString(struct.computeResourceId);
      }
      if (struct.isSetProcessInputs()) {
        {
          oprot.writeI32(struct.processInputs.size());
          for (org.apache.airavata.model.application.io.InputDataObjectType _iter16 : struct.processInputs)
          {
            _iter16.write(oprot);
          }
        }
      }
      if (struct.isSetProcessOutputs()) {
        {
          oprot.writeI32(struct.processOutputs.size());
          for (org.apache.airavata.model.application.io.OutputDataObjectType _iter17 : struct.processOutputs)
          {
            _iter17.write(oprot);
          }
        }
      }
      if (struct.isSetResourceSchedule()) {
        struct.resourceSchedule.write(oprot);
      }
      if (struct.isSetTasks()) {
        {
          oprot.writeI32(struct.tasks.size());
          for (org.apache.airavata.model.task.TaskModel _iter18 : struct.tasks)
          {
            _iter18.write(oprot);
          }
        }
      }
      if (struct.isSetTaskDag()) {
        oprot.writeString(struct.taskDag);
      }
      if (struct.isSetProcessError()) {
        struct.processError.write(oprot);
      }
      if (struct.isSetGatewayExecutionId()) {
        oprot.writeString(struct.gatewayExecutionId);
      }
      if (struct.isSetEnableEmailNotification()) {
        oprot.writeBool(struct.enableEmailNotification);
      }
      if (struct.isSetEmailAddresses()) {
        {
          oprot.writeI32(struct.emailAddresses.size());
          for (String _iter19 : struct.emailAddresses)
          {
            oprot.writeString(_iter19);
          }
        }
      }
      if (struct.isSetStorageResourceId()) {
        oprot.writeString(struct.storageResourceId);
      }
      if (struct.isSetUserDn()) {
        oprot.writeString(struct.userDn);
      }
      if (struct.isSetGenerateCert()) {
        oprot.writeBool(struct.generateCert);
      }
      if (struct.isSetExperimentDataDir()) {
        oprot.writeString(struct.experimentDataDir);
      }
      if (struct.isSetUserName()) {
        oprot.writeString(struct.userName);
      }
    }

    @Override
    public void read(org.apache.thrift.protocol.TProtocol prot, ProcessModel struct) throws org.apache.thrift.TException {
      TTupleProtocol iprot = (TTupleProtocol) prot;
      struct.processId = iprot.readString();
      struct.setProcessIdIsSet(true);
      struct.experimentId = iprot.readString();
      struct.setExperimentIdIsSet(true);
      BitSet incoming = iprot.readBitSet(21);
      if (incoming.get(0)) {
        struct.creationTime = iprot.readI64();
        struct.setCreationTimeIsSet(true);
      }
      if (incoming.get(1)) {
        struct.lastUpdateTime = iprot.readI64();
        struct.setLastUpdateTimeIsSet(true);
      }
      if (incoming.get(2)) {
        struct.processStatus = new org.apache.airavata.model.status.ProcessStatus();
        struct.processStatus.read(iprot);
        struct.setProcessStatusIsSet(true);
      }
      if (incoming.get(3)) {
        struct.processDetail = iprot.readString();
        struct.setProcessDetailIsSet(true);
      }
      if (incoming.get(4)) {
        struct.applicationInterfaceId = iprot.readString();
        struct.setApplicationInterfaceIdIsSet(true);
      }
      if (incoming.get(5)) {
        struct.applicationDeploymentId = iprot.readString();
        struct.setApplicationDeploymentIdIsSet(true);
      }
      if (incoming.get(6)) {
        struct.computeResourceId = iprot.readString();
        struct.setComputeResourceIdIsSet(true);
      }
      if (incoming.get(7)) {
        {
          org.apache.thrift.protocol.TList _list20 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
          struct.processInputs = new ArrayList(_list20.size);
          org.apache.airavata.model.application.io.InputDataObjectType _elem21;
          for (int _i22 = 0; _i22 < _list20.size; ++_i22)
          {
            _elem21 = new org.apache.airavata.model.application.io.InputDataObjectType();
            _elem21.read(iprot);
            struct.processInputs.add(_elem21);
          }
        }
        struct.setProcessInputsIsSet(true);
      }
      if (incoming.get(8)) {
        {
          org.apache.thrift.protocol.TList _list23 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
          struct.processOutputs = new ArrayList(_list23.size);
          org.apache.airavata.model.application.io.OutputDataObjectType _elem24;
          for (int _i25 = 0; _i25 < _list23.size; ++_i25)
          {
            _elem24 = new org.apache.airavata.model.application.io.OutputDataObjectType();
            _elem24.read(iprot);
            struct.processOutputs.add(_elem24);
          }
        }
        struct.setProcessOutputsIsSet(true);
      }
      if (incoming.get(9)) {
        struct.resourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel();
        struct.resourceSchedule.read(iprot);
        struct.setResourceScheduleIsSet(true);
      }
      if (incoming.get(10)) {
        {
          org.apache.thrift.protocol.TList _list26 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
          struct.tasks = new ArrayList(_list26.size);
          org.apache.airavata.model.task.TaskModel _elem27;
          for (int _i28 = 0; _i28 < _list26.size; ++_i28)
          {
            _elem27 = new org.apache.airavata.model.task.TaskModel();
            _elem27.read(iprot);
            struct.tasks.add(_elem27);
          }
        }
        struct.setTasksIsSet(true);
      }
      if (incoming.get(11)) {
        struct.taskDag = iprot.readString();
        struct.setTaskDagIsSet(true);
      }
      if (incoming.get(12)) {
        struct.processError = new org.apache.airavata.model.commons.ErrorModel();
        struct.processError.read(iprot);
        struct.setProcessErrorIsSet(true);
      }
      if (incoming.get(13)) {
        struct.gatewayExecutionId = iprot.readString();
        struct.setGatewayExecutionIdIsSet(true);
      }
      if (incoming.get(14)) {
        struct.enableEmailNotification = iprot.readBool();
        struct.setEnableEmailNotificationIsSet(true);
      }
      if (incoming.get(15)) {
        {
          org.apache.thrift.protocol.TList _list29 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
          struct.emailAddresses = new ArrayList(_list29.size);
          String _elem30;
          for (int _i31 = 0; _i31 < _list29.size; ++_i31)
          {
            _elem30 = iprot.readString();
            struct.emailAddresses.add(_elem30);
          }
        }
        struct.setEmailAddressesIsSet(true);
      }
      if (incoming.get(16)) {
        struct.storageResourceId = iprot.readString();
        struct.setStorageResourceIdIsSet(true);
      }
      if (incoming.get(17)) {
        struct.userDn = iprot.readString();
        struct.setUserDnIsSet(true);
      }
      if (incoming.get(18)) {
        struct.generateCert = iprot.readBool();
        struct.setGenerateCertIsSet(true);
      }
      if (incoming.get(19)) {
        struct.experimentDataDir = iprot.readString();
        struct.setExperimentDataDirIsSet(true);
      }
      if (incoming.get(20)) {
        struct.userName = iprot.readString();
        struct.setUserNameIsSet(true);
      }
    }
  }

}