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

es.gob.afirma.standalone.plugins.PluginCommandAction Maven / Gradle / Ivy

The newest version!
package es.gob.afirma.standalone.plugins;

import java.util.Arrays;

/**
 * Acción ejecutable desde línea de comandos.
 */
public abstract class PluginCommandAction {

	private final String command;

	private AfirmaPlugin plugin;

	/**
	 * Construye la acción para un comando concreto.
	 * @param command Comando ante el que se desencadenará la acción.
	 */
	public PluginCommandAction(final String command) {
		this.command = command;
	}

	/**
	 * Recupera el comando que desencadena la acción. Este comando no puede coincidir
	 * con otro comando ya existente o puede que nunca se ejecute la acción.
	 * @return Comando.
	 */
	public String getCommand() {
		return this.command;
	}

	/**
	 * Establece el plugin al que pertenece la acción.
	 * @param plugin Plugin al que pertenece la acción.
	 */
	public final void setPlugin(final AfirmaPlugin plugin) {
		this.plugin = plugin;
	}

	/**
	 * Recupera el plugin al que pertenece la acción.
	 * @return Plugin al que pertenece la acción.
	 */
	public final AfirmaPlugin getPlugin() {
		return this.plugin;
	}

	/**
	 * Obtiene un texto de ayuda con la sintaxis y detalles del comando.
	 * @return Texto de ayuda.
	 */
	public abstract String getHelpText();

	/**
	 * Ejecuta la acción con unos argumentos recibidos por línea de comandos.
	 * @param args Argumentos para ejecutar la acción.
	 * @return Texto que se devolverá por línea de comandos tras la ejecución
	 * o {@code null} si no se devuelve nada.
	 * @throws IllegalArgumentException Cuando hay un error en el comando de llamada. En este caso,
	 * el mensajede la excepción describirá el problema.
	 * @throws PluginControlledException Cuando ha ocurrido un error durante la ejecución de
	 * la operación. En este caso, el mensaje de la excepción se mostrará al
	 * usuario.
	 */
	public final String start(final String[] args)
			throws IllegalArgumentException, PluginControlledException {
		String[] processedArgs;
		if (args == null) {
			processedArgs = null;
		} else if (args.length > 0 && this.command.equalsIgnoreCase(args[0])) {
			processedArgs = Arrays.copyOfRange(args, 1, args.length);
		} else {
			processedArgs = Arrays.copyOf(args, args.length);
		}
		return process(processedArgs);
	}

	/**
	 * Operación que se deberá ejecutar al iniciarse el comando.
	 * @param args Argumentos recibidos para la ejecución del comando (omitiendo el propio
	 * comando).
	 * @return Texto que se devolverá por línea de comandos tras la ejecución
	 * o {@code null} si debe imprimir nada.
	 * @throws IllegalArgumentException Cuando hay un error en el comando de llamada. En este caso,
	 * el mensajede la excepción describirá el problema.
	 * @throws PluginControlledException Cuando ha ocurrido un error durante la ejecución de
	 * la operación. En este caso, el mensaje de la excepción se mostrará al
	 * usuario.
	 */
	protected abstract String process(String[] args)
			throws IllegalArgumentException, PluginControlledException;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy