X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=source%2Fmircoders%2Fmedia%2FMediaHandlerGeneric.java;h=c8cb19452b28f0d7e34708eefcc1c525781c4dde;hb=c505321bf98713dd46373cb657fe2e7a7d01ff76;hp=31eaff9bcfc3b256e99c2466bd79a775419472e3;hpb=432f4c6d092da6434effc53ee863d14615b51322;p=mir.git diff --git a/source/mircoders/media/MediaHandlerGeneric.java b/source/mircoders/media/MediaHandlerGeneric.java index 31eaff9b..c8cb1945 100755 --- a/source/mircoders/media/MediaHandlerGeneric.java +++ b/source/mircoders/media/MediaHandlerGeneric.java @@ -1,17 +1,50 @@ /* - * 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 java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import javax.servlet.ServletContext; -import mir.media.*; -import mir.entity.*; -import mir.misc.*; -import mir.storage.*; +import freemarker.template.SimpleList; + +import mir.config.MirPropertiesConfiguration; +import mir.config.MirPropertiesConfiguration$PropertiesConfigExc; +import mir.entity.Entity; +import mir.log.LoggerWrapper; +import mir.media.MediaExc; +import mir.media.MediaFailure; +import mir.media.MirMedia; +import mir.misc.FileUtil; +import mir.misc.StringUtil; /** @@ -30,151 +63,149 @@ import mir.storage.*; * Of course it implements the MirMedia interface. * * @see mir.media.MirMedia - * @author mh - * @version 24.09.2001 + * @author mh + * @version $Id: MediaHandlerGeneric.java,v 1.20 2003/04/29 02:36:50 zapata 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 { - + protected static MirPropertiesConfiguration configuration; + protected static String imageHost; + protected static String imageRoot; + + protected LoggerWrapper logger; + + static { + try { + configuration = MirPropertiesConfiguration.instance(); + } + catch (PropertiesConfigExc e) { + } + imageHost = configuration.getString("Producer.Image.Host"); + imageRoot = configuration.getString("Producer.ImageRoot"); + } + + public MediaHandlerGeneric() { + logger = new LoggerWrapper("Media.Generic"); + } + + public void set (InputStream in, Entity ent, Entity mediaTypeEnt ) throws MediaExc, MediaFailure { + 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() + File.separator + datePath + + File.separator + mediaFname, in); + ent.setValueForProperty("publish_path", datePath + mediaFname); + ent.setValueForProperty("size", new Long(size).toString()); + ent.update(); + } + 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 + 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!"); + throw new MediaExc("error in MirMedia.produce(): " + relPath + " does not exist!"); } - - //a method that will probably never get used.. - private byte[] getFile (String fileName) - throws MirMediaException { + public InputStream getMedia (Entity ent, Entity mediaTypeEnt) throws MediaExc, MediaFailure { + String publishPath = ent.getValue("publish_path"); + String fname = getStoragePath()+publishPath; + File f = new File(fname); + if(! f.exists()) + throw new MediaExc("error in MirMedia.getMedia(): " + fname + " does not exist!"); - long size = FileUtil.getSize(fileName); - if (size < 0) return null; + FileInputStream inputStream; + try { + inputStream = new FileInputStream(f); + } + catch (Throwable e) { + throw new MediaFailure("MediaHandlerGeneric.getMedia(): " + e.toString(), e); + } - byte[] container = new byte[(int)size]; - - try { - FileUtil.read(fileName, container); - } catch (Exception e) { - theLog.printError(e.toString()); - throw new MirMediaException(e.toString()); - } - - return container; + return inputStream; } - public byte[] get (Entity ent, Entity mediaTypeEnt) { - return null; + public InputStream getIcon (Entity ent) throws MediaExc, MediaFailure { + return null; } - public byte[] getIcon (Entity ent) { - return null; - } + public String getIconMimeType (Entity aMediaEntity, Entity aMediaType) throws MediaExc, MediaFailure { + ServletContext servletContext = MirPropertiesConfiguration.getContext(); + String fileName = aMediaEntity.getId()+"."+aMediaType.getValue("name"); + + return servletContext.getMimeType(fileName); + }; public String getStoragePath() { - return MirConfig.getProp("Producer.Media.Path"); + return configuration.getString("Producer.Media.Path"); } public String getIconStoragePath() { - return MirConfig.getProp("Producer.Image.IconPath"); + return configuration.getString("Producer.Image.IconPath"); } public String getPublishHost() { - return MirConfig.getProp("Producer.Media.Host"); + return StringUtil.removeSlash(configuration.getString("Producer.Media.Host")); } - public String getTinyIcon() + public String getTinyIconName() { - return MirConfig.getProp("Producer.Icon.TinyText"); + return configuration.getString("Producer.Icon.TinyText"); } - public String getBigIcon() + public String getBigIconName() { - return MirConfig.getProp("Producer.Icon.BigText"); + return configuration.getString("Producer.Icon.BigText"); } - public String getIconAlt() + public String getIconAltName() { - return "Generic media"; + return "Generic media"; } - public String getURL(Entity ent, Entity mediaTypeEnt) + public SimpleList getURL(Entity ent, Entity mediaTypeEnt) { - String stringSize = ent.getValue("size"); - if (stringSize == null) - return null; - int size = Integer.parseInt(stringSize, 10)/1024; - String title = ent.getValue("title")+ - " - "+mediaTypeEnt.getValue("name")+" "+ - size+" KB"; - return StringUtil.createURLLinks(ent.getValue("publish_server")+"/"+ - ent.getValue("publish_path"), title, imageRoot, getBigIcon()); - } - - public String getListView(Entity ent, Entity mediaTypeEnt) - { - //String title = ent.getValue("title")+ - // " - "+mediaTypeEnt.getValue("name")+" "+ - // ent.getValue("size")+" Bytes"; - return StringUtil.createIMGLinks(imageHost+ - getBigIcon(), null, null, null); + SimpleList theList = new SimpleList(); + theList.add(ent); + return theList; } public boolean isVideo() { - return false; + return false; } public boolean isAudio() { - return false; + return false; } public boolean isImage() { - return false; + return false; + } + + public String getDescr( Entity mediaType) + { + return mediaType.getValue("mime_type"); } } - - + +