/*
 * Licensed 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.
 */

package com.aliyuncs.mse.model.v20190531;

import java.util.List;
import com.aliyuncs.AcsResponse;
import com.aliyuncs.mse.transform.v20190531.GetGatewayResponseUnmarshaller;
import com.aliyuncs.transform.UnmarshallerContext;

/**
 * @author auto create
 * @version 
 */
public class GetGatewayResponse extends AcsResponse {

	private String requestId;

	private Integer httpStatusCode;

	private String message;

	private Integer code;

	private Boolean success;

	private Data data;

	public String getRequestId() {
		return this.requestId;
	}

	public void setRequestId(String requestId) {
		this.requestId = requestId;
	}

	public Integer getHttpStatusCode() {
		return this.httpStatusCode;
	}

	public void setHttpStatusCode(Integer httpStatusCode) {
		this.httpStatusCode = httpStatusCode;
	}

	public String getMessage() {
		return this.message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public Integer getCode() {
		return this.code;
	}

	public void setCode(Integer code) {
		this.code = code;
	}

	public Boolean getSuccess() {
		return this.success;
	}

	public void setSuccess(Boolean success) {
		this.success = success;
	}

	public Data getData() {
		return this.data;
	}

	public void setData(Data data) {
		this.data = data;
	}

	public static class Data {

		private Long id;

		private String name;

		private String gatewayUniqueId;

		private String region;

		private String primaryUser;

		private Integer status;

		private String vpc;

		private String vswitch;

		private String securityGroup;

		private String spec;

		private Integer replica;

		private String gmtCreate;

		private String gmtModified;

		private String vswitch2;

		private String instanceId;

		private String chargeType;

		private String endDate;

		private String statusDesc;

		private String mseTag;

		private String resourceGroupId;

		private Integer totalReplica;

		private Boolean elastic;

		private Integer elasticReplica;

		private String elasticType;

		private XtraceDetails xtraceDetails;

		private LogConfigDetails logConfigDetails;

		private ElasticPolicy elasticPolicy;

		public Long getId() {
			return this.id;
		}

		public void setId(Long id) {
			this.id = id;
		}

		public String getName() {
			return this.name;
		}

		public void setName(String name) {
			this.name = name;
		}

		public String getGatewayUniqueId() {
			return this.gatewayUniqueId;
		}

		public void setGatewayUniqueId(String gatewayUniqueId) {
			this.gatewayUniqueId = gatewayUniqueId;
		}

		public String getRegion() {
			return this.region;
		}

		public void setRegion(String region) {
			this.region = region;
		}

		public String getPrimaryUser() {
			return this.primaryUser;
		}

		public void setPrimaryUser(String primaryUser) {
			this.primaryUser = primaryUser;
		}

		public Integer getStatus() {
			return this.status;
		}

		public void setStatus(Integer status) {
			this.status = status;
		}

		public String getVpc() {
			return this.vpc;
		}

		public void setVpc(String vpc) {
			this.vpc = vpc;
		}

		public String getVswitch() {
			return this.vswitch;
		}

		public void setVswitch(String vswitch) {
			this.vswitch = vswitch;
		}

		public String getSecurityGroup() {
			return this.securityGroup;
		}

		public void setSecurityGroup(String securityGroup) {
			this.securityGroup = securityGroup;
		}

		public String getSpec() {
			return this.spec;
		}

		public void setSpec(String spec) {
			this.spec = spec;
		}

		public Integer getReplica() {
			return this.replica;
		}

		public void setReplica(Integer replica) {
			this.replica = replica;
		}

		public String getGmtCreate() {
			return this.gmtCreate;
		}

		public void setGmtCreate(String gmtCreate) {
			this.gmtCreate = gmtCreate;
		}

		public String getGmtModified() {
			return this.gmtModified;
		}

		public void setGmtModified(String gmtModified) {
			this.gmtModified = gmtModified;
		}

		public String getVswitch2() {
			return this.vswitch2;
		}

		public void setVswitch2(String vswitch2) {
			this.vswitch2 = vswitch2;
		}

		public String getInstanceId() {
			return this.instanceId;
		}

		public void setInstanceId(String instanceId) {
			this.instanceId = instanceId;
		}

		public String getChargeType() {
			return this.chargeType;
		}

		public void setChargeType(String chargeType) {
			this.chargeType = chargeType;
		}

		public String getEndDate() {
			return this.endDate;
		}

		public void setEndDate(String endDate) {
			this.endDate = endDate;
		}

		public String getStatusDesc() {
			return this.statusDesc;
		}

		public void setStatusDesc(String statusDesc) {
			this.statusDesc = statusDesc;
		}

		public String getMseTag() {
			return this.mseTag;
		}

		public void setMseTag(String mseTag) {
			this.mseTag = mseTag;
		}

		public String getResourceGroupId() {
			return this.resourceGroupId;
		}

		public void setResourceGroupId(String resourceGroupId) {
			this.resourceGroupId = resourceGroupId;
		}

		public Integer getTotalReplica() {
			return this.totalReplica;
		}

		public void setTotalReplica(Integer totalReplica) {
			this.totalReplica = totalReplica;
		}

		public Boolean getElastic() {
			return this.elastic;
		}

		public void setElastic(Boolean elastic) {
			this.elastic = elastic;
		}

		public Integer getElasticReplica() {
			return this.elasticReplica;
		}

		public void setElasticReplica(Integer elasticReplica) {
			this.elasticReplica = elasticReplica;
		}

		public String getElasticType() {
			return this.elasticType;
		}

		public void setElasticType(String elasticType) {
			this.elasticType = elasticType;
		}

		public XtraceDetails getXtraceDetails() {
			return this.xtraceDetails;
		}

		public void setXtraceDetails(XtraceDetails xtraceDetails) {
			this.xtraceDetails = xtraceDetails;
		}

		public LogConfigDetails getLogConfigDetails() {
			return this.logConfigDetails;
		}

		public void setLogConfigDetails(LogConfigDetails logConfigDetails) {
			this.logConfigDetails = logConfigDetails;
		}

		public ElasticPolicy getElasticPolicy() {
			return this.elasticPolicy;
		}

		public void setElasticPolicy(ElasticPolicy elasticPolicy) {
			this.elasticPolicy = elasticPolicy;
		}

		public static class XtraceDetails {

			private Integer sample;

			private Boolean traceOn;

			public Integer getSample() {
				return this.sample;
			}

			public void setSample(Integer sample) {
				this.sample = sample;
			}

			public Boolean getTraceOn() {
				return this.traceOn;
			}

			public void setTraceOn(Boolean traceOn) {
				this.traceOn = traceOn;
			}
		}

		public static class LogConfigDetails {

			private Boolean logEnabled;

			private String projectName;

			private String logStoreName;

			public Boolean getLogEnabled() {
				return this.logEnabled;
			}

			public void setLogEnabled(Boolean logEnabled) {
				this.logEnabled = logEnabled;
			}

			public String getProjectName() {
				return this.projectName;
			}

			public void setProjectName(String projectName) {
				this.projectName = projectName;
			}

			public String getLogStoreName() {
				return this.logStoreName;
			}

			public void setLogStoreName(String logStoreName) {
				this.logStoreName = logStoreName;
			}
		}

		public static class ElasticPolicy {

			private Integer maxReplica;

			private String elasticType;

			private List<TimePolicyListItem> timePolicyList;

			public Integer getMaxReplica() {
				return this.maxReplica;
			}

			public void setMaxReplica(Integer maxReplica) {
				this.maxReplica = maxReplica;
			}

			public String getElasticType() {
				return this.elasticType;
			}

			public void setElasticType(String elasticType) {
				this.elasticType = elasticType;
			}

			public List<TimePolicyListItem> getTimePolicyList() {
				return this.timePolicyList;
			}

			public void setTimePolicyList(List<TimePolicyListItem> timePolicyList) {
				this.timePolicyList = timePolicyList;
			}

			public static class TimePolicyListItem {

				private Integer desiredReplica;

				private String startTime;

				private String endTime;

				public Integer getDesiredReplica() {
					return this.desiredReplica;
				}

				public void setDesiredReplica(Integer desiredReplica) {
					this.desiredReplica = desiredReplica;
				}

				public String getStartTime() {
					return this.startTime;
				}

				public void setStartTime(String startTime) {
					this.startTime = startTime;
				}

				public String getEndTime() {
					return this.endTime;
				}

				public void setEndTime(String endTime) {
					this.endTime = endTime;
				}
			}
		}
	}

	@Override
	public GetGatewayResponse getInstance(UnmarshallerContext context) {
		return	GetGatewayResponseUnmarshaller.unmarshall(this, context);
	}

	@Override
	public boolean checkShowJsonItemName() {
		return false;
	}
}
