Subversion Repositories bacoAlunos

Rev

Rev 1306 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.web;

import org.apache.log4j.Logger;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.OutputStream;
import java.io.InputStream;

import jomm.dao.impl.AbstractDao;
import jomm.utils.StreamsUtils;
import jomm.utils.StringsUtils;
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.domain.dao.impl.ImageDaoImpl;
import pt.estgp.estgweb.services.data.ImageManager;
import pt.estgp.estgweb.services.data.IRepositoryFile;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;

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

public class RepositoryStream 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(RepositoryStream.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 objectRequired = request.getPathInfo();
        objectRequired = objectRequired.substring(1);

        long id = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(objectRequired.trim());

        IServiceManager sm = null;
        try
        {
            sm = ServiceManager.getInstance();
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e,e);
            response.sendError(500);
            return;
        }

        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"identifier"};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{""+ id};
        try
        {
            IRepositoryFile iRepositoryFile = (IRepositoryFile) sm.execute(RequestUtils.getRequester(request, response), "LoadRepositoryFile", args, names);
            if(iRepositoryFile == null)
            {
                response.sendError(404);
                return;
            }
            response.setContentLength(iRepositoryFile.getSize());
            response.setContentType(iRepositoryFile.getContentType());
            response.setHeader("Content-disposition","inline; filename=" + iRepositoryFile.getName());
            StreamsUtils.inputStream2OutputStream(iRepositoryFile.getInput(),response.getOutputStream());
        }
        catch(FilterChainFailedException fail)
        {
            response.sendError(401);
        }
        catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e,e);
            response.sendError(500);
        }
    }

}