com.developpez.adiguba.shell
Class Shell

java.lang.Object
  extended by com.developpez.adiguba.shell.Shell

public class Shell
extends Object

Cette classe représente le shell système.
Elle permet de simplifier l'exécution de programme externe.

Cette classe utilise la classe ProcessConsumer afin de gérer simplement les flux d'entrées/sorties du process.

Version:
shell-1.0
Author:
adiGuba

Constructor Summary
Shell()
          Construit un nouveau Shell en utilisant le shell systeme.
Shell(String... cmds)
          Construit un nouveau shell en utilisant la commande représenté en paramètre.
 
Method Summary
 ProcessConsumer command(String commandLine)
          Crée un processus représentant la commande du shell et l'associe à une instance de ProcessConsumer.
 ProcessConsumer command(String commandLine, Object... arguments)
          Identique à command(String), si ce n'est que la ligne de commande est d'abord formatté en utilisant les paramètres via la classe MessageFormat.
 ProcessConsumer exec(String... args)
          Crée un processus standard et l'associe à une instance de ProcessConsumer.
static int execute(String... args)
          Exécute le programme spécifié en affichant les données dans les flux des sorties de l'application.
 Charset getCharset()
          Retourne le charset associé avec cette instance de shell.
 File getDirectory()
          Retourne le répertoire à partir duquel les commandes du shell seront lancés.
 Map<String,String> getUserEnv()
          Retourne une map contenant les variables d'environnements utilisateurs.
 boolean isSystemEnvInherited()
          Indique si les variables d'environnements de l'application Java courante doivent être passé aux commandes lancées par ce shell.
 void setCharset(Charset charset)
          Modifie le charset associé avec cette instance de shell.
 void setCharset(String charsetName)
          Modifie le charset associé avec cette instance de shell.
 void setDirectory(File directory)
          Modifie le répertoire à partir duquel les commandes du shell seront lancés.
 void setSystemEnvInherited(boolean inheritSystemEnv)
          Modifie la valeur de l'attribut 'inheritSystemEnv'.
 ProcessConsumer shell()
          Crée un processus représentant le shell et l'associe à une instance de ProcessConsumer.
static int system(String commandLine)
          Exécute la ligne de commande dans le shell système, en affichant les données dans les flux des sorties de l'application.
static int system(String commandLine, Object... arguments)
          Identique à system(String), si ce n'est que la ligne de commande est d'abord formatté en utilisant les paramètres via la classe MessageFormat.
 String toString()
          Retourne le nom du shell système.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Shell

public Shell()
Construit un nouveau Shell en utilisant le shell systeme.


Shell

public Shell(String... cmds)
Construit un nouveau shell en utilisant la commande représenté en paramètre. Par exemple pour forcer l'utilisation du bash :
Shell sh = new Shell("/bin/bash", "-c");

Parameters:
cmds - Les paramètres permettant de lancer le shell.
Method Detail

getCharset

public Charset getCharset()
Retourne le charset associé avec cette instance de shell.

Returns:
Charset.

setCharset

public void setCharset(Charset charset)
Modifie le charset associé avec cette instance de shell.

Parameters:
charset - Le nouveau charset a utiliser.

setCharset

public void setCharset(String charsetName)
                throws IllegalCharsetNameException,
                       UnsupportedCharsetException
Modifie le charset associé avec cette instance de shell.

Parameters:
charsetName - Le nom du nouveau charset
Throws:
IllegalCharsetNameException
UnsupportedCharsetException

getUserEnv

public Map<String,String> getUserEnv()
Retourne une map contenant les variables d'environnements utilisateurs. Cette Map est librement modifiables afin d'ajouter/supprimer des éléments.

Returns:
Map des variables d'environnements utilisateurs.

getDirectory

public File getDirectory()
Retourne le répertoire à partir duquel les commandes du shell seront lancés.

Returns:
Le répertoire courant.

setDirectory

public void setDirectory(File directory)
Modifie le répertoire à partir duquel les commandes du shell seront lancés.

Parameters:
directory - Le nouveau répertoire
Throws:
IllegalArgumentException - Si directory ne représente pas un répertoire.

