package org.agnitas.emm.extension.pluginmanager.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.agnitas.emm.extension.ExtensionSystem;
import org.agnitas.emm.extension.exceptions.RemovingSystemPluginNotAllowedException;
import org.agnitas.emm.extension.util.ExtensionUtils;
import org.agnitas.util.AgnUtils;
import org.agnitas.web.BaseDispatchAction;
import org.agnitas.web.forms.StrutsFormBase;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
public class PluginManagerAction extends BaseDispatchAction {
private static final transient Logger logger = Logger.getLogger( PluginManagerAction.class);
public ActionForward list( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
if(!AgnUtils.isUserLoggedIn(request)) {
if( logger.isInfoEnabled())
logger.info( "Not authentication information. Forwarding to login");
return mapping.findForward("logon");
}
ExtensionSystem extensionSystem = ExtensionUtils.getExtensionSystem( request);
request.setAttribute( "pluginStatusReport", extensionSystem.getPluginStatusReport());
initTableParams(7, (StrutsFormBase) form);
return mapping.findForward( "list");
}
public ActionForward detail( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
if(!AgnUtils.isUserLoggedIn(request)) {
if( logger.isInfoEnabled())
logger.info( "Not authentication information. Forwarding to login");
return mapping.findForward("logon");
}
String pluginID = request.getParameter( "plugin");
if( pluginID == null || pluginID.equals( "")) {
ActionMessages messages = new ActionMessages();
messages.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage( "error.pluginmanager.missing_plugin_id"));
saveErrors( request, messages);
return list( mapping, form, request, response);
} else {
ExtensionSystem extensionSystem = ExtensionUtils.getExtensionSystem( request);
request.setAttribute( "pluginDetail", extensionSystem.getPluginDetails( pluginID));
return mapping.findForward( "detail");
}
}
public ActionForward deactivate( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
if(!AgnUtils.isUserLoggedIn(request)) {
if( logger.isInfoEnabled())
logger.info( "Not authentication information. Forwarding to login");
return mapping.findForward("logon");
}
String pluginID = request.getParameter( "plugin");
if( pluginID == null || pluginID.equals( "")) {
ActionMessages messages = new ActionMessages();
messages.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage( "error.pluginmanager.missing_plugin_id"));
saveErrors( request, messages);
return list( mapping, form, request, response);
} else {
ExtensionSystem extensionSystem = ExtensionUtils.getExtensionSystem( request);
extensionSystem.deactivatePluginForStartup( pluginID);
showSavedMessage(request);
return detail( mapping, form, request, response);
}
}
public ActionForward activate( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
if(!AgnUtils.isUserLoggedIn(request)) {
if( logger.isInfoEnabled())
logger.info( "Not authentication information. Forwarding to login");
return mapping.findForward("logon");
}
String pluginID = request.getParameter( "plugin");
if( pluginID == null || pluginID.equals( "")) {
ActionMessages messages = new ActionMessages();
messages.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage( "error.pluginmanager.missing_plugin_id"));
saveErrors( request, messages);
return list( mapping, form, request, response);
} else {
ExtensionSystem extensionSystem = ExtensionUtils.getExtensionSystem( request);
extensionSystem.activatePluginForStartup( pluginID);
showSavedMessage(request);
return detail( mapping, form, request, response);
}
}
public ActionForward uninstall( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
if(!AgnUtils.isUserLoggedIn(request)) {
if( logger.isInfoEnabled())
logger.info( "Not authentication information. Forwarding to login");
return mapping.findForward("logon");
}
String pluginID = request.getParameter( "plugin");
if( pluginID == null || pluginID.equals( "")) {
ActionMessages messages = new ActionMessages();
messages.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage( "error.pluginmanager.missing_plugin_id"));
saveErrors( request, messages);
return list( mapping, form, request, response);
} else {
ExtensionSystem extensionSystem = ExtensionUtils.getExtensionSystem( request);
try {
extensionSystem.uninstallPlugin( pluginID);
ActionMessages messages = new ActionMessages();
messages.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage( "pluginmanager.plugin.uninstalled"));
saveMessages( request, messages);
} catch( RemovingSystemPluginNotAllowedException e) {
ActionMessages messages = new ActionMessages();
messages.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage( "error.pluginmanager.uninstall.systemplugin"));
saveErrors( request, messages);
} catch( Exception e) {
ActionMessages messages = new ActionMessages();
messages.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage( "error.pluginmanager.uninstall"));
saveErrors( request, messages);
}
return list( mapping, form, request, response);
}
}
}