我已经编写了自定义 DAO,以便在 Tridion 2011 的持久性类型的存储扩展中为我的二进制文件添加/更新/删除特定记录。
下面是我试图在我的自定义二进制 DAO ( ) 中使用我的自定义 DAO 类/接口 (PublishActionDAO
和) 的示例代码。PublishAction
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);
}
}
以上是创建新二进制文件时添加的示例代码,更新和删除也是如此,我将 Action 存储为Add,二进制发布 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();