package com.processpuzzle.application.configuration.control; import java.util.Properties; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import org.springframework.web.context.support.ServletContextResourceLoader; import com.processpuzzle.application.control.control.CommandDispatcher; import com.processpuzzle.application.control.control.CommandInterface; import com.processpuzzle.application.domain.Application; import com.processpuzzle.application.domain.ApplicationManager; import com.processpuzzle.application.domain.WebApplication; public class ApplicationInstallerCommand implements CommandInterface { public static final String COMMAND_NAME = "ApplicationInstaller"; private static final String APPLICATION_NAME_KEY = "application"; private static final String APPLICATION_STORAGE_PATH = "/Configuration"; private static final String CONFIGURATION_DESCRIPTOR_PATH = "/Configuration/configuration_descriptor.xml"; private ServletContext servletContext; private Application application; public void init( CommandDispatcher dispatcher ) { this.servletContext = dispatcher.getServletContext(); } public String execute( CommandDispatcher dispatcher ) throws Exception { String responsePage = ""; String applicationName = determineApplicationName( dispatcher.getRequest() ); ApplicationManager applicationInstaller = new ApplicationManager( APPLICATION_STORAGE_PATH, new ServletContextResourceLoader( servletContext ) ); application = applicationInstaller.install( applicationName, WebApplication.class, CONFIGURATION_DESCRIPTOR_PATH ); return responsePage; } public String getName() { return this.getClass().getName(); } public Application getApplication() { return application; } //Protected, private helper methods private String determineApplicationName( HttpServletRequest request ) { Properties requestParameters = new ServletHelper().extractProperties( request ); String applicationName = requestParameters.getProperty( APPLICATION_NAME_KEY ); return applicationName; } }