Subversion Repositories bacoAlunos

Rev

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

Rev Author Line No. Line
204 jmachado 1
package pt.estgp.estgweb.web;
2
 
3
import org.apache.log4j.Logger;
4
 
5
import javax.servlet.http.HttpServlet;
6
import javax.servlet.http.HttpServletRequest;
7
import javax.servlet.http.HttpServletResponse;
8
import javax.servlet.ServletException;
9
import java.io.IOException;
10
import java.io.OutputStream;
11
import java.io.InputStream;
12
 
13
import jomm.dao.impl.AbstractDao;
14
import jomm.utils.StreamsUtils;
355 jmachado 15
import jomm.utils.StringsUtils;
204 jmachado 16
import pt.estgp.estgweb.domain.Image;
17
import pt.estgp.estgweb.domain.views.CourseUnitView;
18
import pt.estgp.estgweb.domain.dao.impl.ImageDaoImpl;
19
import pt.estgp.estgweb.services.data.ImageManager;
20
import pt.estgp.estgweb.services.data.IRepositoryFile;
21
import pt.estgp.estgweb.web.utils.RequestUtils;
22
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
23
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
24
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
25
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
26
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
27
 
28
/**
29
 * @author Fabio
30
 * @date 4/Abr/2008
31
 * @time 11:03:00
32
 * @see pt.estgp.estgweb.web
33
 */
34
public class RepositoryStream extends HttpServlet
35
{
36
 
37
    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);
38
 
39
 
40
    public void doGet(HttpServletRequest request, HttpServletResponse response)
41
            throws ServletException, 1.5.0/docs/api/java/io/IOException.html">IOException
42
    {
43
 
44
        1.5.0/docs/api/java/lang/String.html">String objectRequired = request.getPathInfo();
45
        objectRequired = objectRequired.substring(1);
46
 
47
        long id = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(objectRequired.trim());
48
 
49
        IServiceManager sm = null;
50
        try
51
        {
52
            sm = ServiceManager.getInstance();
53
        }
54
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
55
        {
56
            logger.error(e,e);
57
            response.sendError(500);
58
            return;
59
        }
60
 
61
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"identifier"};
62
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{""+ id};
63
        try
64
        {
65
            IRepositoryFile iRepositoryFile = (IRepositoryFile) sm.execute(RequestUtils.getRequester(request, response), "LoadRepositoryFile", args, names);
66
            if(iRepositoryFile == null)
67
            {
68
                response.sendError(404);
69
                return;
70
            }
71
            response.setContentLength(iRepositoryFile.getSize());
72
            response.setContentType(iRepositoryFile.getContentType());
357 jmachado 73
            response.setHeader("Content-disposition","inline; filename=" + iRepositoryFile.getName());
204 jmachado 74
            StreamsUtils.inputStream2OutputStream(iRepositoryFile.getInput(),response.getOutputStream());
75
        }
76
        catch(FilterChainFailedException fail)
77
        {
78
            response.sendError(401);
79
        }
80
        catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
81
        {
82
            logger.error(e,e);
83
            response.sendError(500);
84
        }
85
    }
86
 
87
}