/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.vertical.engine.handlers; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.enonic.cms.framework.blob.BlobRecord; import com.enonic.cms.core.content.ContentEntity; import com.enonic.cms.core.content.ContentKey; import com.enonic.cms.core.content.ContentVersionEntity; import com.enonic.cms.core.content.ContentVersionKey; import com.enonic.cms.core.content.binary.BinaryData; import com.enonic.cms.core.content.binary.BinaryDataEntity; import com.enonic.cms.core.content.binary.BinaryDataKey; import com.enonic.cms.core.content.binary.ContentBinaryDataEntity; import com.enonic.cms.store.dao.BinaryDataDao; import com.enonic.cms.store.dao.ContentBinaryDataDao; import com.enonic.cms.store.dao.ContentDao; import com.enonic.cms.store.dao.ContentVersionDao; @Component public final class BinaryDataHandler { @Autowired private ContentVersionDao contentVersionDao; @Autowired private BinaryDataDao binaryDataDao; @Autowired private ContentBinaryDataDao contentBinaryDataDao; @Autowired private ContentDao contentDao; public BinaryData getBinaryData( int binaryKey ) { ContentBinaryDataEntity entity = contentBinaryDataDao.findByBinaryKey( binaryKey ); if ( entity == null ) { return null; } return getBinaryData( entity, -1 ); } private BinaryData getBinaryData( ContentBinaryDataEntity contentBinaryData, long timestamp ) { BinaryData binaryData = new BinaryData(); binaryData.key = contentBinaryData.getBinaryData().getKey(); binaryData.contentKey = contentBinaryData.getContentVersion().getContent().getKey().toInt(); binaryData.setSafeFileName( contentBinaryData.getBinaryData().getName() ); binaryData.timestamp = contentBinaryData.getBinaryData().getCreatedAt(); binaryData.anonymousAccess = false; if ( binaryData.timestamp.getTime() > timestamp ) { BlobRecord blob = this.binaryDataDao.getBlob( contentBinaryData.getBinaryData() ); binaryData.data = blob.getAsBytes(); } return binaryData; } public int getBinaryDataKey( int contentKey, String label ) { ContentEntity content = contentDao.findByKey( new ContentKey( contentKey ) ); if ( content != null ) { BinaryDataEntity binaryData = content.getMainVersion().getBinaryData( label ); if ( binaryData != null ) { return binaryData.getKey(); } } return -1; } public int[] getBinaryDataKeysByVersion( int versionKey ) { final ContentVersionEntity contentVersion = this.contentVersionDao.findByKey( new ContentVersionKey( versionKey ) ); final Set<BinaryDataKey> binaryDataKeys = contentVersion.getContentBinaryDataKeys(); int count = 0; final int[] result = new int[binaryDataKeys.size()]; for ( final BinaryDataKey key : binaryDataKeys ) { result[count++] = key.toInt(); } return result; } }