# Class ZipContentItem

java.lang.Object
org.pentaho.reporting.libraries.repository.zipwriter.ZipContentItem

All Implemented Interfaces:
  `ContentEntity, ContentItem`

public class ZipContentItem extends Object implements ContentItem
Creation-Date: 01.12.2006, 21:23:25

Author:
  Thomas Morgner

## Constructor Summary

Constructors
Constructor
Description
`ZipContentItem(String name, ZipRepository repository, ZipContentLocation parent)`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`delete()`
Attempts to delete the entity.
`Object`
`getAttribute(String domain, String key)`
Returns a attribute value for the given domain (namespace) and attribute-name.
`Object`
`getContentId()`
Returns a unique identifier.
`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.
`String`
`getName()`
Returns the name of the entry.
`OutputStream`
`getOutputStream()`
Tries to open and return a output stream for writing into the content item.
`ContentLocation`
`getParent()`
Returns a reference to the parent location.
`Repository`
`getRepository()`
Returns the current repository, to which tis entity belongs.
`boolean`
`isReadable()`
Checks, whether the content item is readable.
`boolean`
`isWriteable()`
Checks, whether the content item is writable.
`boolean`
`setAttribute(String domain, String key, Object value)`
Updates the attribute value for the given attribute domain and name.

### Methods inherited from class Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### ZipContentItem

public ZipContentItem(String name, ZipRepository repository, ZipContentLocation parent)

## Method Details

### getMimeType

public String getMimeType() throws ContentIOException
Description copied from interface: `ContentItem`
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.

Specified by:
  `getMimeType` in interface `ContentItem`
Returns:
  the mime type.
Throws:
  `ContentIOException` - if an error occured.

### getOutputStream

public OutputStream getOutputStream() throws ContentIOException, IOException
Description copied from interface: `ContentItem`
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.

Specified by:
  `getOutputStream` in interface `ContentItem`
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

public InputStream getInputStream() throws ContentIOException, IOException
Description copied from interface: `ContentItem`
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.

Specified by:
  `getInputStream` in interface `ContentItem`
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

public boolean isReadable()
Description copied from interface: `ContentItem`
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.

Specified by:
  `isReadable` in interface `ContentItem`
Returns:
  true, if the content item is readable, false otherwise.

### isWriteable

public boolean isWriteable()
Description copied from interface: `ContentItem`
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.

Specified by:
  `isWriteable` in interface `ContentItem`
Returns:
  true, if the content item is writeable, false otherwise.

### getName

public String getName()
Description copied from interface: `ContentEntity`
Returns the name of the entry.

Specified by:
  `getName` in interface `ContentEntity`
Returns:
  the name, never null.

### getContentId

public Object getContentId()
Description copied from interface: `ContentEntity`
Returns a unique identifier. This can be canonical filename or a database key. It must be guaranteed that within the same repository the key will be unique.

Specified by:
  `getContentId` in interface `ContentEntity`
Returns:
  the unique content ID.

### getAttribute

public Object getAttribute(String domain, String key)
Description copied from interface: `ContentEntity`
Returns a attribute value for the given domain (namespace) and attribute-name. Some generic attribute domains and names are defined as constants in the `LibRepositoryBoot` class.

Specified by:
  `getAttribute` in interface `ContentEntity`
Parameters:
  `domain` - the attribute domain.
  `key` - the name of the attribute.
Returns:
  the value or null, if the content-entity does not have a value for this attribute.

### setAttribute

public boolean setAttribute(String domain, String key, Object value)
Description copied from interface: `ContentEntity`
Updates the attribute value for the given attribute domain and name. If the element is not writable or the attribute could not be updated for any other reason, the method will return false. This method only returns true, if the attribute has been updated successfully.

Specified by:
  `setAttribute` in interface `ContentEntity`
Parameters:
  `domain` - the attribute domain.
  `key` - the attribute name
  `value` - the new attribute value.
Returns:
  true, if the update was successful, false otherwise.

### getRepository

public Repository getRepository()
Description copied from interface: `ContentEntity`
Returns the current repository, to which tis entity belongs.

Specified by:
  `getRepository` in interface `ContentEntity`
Returns:
  the repository.

### getParent

public ContentLocation getParent()
Description copied from interface: `ContentEntity`
Returns a reference to the parent location. If this entity represents the root directory, this method will return null.

Specified by:
  `getParent` in interface `ContentEntity`
Returns:
  the parent or null, if this is the root-directory.

### delete

public boolean delete()
Description copied from interface: `ContentEntity`
Attempts to delete the entity. After an entity has been deleted, any call to any of the methods of the entity may produce undefined results.

Specified by:
  `delete` in interface `ContentEntity`
Returns:
  true, if the entity was deleted and detached from the repository, false otherwise.