send the proper content-type
[mir.git] / source / mircoders / servlet / ServletModuleImages.java
1 package mircoders.servlet;
2
3 import java.io.*;
4 import java.lang.*;
5 import java.sql.*;
6 import java.util.*;
7 import java.net.*;
8 import java.lang.reflect.*;
9 import javax.servlet.*;
10 import javax.servlet.http.*;
11
12 import freemarker.template.*;
13 import com.oreilly.servlet.multipart.*;
14 import com.oreilly.servlet.*;
15
16 import mir.servlet.*;
17 import mir.module.*;
18 import mir.misc.*;
19 import mir.entity.*;
20 import mir.storage.*;
21 import mir.media.*;
22
23 import mircoders.entity.*;
24 import mircoders.storage.*;
25 import mircoders.module.*;
26 import mircoders.producer.*;
27
28 /*
29  *  ServletModuleImages -
30  *  liefert HTML fuer Images
31  *
32  *
33  * @author RK
34  */
35
36 public class ServletModuleImages extends ServletModuleUploadedMedia
37 {
38
39   //private static DatabaseRights dbRights;
40
41   // Singelton / Kontruktor
42   private static ServletModuleImages instance = new ServletModuleImages();
43   public static ServletModule getInstance() { return instance; }
44
45
46   private ServletModuleImages() {
47     theLog = Logfile.getInstance(MirConfig.getProp("Home") + MirConfig.getProp("ServletModule.Images.Logfile"));
48     templateListString = MirConfig.getProp("ServletModule.Images.ListTemplate");
49     templateObjektString = MirConfig.getProp("ServletModule.Images.ObjektTemplate");
50     templateConfirmString = MirConfig.getProp("ServletModule.Images.ConfirmTemplate");
51     try {
52       mainModule = new ModuleImages(DatabaseImages.getInstance());
53       //dbRights = DatabaseRights.getInstance();
54     }
55     catch (StorageObjectException e) {
56       theLog.printDebugInfo("servletmodulebilder konnte nicht initialisiert werden");
57     }
58   }
59
60   public void showimg(HttpServletRequest req, HttpServletResponse res)
61     throws ServletModuleException
62   {
63     String idParam = req.getParameter("id");
64     if (idParam!=null && !idParam.equals("")) {
65       try {
66         EntityImages entImage =(EntityImages)mainModule.getById(idParam);
67         ServletContext ctx =
68                     (ServletContext)MirConfig.getPropAsObject("ServletContext");
69         String fName = entImage.getId()+"."
70                       +entImage.getMediaType().getValue("name");
71         res.setContentType(ctx.getMimeType(fName));
72         ServletOutputStream out = res.getOutputStream(); // wichtig, dass vorher kein res.getwriter() gelaufen ist
73
74         byte[] outbytes = entImage.getImage();
75         out.write(outbytes);
76         out.close();
77       }
78
79       catch (IOException e) {throw new ServletModuleException(e.toString());}
80       catch (ModuleException e) {throw new ServletModuleException(e.toString());}
81       catch (Exception e) {throw new ServletModuleException(e.toString());}
82     }
83     else theLog.printDebugInfo("id nicht angeben.");
84     // darf keine exception werfen
85   }
86
87   public void showicon(HttpServletRequest req, HttpServletResponse res)
88     throws ServletModuleException
89   {
90     String idParam = req.getParameter("id");
91     if (idParam!=null && !idParam.equals("")) {
92       try {
93         EntityImages entImage =(EntityImages)mainModule.getById(idParam);
94         ServletContext ctx =
95                     (ServletContext)MirConfig.getPropAsObject("ServletContext");
96         String fName = entImage.getId()+"."
97                       +entImage.getMediaType().getValue("name");
98         res.setContentType(ctx.getMimeType(fName));
99         ServletOutputStream out = res.getOutputStream(); // wichtig, dass vorher kein res.getwriter() gelaufen ist
100
101         byte[] outbytes = entImage.getIcon();
102         out.write(outbytes);
103         out.close();
104       }
105
106       catch (IOException e) {throw new ServletModuleException(e.toString());}
107       catch (ModuleException e) {throw new ServletModuleException(e.toString());}
108       catch (Exception e) {throw new ServletModuleException(e.toString());}
109     }
110     else throw new ServletModuleException("id nicht angeben.");
111   }
112 }
113