*/
package mircoders.media;
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Vector;
-
-import javax.servlet.ServletContext;
-
import mir.config.MirPropertiesConfiguration;
import mir.entity.Entity;
import mir.log.LoggerWrapper;
import mir.media.MediaExc;
import mir.media.MediaFailure;
-import mir.media.MediaHandler;
-import mir.misc.FileUtil;
import mir.misc.StringUtil;
+import mir.session.UploadedFile;
+import mir.util.IORoutines;
+
+import javax.servlet.ServletContext;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
/**
* <p>
* Of course it implements the MirMediaHandler interface.
*
- * @see mir.media.MirMediaHandler
+ * @see mir.media.MediaHandler
* @author mh <mh@nadir.org>
- * @version $Id: MediaHandlerGeneric.java,v 1.20.2.6 2004/01/18 17:30:58 zapata Exp $
+ * @version $Id: MediaHandlerGeneric.java,v 1.20.2.10 2006/11/12 21:32:13 yossarian Exp $
*/
-public class MediaHandlerGeneric implements MediaHandler
-{
- protected static MirPropertiesConfiguration configuration;
- protected static String imageHost;
- protected static String imageRoot;
-
- protected LoggerWrapper logger;
-
- static {
- try {
- configuration = MirPropertiesConfiguration.instance();
- }
- catch (MirPropertiesConfiguration.PropertiesConfigExc e) {
- }
- imageHost = configuration.getString("Producer.Image.Host");
- imageRoot = configuration.getString("Producer.ImageRoot");
- }
+public class MediaHandlerGeneric extends AbstractMediaHandler {
+ protected static MirPropertiesConfiguration configuration = MirPropertiesConfiguration.instance();
- public MediaHandlerGeneric() {
- logger = new LoggerWrapper("Media.Generic");
- }
+ protected LoggerWrapper logger = new LoggerWrapper("Media.Generic");
- public void store (InputStream in, Entity ent, Entity mediaTypeEnt ) throws MediaExc, MediaFailure {
- String ext = mediaTypeEnt.getFieldValue("name");
- String mediaFname = ent.getId() + "." + ext;
- String date = ent.getFieldValue("date");
- String datePath = StringUtil.webdbDate2path(date);
- try {
- long size = FileUtil.write(getStoragePath() + File.separator + datePath +
- File.separator + mediaFname, in);
- ent.setFieldValue("publish_path", datePath + mediaFname);
- ent.setFieldValue("size", new Long(size).toString());
- ent.update();
- }
- catch (Throwable e) {
- logger.error("MediaHandlerGeneric.set: " + e.toString());
- throw new MediaFailure(e);
- }
+ /** {@inheritDoc} */
+ public void store(UploadedFile anUploadedFile, Entity aMedia, Entity aMediaType) throws MediaExc, MediaFailure {
+ try {
+ anUploadedFile.writeToFile(getMediaStorageFile(aMedia, aMediaType));
+ aMedia.setFieldValue("publish_path", getRelativeMediaStoragePath(aMedia, aMediaType));
+ aMedia.setFieldValue("size", Long.toString(getMediaStorageFile(aMedia, aMediaType).length()));
+ aMedia.update();
+ reportChange(getMediaStorageFile(aMedia, aMediaType).getAbsolutePath());
}
+ catch (Throwable e) {
+ logger.error("MediaHandlerGeneric.set: " + e.toString());
+ throw new MediaFailure(e);
+ }
+ }
- public void produce (Entity ent, Entity mediaTypeEnt ) throws MediaExc, MediaFailure {
- //check first if the media file exist since produced
- //location is also the storage location
+ /** {@inheritDoc} */
+ public void store(InputStream anInputStream, Entity aMedia, Entity aMediaType) throws MediaExc, MediaFailure {
+ try {
+ IORoutines.copyStream(anInputStream, new FileOutputStream(getMediaStorageFile(aMedia, aMediaType)));
- String date = ent.getFieldValue("date");
- String datePath = StringUtil.webdbDate2path(date);
- String relPath = datePath+ent.getId()+"."+mediaTypeEnt.getFieldValue("name");
- String fname = getStoragePath()+relPath;
- if(! new File(fname).exists())
- throw new MediaExc("error in MirMediaHandler.produce(): " + relPath + " does not exist!");
+ aMedia.setFieldValue("publish_path", getRelativeMediaStoragePath(aMedia, aMediaType));
+ aMedia.setFieldValue("size", Long.toString(getMediaStorageFile(aMedia, aMediaType).length()));
+ aMedia.update();
+ reportChange(getMediaStorageFile(aMedia, aMediaType).getAbsolutePath());
+ }
+ catch (Throwable e) {
+ logger.error("MediaHandlerGeneric.set: " + e.toString());
+ throw new MediaFailure(e);
}
+ }
- public InputStream getMedia (Entity ent, Entity mediaTypeEnt) throws MediaExc, MediaFailure {
- String publishPath = ent.getFieldValue("publish_path");
- String fname = getStoragePath()+publishPath;
- File f = new File(fname);
- if(! f.exists())
- throw new MediaExc("error in MirMediaHandler.getMedia(): " + fname + " does not exist!");
-
- BufferedInputStream inputStream;
- try {
- inputStream = new BufferedInputStream(new FileInputStream(f));
- }
- catch (Throwable e) {
- throw new MediaFailure("MediaHandlerGeneric.getMedia(): " + e.toString(), e);
- }
-
- return inputStream;
+ /** {@inheritDoc} */
+ public void produce(Entity aMedia, Entity aMediaType) throws MediaExc, MediaFailure {
+ if (!getMediaStorageFile(aMedia, aMediaType).exists()) {
+ throw new MediaExc("error in producing media:: " + getMediaStorageFile(aMedia, aMediaType) + " does not exist!");
}
+ }
- public InputStream getThumbnail (Entity ent) throws MediaExc, MediaFailure {
- return null;
+ /** {@inheritDoc} */
+ public InputStream getMedia(Entity aMedia, Entity aMediaType) throws MediaExc, MediaFailure {
+ try {
+ return new FileInputStream(getMediaStorageFile(aMedia, aMediaType));
+ }
+ catch (Throwable e) {
+ throw new MediaFailure("MediaHandlerGeneric.getMedia(): " + e.toString(), e);
}
+ }
- public String getThumbnailMimeType (Entity aMediaEntity, Entity aMediaType) throws MediaExc, MediaFailure {
- ServletContext servletContext = MirPropertiesConfiguration.getContext();
- String fileName = aMediaEntity.getId()+"."+aMediaType.getFieldValue("name");
+ public InputStream getThumbnail(Entity ent) throws MediaExc, MediaFailure {
+ return null;
+ }
- return servletContext.getMimeType(fileName);
- };
+ public String getThumbnailMimeType(Entity aMediaEntity, Entity aMediaType) throws MediaExc, MediaFailure {
+ ServletContext servletContext = MirPropertiesConfiguration.getContext();
+ String fileName = aMediaEntity.getId() + "." + aMediaType.getFieldValue("name");
- public String getStoragePath()
- {
- return configuration.getString("Producer.Media.Path");
- }
+ return servletContext.getMimeType(fileName);
+ }
- public String getIconStoragePath()
- {
- return configuration.getString("Producer.Image.IconPath");
- }
+ public String getBaseStoragePath() {
+ return configuration.getString("Producer.Media.Path");
+ }
- public String getPublishHost()
- {
- return StringUtil.removeSlash(configuration.getString("Producer.Media.Host"));
- }
+ public String getBaseIconStoragePath() {
+ return configuration.getString("Producer.Image.IconPath");
+ }
- public String getTinyIconName()
- {
- return configuration.getString("Producer.Icon.TinyText");
- }
+ public String getPublishHost() {
+ return StringUtil.removeSlash(configuration.getString("Producer.Media.Host"));
+ }
- public String getBigIconName()
- {
- return configuration.getString("Producer.Icon.BigText");
- }
+ public String getTinyIconName() {
+ return configuration.getString("Producer.Icon.TinyText");
+ }
- public String getIconAltName()
- {
- return "Generic media";
- }
+ public String getBigIconName() {
+ return configuration.getString("Producer.Icon.BigText");
+ }
- public List getURL(Entity ent, Entity mediaTypeEnt)
- {
- List theList = new Vector();
- theList.add(ent);
- return theList;
- }
+ public String getIconAltName() {
+ return "Generic media";
+ }
- public String getDescr( Entity mediaType)
- {
- return mediaType.getFieldValue("mime_type");
- }
+ public String getDescr(Entity mediaType) {
+ return mediaType.getFieldValue("mime_type");
+ }
}