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