| 1 20 package org.openi.web.controller.admin; 21 22 import org.apache.log4j.Logger; 23 import org.openi.project.DirectoryLister; 24 import org.openi.project.ProjectContext; 25 import org.openi.security.*; 26 import org.openi.web.UploadFile; 27 import org.springframework.validation.BindException; 28 import org.springframework.web.servlet.ModelAndView; 29 import org.springframework.web.servlet.mvc.SimpleFormController; 30 import java.util.HashMap ; 31 import java.util.List ; 32 import java.util.Map ; 33 import javax.servlet.http.HttpServletRequest ; 34 import javax.servlet.http.HttpServletResponse ; 35 import javax.servlet.http.HttpSession ; 36 import java.io.File ; 37 38 39 47 public class UploadFileFormController extends SimpleFormController { 48 private static Logger logger = Logger.getLogger(UploadFileFormController.class); 49 50 ProjectContext projectContext = null; 51 52 58 protected Object formBackingObject(HttpServletRequest request) throws 59 Exception { 60 Map model; 61 List dirList; 62 63 try { 64 model = new HashMap (); 65 66 HttpSession session = request.getSession(); 67 68 projectContext = (ProjectContext) session 69 .getAttribute("projectContext"); 70 71 List modules = projectContext.getProjectModules(projectContext 73 .hasPermission(Permission.SAVE_PRIVATE), 74 projectContext.hasPermission(Permission.SAVE_PUBLIC)); 75 76 dirList = DirectoryLister.findProjectDirectories(projectContext 77 .getProjectDirectory(), modules); 78 79 model.put("dirList", dirList); 80 81 return model; 82 } catch (Exception e) { 83 logger.error("Exception:", e); 84 throw e; 85 } 86 } 87 88 98 protected ModelAndView onSubmit(HttpServletRequest request, 99 HttpServletResponse response, 100 Object command, 101 BindException errors) throws Exception { 102 Map model = (Map ) command; 103 logger.debug("action=" + request.getParameter("action")); 104 if ("Save".equals(request.getParameter("action"))) { 105 String datasource = request.getParameter("jdbcDatasource"); 106 String file = request.getParameter("selectedTemplate"); 107 if( projectContext.getProject().getJdbcMap()==null) 108 projectContext.getProject().setJdbcMap(new HashMap ()); 109 projectContext.getProject().getJdbcMap().put(file, datasource); 110 projectContext.saveProject(); 111 model.put("message", "dataSourceSetted.message"); 112 model.put("messageClass", "infoMessage"); 113 } else { 114 try { 115 String filename = new UploadFile().uploadFile(request); 117 118 if (filename != null && filename.endsWith(".jrxml")) { 119 filename = new File(filename).getCanonicalPath(); 120 String projectDir = new File(projectContext. 121 getProjectDirectory()). 122 getCanonicalPath(); 123 if (!filename.startsWith(projectDir)) { 124 model.put("message", "datasourceSet.error"); 125 model.put("messageClass", "errorMessage"); 126 return new ModelAndView(getSuccessView(), "model", 127 model); 128 } else { 129 130 filename = filename.substring(projectDir.length() + 1).replace('\\','/'); 131 Map map = projectContext.getJdbcDatasourceMap(); 132 133 if (map.size() == 0) { 134 model.put("message", 135 "noJdbcDatasourceToMap.message"); 136 model.put("messageClass", "infoMessage"); 137 return new ModelAndView(getSuccessView(), "model", 138 model); 139 } 140 model.put("message", "setJdbcDatasource.message"); 141 model.put("messageClass", "infoMessage"); 142 model.put("datasource", 143 projectContext.getJdbcDatasourceMap()); 144 model.put("selectedTemplate", 145 projectContext. 146 extractModulePath(filename)); 147 return new ModelAndView("datasourceSetterView", "model", 148 model); 149 } 150 151 } 152 model.put("message", "upload.message"); 153 model.put("messageClass", "infoMessage"); 154 155 } catch (Exception e) { 156 logger.error("Exception:", e); 157 model.put("message", "upload.error"); 158 model.put("messageClass", "errorMessage"); 159 } 160 } 161 return new ModelAndView(getSuccessView(), "model", model); 162 } 163 } 164 | Popular Tags |