/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.upgrade.log;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* This class implements the upgrade log.
*/
public final class UpgradeLog
{
private final static Logger LOG = LoggerFactory.getLogger( UpgradeLog.class );
private final List<UpgradeLogEntry> entries;
public UpgradeLog()
{
this.entries = new ArrayList<UpgradeLogEntry>();
}
public synchronized List<UpgradeLogEntry> getEntries()
{
return new ArrayList<UpgradeLogEntry>( this.entries );
}
public void logInfo( int modelNumber, String message )
{
log( UpgradeLogLevel.INFO, modelNumber, message, null );
}
public void logWarning( int modelNumber, String message )
{
log( UpgradeLogLevel.WARNING, modelNumber, message, null );
}
public void logWarning( int modelNumber, String message, Throwable cause )
{
log( UpgradeLogLevel.WARNING, modelNumber, message, cause );
}
public void logError( int modelNumber, String message )
{
logError( modelNumber, message, null );
}
public void logError( int modelNumber, String message, Throwable cause )
{
log( UpgradeLogLevel.ERROR, modelNumber, message, cause );
}
private void log( UpgradeLogLevel level, int modelNumber, String message, Throwable cause )
{
log( new UpgradeLogEntry( level, modelNumber, message, cause ) );
}
private synchronized void log( UpgradeLogEntry entry )
{
if ( entry.getLevel() == UpgradeLogLevel.INFO )
{
LOG.info( entry.getMessage(), entry.getCause() );
}
else if ( entry.getLevel() == UpgradeLogLevel.WARNING )
{
LOG.warn( entry.getMessage(), entry.getCause() );
}
else if ( entry.getLevel() == UpgradeLogLevel.ERROR )
{
LOG.error( entry.getMessage(), entry.getCause() );
}
this.entries.add( entry );
}
public void clear()
{
this.entries.clear();
}
}