X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=source%2Fmircoders%2Fmedia%2FMediaHandlerGeneric.java;h=e06098823ddce75bfa319bf0ac15848122c88f70;hb=f4cf2435e11c6566ac3908b4c96d3c4ca70c17ec;hp=9e75b2564859aee56fcf53ded93822abc69b4e73;hpb=19e43122d238202f5026ae776893305bdcdafc7c;p=mir.git diff --git a/source/mircoders/media/MediaHandlerGeneric.java b/source/mircoders/media/MediaHandlerGeneric.java index 9e75b256..e0609882 100755 --- a/source/mircoders/media/MediaHandlerGeneric.java +++ b/source/mircoders/media/MediaHandlerGeneric.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001, 2002 The Mir-coders group + * Copyright (C) 2001, 2002 The Mir-coders group * * This file is part of Mir. * @@ -18,28 +18,30 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, The Mir-coders gives permission to link - * the code of this program with the com.oreilly.servlet library, any library - * licensed under the Apache Software License, The Sun (tm) Java Advanced - * Imaging library (JAI), The Sun JIMI library (or with modified versions of - * the above that use the same license as the above), and distribute linked - * combinations including the two. You must obey the GNU General Public - * License in all respects for all of the code used other than the above - * mentioned libraries. If you modify this file, you may extend this exception - * to your version of the file, but you are not obligated to do so. If you do - * not wish to do so, delete this exception statement from your version. + * the code of this program with any library licensed under the Apache Software License, + * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library + * (or with modified versions of the above that use the same license as the above), + * and distribute linked combinations including the two. You must obey the + * GNU General Public License in all respects for all of the code used other than + * the above mentioned libraries. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. + * If you do not wish to do so, delete this exception statement from your version. */ - package mircoders.media; -import java.util.*; -import java.io.*; - -import freemarker.template.SimpleList; +import mir.config.MirPropertiesConfiguration; +import mir.entity.Entity; +import mir.log.LoggerWrapper; +import mir.media.MediaExc; +import mir.media.MediaFailure; +import mir.misc.StringUtil; +import mir.session.UploadedFile; +import mir.util.IORoutines; -import mir.media.*; -import mir.entity.*; -import mir.misc.*; -import mir.storage.*; +import javax.servlet.ServletContext; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStream; /** @@ -55,133 +57,104 @@ import mir.storage.*; * we don't have entered in the media_type table, (like RTF documents, * PS, PDF, etc..) *

- * Of course it implements the MirMedia interface. + * Of course it implements the MirMediaHandler interface. * - * @see mir.media.MirMedia + * @see mir.media.MediaHandler * @author mh - * @version $Id: MediaHandlerGeneric.java,v 1.10 2002/11/04 04:35:22 mh Exp $ + * @version $Id: MediaHandlerGeneric.java,v 1.20.2.10 2006/11/12 21:32:13 yossarian Exp $ */ -public class MediaHandlerGeneric implements MirMedia -{ - protected static String imageHost = MirConfig.getProp("Producer.Image.Host"); - protected static String imageRoot = MirConfig.getProp("Producer.ImageRoot"); - protected static Logfile theLog = Logfile.getInstance( - MirConfig.getProp("Home")+ - "log/media.log"); - private final String sepChar = File.separator; - - public void set (InputStream in, Entity ent, Entity mediaTypeEnt ) - throws MirMediaException { - - String ext = mediaTypeEnt.getValue("name"); - String mediaFname = ent.getId()+"."+ext; - String date = ent.getValue("date"); - String datePath = StringUtil.webdbDate2path(date); - try { - long size = FileUtil.write(getStoragePath()+sepChar+datePath+ - sepChar+mediaFname, in); - ent.setValueForProperty("publish_path",datePath+sepChar+mediaFname); - ent.setValueForProperty("size", new Long(size).toString()); - ent.update(); - } catch (Exception e) { - theLog.printError(e.toString()); - throw new MirMediaException(e.toString()); - } +public class MediaHandlerGeneric extends AbstractMediaHandler { + protected static MirPropertiesConfiguration configuration = MirPropertiesConfiguration.instance(); - } + protected LoggerWrapper logger = new LoggerWrapper("Media.Generic"); - public void produce (Entity ent, Entity mediaTypeEnt ) - throws MirMediaException { - - //check first if the media file exist since produced - //location is also the storage location - String date = ent.getValue("date"); - String datePath = StringUtil.webdbDate2path(date); - String relPath = datePath+ent.getId()+"."+mediaTypeEnt.getValue("name"); - String fname = getStoragePath()+relPath; - if(! new File(fname).exists()) - throw new MirMediaException("error in MirMedia.produce(): "+relPath+ - " does not exist!"); + /** {@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()); } - - public InputStream getMedia (Entity ent, Entity mediaTypeEnt) - throws MirMediaException { - String publishPath = mediaTypeEnt.getValue("publish_path"); - String fname = getStoragePath()+publishPath; - File f = new File(fname); - if(! f.exists()) - throw new MirMediaException("error in MirMedia.getMedia(): "+fname+ - "does not exist!"); - FileInputStream in; - try { - in = new FileInputStream(f); - } catch (IOException e) { - throw new MirMediaException("getMedia(): "+e.toString()); - } - return in; + catch (Throwable e) { + logger.error("MediaHandlerGeneric.set: " + e.toString()); + throw new MediaFailure(e); } + } - public InputStream getIcon (Entity ent) { - return null; - } + /** {@inheritDoc} */ + public void store(InputStream anInputStream, Entity aMedia, Entity aMediaType) throws MediaExc, MediaFailure { + try { + IORoutines.copyStream(anInputStream, new FileOutputStream(getMediaStorageFile(aMedia, aMediaType))); - public String getStoragePath() - { - return MirConfig.getProp("Producer.Media.Path"); + aMedia.setFieldValue("publish_path", getRelativeMediaStoragePath(aMedia, aMediaType)); + aMedia.setFieldValue("size", Long.toString(getMediaStorageFile(aMedia, aMediaType).length())); + aMedia.update(); + reportChange(getMediaStorageFile(aMedia, aMediaType).getAbsolutePath()); } - - public String getIconStoragePath() - { - return MirConfig.getProp("Producer.Image.IconPath"); + catch (Throwable e) { + logger.error("MediaHandlerGeneric.set: " + e.toString()); + throw new MediaFailure(e); } + } - public String getPublishHost() - { - return MirConfig.getProp("Producer.Media.Host"); + /** {@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 String getTinyIconName() - { - return MirConfig.getProp("Producer.Icon.TinyText"); + /** {@inheritDoc} */ + public InputStream getMedia(Entity aMedia, Entity aMediaType) throws MediaExc, MediaFailure { + try { + return new FileInputStream(getMediaStorageFile(aMedia, aMediaType)); } - - public String getBigIconName() - { - return MirConfig.getProp("Producer.Icon.BigText"); + catch (Throwable e) { + throw new MediaFailure("MediaHandlerGeneric.getMedia(): " + e.toString(), e); } + } - public String getIconAltName() - { - return "Generic media"; - } + public InputStream getThumbnail(Entity ent) throws MediaExc, MediaFailure { + return null; + } - public SimpleList getURL(Entity ent, Entity mediaTypeEnt) - { - SimpleList theList = new SimpleList(); - theList.add(ent); - return theList; - } + public String getThumbnailMimeType(Entity aMediaEntity, Entity aMediaType) throws MediaExc, MediaFailure { + ServletContext servletContext = MirPropertiesConfiguration.getContext(); + String fileName = aMediaEntity.getId() + "." + aMediaType.getFieldValue("name"); - public boolean isVideo() - { - return false; - } + return servletContext.getMimeType(fileName); + } - public boolean isAudio() - { - return false; - } + public String getBaseStoragePath() { + return configuration.getString("Producer.Media.Path"); + } - public boolean isImage() - { - return false; - } + public String getBaseIconStoragePath() { + return configuration.getString("Producer.Image.IconPath"); + } - public String getDescr( Entity mediaType) - { - return mediaType.getValue("mime_type"); - } + public String getPublishHost() { + return StringUtil.removeSlash(configuration.getString("Producer.Media.Host")); + } + + public String getTinyIconName() { + return configuration.getString("Producer.Icon.TinyText"); + } + + public String getBigIconName() { + return configuration.getString("Producer.Icon.BigText"); + } + + public String getIconAltName() { + return "Generic media"; + } + + public String getDescr(Entity mediaType) { + return mediaType.getFieldValue("mime_type"); + } }