Index: lutinutil/src/java/org/codelutin/util/Log.java diff -u lutinutil/src/java/org/codelutin/util/Log.java:1.1 lutinutil/src/java/org/codelutin/util/Log.java:1.2 --- lutinutil/src/java/org/codelutin/util/Log.java:1.1 Thu Aug 12 17:44:31 2004 +++ lutinutil/src/java/org/codelutin/util/Log.java Thu Aug 12 18:50:12 2004 @@ -23,9 +23,9 @@ * Created: 12 août 2004 * * @author Benjamin Poussin - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ * - * Mise a jour: $Date: 2004/08/12 17:44:31 $ + * Mise a jour: $Date: 2004/08/12 18:50:12 $ * par : $Author: bpoussin $ */ @@ -41,6 +41,9 @@ * Le développeur a chaque fois qu'il le souhaite ajoute dans son code un * Log.logUserInfo("...", "....") qui indique un message que l'utilisateur est * suceptible de vouloir, par exemple le résultat de la sauvegarde d'un fichier. +* Ou bien si l'application effectue un traitement, il peut utiliser +* Log.logTask("...", "...", max, value) pour indiquer qu'un traitement est +* en cours. *

* Il suffit ensuite de creer un objet qui herite de {@link #LogListener}, puis * de l'enregistrer sur certaine category d'event il recevra alors les @@ -53,7 +56,12 @@ * LogListener l = new StatusBar(); * Log.addLogListener(l); * ... -* Log.logUserInfo("SAVE", "Sauvegarde réussi"); +* ... +* ... +* Log.logTask("SAVE", "Sauvegarde en cours", -1, 0); +* ... // sauvegarde +* Log.logUserInfo("SAVE", "Sauvegarde réussie"); +* Log.logTask("SAVE", "Sauvegarde terminée", 0, 0); * */ public class Log { // Log @@ -64,7 +72,8 @@ * L'interface que doivent respecter un listener */ static public interface LogListener extends EventListener { - public void logSend(LogEvent e); + public void logMessage(LogEvent e); + public void logTask(LogEvent e); } /** @@ -75,6 +84,8 @@ protected Level level; protected String message; protected Throwable exception; + protected int taskMax = 0; + protected int taskValue = 0; public LogEvent(Object source, String category, Level level, String message, Throwable exception){ super(source==null?LOG_INSTANCE:source); @@ -83,9 +94,19 @@ this.message = message; this.exception = exception; } + public LogEvent(Object source, String category, String message, int taskMax, int taskValue){ + super(source==null?LOG_INSTANCE:source); + this.category = category; + this.message = message; + this.taskMax = taskMax; + this.taskValue = taskValue; + } public String getCategory(){ return category; } + /** + * Retourne une valeur que si l'event est un sendMessage, sinon null; + */ public Level getLevel() { return level; } @@ -99,6 +120,13 @@ public Throwable getException() { return exception; } + public int getTaskMax() { + return taskMax; + } + public int getTaskValue() { + return taskValue; + } + } /** @@ -146,8 +174,18 @@ static protected void fire(String category, Level level, String message, Throwable exception){ LogEvent e = new LogEvent(null, category, level, message, exception); try{ - listeners.fire(category, "logSend", e); - listeners.fire(LOG_INSTANCE, "logSend", e); + listeners.fire(category, "logMessage", e); + listeners.fire(LOG_INSTANCE, "logMessage", e); + }catch(Exception eee){ + Logger.getLogger(Log.class.getName() + ".fire").log(Level.WARNING, "Error during send log event", eee); + } + } + + static protected void fire(String category, String message, int max, int value){ + LogEvent e = new LogEvent(null, category, message, max, value); + try{ + listeners.fire(category, "logTask", e); + listeners.fire(LOG_INSTANCE, "logTask", e); }catch(Exception eee){ Logger.getLogger(Log.class.getName() + ".fire").log(Level.WARNING, "Error during send log event", eee); } @@ -168,4 +206,21 @@ fire(category, USER_INFO, message, e); } + /** + * Permet d'indiquer l'avancement d'une tache. Si l'on ne connait pas la + * longueur de la tache il suffit d'indiquer -1 dans max, pour indiquer + * une tache en cours dont on ne connait pas la fin. + * lorsque la tache est termine, il suffit d'appeler cette methode avec max + * valant 0. + * @param category la category de la tache + * @param message le message a afficher, le message peut-etre null + * @param max l'entier qui indique la fin de la tache. La tache commence a + * 0 et fini lorsque l'on arrive a max. Si max vaut -1 cela veut dire + * que la tache debute mais qu'on ne connait pas sa longueur + * @param current la valeur courante de la tache. + */ + static public void logTask(String category, String message, int max, int current){ + Logger.getLogger(category).log(USER_INFO, "task: " + message + "["+current+"/"+max+"]"); + fire(category, message, max, current); + } } // Log