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

com.sap.cds.feature.messaging.em.mt.service.EnterpriseMessagingTenantStatus Maven / Gradle / Ivy

/**************************************************************************
 * (C) 2019-2024 SAP SE or an SAP affiliate company. All rights reserved. *
 **************************************************************************/
package com.sap.cds.feature.messaging.em.mt.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;

/**
 * This class presents the enterprise messaging tenant schema status.
 */
public class EnterpriseMessagingTenantStatus {

	public static final String STATUS_ONBOARDING = "ONBOARDING";
	public static final String STATUS_INITIAL = "INITIAL"; // not yet deployed (empty)
	public static final String STATUS_SUCCESS = "SUCCESS";
	public static final String STATUS_WARNING = "WARNING";
	public static final String STATUS_ERROR = "ERROR";

	String tenantId;

	Map services = new HashMap<>();
	@JsonInclude(JsonInclude.Include.NON_EMPTY)
	Set unmanagedQueues = new HashSet<>();
	@JsonInclude(JsonInclude.Include.NON_EMPTY)
	Set unmanagedWebhooks = new HashSet<>();

	public EnterpriseMessagingTenantStatus(String tenantId) {
		this.tenantId = tenantId;
	}

	public String getTenantId() {
		return tenantId;
	}

	public void setTenantId(String tenantId) {
		this.tenantId = tenantId;
	}

	public Map getServices() {
		return services;
	}

	public Set getUnmanagedQueues() {
		return unmanagedQueues;
	}

	public Set getUnmanagedWebhooks() {
		return unmanagedWebhooks;
	}

	public static class QueueStatus {

		@JsonInclude(JsonInclude.Include.NON_NULL)
		Object queue;
		@JsonInclude(JsonInclude.Include.NON_EMPTY)
		List topics = new ArrayList<>();
		@JsonInclude(JsonInclude.Include.NON_EMPTY)
		List webhooks = new ArrayList<>();
		@JsonInclude(JsonInclude.Include.NON_EMPTY)
		List unmanagedTopics = new ArrayList<>();
		@JsonInclude(JsonInclude.Include.NON_EMPTY)
		List unsubscribedTopics = new ArrayList<>();
		@JsonInclude(JsonInclude.Include.NON_NULL)
		String error;
		@JsonInclude(JsonInclude.Include.NON_NULL)
		String warning;
		String status = STATUS_SUCCESS;


		public String getError() {
			return error;
		}

		public void setError(String error) {
			if(error != null) {
				this.error = error;
				this.status = STATUS_ERROR;
			}
		}

		public String getWarning() {
			return warning;
		}

		public void setWarning(String warning) {
			if(warning != null) {
				if (!this.status.equals(STATUS_ERROR)) {
					this.status = STATUS_WARNING;
				}

				this.warning = warning;
			}
		}

		@JsonIgnore
		public boolean isOnboarding() {
			return Objects.equals(this.status, STATUS_ONBOARDING);
		}

		@JsonIgnore
		public void setOnboarding() {
			this.status = STATUS_ONBOARDING;
		}

		@JsonIgnore
		public void setInitial() {
			this.status = STATUS_INITIAL;
			this.setQueue("unknown");
		}

		public String getStatus() {
			return status;
		}
		public List getWebhooks() {
			return webhooks;
		}
		public void setWebhooks(List webhooks) {
			this.webhooks = webhooks;
		}
		public Object getQueue() {
			return queue;
		}
		public void setQueue(Object queue) {
			this.queue = queue;
		}
		public List getTopics() {
			return topics;
		}
		public void setTopics(List topics) {
			this.topics = topics;
		}
		public List getUnmanagedTopics() {
			return unmanagedTopics;
		}
		public void setUnmanagedTopics(List unmanagedTopics) {
			this.unmanagedTopics = unmanagedTopics;
		}

		public List getUnsubscribedTopics() {
			return unsubscribedTopics;
		}

		public void setUnsubscribedTopics(List unsubscribedTopics) {
			this.unsubscribedTopics = unsubscribedTopics;
		}
	}
}