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

io.vertigo.orchestra.services.execution.ActivityExecutionWorkspace Maven / Gradle / Ivy

/*
 * vertigo - application development platform
 *
 * Copyright (C) 2013-2024, Vertigo.io, [email protected]
 *
 * 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 io.vertigo.orchestra.services.execution;

import java.util.Map;
import java.util.Map.Entry;

import io.vertigo.core.lang.Assertion;

/**
 * ActivityExecutionWorkspace.
 * This is limited to a key(string) value(string) workspace.
 *
 * @author mlaroche.
 * @version $Id$
 */
public final class ActivityExecutionWorkspace {

	public static final String STATUS_KEY = "status";
	public static final String ACE_ID_KEY = "activityExecutionId";
	public static final String PRE_ID_KEY = "processExecutionId";
	public static final String PROCESS_NAME_KEY = "processName";
	public static final String TOKEN_KEY = "token";
	public static final String ATTACHMENT_KEY = "attachment";
	public static final String PARSING_ERROR_KEY = "parsingError";

	private final Map params;

	/**
	 * Construction d'un workspace.
	 * @param params un workspace sous forme de Map
	 */
	public ActivityExecutionWorkspace(final Map params) {
		Assertion.check().isNotNull(params);
		//---
		this.params = params;
	}

	/**
	 * Retourne la valeur stockée dans le workspace correspondant à une clé.
	 * @param key la clé
	 * @return la valeur
	 */
	public String getValue(final String key) {
		Assertion.check().isNotNull(key);
		//---
		return params.get(key);
	}

	/**
	 * Permet de savoir si une clé est déjà définie dans le workspace.
	 * @param key la clé à tester
	 * @return true si la clé existe
	 */
	public boolean containsKey(final String key) {
		Assertion.check().isNotNull(key);
		//---
		return params.containsKey(key);
	}

	/**
	 * Affecte la valeur stockée dans le workspace correspondant à une clé.
	 * @param key la clé
	 * @param value la valeur
	 */
	public void setValue(final String key, final String value) {
		Assertion.check()
				.isNotNull(key)
				.isFalse(STATUS_KEY.equals(key), "Status cannot be set directly");
		// ---
		params.put(key, value);
	}

	/**
	 * Retire une propriété du workspace.
	 * @param key la clé à retirer
	 */
	public void removeKey(final String key) {
		Assertion.check().isNotNull(key);
		// ---
		params.remove(key);
	}

	/**
	 * Ajoute de paramètres externe au workspace.
	 * @param extParams des paramètres suppplémentaire
	 */
	public void addExternalParams(final Map extParams) {
		for (final Entry entry : extParams.entrySet()) {
			// we support only string params
			if (entry.getValue() != null) {
				setValue(entry.getKey(), entry.getValue());
			}
		}
	}

	// --- Always here

	/**
	 * Affecte l'id de l'execution en cours.
	 * @param aceId l'id de l'activité
	 */
	public void setActivityExecutionId(final Long aceId) {
		params.put(ACE_ID_KEY, aceId.toString());
	}

	/**
	 * Retourne l'id de l'execution en cours.
	 * @return l'id de l'exécution
	 */
	public Long getActivityExecutionId() {
		return Long.valueOf(getValue(ACE_ID_KEY));
	}

	/**
	 * Affecte l'id de l'execution en cours.
	 * @param preId l'id du processus
	 */
	public void setProcessExecutionId(final Long preId) {
		params.put(PRE_ID_KEY, preId.toString());
	}

	/**
	 * Retourne l'id de l'execution en cours.
	 * @return l'id de l'exécution
	 */
	public Long getProcessExecutionId() {
		return Long.valueOf(getValue(PRE_ID_KEY));
	}

	/**
	 * Affecte le nom du processus en cours de traitement.
	 * @param processName le nom du processus en cours
	 */
	public void setProcessName(final String processName) {
		params.put(PROCESS_NAME_KEY, processName);
	}

	/**
	 * Retourne le nom du processus en cours de traitement.
	 * @return le nom du processus
	 */
	public String getProcessName() {
		return getValue(PROCESS_NAME_KEY);
	}

	/**
	 * Assigne le token.
	 * @param token le token
	 */
	public void setToken(final String token) {
		params.put(TOKEN_KEY, token);
	}

	/**
	 * Retourne le token de sécurité de l'activité.
	 * @return le token
	 */
	public String getToken() {
		return getValue(TOKEN_KEY);
	}

	/**
	 * Assigne le chemin relatif du fichier de log (par rapport au root orchestra).
	 */
	public void setAttachment(final String logFile) {
		params.put(ATTACHMENT_KEY, logFile);
	}

	/**
	 * Retourne le chemin relatif du fichier de log.
	 */
	public String getAttachment() {
		return getValue(ATTACHMENT_KEY);
	}

	/**
	 * Remet à zéro la variable spécifiant le fichier de log.
	 */
	public void resetAttachment() {
		params.remove(ATTACHMENT_KEY);
	}

	// --- Execution State in workspace

	/**
	 * Passe l'état à succès.
	 */
	public void setSuccess() {
		params.put(STATUS_KEY, "ok");
	}

	/**
	 * Passe l'état à KO.
	 */
	public void setFailure() {
		params.put(STATUS_KEY, "ko");
	}

	/**
	 * Passe l'état à en attente.
	 */
	public void setPending() {
		params.put(STATUS_KEY, "pending");
	}

	/**
	 * Passe l'état à fini.
	 */
	public void setFinished() {
		params.put(STATUS_KEY, "finished");
	}

	/**
	 * Le status de l'activité est-il succès.
	 * @return true si le statut est succès
	 */
	public boolean isSuccess() {
		return "ok".equals(getValue(STATUS_KEY));
	}

	/**
	 * Le status de l'activité est-il KO.
	 * @return true si le statut est KO
	 */
	public boolean isFailure() {
		return "ko".equals(getValue(STATUS_KEY));
	}

	/**
	 * Le status de l'activité est-il en attente.
	 * @return true si le statut est en attente
	 */
	public boolean isPending() {
		return "pending".equals(getValue(STATUS_KEY));
	}

	/**
	 * Le status de l'activité est-il fini.
	 * @return true si le statut est fini
	 */
	public boolean isFinished() {
		return "finished".equals(getValue(STATUS_KEY));
	}

	/**
	 * Reset le status du workspace
	 */
	public void resetStatus() {
		params.remove(STATUS_KEY);
	}

	public Map asMap() {
		return params;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy