/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.upgrade;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* This class implements the upgrade checker and should be used in all servlets that needs this functionality.
*/
public final class UpgradeChecker
{
/**
* Upgrade service.
*/
private final UpgradeService upgradeService;
/**
* Construct the upgrade checker.
*/
public UpgradeChecker( UpgradeService upgradeService )
{
this.upgradeService = upgradeService;
}
/**
* Check if we need to upgrade. Print out an error if we do and return true.
*/
public boolean checkUpgrade( HttpServletResponse res )
throws IOException
{
boolean upgradeNeeded = this.upgradeService.needsUpgrade();
boolean softwareUpgradeNeeded = this.upgradeService.needsSoftwareUpgrade();
if ( upgradeNeeded )
{
doUpgradeNeededError( res );
}
else if ( softwareUpgradeNeeded )
{
doSoftwareUpgradeNeededError( res );
}
return upgradeNeeded || softwareUpgradeNeeded;
}
/**
* Send the upgrade needed error.
*/
private void doUpgradeNeededError( HttpServletResponse res )
throws IOException
{
StringBuffer str = new StringBuffer();
str.append( "Service unavailable. Upgrade is needed from model " );
str.append( this.upgradeService.getCurrentModelNumber() ).append( " to model " );
str.append( this.upgradeService.getTargetModelNumber() ).append( "." );
res.sendError( HttpServletResponse.SC_SERVICE_UNAVAILABLE, str.toString() );
}
/**
* Do software upgrade needed error.
*/
private void doSoftwareUpgradeNeededError( HttpServletResponse res )
throws IOException
{
StringBuffer str = new StringBuffer();
str.append( "Service unavailable. Model is newer than software. Software upgrade is needed." );
res.sendError( HttpServletResponse.SC_SERVICE_UNAVAILABLE, str.toString() );
}
}