From d3222c01cfe4b44b8b243be6136d237150cee207 Mon Sep 17 00:00:00 2001
From: emtunhei <emtunhei@stud.ntnu.no>
Date: Fri, 8 Apr 2022 12:16:33 +0200
Subject: [PATCH] Started fixing searching for parameters

---
 src/main/java/com/application/DB/DB.java      |  80 +++++++++++-------
 .../com/application/GUI/InputPopUpWindow.java |  66 +++++++++++++--
 target/classes/com/application/DB/DB.class    | Bin 15877 -> 16364 bytes
 .../application/GUI/InputPopUpWindow.class    | Bin 5776 -> 6951 bytes
 4 files changed, 106 insertions(+), 40 deletions(-)

diff --git a/src/main/java/com/application/DB/DB.java b/src/main/java/com/application/DB/DB.java
index 552b757..5c3d6d9 100644
--- a/src/main/java/com/application/DB/DB.java
+++ b/src/main/java/com/application/DB/DB.java
@@ -60,7 +60,7 @@ public class DB {
         //getKwh();
         //getName();
         //getZeroPointDate();
-        System.out.println(setInputParameters());
+        System.out.println(setInputParameters(false,false,false,false));
 
     }
 
@@ -128,15 +128,23 @@ public class DB {
     }
 
 
