1 13 29 30 package org.pentaho.ui.servlet; 31 32 import java.io.File ; 33 import java.io.IOException ; 34 import java.util.Iterator ; 35 import java.util.List ; 36 37 import javax.servlet.ServletException ; 38 import javax.servlet.http.HttpServletRequest ; 39 import javax.servlet.http.HttpServletResponse ; 40 41 import org.apache.commons.fileupload.DiskFileUpload; 42 import org.apache.commons.fileupload.FileItem; 43 import org.apache.commons.logging.Log; 44 import org.apache.commons.logging.LogFactory; 45 import org.pentaho.core.admin.datasources.DataSourceInfo; 46 import org.pentaho.core.admin.datasources.jboss.JBossDatasourceAdmin; 47 import org.pentaho.core.repository.ISolutionRepository; 48 import org.pentaho.core.session.IPentahoSession; 49 import org.pentaho.core.system.PentahoSystem; 50 import org.pentaho.core.util.PublisherUtil; 51 import org.pentaho.core.util.UIUtil; 52 import org.pentaho.messages.util.LocaleHelper; 53 54 public class RepositoryFilePublisher extends ServletBase { 55 56 59 private static final long serialVersionUID = 9019152264205996418L; 60 61 private static final Log logger = LogFactory.getLog(GetContent.class); 62 63 public Log getLogger() { 64 return logger; 65 } 66 67 public RepositoryFilePublisher() { 68 super(); 69 } 70 71 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException { 72 doGet(request, response); 73 } 74 75 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException { 76 response.setCharacterEncoding(LocaleHelper.getSystemEncoding()); 77 IPentahoSession userSession = UIUtil.getPentahoSession(request); 78 ISolutionRepository repository = PentahoSystem.getSolutionRepository(userSession); 79 int status = ISolutionRepository.FILE_ADD_SUCCESSFUL; 80 81 String publishPath = request.getParameter("publishPath"); 83 String publishKey = request.getParameter("publishKey"); if (PublisherUtil.checkPublisherKey(publishKey)) { 85 String jndiName = request.getParameter("jndiName"); String jdbcDriver = request.getParameter("jdbcDriver"); String jdbcUrl = request.getParameter("jdbcUrl"); String jdbcUserId = request.getParameter("jdbcUserId"); String jdbcPassword = request.getParameter("jdbcPassword"); boolean overwrite = Boolean.valueOf(request.getParameter("overwrite")).booleanValue(); 92 if (jndiName != null && !jndiName.equals("")) { JBossDatasourceAdmin jbossDSAdmin = new JBossDatasourceAdmin(); 94 Iterator keyIterator = jbossDSAdmin.listContainerDataSources().keySet().iterator(); 97 boolean exists = false; 98 while (keyIterator.hasNext()) { 99 String key = (String ) keyIterator.next(); 100 if (jndiName.equals(key)) { 101 exists = true; 102 break; 103 } 104 } 105 if (!exists) { 106 DataSourceInfo simpleJNDIDS = new DataSourceInfo(jndiName, jndiName, "javax.sql.DataSource"); simpleJNDIDS.setName(jndiName); 108 simpleJNDIDS.setDriver(jdbcDriver); 109 simpleJNDIDS.setUrl(jdbcUrl); 110 simpleJNDIDS.setUserId(jdbcUserId); 111 simpleJNDIDS.setPassword(jdbcPassword); 112 jbossDSAdmin.saveDataSource(simpleJNDIDS, false); 113 } 114 } 115 116 String solutionPath = PentahoSystem.getApplicationContext().getSolutionPath(""); 118 DiskFileUpload fu = new DiskFileUpload(); 119 fu.setSizeMax(10000000); 121 122 try { 123 PentahoSystem.systemEntryPoint(); 124 125 List fileItems = fu.parseRequest(request); 126 Iterator itr = fileItems.iterator(); 127 128 while (itr.hasNext() && status == ISolutionRepository.FILE_ADD_SUCCESSFUL) { 129 FileItem fi = (FileItem) itr.next(); 130 131 File fNew = File.createTempFile(fi.getName(), ".tmp"); fNew.deleteOnExit(); 133 fi.write(fNew); 134 135 status = repository.addSolutionFile(solutionPath, publishPath, fi.getName(), fNew, overwrite); 136 } 137 } catch (Exception e) { 138 status = ISolutionRepository.FILE_ADD_FAILED; 139 e.printStackTrace(); 140 } finally { 141 PentahoSystem.systemExitPoint(); 142 } 143 if (status == ISolutionRepository.FILE_ADD_SUCCESSFUL) { 144 response.getWriter().println(status); 145 } else if (status == ISolutionRepository.FILE_EXISTS) { 146 response.getWriter().println(status); 147 } else { 148 response.getWriter().println(status); 149 } 150 } else { 151 status = ISolutionRepository.FILE_ADD_INVALID_PUBLISH_PASSWORD; 152 response.getWriter().println(status); 153 } 154 } 155 } 156 | Popular Tags |