2

私はliferayを初めて使用します。私はliferay6.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 に答える