Fix database data search error

update date validation
diff --git a/platform/tools/influxdb-connector/src/main/java/org/eclipse/sensinact/gateway/tools/connector/influxdb/InfluxDbConnector.java b/platform/tools/influxdb-connector/src/main/java/org/eclipse/sensinact/gateway/tools/connector/influxdb/InfluxDbConnector.java
index 7f90c87..8b1562d 100644
--- a/platform/tools/influxdb-connector/src/main/java/org/eclipse/sensinact/gateway/tools/connector/influxdb/InfluxDbConnector.java
+++ b/platform/tools/influxdb-connector/src/main/java/org/eclipse/sensinact/gateway/tools/connector/influxdb/InfluxDbConnector.java
@@ -11,7 +11,6 @@
 package org.eclipse.sensinact.gateway.tools.connector.influxdb;

 

 import java.io.IOException;

-import java.util.Arrays;

 

 import org.influxdb.InfluxDB;

 import org.influxdb.InfluxDBFactory;

@@ -168,4 +167,5 @@
     public void close() {

     	this.influxDB.close();

     }

+    

 }

diff --git a/platform/tools/influxdb-connector/src/main/java/org/eclipse/sensinact/gateway/tools/connector/influxdb/InfluxDbDatabase.java b/platform/tools/influxdb-connector/src/main/java/org/eclipse/sensinact/gateway/tools/connector/influxdb/InfluxDbDatabase.java
index 33eb630..5ccacff 100644
--- a/platform/tools/influxdb-connector/src/main/java/org/eclipse/sensinact/gateway/tools/connector/influxdb/InfluxDbDatabase.java
+++ b/platform/tools/influxdb-connector/src/main/java/org/eclipse/sensinact/gateway/tools/connector/influxdb/InfluxDbDatabase.java
@@ -12,10 +12,8 @@
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.Instant;
-import java.time.ZoneId;
+import java.util.Arrays;
 import java.util.Collections;
-import java.util.Date;
 import java.util.Dictionary;
 import java.util.Iterator;
 import java.util.List;
@@ -36,10 +34,23 @@
  */
 public class InfluxDbDatabase {
 
-	private static final ThreadLocal<SimpleDateFormat> THREAD_LOCAL_FORMAT = new ThreadLocal<SimpleDateFormat>() {
+	private interface SimpleDateFormatProvider {
+		Iterator<SimpleDateFormat> iterator();
+	}
+	
+	private static final ThreadLocal<SimpleDateFormatProvider> THREAD_LOCAL_FORMATS = new ThreadLocal<SimpleDateFormatProvider>() {
 		
-		protected SimpleDateFormat initialValue() {
-			return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+		protected SimpleDateFormatProvider initialValue() {
+			return new SimpleDateFormatProvider(){
+
+				@Override
+				public Iterator<SimpleDateFormat> iterator() {
+					return Arrays.asList(
+						new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"),
+						new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
+					).iterator();
+				}
+			};
 		}
 	};
 	
@@ -62,16 +73,20 @@
 	}
 	
 	private boolean isValidDate(String datetime) {
-		try {
-			SimpleDateFormat format = THREAD_LOCAL_FORMAT.get();			
-			format.parse(datetime);
-		}catch(ParseException e) {
-			LOG.error(e.getMessage(),e);
-			return false;
-		}finally {
-			THREAD_LOCAL_FORMAT.remove();
+		SimpleDateFormatProvider formatProvider = THREAD_LOCAL_FORMATS.get();
+		boolean valid = false;
+		for(Iterator<SimpleDateFormat> it = formatProvider.iterator();it.hasNext();) {
+			SimpleDateFormat format = it.next();
+			try {			
+				format.parse(datetime);
+				valid = true;
+				break;
+			}catch(ParseException e) {
+				LOG.error(e.getMessage(),e);
+			};			
 		}
-		return true;
+		THREAD_LOCAL_FORMATS.remove();
+		return valid;
 	}
 
     /**
@@ -293,14 +308,9 @@
     	select =select.substring(0,select.length()-1);
 
     	String from = String.format(" FROM %s " , measurement);
-    	if(start == null || !isValidDate(start)) {   
-			try { 		
-				    SimpleDateFormat format = THREAD_LOCAL_FORMAT.get();
-				    start = format.format(Date.from(Instant.ofEpochMilli(0)));
-				} finally {
-					 THREAD_LOCAL_FORMAT.remove();
-				}
-		}
+    	if(start == null || !isValidDate(start))   
+			start = "1970-01-01T00:00:00.001Z";
+		
     	String where = null;
     	if(tags != null && !tags.isEmpty()) {
 	   		StringBuilder builder = new StringBuilder();
@@ -314,8 +324,8 @@
 				if(it.hasNext())
 					builder.append(" AND ");
 			}
-			where = builder.toString();
 		    builder.append(String.format(" AND time > '%s' AND time < '%s'", start, end));
+			where = builder.toString();
     	} else 
 			where = String.format(" WHERE time > '%s' AND time < '%s'", start, end);
     	Query query = new Query(String.format("SELECT %s%s%s", select, from, where),database);
@@ -455,15 +465,8 @@
     	select =select.substring(0,select.length()-1);
     	
     	String from = String.format(" FROM %s " , measurement);
-
-    	if(start == null || !isValidDate(start)) {   
-			try { 		
-				    SimpleDateFormat format = THREAD_LOCAL_FORMAT.get();
-				    start = format.format(Date.from(Instant.ofEpochMilli(0)));
-				} finally {
-					 THREAD_LOCAL_FORMAT.remove();
-				}
-		}
+    	if(start == null || !isValidDate(start))   
+			start = "1970-01-01T00:00:00.001Z";
 		
     	String where = null;
     	if(tags != null && !tags.isEmpty()) {
@@ -479,6 +482,7 @@
 					builder.append(" AND ");
 			}
 			builder.append(String.format(" AND time > '%s' AND time < '%s'", start, end));
+			where = builder.toString();
     	} else
     		where = String.format(" WHERE time > '%s' AND time < '%s'", start, end);
     	
diff --git a/platform/tools/influxdb-connector/src/main/java/org/eclipse/sensinact/gateway/tools/connector/influxdb/Measure.java b/platform/tools/influxdb-connector/src/main/java/org/eclipse/sensinact/gateway/tools/connector/influxdb/Measure.java
index 9fc3e6d..2c5f1a6 100644
--- a/platform/tools/influxdb-connector/src/main/java/org/eclipse/sensinact/gateway/tools/connector/influxdb/Measure.java
+++ b/platform/tools/influxdb-connector/src/main/java/org/eclipse/sensinact/gateway/tools/connector/influxdb/Measure.java
@@ -11,14 +11,9 @@
 package org.eclipse.sensinact.gateway.tools.connector.influxdb;
 
 import org.influxdb.annotation.Column;
-import org.influxdb.annotation.Measurement;
 
-@Measurement(name = "test")
-public class Measure {
+public abstract class Measure {
 
-	@Column(name="path")
-	private String path;
-	
 	@Column(name="value")
 	private String value;
 
@@ -43,17 +38,8 @@
 		return this.time;
 	}
 	
-	public void setPath(String path) {
-		this.path = path;
-	}
-	
-	public String getPath() {
-		return this.path;
-	}
-	
 	@Override
 	public String toString() {		
-		return "{'path':'"+path+"','value':'"+value+"','time':'"+time+"'}";
+		return "{'value':'"+value+"','time':'"+time+"'}";
 	}
-
 }
\ No newline at end of file