/*
* Copyright 2010 Research Studios Austria Forschungsgesellschaft mBH
*
* This file is part of easyrec.
*
* easyrec is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* easyrec is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with easyrec. If not, see <http://www.gnu.org/licenses/>.
*/
package org.easyrec.controller;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.easyrec.model.plugin.PluginVO;
import org.easyrec.model.web.FileUploadBean;
import org.easyrec.plugin.container.PluginRegistry;
import org.easyrec.store.dao.plugin.PluginDAO;
import org.easyrec.util.core.Security;
import org.easyrec.utils.servlet.ServletUtils;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.validation.BindException;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* This controller provides file upload for the webapp.
* <p/>
* <p><b>Company: </b>
* SAT, Research Studios Austria</p>
* <p/>
* <p><b>Copyright: </b>
* (c) 2010</p>
* <p/>
* <p><b>last modified:</b><br/>
* $Author: phlavac $<br/>
* $Date: 2010-03-24 18:37:33 +0100 (Mi, 24 Mrz 2010) $<br/>
* $Revision: 15881 $</p>
*
* @author Stephan Zavrel
*/
public class PluginUploadController extends SimpleFormController implements ApplicationContextAware {
private final Log logger = LogFactory.getLog(this.getClass());
private ApplicationContext appContext;
private PluginRegistry pluginRegistry;
private PluginDAO pluginDAO;
@Override
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command,
BindException errors) throws Exception {
String tenantId = ServletUtils.getSafeParameter(request, "tenantId", "");
String operatorId = ServletUtils.getSafeParameter(request, "operatorId", "");
logger.info("PluginUploadController: submit called");
// cast the fubean
FileUploadBean fubean = (FileUploadBean) command;
if (fubean == null || fubean.getFile() == null || fubean.getFile().isEmpty()) {
logger.info("no file or empty file was uploaded, aborting");
// well, let's do nothing with the fubean for now and return
return super.onSubmit(request, response, command, errors);
}
// check if there's content there
MultipartFile file = fubean.getFile();
PluginVO plugin = pluginRegistry.checkPlugin(file.getBytes());
plugin.setOrigFilename(file.getOriginalFilename());
pluginDAO.storePlugin(plugin);
ModelAndView mav = new ModelAndView("dev/page");
mav.addObject("title", "easyrec :: administration");
mav.addObject("operatorId", operatorId);
mav.addObject("tenantId", tenantId);
mav.addObject("signedinOperatorId", Security.signedInOperatorId(request));
mav.addObject("page", "plugins");
List<PluginVO> plugins = pluginDAO.loadPlugins();
mav.addObject("pluginList", plugins);
return mav;
// well, let's do nothing with the fubean for now and return
//return super.onSubmit(request, response, command, errors);
}
public void setPluginRegistry(PluginRegistry pluginRegistry) {
this.pluginRegistry = pluginRegistry;
}
public void setAppContext(ApplicationContext appContext) {
this.appContext = appContext;
}
public void setPluginDAO(PluginDAO pluginDAO) {
this.pluginDAO = pluginDAO;
}
}