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