X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fmedia%2FMediaHandlerImages.java;h=68073e300ef04fc2b9911048a48b8fd34415e630;hb=1ba06c565ec314b8e189a25e7aead8b3a4ce3ad5;hp=a49f351c9b10ea2756f79bb868daa48c890da09b;hpb=d6931e16f79f3a98c735e6d49ac689d0d49f9477;p=mir.git diff --git a/source/mircoders/media/MediaHandlerImages.java b/source/mircoders/media/MediaHandlerImages.java index a49f351c..68073e30 100755 --- a/source/mircoders/media/MediaHandlerImages.java +++ b/source/mircoders/media/MediaHandlerImages.java @@ -1,18 +1,51 @@ +/* + * 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 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. + */ -package mircoders.media; - -import java.lang.*; -import java.io.*; -import java.util.*; -import java.lang.reflect.*; -import freemarker.template.SimpleList; +package mircoders.media; -import mir.media.*; -import mir.misc.*; -import mir.entity.*; -import mir.storage.StorageObjectException; +import java.io.File; +import java.io.InputStream; + +import mir.config.MirPropertiesConfiguration; +import mir.config.MirPropertiesConfiguration.PropertiesConfigExc; +import mir.entity.Entity; +import mir.log.LoggerWrapper; +import mir.media.MirMedia; +import mir.media.MirMediaException; +import mir.misc.FileUtil; +import mir.misc.StringUtil; +import mir.storage.StorageObjectFailure; import mircoders.entity.EntityImages; +import freemarker.template.SimpleList; /** * This class handles saving, fetching creating representations @@ -28,44 +61,60 @@ import mircoders.entity.EntityImages; * * @see mir.media.MirMedia * @author mh - * @version 24.09.2001 + * @version $Id: MediaHandlerImages.java,v 1.19 2003/03/05 19:23:16 idfx Exp $ */ -public class MediaHandlerImages implements MirMedia +public abstract class MediaHandlerImages implements MirMedia { - private Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home")+ - "log/media.log"); + protected static MirPropertiesConfiguration configuration; + protected static final String PNG = "PNG"; + protected static final String JPEG = "JPEG"; - public byte[] get(Entity ent, Entity mediaTypeEnt) - throws MirMediaException - { - byte[] image_data = null; + protected LoggerWrapper logger; + static { try { - image_data = ((EntityImages)ent).getImage(); - } catch ( StorageObjectException e) { - theLog.printDebugInfo("MediaHandlerImages.get: "+e.toString()); + configuration = MirPropertiesConfiguration.instance(); + } + catch (PropertiesConfigExc e) { + throw new RuntimeException("Can't get configuration: " + e.getMessage()); + } + } + + abstract String getType(); + + public MediaHandlerImages() { + logger = new LoggerWrapper("Media.Images"); + } + + public InputStream getMedia(Entity ent, Entity mediaTypeEnt) + throws MirMediaException + { + InputStream in; + try { + in = ((EntityImages)ent).getImage(); + } + catch ( StorageObjectFailure e) { + logger.error("MediaHandlerImages.getImage: "+e.toString()); throw new MirMediaException(e.toString()); } - return image_data; + return in; } - public boolean set(byte[] uploadData, Entity ent, Entity mediaTypeEnt) + public void set(InputStream in, Entity ent, Entity mediaTypeEnt) throws MirMediaException { try { - ((EntityImages)ent).setImage(uploadData); - } catch ( StorageObjectException e) { - theLog.printError("MediaHandlerImages.set: "+e.toString()); - throw new MirMediaException(e.toString()); + ((EntityImages)ent).setImage(in, getType()); } - //deref. -mh - uploadData=null; - - return true; - } + catch ( StorageObjectFailure e) { + logger.error("MediaHandlerImages.set: "+e.getMessage()); + e.printStackTrace(logger.asPrintWriter(LoggerWrapper.DEBUG_MESSAGE)); + throw new MirMediaException(e.getMessage()); + } + } public void produce(Entity ent, Entity mediaTypeEnt) throws MirMediaException { @@ -73,49 +122,47 @@ public class MediaHandlerImages implements MirMedia String datePath = StringUtil.webdbDate2path(date); String ext = "."+mediaTypeEnt.getValue("name"); String filepath = datePath+ent.getId()+ext; - String iconFilePath = MirConfig.getProp("Producer.StorageRoot") + String iconFilePath = configuration.getString("Producer.StorageRoot") +getIconStoragePath() + filepath; - String productionFilePath = getStoragePath() + "/" + filepath; + String productionFilePath = getStoragePath() + File.separator + filepath; if (ent.getValue("icon_data")!= null && ent.getValue("image_data")!= null) { // make icon try { - FileUtil.write(iconFilePath,((EntityImages)ent).getIcon()); - FileUtil.write(productionFilePath,((EntityImages)ent).getImage()); + InputStream in = ((EntityImages)ent).getIcon(); + FileUtil.write(iconFilePath, in); + in = ((EntityImages)ent).getImage(); + FileUtil.write(productionFilePath, in); ent.setValueForProperty("icon_path",getIconStoragePath()+filepath); ent.setValueForProperty("publish_path",filepath); - //ent.setValueForProperty("publish_server", getPublishHost()); - //ent.setValueForProperty("icon_is_produced","1"); - //ent.setValueForProperty("is_produced","1"); ent.update(); - } catch ( Exception e) { - String msg = "MediaHandlerImages.produce - Error: " + e.toString(); - theLog.printError(msg); - throw new MirMediaException(msg); } - } else { - String msg="MediaHandlerImages.produce - missing image or icon OID for: "+ - ent.getId(); - theLog.printError(msg); - throw new MirMediaException(msg); + catch (Throwable e) { + logger.error("MediaHandlerImages.produce: " + e.toString()); + throw new MirMediaException("MediaHandlerImages.produce: " + e.toString()); + } + } + else { + logger.error("MediaHandlerImages.produce: missing image or icon OID for: " + ent.getId()); + throw new MirMediaException("MediaHandlerImages.produce: missing image or icon OID for: " + ent.getId()); } } - - public byte[] getIcon(Entity ent) throws MirMediaException - { - byte[] icon_data = null; + public InputStream getIcon(Entity ent) throws MirMediaException + { + InputStream in; try { - icon_data = ((EntityImages)ent).getIcon(); - } catch ( StorageObjectException e) { - theLog.printDebugInfo("MediaHandlerImages.getIcon: "+e.toString()); + in = ((EntityImages)ent).getIcon(); + } + catch (Throwable e) { + logger.error("MediaHandlerImages.getIcon: " + e.toString()); throw new MirMediaException(e.toString()); } - return icon_data; + return in; } public SimpleList getURL(Entity ent, Entity mediaTypeEnt) @@ -127,52 +174,52 @@ public class MediaHandlerImages implements MirMedia public String getStoragePath() { - return MirConfig.getProp("Producer.Image.Path"); + return configuration.getString("Producer.Image.Path"); } public String getIconStoragePath() { - return MirConfig.getProp("Producer.Image.IconPath"); + return configuration.getString("Producer.Image.IconPath"); } public String getPublishHost() { - return MirConfig.getProp("Producer.Image.Host"); + return StringUtil.removeSlash(configuration.getString("Producer.Image.Host")); } - public String getTinyIcon () + public String getTinyIconName() { - return MirConfig.getProp("Producer.Icon.TinyImage"); - } + return configuration.getString("Producer.Icon.TinyImage"); + } - public String getBigIcon () + public String getBigIconName() { - return MirConfig.getProp("Producer.Icon.BigImage"); - } + return configuration.getString("Producer.Icon.BigImage"); + } - public String getIconAlt () + public String getIconAltName() { return "Image"; - } + } - public boolean isVideo () + public boolean isVideo() { return false; - } + } - public boolean isAudio () + public boolean isAudio() { return false; - } + } public boolean isImage () { return true; - } + } - public String getDescr() + public String getDescr(Entity mediaType) { - return ""; + return "image/jpeg"; } }