2

我是liferay的新手。我正在使用 liferay 6.0.5 我想通过代码将“存档”标签添加到文档库文档中,以便稍后我可以使用“存档”标签获取文档。这个怎么做?

这是正在处理的代码:

private void addArchive(List<DLFileEntry> fileEntryList) {       
    try
    {
        long groupId=0;
        long userId=0;
        String className=null;
        long classPK=0;
        long categoryIds[]=null;
        String tagNames[]=null;
        String newTagNames[] = new String[20];
        long entryId = 0;
        List<AssetTag> TNames = new ArrayList<AssetTag>();
        int i = 0;
        for(DLFileEntry cur:fileEntryList)
        {
            groupId=cur.getGroupId();
            userId=cur.getUserId();
            className=cur.getClass().getName();
            classPK=cur.getPrimaryKey();
            AssetEntry ae=AssetEntryLocalServiceUtil.getEntry(groupId, cur.getUuid());
            categoryIds=ae.getCategoryIds();
            entryId = ae.getEntryId();
            TNames = ae.getTags();
            System.out.println(cur.getTitle());
            i=0;
            for(AssetTag tag : TNames)
            {
                System.out.println(tag.getName());      
                newTagNames[i]=tag.getName().toString();
                i++;
            }
            newTagNames[i]="NameArchive";
            AssetEntryLocalServiceUtil.updateEntry(userId, groupId, className, classPK, categoryIds, newTagNames);
            System.out.println("------------------------------------------------");
        }
        System.out.println("outside for loop"); 
    }
    catch (Exception e) {
        // TODO: handle exception
    }
}
4

1 回答 1

0

首先,您需要使用 DLFileEntryLocalServiceUtil 类(以及其他相关的 DL*LocalServiceUtil 类)在文档库中找到文件的“entryId”。

“entryId”与数据库中assetentry 表上的“classPK”字段相关。然后您可以使用以下方法更新带有标签“存档”的 AssetEntry:

AssetEntryLocalServiceUtil.updateEntry(userId, groupId, DLFileEntry.class.getName(), fileEntryIdYouJustGot, categoryIds, new String[] {"Archive"});

这将删除任何其他标签,因此您可能希望从资产条目中检索当前标签,然后将“存档”添加到它们,然后将结果数组传递给方法。

但这是您需要做的事情的基础。

~~编辑~~

修改您的 getEntryLine 以使用以下内容。您正在传递 DLFileEntry UUID,但是如果您查看源代码,它会要求一个我不认为是同一件事的 classUuid。还要在您的异常处理中添加日志记录以查看是否抛出了异常。

AssetEntry ae=AssetEntryLocalServiceUtil.getEntry(groupId, classPK);
于 2012-03-21T08:08:55.183 回答