Package com.evasion.listener

Source Code of com.evasion.listener.ExtFileListener

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.evasion.listener;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.activation.MimetypesFileTypeMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
*
* @author sebastien.glon
*/
public class ExtFileListener extends HttpServlet {

    /**
     * Logger.
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(
            ExtFileListener.class.getName());
    /**
     * Cle du parametre de contexte.
     */
    public static final String SERVLET_PARAM = "com.evasion.EXTERNAL_DIRECTORY";

    /**
     *  Récupère le fichier demandé dans le répertoire externe de l'application.
     * @param request requete utilisateur;
     * @param response reponse renvoye à l'utilisateur avec le fichier demande;
     * @throws ServletException Exception d'execussion de la servlet;
     * @throws IOException Exception sur les fichiers;
     */
    protected void processRequest(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException {
        // Recuperation du chemin du fichier a afficher
        final String url = request.getPathInfo();
        // Récupération de l'url du répertoire externe
        final String externePath = getServletContext().getInitParameter(
                SERVLET_PARAM);
        // Test d'existence du répertoire externe
        File externDirectory = new File(externePath);
        if (!externDirectory.exists()) {
            throw new ServletException("Répertoire externe innexistent");
        }
        File file = new File(externDirectory, url);
        // Test d'existence du fichier
        if (!file.exists()) {
            throw new ServletException("Fichier demandé introuvable : " + file.getName());
        }

        response.setContentType(new MimetypesFileTypeMap().getContentType(
                file));
        FileInputStream in = null;
        OutputStream out = null;
        try {
            in = new FileInputStream(file);
            out = response.getOutputStream();
            final int BUFFER_SIZE = 1024;
            final byte[] buffer = new byte[BUFFER_SIZE];
            int n = 0;
            while (-1 != ( n = in.read(buffer) )) {
                out.write(buffer, 0, n);
            }
            in.close();
            out.close();

        }
        catch (IOException ex) {
            LOGGER.error("Can not open Input ou Output strem", ex);
            IOUtils.closeQuietly(in);
            IOUtils.closeQuietly(out);

        }
    }

    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
}
TOP

Related Classes of com.evasion.listener.ExtFileListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.