/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.portal.image;
import com.enonic.cms.core.content.ContentEntity;
import com.enonic.cms.core.content.ContentVersionEntity;
import com.enonic.cms.core.content.binary.BinaryDataEntity;
import com.enonic.cms.core.content.binary.ContentBinaryDataEntity;
import com.enonic.cms.core.image.ImageRequest;
import com.enonic.cms.store.dao.ContentDao;
public class BinaryDataForImageRequestResolver
{
private ContentDao contentDao;
public BinaryDataForImageRequestResolver( ContentDao contentDao )
{
this.contentDao = contentDao;
}
public BinaryDataEntity resolveBinaryData( final ImageRequest imageRequest )
{
final ContentEntity content = contentDao.findByKey( imageRequest.getContentKey() );
if ( content == null || content.isDeleted() )
{
return null;
}
return resolveBinaryData( content, imageRequest );
}
public BinaryDataEntity resolveBinaryData( final ContentEntity content, final ImageRequest imageRequest )
{
final ContentVersionEntity version = resolveVersion( content, imageRequest );
if ( version == null )
{
return null;
}
final ContentBinaryDataEntity contentBinaryData = resolveContentBinaryData( version, imageRequest );
if ( contentBinaryData == null )
{
return null;
}
return contentBinaryData.getBinaryData();
}
public ContentVersionEntity resolveVersion( final ContentEntity content, final ImageRequest imageRequest )
{
if ( imageRequest.getContentVersionKey() != null )
{
return content.getVersion( imageRequest.getContentVersionKey() );
}
else
{
return content.getMainVersion();
}
}
public ContentBinaryDataEntity resolveContentBinaryData( final ContentVersionEntity version, final ImageRequest imageRequest )
{
if ( imageRequest.getBinaryDataKey() != null )
{
return version.getContentBinaryData( imageRequest.getBinaryDataKey() );
}
else
{
return version.getContentBinaryData( imageRequest.getLabel() );
}
}
}