Package org.pentaho.reporting.libraries.repository

# Interface ContentItem

All Superinterfaces:
  `ContentEntity`

All Known Implementing Classes:
  `DummyContentItem`, `EmailContentItem`, `FileContentItem`, `StreamContentItem`, `ZipContentItem`, `ZipContentItem`, `ZipReadContentItem`

public interface ContentItem extends ContentEntity
A content item holds the actual content. On a file system, this would be a file. Whether reading and writing the same content item at the same time is allowed is implementation specific.

Author:
  Thomas Morgner

## Method Summary

Modifier and Type
Method
Description
`InputStream`
`getInputStream()`
Tries to open and return a input stream for reading from the content item.
`String`
`getMimeType()`
Returns the mime type for the content entity.
`OutputStream`
`getOutputStream()`
Tries to open and return a output stream for writing into the content item.
`boolean`
`isReadable()`
Checks, whether the content item is readable.
`boolean`
`isWriteable()`
Checks, whether the content item is writable.

### Methods inherited from interface org.pentaho.reporting.libraries.repository.ContentEntity

`delete, getAttribute, getContentId, getName, getParent, getRepository, setAttribute`

## Method Details

### getMimeType

String getMimeType() throws ContentIOException
Returns the mime type for the content entity. If the repository does not store mimetypes, this call usually uses the repositories MimeRegistry to resolve the mimetype.

Returns:
  the mime type.
Throws:
  `ContentIOException` - if an error occured.

### getOutputStream

OutputStream getOutputStream() throws ContentIOException, IOException
Tries to open and return a output stream for writing into the content item. This call will fail if the item is not writeable. Whether opening multiple output streams at the same time is possible is implementation dependent, but it is generally not recommended to try this.

Having both an input and output stream open at the same time is not guaranteed to work. Generally if you need to append data, first open the inputstream and copy the content to a temporary location and then write the content along with the appended content to the new output stream.

Returns:
  the output stream for writing the item.
Throws:
  `ContentIOException` - if an repository related error prevents the creation of the output stream.
  `IOException` - if an IO error occurs.

### getInputStream

InputStream getInputStream() throws ContentIOException, IOException
Tries to open and return a input stream for reading from the content item. This call will fail if the item is not readable. Whether opening multiple input streams at the same time is possible is implementation dependent.

Having both an input and output stream open at the same time is not guaranteed to work. Generally if you need to append data, first open the inputstream and copy the content to a temporary location and then write the content along with the appended content to the new output stream.

Returns:
  the input stream for reading from the item.
Throws:
  `ContentIOException` - if an repository related error prevents the creation of the input stream.
  `IOException` - if an IO error occurs.

### isReadable

boolean isReadable()
Checks, whether the content item is readable. A content item that is not readable will never return a valid inputstream and any call to getInputStream is bound to fail.

Returns:
  true, if the content item is readable, false otherwise.

### isWriteable

boolean isWriteable()
Checks, whether the content item is writable. A content item that is not writable will never return a valid outputstream and any call to getOutputStream is bound to fail.

Returns:
  true, if the content item is writeable, false otherwise.