From 06c9182275cc024a4015a5e85299f54e98dcbf4f Mon Sep 17 00:00:00 2001
From: Madzarn <mads.arnesen@hotmail.com>
Date: Thu, 24 Feb 2022 14:16:41 +0100
Subject: [PATCH] Added import for CalculatedStart og CalculatedStop

---
 .../java/com/application/DataBase/DB.java     | 180 +++++++++++++++++-
 src/main/java/com/application/Main.java       |   2 -
 .../classes/com/application/Credentials.class | Bin 370 -> 379 bytes
 .../classes/com/application/DataBase/DB.class | Bin 8779 -> 7823 bytes
 target/classes/com/application/Main.class     | Bin 1550 -> 1550 bytes
 5 files changed, 178 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/application/DataBase/DB.java b/src/main/java/com/application/DataBase/DB.java
index fa8c89b..37d3484 100644
--- a/src/main/java/com/application/DataBase/DB.java
+++ b/src/main/java/com/application/DataBase/DB.java
@@ -25,6 +25,8 @@ import java.util.List;
 
 public class DB {
 
+
+    /*
     Credentials credentialsObject;
 
     private static void insertSampleData() {
@@ -75,7 +77,9 @@ public class DB {
     }
 
     public static GoogleCredentials getCredentials() throws Exception {
-        File credentialsPath = new File(".\\src\\main\\resources\\com.application\\sf-drying-optimization-1e234ad2b0f4.json");
+        //File credentialsPath = new File(".\\src\\main\\resources\\com.application\\sf-drying-optimization-1e234ad2b0f4.json");
+
+        File credentialsPath = new File("/Users/Madzarn/Desktop/bacheloroppgave_2022/src/main/resources/com.application/sf-drying-optimization-1e234ad2b0f4.json");
 
         // Load credentials from JSON key file. If you can't set the GOOGLE_APPLICATION_CREDENTIALS
         // environment variable, you can explicitly load the credentials file to construct the
@@ -98,10 +102,17 @@ public class DB {
                 setProjectId("sf-drying-optimization")
                 .build().getService();
 
+        //final String GET_WORD_COUNT = "SELECT InTidTork, UtTidTork FROM sf-drying-optimization.124.int_gs_ds_sipalpackages WHERE InTidTork BETWEEN \"2020-05-14 12:51:03\" AND \"2020-05-17 16:10:09\" ORDER BY InTidTork";
+
         // Step 2: Prepare query job
         // A "QueryJob" is a type of job that executes SQL queries
         // we create a new job configuration from our SQL query and
-        final String GET_WORD_COUNT = "SELECT VariantValue, TimeStamp FROM sf-drying-optimization.124.int_sd_winccsensordata WHERE TimeStamp BETWEEN \"2020-06-09\" AND \"2020-06-29\" ORDER BY TimeStamp";
+        final String GET_WORD_COUNT = "SELECT VariantValue, TimeStamp FROM sf-drying-optimization.124.int_sd_winccsensordata " +
+                "WHERE TimeStamp BETWEEN \""
+                + inTidTork +
+                "\" AND \""
+                + utTidTork +
+                "\" ORDER BY TimeStamp";
 
                         QueryJobConfiguration queryConfig =
                 QueryJobConfiguration.newBuilder(GET_WORD_COUNT).build();
@@ -167,4 +178,169 @@ public class DB {
     }
 
 
+
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+    Credentials credentialsObject2;
+
+    private static void insertSampleData2() {
+        // Step 1: Initialize BigQuery service
+        BigQuery bigquery = BigQueryOptions.newBuilder().setProjectId("sf-drying-optimization")
+                .build().getService();
+
+        // Step 2: Create insertAll (streaming) request
+        InsertAllRequest insertAllRequest = getInsertRequest2();
+
+        // Step 3: Insert data into table
+        InsertAllResponse response = bigquery.insertAll(insertAllRequest);
+
+        // Step 4: Check for errors and print results
+        if (response.hasErrors()) {
+            for (Map.Entry<Long, List<BigQueryError>> entry : response.getInsertErrors()
+                    .entrySet()) {
+                System.out.printf("error in entry %d: %s", entry.getKey(),
+                        entry.getValue().toString());
+            }
+            return;
+        }
+        System.out.println("inserted successfully");
+    }
+
+    // To create a streaming insert request, we need to specify the table and dataset id
+    // and create the rows we want to insert
+    private static InsertAllRequest getInsertRequest2() {
+        String datasetId = "sample_dataset";
+        String tableId = "vegetables";
+        return InsertAllRequest.newBuilder(datasetId, tableId).addRow(getRow(1, "carrot"))
+                .addRow(getRow(2, "beans")).build();
+
+    }
+
+    private static Map<String, Object> getRow(int id, String vegetableName) {
+        Map<String, Object> rowMap = new HashMap<String, Object>();
+        rowMap.put("id", id);
+        rowMap.put("name", vegetableName);
+        return rowMap;
+    }
+
+    // each row is a map with the row name as the key and row value as the value
+    // since the value type is "Object" it can take any arbitrary type, based on
+    // the datatype of the row defined on BigQuery
+
+
+    public static void main(String... args) throws Exception {
+        getFromExistingTable2();
+    }
+
+    public static GoogleCredentials getCredentials2() throws Exception {
+        //File credentialsPath = new File(".\\src\\main\\resources\\com.application\\sf-drying-optimization-1e234ad2b0f4.json");
+
+        File credentialsPath = new File("/Users/Madzarn/Desktop/bacheloroppgave_2022/src/main/resources/com.application/sf-drying-optimization-1e234ad2b0f4.json");
+
+        // Load credentials from JSON key file. If you can't set the GOOGLE_APPLICATION_CREDENTIALS
+        // environment variable, you can explicitly load the credentials file to construct the
+        // credentials.
+        GoogleCredentials credentials;
+        try (FileInputStream serviceAccountStream = new FileInputStream(credentialsPath)) {
+            credentials = ServiceAccountCredentials.fromStream(serviceAccountStream);
+        }
+        return credentials;
+    }
+
+    private static void getFromExistingTable2() throws Exception {
+
+        // Step 1: Initialize BigQuery service
+        // Here we set our project ID and get the `BigQuery` service object
+        // this is the interface to our BigQuery instance that
+        // we use to execute jobs on
+        BigQuery bigquery = BigQueryOptions.newBuilder().
+                setCredentials(getCredentials2()).
+                setProjectId("sf-drying-optimization")
+                .build().getService();
+
+
+
+        // Step 2: Prepare query job
+        // A "QueryJob" is a type of job that executes SQL queries
+        // we create a new job configuration from our SQL query and
+        final String GET_WORD_COUNT = "SELECT CalculatedStart, CalculatedStop FROM sf-drying-optimization.124.int_dk_valmaticsdryingbatches WHERE CalculatedStart BETWEEN \"2021-08-17 07:53:21\" AND \"2021-10-02 14:42:39\" ORDER BY CalculatedStart";
+
+        QueryJobConfiguration queryConfig =
+                QueryJobConfiguration.newBuilder(GET_WORD_COUNT).build();
+
+        // Step 3: Run the job on BigQuery
+        // create a `Job` instance from the job configuration using the BigQuery service
+        // the job starts executing once the `create` method executes
+        Job queryJob = bigquery.create(JobInfo.newBuilder(queryConfig).build());
+        queryJob = queryJob.waitFor();
+        // the waitFor method blocks until the job completes
+        // and returns `null` if the job doesn't exist anymore
+        if (queryJob == null) {
+            throw new Exception("job no longer exists");
+        }
+        // once the job is done, check if any error occured
+        if (queryJob.getStatus().getError() != null) {
+            throw new Exception(queryJob.getStatus().getError().toString());
+        }
+
+        // Step 4: Display results
+        // Print out a header line, and iterate through the
+        // query results to print each result in a new line
+        System.out.println("CalculatedStart\tCalculatedStop");
+        TableResult result = queryJob.getQueryResults();
+        for (FieldValueList row : result.iterateAll()) {
+            // We can use the `get` method along with the column
+            // name to get the corresponding row entry
+            String calculatedStart = row.get("CalculatedStart").getStringValue();
+            String calculatedStop = row.get("CalculatedStop").getStringValue();
+            System.out.printf("%s\t%s\n", calculatedStart, calculatedStop);
+        }
+    }
+
+  /*  private static void insertViaQuery2() throws Exception {
+
+        // Step 1: Initialize BigQuery service
+        BigQuery bigquery = BigQueryOptions.newBuilder().setProjectId("sample-project-330313")
+                .build().getService();
+
+        // Step 2: Prepare query job
+        final String INSERT_VEGETABLES =
+                "INSERT INTO `sample-project-330313.sample_dataset.vegetables` (id, name) VALUES (1, 'carrot'), (2, 'beans');";
+        QueryJobConfiguration queryConfig =
+                QueryJobConfiguration.newBuilder(INSERT_VEGETABLES).build();
+
+
+        // Step 3: Run the job on BigQuery
+        Job queryJob = bigquery.create(JobInfo.newBuilder(queryConfig).build());
+        queryJob = queryJob.waitFor();
+        if (queryJob == null) {
+            throw new Exception("job no longer exists");
+        }
+        // once the job is done, check if any error occured
+        if (queryJob.getStatus().getError() != null) {
+            throw new Exception(queryJob.getStatus().getError().toString());
+        }
+
+        // Step 4: Display results
+        // Here, we will print the total number of rows that were inserted
+        JobStatistics.QueryStatistics stats = queryJob.getStatistics();
+        Long rowsInserted = stats.getDmlStats().getInsertedRowCount();
+        System.out.printf("%d rows inserted\n", rowsInserted);
+    }
+
+    
+       */
+
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java
index b20c57f..40b56ce 100644
--- a/src/main/java/com/application/Main.java
+++ b/src/main/java/com/application/Main.java
@@ -32,8 +32,6 @@ public class Main extends Application {
         // Loading the GUI-fxml file from resources
         Parent root = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/com.application/GUI/graphical_user_interface.fxml")));
 
-        // Loading the GUI-fxml file from resources
-         root = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/com.application/GUI/input.fxml")));
 
         // Sets the scene and defines boundaries
         Scene scene = new Scene(root, 1200, 600);
diff --git a/target/classes/com/application/Credentials.class b/target/classes/com/application/Credentials.class
index 68f97c5ee7aaa1dc208d9fbcad0e9cbcdee30942..4b4b4931f691818234e43e1beff85814d2969ca7 100644
GIT binary patch
delta 33
pcmeyw^qXnINpZ2_G~JY<%FMiU-TZ=*%-qbX#FEVXyouLm0|4uw4q^ZR

delta 24
gcmey(^oeQ0Nj_fR$oPODe=k?(ka$m*i4SH20CmU-dH?_b

diff --git a/target/classes/com/application/DataBase/DB.class b/target/classes/com/application/DataBase/DB.class
index bcdfb2c47b692138349417763b3102b135156c6f..97e133c7c78f7e2a47f84ce51ac1f3a8c9074bb6 100644
GIT binary patch
delta 2924
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

delta 3801
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
I3|~Ov0ER_d0{{R3

diff --git a/target/classes/com/application/Main.class b/target/classes/com/application/Main.class
index 69c4841e149a06ce1a54f8eb35273e6fd9cbd1cd..3505afcd047704f5fc9996beaba9d4649bf885a2 100644
GIT binary patch
delta 57
zcmeC<>Eqe(f`yT9@=F#QR$&Gf29e2Htj)5D3}Otb45|!j3|b8842BFE3>FNU47Lnf
N42}%ilTWd_0038r3RwUE

delta 57
zcmeC<>Eqe(f`yTP@=F#QRuKjk2GPk{tj)4Y3}OuG45|zo3|b7D42BF^3>FO947Ln9
N42}%ClTWd_003DU3TprW

-- 
GitLab