isSystemEnvInherited

public boolean isSystemEnvInherited()
Indique si les variables d'environnements de l'application Java courante doivent être passé aux commandes lancées par ce shell.

Returns:
true si les nouveaux process héritent des variables d'environnements, false sinon.

setSystemEnvInherited

public void setSystemEnvInherited(boolean inheritSystemEnv)
Modifie la valeur de l'attribut 'inheritSystemEnv'.

Parameters:
inheritSystemEnv - La nouvelle valeur de l'attribut.
See Also:
isSystemEnvInherited()

shell

public ProcessConsumer shell()
Crée un processus représentant le shell et l'associe à une instance de ProcessConsumer.
Le processus ne sera réellement démarré que lors de l'appel d'une des méthodes consume() de la classe ProcessConsumer.

Cela permet de lancer plusieurs commandes dans le même shell via le flux d'entrée du processus.

Returns:
Une instance de ProcessConsumer associé au processus du shell.
See Also:
ProcessConsumer.consume(), ProcessConsumer.input(Readable)

command

public ProcessConsumer command(String commandLine)
Crée un processus représentant la commande du shell et l'associe à une instance de ProcessConsumer.
Cette méthode instancie un nouveau shell en tant que processus afin d'exécuter la ligne de commande en paramètre. Le processus ne sera réellement démarré que lors de l'appel d'une des méthodes consume() de la classe ProcessConsumer.

La commande passé en paramètre accepte toutes les spécificitées du shell système (redirections, pipes, structures conditionnelles, etc.).

Parameters:
commandLine - La ligne de commande à exécuter par le shell .
Returns:
Une instance de ProcessConsumer associé à la commande.
See Also:
ProcessConsumer.consume()

command

public ProcessConsumer command(String commandLine,
                               Object... arguments)
Identique à command(String), si ce n'est que la ligne de commande est d'abord formatté en utilisant les paramètres via la classe MessageFormat.

Cete méthode est équivalent à la ligne suivante :
command(MessageFormat.format(commandLine, arguments))

Parameters:
commandLine - La ligne de commande à formater.
arguments - Les paramètres du formattage.
Returns:
Une instance de ProcessConsumer associé à la commande.
See Also:
MessageFormat.format(String, Object...), command(String)

exec

public ProcessConsumer exec(String... args)
Crée un processus standard et l'associe à une instance de ProcessConsumer. Le premier paramètre doit obligatoirement correspondre à un nom de programme existant, de la même manière qu'avec l'utilisation de Runtime.exec(String[]).

Contrairement à command(String), cette méthode n'instancie pas le processus du shell mais directement le programme passé en premier paramètre. Le processus ne sera réellement démarré que lors de l'appel d'une des méthodes consume() de la classe ProcessConsumer.

Parameters:
args - Les paramètres de la commandes a exécuter.
Returns:
Une instance de ProcessConsumer associé au process.

toString

public String toString()
Retourne le nom du shell système. C'est à dire le nom du fichier en local qui return Le nom du shell.

Overrides:
toString in class Object

system

public static int system(String commandLine)
                  throws IOException
Exécute la ligne de commande dans le shell système, en affichant les données dans les flux des sorties de l'application.

Parameters:
commandLine - La ligne de commande à exécuter.
Returns:
Le code de retour de la ligne de commande.
Throws:
IOException - Erreur d'exécution de la commande.
See Also:
System.out, System.err

system

public static int system(String commandLine,
                         Object... arguments)
                  throws IOException
Identique à system(String), si ce n'est que la ligne de commande est d'abord formatté en utilisant les paramètres via la classe MessageFormat.

Parameters:
commandLine - La ligne de commande à exécuter.
Returns:
Le code de retour de la ligne de commande.
Throws:
IOException - Erreur d'exécution de la commande.
See Also:
system(String)

execute

public static int execute(String... args)
                   throws IOException
Exécute le programme spécifié en affichant les données dans les flux des sorties de l'application.

Parameters:
args - Les différents paramètres du programme.
Returns:
Le code de retour du programme.
Throws:
IOException - Erreur d'exécution du programme.
See Also:
System.out, System.err