X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fmedia%2FMediaHandlerGeneric.java;h=e06098823ddce75bfa319bf0ac15848122c88f70;hb=f4cf2435e11c6566ac3908b4c96d3c4ca70c17ec;hp=e3d2124db0139b0b8f2756c9e48069be59e5c880;hpb=2b65fecebe4a2133497758cbbadae6f6de72da49;p=mir.git diff --git a/source/mircoders/media/MediaHandlerGeneric.java b/source/mircoders/media/MediaHandlerGeneric.java index e3d2124d..e0609882 100755 --- a/source/mircoders/media/MediaHandlerGeneric.java +++ b/source/mircoders/media/MediaHandlerGeneric.java @@ -1,19 +1,47 @@ /* - * put your module comment here + * Copyright (C) 2001, 2002 The Mir-coders group + * + * This file is part of Mir. + * + * Mir is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Mir is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Mir; if not, write to the Free Software + * 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 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 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 freemarker.template.SimpleList; - -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; /** @@ -29,147 +57,106 @@ 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 - * @author mh - * @version 24.09.2001 + * @see mir.media.MediaHandler + * @author mh + * @version $Id: MediaHandlerGeneric.java,v 1.20.2.10 2006/11/12 21:32:13 yossarian Exp $ */ -public class MediaHandlerGeneric implements MirMedia -{ - protected String imageHost = MirConfig.getProp("Producer.Image.Host"); - protected String imageRoot = MirConfig.getProp("Producer.ImageRoot"); - protected Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home")+ - "log/media.log"); - public boolean set (byte[] uploadedData, 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); - Integer size = new Integer(uploadedData.length); - try { - FileUtil.write(getStoragePath()+"/"+datePath+"/"+mediaFname, - uploadedData); - //were done with the data, dereference. - uploadedData=null; - - ent.setValueForProperty("publish_path",datePath+"/"+mediaFname); - ent.setValueForProperty("size", size.toString()); - ent.update(); - } catch (Exception e) { - theLog.printError(e.toString()); - throw new MirMediaException(e.toString()); - } - - return true; - } - - 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!"); - } - +public class MediaHandlerGeneric extends AbstractMediaHandler { + protected static MirPropertiesConfiguration configuration = MirPropertiesConfiguration.instance(); - //a method that will probably never get used.. - private byte[] getFile (String fileName) - throws MirMediaException { + protected LoggerWrapper logger = new LoggerWrapper("Media.Generic"); - long size = FileUtil.getSize(fileName); - if (size < 0) return null; + /** {@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); + } + } - byte[] container = new byte[(int)size]; - - try { - FileUtil.read(fileName, container); - } catch (Exception e) { - theLog.printError(e.toString()); - throw new MirMediaException(e.toString()); - } + /** {@inheritDoc} */ + public void store(InputStream anInputStream, Entity aMedia, Entity aMediaType) throws MediaExc, MediaFailure { + try { + IORoutines.copyStream(anInputStream, new FileOutputStream(getMediaStorageFile(aMedia, aMediaType))); - return container; + aMedia.setFieldValue("publish_path", getRelativeMediaStoragePath(aMedia, aMediaType)); + aMedia.setFieldValue("size", Long.toString(getMediaStorageFile(aMedia, aMediaType).length())); + aMedia.update(); + reportChange(getMediaStorageFile(aMedia, aMediaType).getAbsolutePath()); } - - public byte[] get (Entity ent, Entity mediaTypeEnt) { - return null; + catch (Throwable e) { + logger.error("MediaHandlerGeneric.set: " + e.toString()); + throw new MediaFailure(e); } + } - public byte[] getIcon (Entity ent) { - return null; + /** {@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 getStoragePath() - { - return MirConfig.getProp("Producer.Media.Path"); + /** {@inheritDoc} */ + public InputStream getMedia(Entity aMedia, Entity aMediaType) throws MediaExc, MediaFailure { + try { + return new FileInputStream(getMediaStorageFile(aMedia, aMediaType)); } - - public String getIconStoragePath() - { - return MirConfig.getProp("Producer.Image.IconPath"); + catch (Throwable e) { + throw new MediaFailure("MediaHandlerGeneric.getMedia(): " + e.toString(), e); } + } - public String getPublishHost() - { - return MirConfig.getProp("Producer.Media.Host"); - } + public InputStream getThumbnail(Entity ent) throws MediaExc, MediaFailure { + return null; + } - public String getTinyIcon() - { - return MirConfig.getProp("Producer.Icon.TinyText"); - } + public String getThumbnailMimeType(Entity aMediaEntity, Entity aMediaType) throws MediaExc, MediaFailure { + ServletContext servletContext = MirPropertiesConfiguration.getContext(); + String fileName = aMediaEntity.getId() + "." + aMediaType.getFieldValue("name"); - public String getBigIcon() - { - return MirConfig.getProp("Producer.Icon.BigText"); - } + return servletContext.getMimeType(fileName); + } - public String getIconAlt() - { - return "Generic media"; - } + public String getBaseStoragePath() { + return configuration.getString("Producer.Media.Path"); + } - public SimpleList getURL(Entity ent, Entity mediaTypeEnt) - { - SimpleList theList = new SimpleList(); - theList.add(ent); - return theList; - } + public String getBaseIconStoragePath() { + return configuration.getString("Producer.Image.IconPath"); + } - public String getListView(Entity ent, Entity mediaTypeEnt) - { - //String title = ent.getValue("title")+ - // " - "+mediaTypeEnt.getValue("name")+" "+ - // ent.getValue("size")+" Bytes"; - return getBigIcon(); - } + public String getPublishHost() { + return StringUtil.removeSlash(configuration.getString("Producer.Media.Host")); + } - public boolean isVideo() - { - return false; - } + public String getTinyIconName() { + return configuration.getString("Producer.Icon.TinyText"); + } - public boolean isAudio() - { - return false; - } + public String getBigIconName() { + return configuration.getString("Producer.Icon.BigText"); + } - public boolean isImage() - { - return false; - } + public String getIconAltName() { + return "Generic media"; + } + + public String getDescr(Entity mediaType) { + return mediaType.getFieldValue("mime_type"); + } } - - + +