first cut of merge of STABLE-pre1_0 into HEAD. I won't even guarantee that it
[mir.git] / source / mircoders / media / MediaHandlerRealVideo.java
1 /*
2  * put your module comment here
3  */
4
5
6 package  mircoders.media;
7
8 import java.util.*;
9
10 import mir.media.*;
11 import mir.entity.*;
12 import mir.misc.*;
13 import mir.storage.*;
14
15
16
17 /**
18  * Handles real video.  like MediaHandlerAudio, except it manages the ram file, too.  
19  *
20  * @see mir.media.MediaHandlerGeneric
21  * @see mir.media.MirMedia
22  * @author john <john@manifestor.org>
23  * @version 11.10.2001
24  */
25
26
27 public class MediaHandlerRealVideo extends MediaHandlerGeneric implements MirMedia
28 {
29
30     private String imageHost = MirConfig.getProp("Producer.Image.Host");
31     private static String imageRoot = MirConfig.getProp("Producer.ImageRoot");
32     private Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home")+"log/media.log");
33
34     public boolean set (byte[] uploadedData, Entity ent, Entity mediaTypeEnt )
35         throws MirMediaException {
36
37         String ext = mediaTypeEnt.getValue("name");
38         String dir = MirConfig.getProp("Producer.Media.Path");
39         String rtspDir = MirConfig.getProp("Producer.RealMedia.Path");
40         String mediaHost = MirConfig.getProp("Producer.Media.Host");
41         String rtspMediaHost = MirConfig.getProp("Producer.RealMedia.Host");
42
43         String mediaFname = ent.getId()+"."+ext;
44         String RealMediaPointer = rtspMediaHost+mediaFname;
45         String RealMediaFile = ent.getId()+".ram";
46         String date = ent.getValue("date");
47         String datePath = StringUtil.webdbDate2path(date);
48         Integer size = new Integer(uploadedData.length);
49         try {
50             FileUtil.write(dir+"/"+datePath+"/"+mediaFname, uploadedData);
51             //FileUtil.write(rtspDir+"/"+mediaFname, uploadedData);
52             //were done with the data, dereference.
53             uploadedData=null;
54                 
55             //write an rm file
56             FileUtil.write(dir+"/"+RealMediaFile,RealMediaPointer.getBytes());
57             ent.setValueForProperty("is_produced", "1");
58             ent.setValueForProperty("icon_is_produced", "1");
59             ent.setValueForProperty("publish_path",datePath+"/"+mediaFname);
60             //ent.setValueForProperty("publish_path", RealMediaFile);
61             ent.setValueForProperty("publish_server", mediaHost);
62             ent.setValueForProperty("size", size.toString());
63             ent.update();
64         } catch (Exception e) {
65             theLog.printError(e.toString());
66             throw new MirMediaException(e.toString());
67         }
68
69         return true;
70     }
71
72
73
74
75
76     public String getPublishHost()
77     {
78         return MirConfig.getProp("Producer.Media.Host");
79     }
80
81
82
83     public String getURL(Entity ent, Entity mediaTypeEnt)
84     {
85       int size = Integer.parseInt(ent.getValue("size"), 10)/1024;
86       String title = ent.getValue("title")+
87         " - "+mediaTypeEnt.getValue("name")+" "+
88         size+" KB";
89       return StringUtil.createURLLinks(ent.getValue("publish_server")+"/"+
90         ent.getValue("publish_path"), title, imageRoot, getBigIcon());
91     }
92
93    
94     private static String tinyIcon = MirConfig.getProp("Producer.Icon.TinyVideo");
95     private static String bigIcon = MirConfig.getProp("Producer.Icon.BigVideo");
96
97     public String getTinyIcon()
98     {
99         return tinyIcon;
100     }
101
102     public String getBigIcon()
103     {
104         return bigIcon;
105     }
106
107     public String getIconAlt()
108     {
109         return "Video";
110     }
111
112     public boolean isVideo()
113     {
114         return true;
115     }
116
117 }
118         
119         
120