common
Class TransfertMaster

java.lang.Object
  extended by java.lang.Thread
      extended by common.StoppableThread
          extended by common.TransfertMaster
All Implemented Interfaces:
Runnable
Direct Known Subclasses:
TransfertClient, TransfertServer

public class TransfertMaster
extends StoppableThread

Classe maître du transfert. Cette classe est le point d'entrée de l'application.

Cette classe s'occupe d'analyser les arguments passés à l'application, d'initialiser si besoin l'interface graphique, puis de lancer le ou les transferts.

Cette classe hérite indirectement de Thread mais le thread n'est pas forcément démarré. Si l'interface graphique est initialisée, le thread ne sera pas démarré (des threads AWT/Swing le seront). Cependant, si l'application démarre en mode console, le thread sera démarré et servira à manipuler la console (voir run()).

Cette classe s'occupe d'afficher le log de l'application, toutes les autres classes dérivent de TransfertSlave et peuvent utiliser cette classe pour intéragir avec l'utilisateur.

See Also:
TransfertSlave, run()

Nested Class Summary
private  class TransfertMaster.MainListener
          Permet de réagir à la fermeture de la fenêtre avec un message d'avertissement.
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
protected  BufferedReader consoleInput
          Flux d'entrée (console).
protected  JFrame frame
          Fenêtre principale utilisée pour l'interface graphique.
protected static boolean graphicMode
          Précise si le mode graphique est activé.
protected  JTextArea logArea
          Zone de texte pour l'affichage du log.
protected  TransfertSlave scheduler
          Ordonnanceur principal.
protected  JScrollPane scrollPanel
          Zone de défilement pour l'affichage du log.
protected static String tcpPort
          Port TCP.
protected static String udpPort
          Port UDP.
protected static Log.Verbosity verbosity
          Verbosité de l'affichage.
 
Fields inherited from class common.StoppableThread
quitQuery
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
TransfertMaster()
           
 
Method Summary
 void consolePrint(String msg)
          Ecrit sur la console et, si disponible, sur l'interface graphique.
protected  void doFree()
          Libère les ressources : quitte puis attend la fermeture de l'ordonnanceur.
protected  void executeCommand(String inputCommand)
          Exécute si possible une commande reçue par la console.
protected  void finalInitFrame()
          Effectue la fin de l'initialisation de la fenêtre puis affiche celle-ci.
 String getHumanReadableLenght(double fileLength)
          Donne la taille d'un fichier pour affichage en adaptant l'unité en fonction de la taille.
 String getTransfertRate(long startTime, long endTime, long length)
          Donne le taux de transfert d'un fichier pour affichage.
protected  void initComponentsAndFrame()
          Initialise la fenêtre et ses composants.
 void outputPrint(Log.Verbosity verbosity, Log.Severity severity, byte ID, String msg)
          Ecrit un événement pour le log en précisant l'ID du transfert.
 void outputPrint(Log.Verbosity verbosity, Log.Severity severity, String msg)
          Ecrit un événement pour le log.
 void outputPrintException(Log.Verbosity verbosity, Log.Severity severity, byte ID, String msg, Exception exception)
          Ecrit un événement du à une exception dans le log en précisant l'ID du transfert.
 void outputPrintException(Log.Verbosity verbosity, Log.Severity severity, String msg, Exception exception)
          Ecrit un événement du à une exception dans le log.
protected  int parseArg(int i, String[] args)
          Analyse l'argument à la position i.
protected  boolean parseArgs(String[] args)
          Analyse les arguments passés au programme.
protected  void printLocalHelp()
          Affiche l'aide pour la console.
protected  void printStartHelp()
          Affiche l'aide pour le démarrage du programme.
 void run()
          Méthode principale du thread.
 
Methods inherited from class common.StoppableThread
doQuit, free, quit
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

graphicMode

protected static boolean graphicMode
Précise si le mode graphique est activé. Par défaut, le mode graphique est activé si celui-ci est disponible.

See Also:
GraphicsEnvironment.isHeadless()

verbosity

protected static Log.Verbosity verbosity
Verbosité de l'affichage. Par défaut à Log.Verbosity.NOTICE.

See Also:
outputPrint(common.Log.Verbosity, common.Log.Severity, String)

tcpPort

protected static String tcpPort
Port TCP. Par défaut à 9856.

See Also:
TCPListener.TCPListener(TransfertMaster, server.core.ServerScheduler, int), TCPClient.TCPClient(TransfertMaster, client.core.ClientScheduler, String, int)

udpPort

protected static String udpPort
Port UDP. Par défaut à 9857.

