/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.tools;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import com.google.common.base.Strings;
import com.google.common.collect.Maps;
import com.enonic.cms.framework.cache.CacheFacade;
import com.enonic.cms.framework.cache.CacheManager;
public final class CacheInfoController
extends AbstractToolController
{
private CacheManager cacheManager;
@Override
protected void doGet( final HttpServletRequest req, final HttpServletResponse res )
throws Exception
{
final String op = req.getParameter( "op" );
if ( "info".equals( op ) )
{
final Map<String, Object> model = Maps.newHashMap();
model.put( "baseUrl", getBaseUrl( req ) );
model.put( "cacheList", this.cacheManager.getAll() );
renderView( req, res, model, "cacheInfoPage_info" );
}
else
{
final Map<String, Object> model = Maps.newHashMap();
model.put( "baseUrl", getBaseUrl( req ) );
renderView( req, res, model, "cacheInfoPage" );
}
}
@Override
protected void doPost( final HttpServletRequest req, final HttpServletResponse res )
throws Exception
{
final String cache = req.getParameter( "cache" );
final String op = req.getParameter( "op" );
executeCommand( cache, op );
res.setStatus( HttpServletResponse.SC_NO_CONTENT );
}
private void executeCommand( final String cache, final String command )
{
if ( Strings.isNullOrEmpty( cache ) )
{
return;
}
final CacheFacade cacheFacade = this.cacheManager.getCache( cache );
if ( cacheFacade == null )
{
return;
}
if ( "clear-cache".equalsIgnoreCase( command ) )
{
cacheFacade.removeAll();
}
}
@Autowired
public void setCacheManager( final CacheManager cacheManager )
{
this.cacheManager = cacheManager;
}
}