Как добавить тег в документ в библиотеке документов через программирование в liferay? - PullRequest
2 голосов
/ 20 марта 2012

Я новичок в жизни.Я использую 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
    }
}

1 Ответ

0 голосов
/ 21 марта 2012

Во-первых, вам нужно найти «entryId» файла в вашей библиотеке документов с помощью класса DLFileEntryLocalServiceUtil (и других связанных классов DL * LocalServiceUtil).

«entryId» относится к «classPK»поле на таблицу компонентов в базе данных.Затем вы можете использовать следующий метод для обновления AssetEntry с тегом «Архив»:

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

Это удалит любые другие теги, хотя, возможно, вы захотите получить текущие теги из записи актива, а затем добавить«Архивируйте» их, затем передайте полученный массив методу.

Но это основа того, что вам нужно сделать.

~~ РЕДАКТИРОВАТЬ ~~

Измените ваш getEntryLine, чтобы использовать следующее.Вы передаете ULID DLFileEntry, но если вы посмотрите на исходный код, он запрашивает classUuid, который, я не верю, это одно и то же.Также добавьте запись в вашу обработку исключений, чтобы увидеть, генерируется ли исключение.

AssetEntry ae=AssetEntryLocalServiceUtil.getEntry(groupId, classPK);
...