/*
- * Copyright (C) 2001, 2002 The Mir-coders group
+ * Copyright (C) 2001, 2002 The Mir-coders group
*
* This file is part of Mir.
*
* 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 mir.media;
-import java.util.*;
-
-import freemarker.template.SimpleList;
-
-import mir.entity.*;
+import java.io.InputStream;\r
+import java.util.List;\r
+\r
+import mir.entity.Entity;
/**
* Interface for Media handling in Mir. All media handlers
* must implement this interface. Each specific media type,
* be it Gif, Jpeg, Mp3 audio, Real Audio or quicktime video
* has special needs when it comes to representation on the various
- * pages (article, list, summary), must be stored differently and has a
- * different URL, etc... This interface allows Mir to support
+ * pages (article, list, summary), must be stored differently and has a
+ * different URL, etc... This interface allows Mir to support
* an infinite (I hope) number of media types. Once this is done,
* no code at any other level in Mir needs to be changed other than
* adding the content-type <-> media handler name mapping in the
* <p>
* The "name" field is used for various display/filenaming purposes. it should
* match a valid file extension name for a media_type (we could have used the
- * content-type map for this....).
+ * content-type map for this....).
* <p>
* The "mime_type" field is the most important as it does maps the type to Java
* classes (the storage and media_handler name). We call those classes using
* <p>
* Most media handlers should just extend MediaHandlerGeneric (i.e inherit from
* ) and just override the things that need to be specific. see MediaHandlerAudio
- *
- * @author mh <heckmann@hbe.ca>
- * @version 24.09.2001
+ *
+ * @author <mh@nadir.org>, the Mir-coders group
+ * @version $Id: MirMedia.java,v 1.18.2.1 2003/09/03 17:49:38 zapata Exp $
*/
public interface MirMedia{
* all the info for the specific media type itself. It's job is store the
* Media data (content) itself, this could be on the local filesystem, in the
* DB or even on a remote host. It then inserts the MetaData in the DB.
- * @param uploadedData, a byte array containing the uploaded data.
+ * @param InputStream, a stream of the uploaded data.
* @param ent, an Entity holding the media MetaData
* @param mediaType, an Entity holding the media_table entry
* @return boolean, success/fail
* @see mir.entity.Entity
*/
- public abstract boolean set (byte[] uploadedData, Entity ent,
- Entity mediaTypeEnt ) throws MirMediaException;
+ public abstract void set (InputStream in, Entity ent, Entity mediaTypeEnt ) throws MediaExc, MediaFailure;
- public abstract void produce (Entity ent, Entity mediaTypeEnt )
- throws MirMediaException;
+ public abstract void produce (Entity ent, Entity mediaTypeEnt ) throws MediaExc, MediaFailure;
/**
- * Get's the media data from storage and returns it as a byte array
+ * Get's the media data from storage and returns it as an InputStream
* Not very useful for most media types as they are stored in a file,
* but very usefull for ones stored in the DB as it is necessary to get
* it first before making a file out of it (in Producer*).
* @param ent, an Entity holding the media MetaData
* @param mediaType, an Entity holding the media_table entry
- * @return byte[]
+ * @return java.io.InputStream
* @see mir.entity.Entity
*/
- public abstract byte[] get (Entity ent, Entity mediaTypeEnt)
- throws MirMediaException;
+ public abstract InputStream getMedia (Entity ent, Entity mediaTypeEnt) throws MediaExc, MediaFailure;
/**
* Pretty much like get() above. But get's the specific Icon
* representation. useful for media stored in the DB.
* @param ent, an Entity holding the media MetaData
- * @return byte[]
+ * @return java.io.InputStream
* @see mir.entity.Entity
*/
- public abstract byte[] getIcon (Entity ent) throws MirMediaException;
+ public abstract InputStream getIcon (Entity ent) throws MediaExc, MediaFailure;
+
+
+ /**
+ *
+ * @param ent
+ * @return
+ * @throws MediaExc
+ * @throws MediaFailure
+ */
+ public abstract String getIconMimeType (Entity aMediaEntity, Entity aMediaType) throws MediaExc, MediaFailure;
- /**
+ /**
* gets the final content representation for the media
- * in the form of a URL (String) that allows someone to
+ * in the form of a URL (String) that allows someone to
* download, look at or listen to the media. (HREF, img src
* streaming link, etc..)
* It should use the helper functions in the StringUtil class to
* @see mir.entity.Entity
* @see mir.misc.StringUtil
*/
- public abstract SimpleList getURL (Entity ent, Entity mediaTypeEnt)
- throws MirMediaException;
+ public abstract List getURL (Entity ent, Entity mediaTypeEnt) throws MediaExc, MediaFailure;
- /**
+ /**
* Returns the absolute filesystem path to where the media
* content should be stored. This path is usually defined
* in the configuration wich is accessible through the MirConfig
* @return String, the path.
* @see mir.misc.MirConfig
*/
- public abstract String getStoragePath () throws MirMediaException;
+ public abstract String getStoragePath () throws MediaExc, MediaFailure;
- /**
+ /**
* Returns the *relative* filesystem path to where the media
* icon content should be stored. It is relative to the path
* returned by getStoragePath()
* @return String, the path.
* @see mir.misc.MirConfig
*/
- public abstract String getIconStoragePath () throws MirMediaException;
+ public abstract String getIconStoragePath () throws MediaExc, MediaFailure;
- /**
+ /**
* Returns the base URL to that the media is accessible from
* to the end user. This could be a URL to another host.
* This is used in the Metadata stored in the DB and later on
* @return String, the base URL to the host.
* @see mir.misc.MirConfig
*/
- public abstract String getPublishHost () throws MirMediaException;
+ public abstract String getPublishHost () throws MediaExc, MediaFailure;
- /**
+ /**
* Returns the file name of the Icon representing the media type.
* It is used in the summary view.
* It is usually defined
* @return String, the icon filename.
* @see mir.misc.MirConfig
*/
- public abstract String getBigIcon ();
-
- /**
- * Returns the file name of the small Icon representing
+ public abstract String getBigIconName ();
+
+ /**
+ * Returns the file name of the small Icon representing
* the media type.
* It is used in the right hand newswire list of the startpage.
* It is usually defined
* @return String, the icon filename.
* @see mir.misc.MirConfig
*/
- public abstract String getTinyIcon ();
+ public abstract String getTinyIconName ();
- /**
+ /**
* Returns the IMG SRC "ALT" text to be used
* for the Icon representations
* @return String, the ALT text.
*/
- public abstract String getIconAlt ();
+ public abstract String getIconAltName ();
- /**
+ /**
* your can all figure it out.
* @return boolean.
*/
public abstract boolean isVideo ();
- /**
+ /**
* you can all figure it out.
* @return boolean.
*/
public abstract boolean isAudio ();
- /**
+ /**
* you can all figure it out.
* @return boolean.
*/