RE: Document library actions in a scheduler task

Sonia Castro, 5 Jaren geleden aangepast. New Member Berichten: 3 Aanmelddatum: 3-12-15 Recente berichten

I need to list document library files and delete some ones periodically.

I have a class that implements MessageListener to run this task, but the scheduler class does not have a request and I don't know how can I get the repositorId without it.

public class MyScheduler implements MessageListener {

    @Override
    public void receive(Message message) throws MessageListenerException {

       ...
       Long parentFolderId = DLFolderConstants.DEFAULT_PARENT_FOLDER_ID;
       Folder folder = DLAppServiceUtil.getFolder(repositoryId, parentFolderId, folderName);
       List<FileEntry> fileEntries = DLAppServiceUtil.getFileEntries(repositoryId, folder.getFolderId());
       ...

    }
}

Is there any way to get repositoryid ?

Any alternative to run document library actions in sheduler task?

thumbnail
Vilmos Papp, 5 Jaren geleden aangepast. Liferay Master Berichten: 529 Aanmelddatum: 21-10-10 Recente berichten

You coud use other service util, or  service reference like DLFileEntryLocalServiceUtil:

https://github.com/vilmospapp/liferay-portal/blob/master/portal-kernel/src/com/liferay/document/library/kernel/service/DLFileEntryLocalServiceUtil.java#L703

There a methods with folderId without repositoryId, you can choose the one that meets your expectations.

Sonia Castro, 5 Jaren geleden aangepast. New Member Berichten: 3 Aanmelddatum: 3-12-15 Recente berichten

Thanks for the hint but I don't find any method that fits my requirements in other services.

I need to list files inside a folder and I only have the folder name and the parentFolderID.

 

thumbnail
Sushil Patidar, 5 Jaren geleden aangepast. Expert Berichten: 467 Aanmelddatum: 31-10-11 Recente berichten

Hi 

While sending message. In the message payload, it need to be sent .

How you are sending the message.

Regards

Sushil

thumbnail
Sushil Patidar, 5 Jaren geleden aangepast. Expert Berichten: 467 Aanmelddatum: 31-10-11 Recente berichten

Hi,

 

Check if you can pass the repositoryid in the message itself.

Hope it helps

 

Regards

Sushil

Sonia Castro, 5 Jaren geleden aangepast. New Member Berichten: 3 Aanmelddatum: 3-12-15 Recente berichten

I'm not sending a Message and I think that I can't do it.

My Scheduler is defined in liferay-portlet.xml:

<scheduler-entry>
    <scheduler-description>
        My scheduler to delete files
    </scheduler-description>
    <scheduler-event-listener-class>com.example.MyScheduler</scheduler-event-listener-class>
    <trigger>
        <simple>
            <property-key>10</property-key>
            <time-unit>minute</time-unit>
        </simple>
    </trigger>
</scheduler-entry>

To send the message, I would have to create it dynamically, right?

I want to avoid a programmatically scheduler, because I need to start the scheduler without user interaction.