001 /*
002 * JBoss, Home of Professional Open Source.
003 * Copyright 2008, Red Hat Middleware LLC, and individual contributors
004 * as indicated by the @author tags. See the copyright.txt file in the
005 * distribution for a full listing of individual contributors.
006 *
007 * This is free software; you can redistribute it and/or modify it
008 * under the terms of the GNU Lesser General Public License as
009 * published by the Free Software Foundation; either version 2.1 of
010 * the License, or (at your option) any later version.
011 *
012 * This software is distributed in the hope that it will be useful,
013 * but WITHOUT ANY WARRANTY; without even the implied warranty of
014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015 * Lesser General Public License for more details.
016 *
017 * You should have received a copy of the GNU Lesser General Public
018 * License along with this software; if not, write to the Free
019 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021 */
022
023 package org.jboss.dna.common.monitor;
024
025 import java.util.Locale;
026 import org.jboss.dna.common.CommonI18n;
027 import org.jboss.dna.common.i18n.I18n;
028 import org.jboss.dna.common.util.Logger;
029
030 /**
031 * @author Randall Hauch
032 */
033 public class LoggingProgressMonitor extends ProgressMonitorWrapper {
034
035 private final Logger logger;
036 private final Logger.Level level;
037 private final Locale locale;
038
039 public LoggingProgressMonitor( ProgressMonitor delegate, Logger logger, Logger.Level level ) {
040 this(delegate, logger, level, null);
041 }
042
043 public LoggingProgressMonitor( ProgressMonitor delegate, Logger logger, Logger.Level level, Locale locale ) {
044 super(delegate);
045 assert level != null;
046 assert logger != null;
047 this.level = level;
048 this.logger = logger;
049 this.locale = locale;
050 }
051
052 /**
053 * {@inheritDoc}
054 */
055 @Override
056 public void beginTask( double totalWork, I18n name, Object... params ) {
057 super.beginTask(totalWork, name, params);
058 this.logger.log(level, CommonI18n.progressMonitorBeginTask, getActivityName(), name.text(params));
059 }
060
061 /**
062 * {@inheritDoc}
063 */
064 @Override
065 public void done() {
066 super.done();
067 this.logger.log(level, CommonI18n.progressMonitorStatus, super.getStatus(this.locale));
068 }
069
070 /**
071 * {@inheritDoc}
072 */
073 @Override
074 public void setCancelled( boolean value ) {
075 super.setCancelled(value);
076 this.logger.log(level, CommonI18n.progressMonitorStatus, super.getStatus(this.locale));
077 }
078
079 /**
080 * {@inheritDoc}
081 */
082 @Override
083 public void worked( double work ) {
084 super.worked(work);
085 this.logger.log(level, CommonI18n.progressMonitorStatus, super.getStatus(this.locale));
086 }
087
088 }