/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.tools.plugin;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
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.collect.Maps;
import com.enonic.cms.core.plugin.PluginHandle;
import com.enonic.cms.core.plugin.PluginManager;
import com.enonic.cms.core.plugin.ext.ExtensionPoint;
import com.enonic.cms.core.tools.AbstractToolController;
public final class PluginInfoController
extends AbstractToolController
{
private List<ExtensionPoint> extensionPoints;
private PluginManager pluginManager;
@Autowired
public void setPluginManager( final PluginManager pluginManager )
{
this.pluginManager = pluginManager;
}
@Autowired
public void setExtensionPoints( final List<ExtensionPoint> extensionPoints )
{
this.extensionPoints = extensionPoints;
}
@SuppressWarnings("unchecked")
private Map<String, List<String>> createExtMap()
{
final Map<String, List<String>> map = Maps.newTreeMap();
for ( final ExtensionPoint point : this.extensionPoints )
{
map.put( point.getName(), point.toHtml() );
}
return map;
}
@Override
protected void doGet( final HttpServletRequest req, final HttpServletResponse res )
throws Exception
{
final String updateKey = req.getParameter( "update" );
if ( updateKey != null )
{
doUpdatePlugin( new Long( updateKey ), req, res );
}
final HashMap<String, Object> model = new HashMap<String, Object>();
model.put( "baseUrl", getBaseUrl( req ) );
model.put( "extMap", createExtMap() );
model.put( "pluginHandles", toPluginWrappers( this.pluginManager.getPlugins() ) );
renderView( req, res, model, "pluginInfoPage" );
}
private void doUpdatePlugin( final long pluginKey, final HttpServletRequest req, final HttpServletResponse res )
throws Exception
{
final PluginHandle handle = this.pluginManager.findPluginByKey( pluginKey );
if ( handle != null )
{
handle.update();
}
redirectToReferrer( req, res );
}
private Collection<PluginWrapper> toPluginWrappers( final List<PluginHandle> list )
{
return PluginWrapper.toWrapperList( list );
}
}