diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java index 4c7abb95039f8e54fa497bea9af88469015d1ba1..da40820ae3c062b766189fea6c92cb55048adcd1 100644 --- a/src/main/java/com/application/DB/Constants.java +++ b/src/main/java/com/application/DB/Constants.java @@ -19,17 +19,17 @@ public final class Constants { public static final String TODAYS_DATE = format.format(LocalDateTime.now()); // User inputs - public static final String TREE_SPECIES = ""; - public static final String WIDTH_DIMENTION = ""; - public static final String HEIGHT_DIMENTION = ""; - public static final String SAWSET = ""; - public static final int MOISTURE_GOAL = 0; + public static String TREE_SPECIES = ""; + public static String WIDTH_DIMENTION = ""; + public static String HEIGHT_DIMENTION = ""; + public static String SAWSET = ""; + public static String MOISTURE_GOAL = ""; // Database ID/name public static final String PROJECT_ID = "sf-drying-optimization"; - /* +/* // Location Valasen(124) // Project settings public static final int LOCATION_ID = 124; @@ -38,20 +38,22 @@ public final class Constants { // Parameters settings // Valmatics - public static final String OTHER_PARAMETERS_NAME = "Name"; + public static final String NAME_PARAMATERS = "Name"; public static final String START_DRYING_NAME = "DryingStarted"; public static final String STOP_DRYING_NAME = "CalculatedStop"; public static final String KILIN_NAME = "KilnName"; - public static int KILIN_ID = 5; + public static int KILIN_ID = 5; // Kammer 5 + //public static int KILIN_ID = 6; // Kammer 6 // Winccsensordata public static final String KWH_NAME = "VariantValue"; public static final String TIMESTAMP_NAME = "Timestamp"; public static final String VALUE_ID_NAME = "ValueID"; - public static final int VALUE_ID = 51; + public static final int VALUE_ID = 51; // Kammer 5 + //public static final int VALUE_ID = 56; // Kammer 6 public static final int LIMIT = 1000; - */ + */ @@ -65,12 +67,12 @@ public final class Constants { // Parameters settings // Valmatics - public static final String OTHER_PARAMETERS_NAME = "Name"; + public static final String NAME_PARAMATERS = "Name"; public static final String START_DRYING_NAME = "DryingStarted"; public static final String STOP_DRYING_NAME = "DryingCompleted"; public static final String KILIN_NAME = "KilinId"; - //public static int KILIN_ID = 18; - public static int KILIN_ID = 18133; + public static int KILIN_ID = 18; + //public static int KILIN_ID = 18554; // Swappconsensordata public static final String KWH_NAME = "RealValue"; @@ -84,4 +86,7 @@ public final class Constants { + + + } diff --git a/src/main/java/com/application/DB/DB.java b/src/main/java/com/application/DB/DB.java index 0392a00b38628eaff02cfa5b8f7a854020258913..b9539a55a2b31cf16b96731e9f057f9e0740d3e0 100644 --- a/src/main/java/com/application/DB/DB.java +++ b/src/main/java/com/application/DB/DB.java @@ -9,7 +9,6 @@ import java.io.FileInputStream; import java.text.SimpleDateFormat; import java.util.*; - import static com.application.DB.Constants.*; /** @@ -140,29 +139,12 @@ public class DB { int index = 0; - /* - final String sqlStatement = "SELECT TimeStamp, VariantValue " + - "FROM sf-drying-optimization.124.int_sd_winccsensordata " + - "WHERE TimeStamp BETWEEN \"2021-01-30 08:51:03\" " + - "AND \"2021-02-15 11:10:09\" ORDER BY TimeStamp ASC"; - */ - for (Map.Entry<String, String> entry : getZeroPointDate().entrySet()) { //System.out.printf("Intid: \t%s\t\t\tOuttid: \t%s\n",entry.getKey(),entry.getValue()); // Initializing the data map to store the results Map<String, Number> data = new HashMap<>(); - // Preparing a query statement - /* - final String sqlStatement = "SELECT DISTINCT TimeStamp, VariantValue " + - "FROM `" + PROJECT_ID + "." + LOCATION_ID + "." + TABLE_NAME_KWH + "` " + - "WHERE TimeStamp BETWEEN " + '"'+ entry.getKey() + '"' + - " AND " + '"' + entry.getValue() + '"' + - " ORDER BY TimeStamp ASC"; - - */ - // Preparing a query statement // Query statement 124 Valåsen final String sqlStatement = "SELECT `" + TIMESTAMP_NAME + "`, `"+KWH_NAME+"` " + @@ -174,20 +156,6 @@ public class DB { " ORDER BY " + TIMESTAMP_NAME + " ASC"; - - /* - // Query statement 174 Årjang - final String sqlStatement = - "SELECT Timestamp, RealValue - "FROM `" + PROJECT_ID + "." + LOCATION_ID + "." + TABLE_NAME_KWH + "` " + - "WHERE TimeStamp BETWEEN " + '"'+ entry.getKey() + '"' + - " AND " + '"' + entry.getValue() + '"' + - "AND ValueID = 19 " + - "AND RealValue <> 0 " + - "ORDER BY TimeStamp ASC"; - - */ - System.out.println(sqlStatement); // Iterating through the results @@ -279,10 +247,28 @@ public class DB { // KILIN_ID starts at 0 not 1 in the database. KILIN_ID -= 1; } + // Input parameters + if(!TREE_SPECIES.isEmpty()){ + extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ TREE_SPECIES +"%"+'"'+" "; + } + if(!WIDTH_DIMENTION.isEmpty()){ + extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ WIDTH_DIMENTION +"%"+'"'+" "; + } + if(!HEIGHT_DIMENTION.isEmpty()){ + extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ HEIGHT_DIMENTION +"%"+'"'+" "; + } + if(!SAWSET.isEmpty()){ + extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ SAWSET +"%"+'"'+" "; + } + if(!MOISTURE_GOAL.isEmpty()){ + extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ MOISTURE_GOAL +"%"+'"'+" "; + } + + // Sqlstatement for Valåsen(124) final String sqlStatement = - "SELECT MAX("+OTHER_PARAMETERS_NAME+") as DryingSchedule, MAX("+KILIN_NAME+") as Kiln_ID, " + START_DRYING_NAME + ", MAX("+STOP_DRYING_NAME+") as DryingCompleted " + + "SELECT MAX("+ NAME_PARAMATERS +") as DryingSchedule, MAX("+KILIN_NAME+") as Kiln_ID, " + START_DRYING_NAME + ", MAX("+STOP_DRYING_NAME+") as DryingCompleted " + "FROM `" + PROJECT_ID + "." + LOCATION_ID + "." + TABLE_NAME_VALMATICS + "` " + "WHERE " + KILIN_NAME + " = " + KILIN_ID + " " + "AND "+START_DRYING_NAME+" BETWEEN \"1990-01-01 00:00:00\" AND \"" + TODAYS_DATE + "\" " + @@ -382,10 +368,20 @@ public class DB { } //System.out.printf("%s\t\t\t%s\n",formatedInTidTork,formatedUtTidTork); } + + // Defining a treemap to sort the data incrementally + NavigableMap<String, String> sortedFinalResults = new TreeMap<>(dates); + + for (Map.Entry<String, String> entry : sortedFinalResults.entrySet()) { + System.out.printf("Timestamp: \t%s\t\t\tkWh: \t%s\n",entry.getKey(),entry.getValue()); + } + System.out.printf("Size of dates: %s\n\n", dates.size()); + + // Returns a treemap that sorts the dates incrementally - return new TreeMap<>(dates); + return new TreeMap<>(sortedFinalResults); /* // Defining a treemap to sort through the data diff --git a/src/main/java/com/application/GUI/Input.java b/src/main/java/com/application/GUI/Input.java index 92a1612e2b5abcb173bc89804e01876f47d33206..d94d71d4c387be2c5b699a831ebaf519547d9023 100644 --- a/src/main/java/com/application/GUI/Input.java +++ b/src/main/java/com/application/GUI/Input.java @@ -6,9 +6,14 @@ import javafx.scene.control.*; import javafx.scene.layout.*; import javafx.stage.*; +import static com.application.DB.Constants.*; +import com.application.Main; /** * This class handles the popup input window + * + * @author Eilert Tunheim, Karin Pettersen, Mads Arnesen + * @version 1.0 */ public class Input { @@ -24,6 +29,7 @@ public class Input { inputLabel.setId("inputTop"); // Center - Input fields + // Tree species Label treeSpeciesInputLabel = new Label("Tree Species"); treeSpeciesInputLabel.setId("inputLabel"); TextField treeSpeciesInputText = new TextField(); @@ -31,18 +37,28 @@ public class Input { treeSpeciesInputText.setPromptText("Bjørk"); treeSpeciesInputText.getText(); - Label dimensionsInputLabel = new Label("Width x Height"); - dimensionsInputLabel.setId("inputLabel"); - TextField dimensionsInputText = new TextField(); - dimensionsInputText.setId("inputLabelText"); - dimensionsInputText.setPromptText("47 x 150"); - + // Width + Label widthInputLabel = new Label("Width"); + widthInputLabel.setId("inputLabel"); + TextField widthInputText = new TextField(); + widthInputText.setId("inputLabelText"); + widthInputText.setPromptText("47"); + + // Height + Label heightInputLabel = new Label("Height"); + heightInputLabel.setId("inputLabel"); + TextField heightInputText = new TextField(); + heightInputText.setId("inputLabelText"); + heightInputText.setPromptText("200"); + + // Sawset Label sawsetInputLabel = new Label("Sawset"); sawsetInputLabel.setId("inputLabel"); TextField sawsetInputText = new TextField(); sawsetInputText.setId("inputLabelText"); sawsetInputText.setPromptText("4x"); + // Moisture Label moistureGoalInputLabel = new Label("Moisture Goal"); moistureGoalInputLabel.setId("inputLabel"); TextField moistureGoalInputText = new TextField(); @@ -55,13 +71,23 @@ public class Input { startButton.setId("inputButtonStart"); startButton.setOnAction(e -> { - + TREE_SPECIES = treeSpeciesInputText.getText(); + WIDTH_DIMENTION = treeSpeciesInputText.getText(); + HEIGHT_DIMENTION = heightInputText.getText(); + SAWSET = sawsetInputText.getText(); + MOISTURE_GOAL = moistureGoalInputText.getText(); + + // Call på getKwh() + try { + Main.createLineChart(); + } catch (Exception ex) { + ex.printStackTrace(); + } window.close(); }); - VBox layout = new VBox(10); - layout.getChildren().addAll(inputLabel, treeSpeciesInputLabel, treeSpeciesInputText, dimensionsInputLabel, dimensionsInputText, + layout.getChildren().addAll(inputLabel, treeSpeciesInputLabel, treeSpeciesInputText, widthInputLabel, widthInputText, heightInputLabel, heightInputText, sawsetInputLabel, sawsetInputText, moistureGoalInputLabel, moistureGoalInputText, startButton); layout.setAlignment(Pos.CENTER); @@ -69,7 +95,6 @@ public class Input { scene.getStylesheets().add(Input.class.getResource("/com.application/CSS/styleSheet.css").toExternalForm()); window.setScene(scene); window.showAndWait(); - } } diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java index 24c69f3c004573f7c57534d91b257b8fcee0be01..2f19a2160608c3afa07cd341f7b1601a6ab7cac9 100644 --- a/src/main/java/com/application/Main.java +++ b/src/main/java/com/application/Main.java @@ -87,6 +87,7 @@ public class Main extends Application { this.sideBar.setId("sideBar"); lineChart.setId("lineChart"); + // Sett the menubar in a vbox inorder to stretch over the whole screen VBox vBox = new VBox(this.menuBar); @@ -175,6 +176,7 @@ public class Main extends Application { finish.setId("sideBarButtonFinish"); finish.setOnAction(e -> Input.display()); + // Creating the circular progressbar RingProgressIndicator ringProgressIndicator = new RingProgressIndicator(); ringProgressIndicator.setRingWidth(100); @@ -259,7 +261,7 @@ public class Main extends Application { } - private LineChart<String,Number> createLineChart() throws Exception { + public static LineChart<String,Number> createLineChart() throws Exception { final CategoryAxis xAxis = new CategoryAxis(); final NumberAxis yAxis = new NumberAxis(); diff --git a/src/main/resources/com.application/CSS/styleSheet.css b/src/main/resources/com.application/CSS/styleSheet.css index c6d1365567c3d9198418fef1bf0089ac70e7ca2e..54b83c3aa452a8106d95786adbda1fc6490ad038 100644 --- a/src/main/resources/com.application/CSS/styleSheet.css +++ b/src/main/resources/com.application/CSS/styleSheet.css @@ -55,9 +55,9 @@ #inputTop { -fx-alignment: top-center; -fx-font-size: 24; + -fx-font-weight: 700; -fx-font-family: Arial; - -fx-background-color: rgba(12, 76, 81, 1); - -fx-text-fill: white; + -fx-text-fill: rgba(12, 76, 81, 1); -fx-pref-width: 200; } diff --git a/target/classes/com/application/Main$1WorkerThread.class b/target/classes/com/application/Main$1WorkerThread.class index 6d7959dd02c2288d7396e77e03326f2aa0fbfcca..fc1cb79295b938a5ba6bc65d216611f6e1d0be64 100644 Binary files a/target/classes/com/application/Main$1WorkerThread.class and b/target/classes/com/application/Main$1WorkerThread.class differ diff --git a/target/classes/com/application/Main.class b/target/classes/com/application/Main.class index 298f3b433ab54354bbd403aa498e2291efa2336a..80979f33ddbb4b67750a37f6c45e96cd1f729d8e 100644 Binary files a/target/classes/com/application/Main.class and b/target/classes/com/application/Main.class differ