-    public static Map<Integer, Map<String, Number>> setInputParameters() throws Exception {
+    public static Map<Integer, Map<String, Number>> setInputParameters(boolean sawsetRemoved,
+                                                                       boolean treespeciesRemoved,
+                                                                       boolean dimensionsRemoved,
+                                                                       boolean moistureRemoved) throws Exception {
     //public static Map<String, String> setInputParameters() throws Exception {
-        Map<Integer, Map<String, Number>> allDryingPeriods = new TreeMap<>();
+        Map<Integer, Map<String, Number>> allDryingPeriods = null;
 
 
         String extraInputParameter = "";
-        int locationID = 0;
+        int locationID;
         int index = 0;
 
+        String treeSpecies = "";
+        String dimensions = "";
+        String sawset = "";
+        String moistureGoal = "";
+
         // Valmetics parameters
         String nameParameter = "";
         String kilinName = "";
@@ -156,6 +164,8 @@ public class DB {
         for (HashMap.Entry<Integer, HashMap<String, HashMap<String, String>>> location : Constants.getSawmills().entrySet()) {
             System.out.printf("\n\nLocation ID: \t%s\t\t\tRest of map: \t%s\n", location.getKey(), location.getValue());
 
+            allDryingPeriods = new TreeMap<>();
+
             locationID = location.getKey();
 
             //System.out.println(location.getValue());
@@ -208,10 +218,10 @@ public class DB {
 
 
 
-            String treeSpecies = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + TREE_SPECIES + "%" + '"' + ") ";
-            String dimensions = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + DIMENSIONS + "%" + '"' + ") ";
-            String sawset = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + SAWSET + "%" + '"' + ") ";
-            String moistureGoal = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + MOISTURE_GOAL + "%" + '"' + ") ";
+            if (!treespeciesRemoved) treeSpecies = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + TREE_SPECIES + "%" + '"' + ") ";
+            if (!dimensionsRemoved) dimensions = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + DIMENSIONS + "%" + '"' + ") ";
+            if (!sawsetRemoved) sawset = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + SAWSET + "%" + '"' + ") ";
+            if (!moistureRemoved) moistureGoal = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + MOISTURE_GOAL + "%" + '"' + ") ";
 
 
             // Input parameters
@@ -229,34 +239,40 @@ public class DB {
             }
 
             Map<Integer, Map<String, Number>> results = new TreeMap<>();
+            results = getKwh(getZeroPointDate(locationID, extraInputParameter, nameParameter, kilinName, kilinID, startDryingTime, stopDryingTime, valmeticsTableName, limit),
+                    locationID, kwhTableName, KwhName, timestamp,valueIDName, valueID, index);
 
-            while (true) {
-                System.out.printf("\nExtra parameters:\n %s\n\n", extraInputParameter);
-                // Retrieves the dates
-                //results = getKwh(getZeroPointDate(locationID, extraInputParameter, nameParameter, kilinName, kilinID, startDryingTime, stopDryingTime, valmeticsTableName, limit));
-                results = getKwh(getZeroPointDate(locationID, extraInputParameter, nameParameter, kilinName, kilinID, startDryingTime, stopDryingTime, valmeticsTableName, limit),
-                        locationID, kwhTableName, KwhName, timestamp,valueIDName, valueID, index);
-
-                // Checks if any dates where found, if not parameters are removed until dates are found
-                if (results.size() < NUMBER_OF_PERIODS) {
-                    if (extraInputParameter.contains(sawset)) {
-                        extraInputParameter = extraInputParameter.replace(sawset, "");
-                        System.out.println("Sawset is removed");
-                    } else if (extraInputParameter.contains(treeSpecies)) {
-                        extraInputParameter = extraInputParameter.replace(treeSpecies, "");
-                        System.out.println("Tree species is removed");
-                    } else if (extraInputParameter.contains(dimensions)) {
-                        extraInputParameter = extraInputParameter.replace(dimensions, "");
-                        System.out.println("Dimensions is removed");
-                    } else if (extraInputParameter.contains(moistureGoal)) {
-                        extraInputParameter = extraInputParameter.replace(moistureGoal, "");
-                        System.out.println("Moisture goal is removed");
-                    } else break;
-                } else break;
-            }
             allDryingPeriods.putAll(results);
             index += results.size();
         }
+
+        while (true) {
+            System.out.printf("\nExtra parameters:\n %s\n\n", extraInputParameter);
+            // Retrieves the dates
+            //results = getKwh(getZeroPointDate(locationID, extraInputParameter, nameParameter, kilinName, kilinID, startDryingTime, stopDryingTime, valmeticsTableName, limit));
+
+            // Checks if any dates where found, if not parameters are removed until dates are found
+            if (allDryingPeriods.size() < NUMBER_OF_PERIODS) {
+                if (extraInputParameter.contains(sawset) && !sawsetRemoved) {
+                    extraInputParameter = extraInputParameter.replace(sawset, "");
+                    System.out.println("Sawset is removed");
+                    setInputParameters(true,false,false,false);
+                } else if (extraInputParameter.contains(treeSpecies) && !treespeciesRemoved) {
+                    extraInputParameter = extraInputParameter.replace(treeSpecies, "");
+                    System.out.println("Tree species is removed");
+                    setInputParameters(true,true,false,false);
+                } else if (extraInputParameter.contains(dimensions) && !dimensionsRemoved) {
+                    extraInputParameter = extraInputParameter.replace(dimensions, "");
+                    System.out.println("Dimensions is removed");
+                    setInputParameters(true,true,true,false);
+                } else if (extraInputParameter.contains(moistureGoal) && !moistureRemoved) {
+                    extraInputParameter = extraInputParameter.replace(moistureGoal, "");
+                    System.out.println("Moisture goal is removed");
+                    setInputParameters(true,true,true,true);
+                } else break;
+            } else break;
+        }
+
         System.out.println(allDryingPeriods.size());
         for (Map.Entry<Integer, Map<String, Number>> entry : allDryingPeriods.entrySet()) {
             System.out.printf("Timestamp: \t%s\t\t\tkWh: \t%s\n", entry.getKey(), entry.getValue());
diff --git a/src/main/java/com/application/GUI/InputPopUpWindow.java b/src/main/java/com/application/GUI/InputPopUpWindow.java
index 3477f80..b304471 100644
--- a/src/main/java/com/application/GUI/InputPopUpWindow.java
+++ b/src/main/java/com/application/GUI/InputPopUpWindow.java
@@ -4,10 +4,13 @@ import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
 import javafx.geometry.Pos;
 import javafx.scene.*;
+import javafx.scene.chart.LineChart;
 import javafx.scene.control.*;
 import javafx.scene.layout.*;
 import javafx.stage.*;
 
+import java.util.concurrent.*;
+
 import static com.application.DB.Constants.*;
 import static com.application.Main.*;
 import static com.application.DB.DB.setInputParameters;
@@ -22,6 +25,19 @@ import static com.application.GUI.LineChartFunctionality.loadSingleSeries;
  */
 public class InputPopUpWindow {
 
+    public static CompletableFuture<LineChart<String, Number>> getData(){
+        CompletableFuture<LineChart<String, Number>> completableFuture = new CompletableFuture<>();
+
+        Executors.newCachedThreadPool().submit(() -> {
+            Thread.sleep(500);
+            completableFuture.complete(loadSingleSeries(setInputParameters(false,
+                    false,false,false)));
+            return null;
+        });
+
+        return completableFuture;
+    }
+
     public static void display() {
         Stage window = new Stage();
 
@@ -110,10 +126,18 @@ public class InputPopUpWindow {
                     MOISTURE_GOAL = moistureList.getValue();
 
                     // If the input is null, sets the value to be empty
-                    if(treeSpeciesList.getValue() == null){TREE_SPECIES = "";}
-                    if(dimensionsList.getValue() == null){DIMENSIONS = "";}
-                    if(sawsetList.getValue() == null){SAWSET = "";}
-                    if(moistureList.getValue() == null){MOISTURE_GOAL = "";}
+                    if (treeSpeciesList.getValue() == null) {
+                        TREE_SPECIES = "";
+                    }
+                    if (dimensionsList.getValue() == null) {
+                        DIMENSIONS = "";
+                    }
+                    if (sawsetList.getValue() == null) {
+                        SAWSET = "";
+                    }
+                    if (moistureList.getValue() == null) {
+                        MOISTURE_GOAL = "";
+                    }
 
                     setTreeSpeciesText(TREE_SPECIES);
                     setDimensionsText(DIMENSIONS);
@@ -123,8 +147,30 @@ public class InputPopUpWindow {
                     window.close();
 
 
+
+
+/*
+                    FutureTask[] randomNumberTasks = new FutureTask[1];
+                    Callable callable = new CallableExample();
+                    randomNumberTasks[0] = new FutureTask(callable);
+                    Thread t = new Thread(randomNumberTasks[0]);
+                    t.start();
+
                     try {
-                        loadSingleSeries(setInputParameters());
+                        System.out.println(randomNumberTasks[0].get());
+                    } catch (InterruptedException | ExecutionException ex) {
+                        ex.printStackTrace();
+                    }
+
+                });
+
+ */
+
+
+
+                    try {
+                        getData();
+                        //loadSingleSeries(setInputParameters(false,false,false,false));
                         //loadMultipleSeries(setInputParameters());
                         //loadSingleSeries();
                         //loadMultipleSeries();
@@ -135,7 +181,11 @@ public class InputPopUpWindow {
 
                 );
 
-            /*
+
+
+
+
+/*
             try{
                 Thread thread = new Thread(new Runnable() {
 
@@ -143,7 +193,7 @@ public class InputPopUpWindow {
                     public void run() {
                         try {
                             // Henter her data fra databasen
-                            loadSingleSeries(setInputParameters());
+                            loadSingleSeries(setInputParameters(false,false,false,false));
                             //loadSingleSeries();
                             //loadMultipleSeries();
                         } catch (Exception ex) {
@@ -158,7 +208,7 @@ public class InputPopUpWindow {
                 }
                 );
 
-             */
+ */
 
 /*
                     // Fungerende ny thread!!@@@@@
diff --git a/target/classes/com/application/DB/DB.class b/target/classes/com/application/DB/DB.class
index b45465c0d555e36620039dc871257a81d7669b96..6238fce9aa2d95d0e06960ebaa0ba4fbb8944821 100644
GIT binary patch
delta 7703
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

delta 7140
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

diff --git a/target/classes/com/application/GUI/InputPopUpWindow.class b/target/classes/com/application/GUI/InputPopUpWindow.class
index c7a5a61caaaf14b86600a4d4bcf9d9e5cbb3e30b..67be2b11dadcc835d48052b6830ed4398ec413d8 100644
GIT binary patch
delta 3583
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

delta 2435
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
bZ5gc?BpD7cFz|s3-GdCw42KvFGaLZ`lbQ$h

-- 
GitLab