From f4219ee26777d7a9168df03effd9ce3afbab9c80 Mon Sep 17 00:00:00 2001
From: "ricardo.nunesdeo" <ricardo.nunes-de-oliveira@etu.hesge.ch>
Date: Fri, 26 Jun 2020 09:59:03 +0200
Subject: [PATCH] Added SolrClient Singleton.

---
 .../java/ch/hepia/foodspector/SolrClient.java | 43 +++++++++++++++++++
 .../controllers/ImageController.java          | 33 +-------------
 2 files changed, 45 insertions(+), 31 deletions(-)
 create mode 100644 backend/foodspector/src/main/java/ch/hepia/foodspector/SolrClient.java

diff --git a/backend/foodspector/src/main/java/ch/hepia/foodspector/SolrClient.java b/backend/foodspector/src/main/java/ch/hepia/foodspector/SolrClient.java
new file mode 100644
index 0000000..5d7abf0
--- /dev/null
+++ b/backend/foodspector/src/main/java/ch/hepia/foodspector/SolrClient.java
@@ -0,0 +1,43 @@
+package ch.hepia.foodspector;
+
+import org.apache.solr.client.solrj.SolrQuery;
+import org.apache.solr.client.solrj.impl.HttpSolrClient;
+import org.apache.solr.client.solrj.response.QueryResponse;
+import org.apache.solr.common.SolrDocumentList;
+
+public class SolrClient {
+
+    private static String SOLR_URL = "http://localhost:8983/solr";
+    private static SolrClient inst;
+    private HttpSolrClient client;
+
+    private SolrClient(String solrUrl) {
+        client = new HttpSolrClient.Builder(solrUrl)
+                    .withConnectionTimeout(10000)
+                    .withSocketTimeout(60000)
+                    .build();
+    }
+
+    public static SolrClient getInstance() {
+        if(inst == null)
+            inst = new SolrClient( SOLR_URL );
+        return inst;
+    }
+
+    public void query( String word ) {
+        SolrQuery query = new SolrQuery();
+        query.setRequestHandler("/montest");
+        System.out.println( word.strip().replaceAll("[-+.^:,()]",""));
+        query.set( "q", "name:" + word.strip().replaceAll("[-+.^:,()]","") );
+
+        try {
+            QueryResponse r = client.query( "foodspector", query );
+            SolrDocumentList list = r.getResults();
+            list.forEach( System.out::println );
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+
+        System.out.println( "=========" );
+    }
+}
diff --git a/backend/foodspector/src/main/java/ch/hepia/foodspector/controllers/ImageController.java b/backend/foodspector/src/main/java/ch/hepia/foodspector/controllers/ImageController.java
index 0103b33..fdfb426 100644
--- a/backend/foodspector/src/main/java/ch/hepia/foodspector/controllers/ImageController.java
+++ b/backend/foodspector/src/main/java/ch/hepia/foodspector/controllers/ImageController.java
@@ -1,5 +1,6 @@
 package ch.hepia.foodspector.controllers;
 
+import ch.hepia.foodspector.SolrClient;
 import io.javalin.http.Context;
 import io.javalin.http.UploadedFile;
 import net.sourceforge.tess4j.ITesseract;
@@ -49,37 +50,7 @@ public class ImageController {
 
                         try {
                             String result = tess.doOCR(test);
-                            Arrays.stream( result.split(",") ).forEach( t -> System.out.println(t.strip()) );
-
-
-                            // Inits the Solr Client.
-                            final String solrUrl = "http://localhost:8983/solr";
-                            HttpSolrClient solrClient = new HttpSolrClient.Builder(solrUrl)
-                                    .withConnectionTimeout(10000)
-                                    .withSocketTimeout(60000)
-                                    .build();
-
-                            Arrays.stream( result.split(",") ).forEach( t -> {
-
-                                try {
-
-                                    SolrQuery query = new SolrQuery();
-                                    query.setRequestHandler("/select");
-                                    System.out.println( t.strip().replaceAll("[-+.^:,()]",""));
-                                    query.set( "q", "name:" + t.strip().replaceAll("[-+.^:,()]","") );
-
-                                    QueryResponse r = solrClient.query( "foodspector", query );
-                                    SolrDocumentList list = r.getResults();
-
-                                    list.forEach( System.out::println );
-                                    System.out.println( "=========" );
-
-                                } catch (Exception e) {
-                                    System.out.println( e.getMessage() );
-                                }
-
-                            });
-                            // System.out.println(result);
+                            Arrays.stream( result.split(",") ).forEach(SolrClient.getInstance()::query);
                         } catch (Exception e) {
                             System.err.println(e.getMessage());
                         }
-- 
GitLab