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