Subversion Repositories bacoAlunos

Rev

Rev 1306 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.web;

import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.ImageImpl;
import pt.estgp.estgweb.domain.dao.impl.ImageDaoImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.data.ImageManager;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import jomm.dao.impl.AbstractDao;
import jomm.utils.StreamsUtils;
import org.apache.log4j.Logger;

/**
 * @author Fabio
 * @date 4/Abr/2008
 * @time 11:03:00
 * @see pt.estgp.estgweb.web
 */

public class ImageStream extends HttpServlet
{

    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(ImageStream.class);


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, 1.5.0/docs/api/java/io/IOException.html">IOException
    {

        1.5.0/docs/api/java/lang/String.html">String imageRequarired = request.getPathInfo();
        imageRequarired = imageRequarired.substring(1);

        long id = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(imageRequarired.trim());
        AbstractDao.getCurrentSession().beginTransaction();
        ImageImpl image = (ImageImpl) DaoFactory.getImageDaoImpl().get(id);
        try
        {
            response.setContentType(image.getContentType());
            5+0%2Fdocs%2Fapi+OutputStream">OutputStream out = response.getOutputStream();
            byte[] imagemStream = image.getImage();

            if (imagemStream == null)
            {
                5+0%2Fdocs%2Fapi+InputStream">InputStream stream = ImageManager.load(image);
                response.setContentLength(image.getSize());
                StreamsUtils.inputStream2OutputStream(stream,out);
            }
            else
            {  
                response.setContentLength(imagemStream.length);
                out.write(imagemStream);
            }
            out.flush();
            out.close();

        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e1)
        {
            logger.error(e1 );
            response.sendError(404);
        }

        AbstractDao.getCurrentSession().getTransaction().commit();
    }

}