X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fmedia%2FMediaHandlerGeneric.java;h=f0402e725379d7663282f36f8f4d9f4a98a650dd;hb=627becfe22637207a6a13f0538cb67bbe96704f4;hp=31eaff9bcfc3b256e99c2466bd79a775419472e3;hpb=432f4c6d092da6434effc53ee863d14615b51322;p=mir.git diff --git a/source/mircoders/media/MediaHandlerGeneric.java b/source/mircoders/media/MediaHandlerGeneric.java index 31eaff9b..f0402e72 100755 --- a/source/mircoders/media/MediaHandlerGeneric.java +++ b/source/mircoders/media/MediaHandlerGeneric.java @@ -1,13 +1,41 @@ /* - * 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 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.util.*; import java.io.*; +import freemarker.template.SimpleList; + import mir.media.*; import mir.entity.*; import mir.misc.*; @@ -36,33 +64,28 @@ import mir.storage.*; 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")+ + 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"); - public boolean set (byte[] uploadedData, Entity ent, Entity mediaTypeEnt ) + 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); - Integer size = new Integer(uploadedData.length); try { - FileUtil.write(getStoragePath()+"/"+datePath+"/"+mediaFname, - uploadedData); - //were done with the data, dereference. - uploadedData=null; - + long size = FileUtil.write(getStoragePath()+"/"+datePath+"/"+ + mediaFname, in); ent.setValueForProperty("publish_path",datePath+"/"+mediaFname); - ent.setValueForProperty("size", size.toString()); + ent.setValueForProperty("size", new Long(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 ) @@ -80,30 +103,24 @@ public class MediaHandlerGeneric implements MirMedia } - //a method that will probably never get used.. - private byte[] getFile (String fileName) - throws MirMediaException { - - long size = FileUtil.getSize(fileName); - if (size < 0) return null; - - 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; - } - - public byte[] get (Entity ent, Entity mediaTypeEnt) { - return null; + 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; } - public byte[] getIcon (Entity ent) { + public InputStream getIcon (Entity ent) { return null; } @@ -122,56 +139,46 @@ public class MediaHandlerGeneric implements MirMedia return MirConfig.getProp("Producer.Media.Host"); } - public String getTinyIcon() + public String getTinyIconName() { return MirConfig.getProp("Producer.Icon.TinyText"); } - public String getBigIcon() + public String getBigIconName() { return MirConfig.getProp("Producer.Icon.BigText"); } - public String getIconAlt() + public String getIconAltName() { 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"); } }