From 3d777769d4717810a55a72e1fe89548000977cff Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Wed, 20 Sep 2017 14:58:56 +0200
Subject: [PATCH] [enh] Synchro: Add api ES_SUBSCRIPTION_API

---
 .../dao/impl/SynchroExecutionDaoImpl.java            | 12 ++++++++++--
 .../elasticsearch/model/SynchroExecution.java        | 10 ++++++++++
 .../elasticsearch/synchro/SynchroService.java        |  3 ---
 3 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/dao/impl/SynchroExecutionDaoImpl.java b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/dao/impl/SynchroExecutionDaoImpl.java
index 746ab651..c91ecfa5 100644
--- a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/dao/impl/SynchroExecutionDaoImpl.java
+++ b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/dao/impl/SynchroExecutionDaoImpl.java
@@ -88,16 +88,18 @@ public class SynchroExecutionDaoImpl extends AbstractDao implements SynchroExecu
         Preconditions.checkNotNull(peer);
         Preconditions.checkNotNull(peer.getCurrency());
         Preconditions.checkNotNull(peer.getId());
+        Preconditions.checkNotNull(peer.getApi());
 
         BoolQueryBuilder query = QueryBuilders.boolQuery()
-                .filter(QueryBuilders.termQuery(SynchroExecution.PROPERTY_PEER, peer.getId()));
+                .filter(QueryBuilders.termQuery(SynchroExecution.PROPERTY_PEER, peer.getId()))
+                .filter(QueryBuilders.termQuery(SynchroExecution.PROPERTY_API, peer.getApi()));
 
         SearchResponse response = client.prepareSearch(peer.getCurrency())
                 .setTypes(TYPE)
                 .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
                 .setQuery(query)
                 .setFetchSource(true)
-                .setFrom(0).setSize(1)
+                .setSize(1)
                 .addSort(SynchroExecution.PROPERTY_TIME, SortOrder.DESC)
                 .get();
 
@@ -126,6 +128,12 @@ public class SynchroExecutionDaoImpl extends AbstractDao implements SynchroExecu
                     .field("index", "not_analyzed")
                     .endObject()
 
+                    // peer
+                    .startObject(SynchroExecution.PROPERTY_API)
+                    .field("type", "string")
+                    .field("index", "not_analyzed")
+                    .endObject()
+
                     // issuer
                     .startObject(SynchroExecution.PROPERTY_ISSUER)
                     .field("type", "string")
diff --git a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/model/SynchroExecution.java b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/model/SynchroExecution.java
index c17dfc07..9ce4b4df 100644
--- a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/model/SynchroExecution.java
+++ b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/model/SynchroExecution.java
@@ -6,11 +6,13 @@ public class SynchroExecution extends Record {
 
     public static final String PROPERTY_CURRENCY = "currency";
     public static final String PROPERTY_PEER = "peer";
+    public static final String PROPERTY_API = "api";
     public static final String PROPERTY_RESULT = "result";
 
 
     private String currency;
     private String peer;
+    private String api;
     private SynchroResult result;
 
     public String getCurrency() {
@@ -36,4 +38,12 @@ public class SynchroExecution extends Record {
     public void setResult(SynchroResult result) {
         this.result = result;
     }
+
+    public String getApi() {
+        return api;
+    }
+
+    public void setApi(String api) {
+        this.api = api;
+    }
 }
diff --git a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/synchro/SynchroService.java b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/synchro/SynchroService.java
index e3055402..29073c50 100644
--- a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/synchro/SynchroService.java
+++ b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/synchro/SynchroService.java
@@ -303,8 +303,6 @@ public class SynchroService extends AbstractService {
     protected boolean waitPeersReady() throws InterruptedException{
         final int sleepTime = 10 * 1000 /*10s*/;
 
-
-
         int maxWaitingDuration = 5 * 6 * sleepTime; // 5 min
         int waitingDuration = 0;
         while (!isReady() && !hasSomePeers()) {
@@ -326,7 +324,6 @@ public class SynchroService extends AbstractService {
 
     protected long getLastExecutionTime(Peer peer) {
         Preconditions.checkNotNull(peer);
-        Preconditions.checkNotNull(peer.getId());
 
         try {
             SynchroExecution execution = synchroExecutionDao.getLastExecution(peer);
-- 
GitLab