我已經編寫了自定義DAO到添加 /更新/刪除Tridion 2011中我的二進制文件的持久性類型存儲擴展的特定記錄。如何在Tridion 2011中使用自定義DAO在我的存儲擴展中只存儲PDF類型的二進制文件
下面是我想使用我的自定義DAO類/接口(PublishActionDAO
和PublishAction
)在我的自定義二進制DAO(JPABinaryDAOExtension
)示例代碼。
public class JPABinaryDAOExtension extends JPABinaryContentDAO implements BinaryContentDAO
{
public JPABinaryDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, String storageName)
{
super(storageId, entityManagerFactory, storageName);
}
public JPABinaryDAOExtension(String storageId, EntityManagerFactory entityManagerFactory, EntityManager entityManager, String storageName)
{
super(storageId, entityManagerFactory, entityManager, storageName);
}
public void create(final BinaryContent binaryContent, final String relativePath) throws StorageException
{
super.create(binaryContent, relativePath);
String url = relativePath;
String tcmURI = Integer.toString(binaryContent.getBinaryId());
PublishActionDAO publishActionDAO = (PublishActionDAO) StorageManagerFactory.getDefaultDAO("PublishAction");
PublishAction publishAction = new PublishAction();
publishAction.setAction("Add");
publishAction.setUrl(url);
publishAction.setTcmUri(tcmURI);
publishActionDAO.store(publishAction);
}
}
以上是示例代碼添加創建一個新的二進制文件,並同樣適用於更新時和刪除,我要行動存儲爲添加,二進制發佈URL,它TCMURI。我可以在上面的代碼中輕鬆獲取這些數據。現在我面臨的問題是我只需要爲二進制文件的PDF類型存儲記錄,而對於其他類型的二進制文件(如JPG/Word等)則不需要記錄條目。
編輯:下面的解決方案將爲我工作或使對象的二進制文件,它會降低性能。
ItemDAO item = (ItemDAO) StorageManagerFactory.getDAO(binaryContent.getPublicationId(),StorageTypeMapping.BINARY_META);
BinaryMeta binarymeta = (BinaryMeta) item.findBinaryByPrimaryKey(binaryContent.getPublicationId(),binaryContent.getBinaryId());
binarymeta.getBinaryType();
好的。現在我們到了某個地方(我將刪除以前的評論,因爲它們已經過時)。 –
你**有**性能問題嗎?如果你使用對象緩存(就像你應該這樣做),用findBinaryByPrimaryKey就不會找到更快速的查找二進制文件的方法。 –
@坦率地說,當我的解決方案進入實際發佈的生產環境時,我只是對性能感到好奇,在上面實現的解決方案上面是最好的,或者我可以做更多的變化來獲取二進制數據,還有一點我們有Tridion存儲擴展類的API參考 –