All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.semanticwb.servlet.internal.ShowFile Maven / Gradle / Ivy

The newest version!
/*
 * SemanticWebBuilder es una plataforma para el desarrollo de portales y aplicaciones de integración,
 * colaboración y conocimiento, que gracias al uso de tecnología semántica puede generar contextos de
 * información alrededor de algún tema de interés o bien integrar información y aplicaciones de diferentes
 * fuentes, donde a la información se le asigna un significado, de forma que pueda ser interpretada y
 * procesada por personas y/o sistemas, es una creación original del Fondo de Información y Documentación
 * para la Industria INFOTEC, cuyo registro se encuentra actualmente en trámite.
 *
 * INFOTEC pone a su disposición la herramienta SemanticWebBuilder a través de su licenciamiento abierto al público (‘open source’),
 * en virtud del cual, usted podrá usarlo en las mismas condiciones con que INFOTEC lo ha diseñado y puesto a su disposición;
 * aprender de él; distribuirlo a terceros; acceder a su código fuente y modificarlo, y combinarlo o enlazarlo con otro software,
 * todo ello de conformidad con los términos y condiciones de la LICENCIA ABIERTA AL PÚBLICO que otorga INFOTEC para la utilización
 * del SemanticWebBuilder 4.0.
 *
 * INFOTEC no otorga garantía sobre SemanticWebBuilder, de ninguna especie y naturaleza, ni implícita ni explícita,
 * siendo usted completamente responsable de la utilización que le dé y asumiendo la totalidad de los riesgos que puedan derivar
 * de la misma.
 *
 * Si usted tiene cualquier duda o comentario sobre SemanticWebBuilder, INFOTEC pone a su disposición la siguiente
 * dirección electrónica:
 *  http://www.semanticwebbuilder.org
 */
package org.semanticwb.servlet.internal;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.HashMap;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.semanticwb.Logger;
import org.semanticwb.SWBPlatform;
import org.semanticwb.SWBPortal;
import org.semanticwb.SWBUtils;

/**
 * The Class ShowFile.
 * 
 * @author carlos.ramos
 */
public class ShowFile implements InternalServlet {

    /** Realizes log operations */
    private final Logger log = SWBUtils.getLogger(ShowFile.class);
    
    /** Contains matches among file types and mime types */
    private final HashMap filesContentTypes = new HashMap();

    /**
     * 
     * @param request
     * @param response
     * @param dparams
     * @throws IOException
     * @throws ServletException 
     */
    @Override
    public void doProcess(HttpServletRequest request, HttpServletResponse response,
            DistributorParams dparams) throws IOException, ServletException {
        
        try {
            String path = request.getParameter("file");
            String pathType = request.getParameter("pathType");
            String content = "";
            String filename = path.substring(path.lastIndexOf('/') + 1);
            String fileExtension = filename.substring(filename.lastIndexOf('.') + 1);
            InputStream input = null;
            boolean isThereData = false;

            if (pathType.equals("def")) {
                if (!"/".equalsIgnoreCase(SWBPlatform.getContextPath()) &&
                        path.startsWith(SWBPlatform.getContextPath() + "/")) {
                    path = path.substring(SWBPlatform.getContextPath().length());
                }
                input = SWBPortal.getAdminFileStream(path);
                if (null != input) {
                    content = SWBUtils.IO.readInputStream(input);
                    isThereData = true;
                }
            } else if (pathType.equals("res")) {
                input = SWBPortal.getFileFromWorkPath(path);
                if (null != input) {
                    content = SWBUtils.IO.readInputStream(input);
                    isThereData = true;
                }
            } else {
                FileInputStream fileInput = new FileInputStream(path);
                content = SWBUtils.IO.readInputStream(fileInput);
                isThereData = true;
            }
            
            if (isThereData) {
                response.setContentType(fileExtension);
                response.setHeader("Content-disposition","attachment; filename=" + filename);

                PrintWriter out = response.getWriter();
                out.print(content);
            
//            out.println("");
//            out.println("");
//            out.println(" ");
//            out.println(" EditArea Test");
//            //out.println(" ");
//            out.println("");
//            out.println("");
//            out.println(" ");
//            out.println("  ");
//            out.println("  ");
//            out.println(" ");
//            out.println(" \n");
//            out.println(" \n");
            }
        } catch (Exception e) {
            e.printStackTrace(System.out);
            log.debug(e);
        }
    }

    /**
     * Initializes the servlet to be ready to use
     */
    @Override
    public void init(ServletContext config) throws ServletException {
        log.event("Initializing InternalServlet ShowFile...");
        filesContentTypes.put("html", "text/html");
        filesContentTypes.put("htm", "text/html");
        filesContentTypes.put("txt", "text/plain");
        filesContentTypes.put("bmp", "image/bmp");
        filesContentTypes.put("css", "text/css");
        filesContentTypes.put("csv", "text/csv");
        filesContentTypes.put("doc", "application/msword");
        filesContentTypes.put("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
        filesContentTypes.put("gif", "image/gif");
        filesContentTypes.put("ico", "image/x-icon");
        filesContentTypes.put("jar", "application/java-archive");
        filesContentTypes.put("jpeg", "image/jpeg");
        filesContentTypes.put("jpg", "image/jpeg");
        filesContentTypes.put("js", "application/javascript");
        filesContentTypes.put("json", "application/json");
        filesContentTypes.put("pdf", "application/pdf");
        filesContentTypes.put("ppt", "application/vnd.ms-powerpoint");
        filesContentTypes.put("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
        filesContentTypes.put("ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow");
        filesContentTypes.put("rar", "application/x-rar-compressed");
        filesContentTypes.put("xhtml", "application/xhtml+xml");
        filesContentTypes.put("xls", "application/vnd.ms-excel");
        filesContentTypes.put("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        filesContentTypes.put("xml", "application/xml");
        filesContentTypes.put("zip", "application/zip");
        filesContentTypes.put("xsl", "application/xml");
        filesContentTypes.put("xslt", "application/xml");
//        filesContentTypes.put("", "application/vnd.ms-powerpoint");
//        filesContentTypes.put("", "application/vnd.ms-project");
//        filesContentTypes.put("", "");
//        filesContentTypes.put("", "");
//        filesContentTypes.put("", "");
//        filesContentTypes.put("", "");
//        filesContentTypes.put("", "");
//        filesContentTypes.put("", "");
//        filesContentTypes.put("", "");
//        filesContentTypes.put("", "");
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy