You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2018/09/10 11:08:55 UTC

[camel] 01/02: CAMEL-12784 - Create a Camel-google-calendar-stream component, option to base the next poll on the lastUpdate date of the last event consumed

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 84ac53cad4c23d04348261e3b85cd65b4ee96fed
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Mon Sep 10 13:03:52 2018 +0200

    CAMEL-12784 - Create a Camel-google-calendar-stream component, option to base the next poll on the lastUpdate date of the last event consumed
---
 .../src/main/docs/google-calendar-stream-component.adoc  |  3 ++-
 .../stream/GoogleCalendarStreamConfiguration.java        | 14 ++++++++++++++
 .../calendar/stream/GoogleCalendarStreamConsumer.java    | 16 ++++++++++++++--
 .../GoogleCalendarStreamComponentConfiguration.java      | 13 +++++++++++++
 4 files changed, 43 insertions(+), 3 deletions(-)

diff --git a/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc b/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
index fdf04a8..b6ee4a7e 100644
--- a/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
+++ b/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
@@ -78,7 +78,7 @@ with the following path and query parameters:
 |===
 
 
-==== Query Parameters (29 parameters):
+==== Query Parameters (30 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -90,6 +90,7 @@ with the following path and query parameters:
 | *calendarSummaryName* (consumer) | Calendar Summary Name to use | primary | String
 | *clientId* (consumer) | Client ID of the mail application |  | String
 | *clientSecret* (consumer) | Client secret of the mail application |  | String
+| *considerLastUpdate* (consumer) | Take into account the lastUpdate of the last event polled as start date for the next poll | false | boolean
 | *consumeFromNow* (consumer) | Consume events in the selected calendar from now on | true | boolean
 | *maxResults* (consumer) | Max results to be returned | 10 | int
 | *query* (consumer) | The query to execute on calendar |  | String
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConfiguration.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConfiguration.java
index bdb3b26..aad15aa 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConfiguration.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConfiguration.java
@@ -65,6 +65,9 @@ public class GoogleCalendarStreamConfiguration implements Cloneable {
     
     @UriParam(defaultValue = "true")
     private boolean consumeFromNow = true;
+    
+    @UriParam(defaultValue = "false")
+    private boolean considerLastUpdate = false;
 
     public String getClientId() {
         return clientId;
@@ -192,6 +195,17 @@ public class GoogleCalendarStreamConfiguration implements Cloneable {
         this.consumeFromNow = consumeFromNow;
     }
 
+    public boolean isConsiderLastUpdate() {
+        return considerLastUpdate;
+    }
+
+    /**
+     * Take into account the lastUpdate of the last event polled as start date for the next poll
+     */
+    public void setConsiderLastUpdate(boolean considerLastUpdate) {
+        this.considerLastUpdate = considerLastUpdate;
+    }
+
     // *************************************************
     //
     // *************************************************
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumer.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumer.java
index 4a74b77..eb0b6e4 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumer.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumer.java
@@ -43,6 +43,7 @@ public class GoogleCalendarStreamConsumer extends ScheduledBatchPollingConsumer
 
     private static final Logger LOG = LoggerFactory.getLogger(GoogleCalendarStreamConsumer.class);
     private String calendarId;
+    private DateTime lastUpdate;
 
     public GoogleCalendarStreamConsumer(Endpoint endpoint, Processor processor, String calendarId) {
         super(endpoint, processor);
@@ -64,6 +65,7 @@ public class GoogleCalendarStreamConsumer extends ScheduledBatchPollingConsumer
 
     @Override
     protected int poll() throws Exception {
+        System.err.println("Io pollo");
         com.google.api.services.calendar.Calendar.Events.List request = getClient().events().list(calendarId).setOrderBy("updated");
         if (ObjectHelper.isNotEmpty(getConfiguration().getQuery())) {
             request.setQ(getConfiguration().getQuery());
@@ -71,9 +73,13 @@ public class GoogleCalendarStreamConsumer extends ScheduledBatchPollingConsumer
         if (ObjectHelper.isNotEmpty(getConfiguration().getMaxResults())) {
             request.setMaxResults(getConfiguration().getMaxResults());
         }
-        if (getConfiguration().isConsumeFromNow()) {
+        if (getConfiguration().isConsumeFromNow() && !getConfiguration().isConsiderLastUpdate()) {
             Date date = new Date();
             request.setTimeMin(new DateTime(date));
+        } else if (getConfiguration().isConsiderLastUpdate()) {
+            if (ObjectHelper.isNotEmpty(lastUpdate)) {
+                request.setTimeMin(lastUpdate);
+            }
         }
 
         Queue<Exchange> answer = new LinkedList<>();
@@ -82,9 +88,15 @@ public class GoogleCalendarStreamConsumer extends ScheduledBatchPollingConsumer
 
         if (c != null) {
             List<Event> list = c.getItems();
+            int i = 0;
+            
             for (Event event : list) {
                 Exchange exchange = getEndpoint().createExchange(getEndpoint().getExchangePattern(), event);
                 answer.add(exchange);
+                i++;
+                if (i == c.getItems().size()) {
+                    lastUpdate = event.getUpdated();
+                }
             }
         }
 
@@ -113,7 +125,7 @@ public class GoogleCalendarStreamConsumer extends ScheduledBatchPollingConsumer
                 }
             });
         }
-
+        System.err.println("Io ho pollato");
         return total;
     }
 
diff --git a/platforms/spring-boot/components-starter/camel-google-calendar-starter/src/main/java/org/apache/camel/component/google/calendar/stream/springboot/GoogleCalendarStreamComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-google-calendar-starter/src/main/java/org/apache/camel/component/google/calendar/stream/springboot/GoogleCalendarStreamComponentConfiguration.java
index 39cafad..36b10e7 100644
--- a/platforms/spring-boot/components-starter/camel-google-calendar-starter/src/main/java/org/apache/camel/component/google/calendar/stream/springboot/GoogleCalendarStreamComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-google-calendar-starter/src/main/java/org/apache/camel/component/google/calendar/stream/springboot/GoogleCalendarStreamComponentConfiguration.java
@@ -133,6 +133,11 @@ public class GoogleCalendarStreamComponentConfiguration
          * Consume events in the selected calendar from now on
          */
         private Boolean consumeFromNow = true;
+        /**
+         * Take into account the lastUpdate of the last event polled as start
+         * date for the next poll
+         */
+        private Boolean considerLastUpdate = false;
 
         public String getClientId() {
             return clientId;
@@ -221,5 +226,13 @@ public class GoogleCalendarStreamComponentConfiguration
         public void setConsumeFromNow(Boolean consumeFromNow) {
             this.consumeFromNow = consumeFromNow;
         }
+
+        public Boolean getConsiderLastUpdate() {
+            return considerLastUpdate;
+        }
+
+        public void setConsiderLastUpdate(Boolean considerLastUpdate) {
+            this.considerLastUpdate = considerLastUpdate;
+        }
     }
 }
\ No newline at end of file