/* Media.java
Purpose:
Description:
History:
Wed Feb 26 13:29:14 2003, Created by tomyeh
Copyright (C) 2002 Potix Corporation. All Rights Reserved.
{{IS_RIGHT
This program is distributed under LGPL Version 2.1 in the hope that
it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.util.media;
import java.io.Reader;
import java.io.InputStream;
/**
* Represents any multi-media, such as a voice, a pdf file, an excel file,
* an image and so on.
*
* <p>By implementing this interface, objects can be processed generically
* by servlets and many other codes.
*
* @author tomyeh
*/
public interface Media {
/** Returns whether the format of this content is binary or text-based.
* If true, use {@link #getByteData} or {@link #getStreamData}
* to retrieve its content.
* If false, use {@link #getStringData} or {@link #getReaderData}
* to retrieve its content.
*
* @see #getStringData
* @see #getByteData
* @see #getReaderData
* @see #getStreamData
*/
public boolean isBinary();
/** Returns whether the data is cached in memory (in form of
* byte[] or String).
*
* @see #getStringData
* @see #getByteData
* @see #getReaderData
* @see #getStreamData
*/
public boolean inMemory();
/** Returns the raw data in byte array.
*
* <p>It might <i>not</i> be a copy, so don't modify
* it directly unless you know what you are doing.
*
* <p>If the data is not cached in memory ({@link #inMemory} return false),
* the data will be read from {@link #getStreamData}. Furthermore, it
* also implies you can not invoke this method again.
*
* @exception IllegalStateException if {@link #isBinary} returns false
* @see #getStringData
*/
public byte[] getByteData();
/** Returns the raw data in string.
*
* <p>If the data is not cached in memory ({@link #inMemory} return false),
* the data will be read from {@link #getReaderData}. Furthermore, it
* also implies you can not invoke this method again.
*
* @exception IllegalStateException if {@link #isBinary} returns false
* @see #getByteData
*/
public String getStringData();
/** Returns the raw data in InputStream.
*
* <p>Note: it wraps {@link #getByteData} with ByteArrayInputStream
* if it is in memory ({@link #inMemory} returns true).
*
* @exception IllegalStateException if {@link #isBinary} returns false.
* @see #getReaderData
*/
public InputStream getStreamData();
/** Returns the raw data in Reader.
*
* <p>Note: it wraps {@link #getStringData} with StringReader,
* if it is in memory ({@link #inMemory} returns true).
*
* @exception IllegalStateException if {@link #isBinary} returns true.
* @see #getStreamData
*/
public Reader getReaderData();
/** Returns the name (usually filename) of this media, or null
* if not available.
*/
public String getName();
/** Returns the format name, e.g., "jpeg", or null if not available.
* @see #getContentType
*/
public String getFormat();
/** Returns the content type, e.g., "image/jpeg", or null if not available.
* @see #getFormat
*/
public String getContentType();
/** Whether to allow Content-Disposition or not when writing the media to response header.
* <p>
* Default: true
* @since 7.0.0
*/
public boolean isContentDisposition();
}