001package org.nuxeo.ecm.agenda.operations; 002 003import java.util.Date; 004 005import org.nuxeo.ecm.agenda.AgendaService; 006import org.nuxeo.ecm.automation.OperationContext; 007import org.nuxeo.ecm.automation.core.Constants; 008import org.nuxeo.ecm.automation.core.annotations.Context; 009import org.nuxeo.ecm.automation.core.annotations.Operation; 010import org.nuxeo.ecm.automation.core.annotations.OperationMethod; 011import org.nuxeo.ecm.automation.core.annotations.Param; 012import org.nuxeo.ecm.automation.jaxrs.io.documents.PaginableDocumentModelListImpl; 013import org.nuxeo.ecm.core.api.CoreSession; 014import org.nuxeo.ecm.core.api.DocumentModelList; 015import org.nuxeo.ecm.platform.query.core.DocumentModelListPageProvider; 016 017/** 018 * Operation to list events between two dates to display them into a calendar 019 * 020 * @author <a href="mailto:akervern@nuxeo.com">Arnaud Kervern</a> 021 * @since 5.6 022 */ 023@Operation(id = ListAgendaEvents.ID, category = Constants.CAT_DOCUMENT, label = "List Events", description = "List Events between two dates") 024public class ListAgendaEvents { 025 026 protected static final String ID = "VEVENT.List"; 027 028 @Context 029 protected OperationContext context; 030 031 @Context 032 protected AgendaService agendaService; 033 034 @Context 035 protected CoreSession session; 036 037 @Param(name = "contextPath") 038 protected String contextPath; 039 040 @Param(name = "dtStart", required = false) 041 protected Date dtStart; 042 043 @Param(name = "dtEnd", required = false) 044 protected Date dtEnd; 045 046 @Param(name = "limit", required = false) 047 protected int limit = 5; 048 049 @Param(name = "documentLinkBuilder", required = false) 050 protected String documentLinkBuilder; 051 052 @OperationMethod 053 public PaginableDocumentModelListImpl run() { 054 DocumentModelList events; 055 if (dtStart != null) { 056 events = agendaService.listEvents(session, contextPath, dtStart, dtEnd); 057 } else { 058 events = agendaService.listEvents(session, contextPath, limit); 059 } 060 return new PaginableDocumentModelListImpl(new DocumentModelListPageProvider(events), documentLinkBuilder); 061 } 062}