/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.framework.blob;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import com.google.common.io.ByteStreams;
import com.google.common.io.Closeables;
public abstract class BlobRecord
{
private final BlobKey key;
public BlobRecord( final BlobKey key )
{
this.key = key;
}
public final BlobKey getKey()
{
return this.key;
}
public abstract long getLength();
public abstract InputStream getStream()
throws BlobStoreException;
public final byte[] getAsBytes()
throws BlobStoreException
{
final InputStream stream = getStream();
try
{
return ByteStreams.toByteArray( stream );
}
catch ( IOException e )
{
throw new BlobStoreException( "Failed to get bytes from blob [" + this.key + "]", e );
}
finally
{
Closeables.closeQuietly( stream );
}
}
public abstract File getAsFile();
public final String toString()
{
return this.key.toString();
}
public final int hashCode()
{
return this.key.hashCode();
}
public final boolean equals( final Object object )
{
return ( object instanceof BlobRecord ) && this.key.equals( ( (BlobRecord) object ).key );
}
}