See Also:
UDPListener.UDPListener(TransfertMaster, server.core.ServerScheduler, int), UDPClient.UDPClient(TransfertMaster, String, int)

consoleInput

protected BufferedReader consoleInput
Flux d'entrée (console).


scheduler

protected TransfertSlave scheduler
Ordonnanceur principal.


frame

protected JFrame frame
Fenêtre principale utilisée pour l'interface graphique.


logArea

protected JTextArea logArea
Zone de texte pour l'affichage du log.


scrollPanel

protected JScrollPane scrollPanel
Zone de défilement pour l'affichage du log.

Constructor Detail

TransfertMaster

public TransfertMaster()
Method Detail

printStartHelp

protected void printStartHelp()
Affiche l'aide pour le démarrage du programme.


printLocalHelp

protected void printLocalHelp()
Affiche l'aide pour la console.


parseArg

protected int parseArg(int i,
                       String[] args)
Analyse l'argument à la position i.

Parameters:
i - index de l'argument à analyser.
args - tableau d'arguments.
Returns:
prochain argument à analyser ou -1 si l'analyse a échoué.

parseArgs

protected boolean parseArgs(String[] args)
Analyse les arguments passés au programme.

Parameters:
args - tableau d'arguments.
Returns:
vrai si les arguments ont été correctement analysés. Si c'est pas le cas, l'aide sera affichée.

executeCommand

protected void executeCommand(String inputCommand)
Exécute si possible une commande reçue par la console.

Parameters:
inputCommand - ligne brute reçue par la console.

initComponentsAndFrame

protected void initComponentsAndFrame()
Initialise la fenêtre et ses composants.


finalInitFrame

protected void finalInitFrame()
Effectue la fin de l'initialisation de la fenêtre puis affiche celle-ci.


doFree

protected void doFree()
Libère les ressources : quitte puis attend la fermeture de l'ordonnanceur. Si l'interface graphique est activée, celle-ci sera fermée.

Overrides:
doFree in class StoppableThread
See Also:
Thread.run(), StoppableThread.isFree, StoppableThread.free()

run

public void run()
Méthode principale du thread. Si le mode console est activé, ce thread s'occupe d'exécuter les commandes reçues par la console.

Specified by:
run in interface Runnable
Overrides:
run in class Thread

consolePrint

public void consolePrint(String msg)
Ecrit sur la console et, si disponible, sur l'interface graphique.

Parameters:
msg - message à afficher

outputPrint

public void outputPrint(Log.Verbosity verbosity,
                        Log.Severity severity,
                        String msg)
Ecrit un événement pour le log.

Parameters:
verbosity - verbosité de l'événement.
severity - sévérité de l'événement.
msg - message à afficher.
See Also:
verbosity

outputPrint

public void outputPrint(Log.Verbosity verbosity,
                        Log.Severity severity,
                        byte ID,
                        String msg)
Ecrit un événement pour le log en précisant l'ID du transfert.

Parameters:
verbosity - verbosité de l'événement.
severity - sévérité de l'événement.
ID - ID du transfert.
msg - message à afficher.

outputPrintException

public void outputPrintException(Log.Verbosity verbosity,
                                 Log.Severity severity,
                                 String msg,
                                 Exception exception)
Ecrit un événement du à une exception dans le log. La pile d'exception sera affichée en verbosité Log.Verbosity.NORMAL.

Parameters:
verbosity - verbosité de l'événement.
severity - sévérité de l'événement.
msg - message à afficher.
exception - exception à l'origine de cet événement.

outputPrintException

public void outputPrintException(Log.Verbosity verbosity,
                                 Log.Severity severity,
                                 byte ID,
                                 String msg,
                                 Exception exception)
Ecrit un événement du à une exception dans le log en précisant l'ID du transfert. La pile d'exception sera affichée en verbosité Log.Verbosity.NORMAL.

Parameters:
verbosity - verbosité de l'événement.
severity - sévérité de l'événement.
ID - ID du transfert.
msg - message à afficher.
exception - exception à l'origine de cet événement.

getTransfertRate

public String getTransfertRate(long startTime,
                               long endTime,
                               long length)
Donne le taux de transfert d'un fichier pour affichage.

Parameters:
startTime - date de début en millisecondes.
endTime - date de fin en millisecondes.
length - taille du fichier en octets.
Returns:
chaîne à afficher avec l'unité.

getHumanReadableLenght

public String getHumanReadableLenght(double fileLength)
Donne la taille d'un fichier pour affichage en adaptant l'unité en fonction de la taille.

Parameters:
fileLength - taille du fichier en octets.
Returns:
chaîne à afficher avec l'unité.