1 16 17 package org.pentaho.ui.component; 18 19 import java.io.File ; 20 import java.util.Iterator ; 21 import java.util.List ; 22 import javax.servlet.http.HttpServletRequest ; 23 import org.apache.commons.fileupload.DiskFileUpload; 24 import org.apache.commons.fileupload.FileItem; 25 import org.apache.commons.fileupload.FileUploadException; 26 import org.apache.commons.logging.Log; 27 import org.apache.commons.logging.LogFactory; 28 import org.dom4j.Document; 29 import org.pentaho.ui.XmlComponent; 30 import org.pentaho.core.repository.ISolutionRepository; 31 import org.pentaho.core.session.IPentahoSession; 32 import org.pentaho.core.solution.HttpRequestParameterProvider; 33 import org.pentaho.core.system.PentahoSystem; 34 import org.pentaho.core.ui.IPentahoUrlFactory; 35 import org.pentaho.messages.Messages; 36 37 public class SolutionManagerUIComponent extends XmlComponent { 38 41 private static final long serialVersionUID = 5322450732426274853L; 42 43 private static final Log logger = LogFactory.getLog(SolutionManagerUIComponent.class); 44 45 private static final String PATH_STR = "path"; 47 private static final String EMPTY_STR = ""; 49 private static final String REQUEST_STR = "request"; 51 private static final String BASE_URL_STR = "baseUrl"; 53 private IPentahoSession session = null; 54 55 public SolutionManagerUIComponent(IPentahoUrlFactory urlFactory, List messages, IPentahoSession session) { 56 super(urlFactory, messages, null); 57 this.session = session; 58 setXsl("text/xml", "copy.xsl"); } 60 61 public Document doGetSolutionStructure() { 62 ISolutionRepository repository = PentahoSystem.getSolutionRepository(session); 63 Document doc = repository.getSolutionStructure(ISolutionRepository.ACTION_ADMIN); 64 return doc; 65 } 66 67 public Document doFileUpload() { 68 String baseUrl = PentahoSystem.getApplicationContext().getSolutionPath(EMPTY_STR); 69 ISolutionRepository repository = PentahoSystem.getSolutionRepository(session); 70 String path = this.getParameter(PATH_STR, null); 71 HttpServletRequest request = ((HttpRequestParameterProvider) getParameterProviders().get(REQUEST_STR)).getRequest(); 72 String contentType = request.getContentType(); 73 if ((contentType == null) || (contentType.indexOf("multipart/form-data") < 0 && contentType.indexOf("multipart/mixed stream") < 0)) { return doGetSolutionStructure(); 75 } 76 DiskFileUpload uploader = new DiskFileUpload(); 77 try { 78 List fileList = uploader.parseRequest(request); 79 Iterator iter = fileList.iterator(); 80 while (iter.hasNext()) { 81 FileItem fi = (FileItem) iter.next(); 82 83 if (!fi.isFormField()) { 85 File tempFileRef = new File (fi.getName()); 86 repository.addSolutionFile(baseUrl, path, tempFileRef.getName(), fi.get(), true); 87 logger.info(Messages.getString("SolutionManagerUIComponent.INFO_0001_FILE_SAVED") + path + "/" + tempFileRef.getName()); } 89 } 90 } catch (FileUploadException e) { 91 logger.error(e.toString()); 92 } catch (Exception e) { 93 e.printStackTrace(); 95 } 96 97 return doGetSolutionStructure(); 98 } 99 100 public Document getXmlContent() { 101 setXslProperty(BASE_URL_STR, urlFactory.getDisplayUrlBuilder().getUrl()); 102 return doFileUpload(); 103 } 104 105 public Log getLogger() { 106 return logger; 107 } 108 109 public boolean validate() { 110 return true; 111 } 112 } 113 | Popular Tags |