From db99f2657d45daa0dd8a6b685d457ed905451edd Mon Sep 17 00:00:00 2001 From: Nicholas Caughey Date: Mon, 17 Apr 2023 04:40:08 +0100 Subject: [PATCH] all data objects that were missing, added the put and delete endpoints, still lots of cleaning up to do do but all the basic database end points dune, no verification etc yet still to be added' --- src/main/java/dto/GitObj.java | 23 +++++++ src/main/java/dto/GitObjPayload.java | 23 +++++++ src/main/java/dto/PncObj.java | 21 ++++++ src/main/java/dto/PncObjPayload.java | 23 +++++++ src/main/java/rest/CreateStartScan.java | 90 +++++++++++++++++++++++++ src/main/java/rest/RemoveScan.java | 72 ++++++++++++++++++++ 6 files changed, 252 insertions(+) create mode 100644 src/main/java/dto/GitObj.java create mode 100644 src/main/java/dto/GitObjPayload.java create mode 100644 src/main/java/dto/PncObj.java create mode 100644 src/main/java/dto/PncObjPayload.java create mode 100644 src/main/java/rest/CreateStartScan.java create mode 100644 src/main/java/rest/RemoveScan.java diff --git a/src/main/java/dto/GitObj.java b/src/main/java/dto/GitObj.java new file mode 100644 index 0000000..bb99507 --- /dev/null +++ b/src/main/java/dto/GitObj.java @@ -0,0 +1,23 @@ +package dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; +import lombok.extern.jackson.Jacksonized; + +// import org.jboss.pnc.api.dto.Request; + +import java.io.Serializable; + +@ToString +@Getter +@AllArgsConstructor +@Jacksonized +@Builder +public class GitObj implements Serializable { + public String buildSystemType; + public String repository; + public String reference; + public String commitId; +} \ No newline at end of file diff --git a/src/main/java/dto/GitObjPayload.java b/src/main/java/dto/GitObjPayload.java new file mode 100644 index 0000000..bc9eda1 --- /dev/null +++ b/src/main/java/dto/GitObjPayload.java @@ -0,0 +1,23 @@ +package dto; + +import org.eclipse.microprofile.config.ConfigProvider; +// import org.jboss.pnc.api.deliverablesanalyzer.dto.AnalyzePayload; +// import org.jboss.pnc.api.dto.HeartbeatConfig; +// import org.jboss.pnc.api.dto.Request; + +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; +import java.sql.Struct; +import java.util.*; + +import org.json.JSONObject; +import org.json.JSONArray; + +import static constants.HttpHeaders.AUTHORIZATION_STRING; + +public class GitObjPayload { + public static GitObj constructScanPayload(JSONObject gitObj) throws URISyntaxException { + return new GitObj(gitObj.getString("buildSystemType"),gitObj.getString("repository"),gitObj.getString("reference"),gitObj.getString("commitId")); + } +} \ No newline at end of file diff --git a/src/main/java/dto/PncObj.java b/src/main/java/dto/PncObj.java new file mode 100644 index 0000000..285c05e --- /dev/null +++ b/src/main/java/dto/PncObj.java @@ -0,0 +1,21 @@ +package dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; +import lombok.extern.jackson.Jacksonized; + +// import org.jboss.pnc.api.dto.Request; + +import java.io.Serializable; + +@ToString +@Getter +@AllArgsConstructor +@Jacksonized +@Builder +public class PncObj implements Serializable { + public String buildSystemType; + public String buildId; +} \ No newline at end of file diff --git a/src/main/java/dto/PncObjPayload.java b/src/main/java/dto/PncObjPayload.java new file mode 100644 index 0000000..8c81217 --- /dev/null +++ b/src/main/java/dto/PncObjPayload.java @@ -0,0 +1,23 @@ +package dto; + +import org.eclipse.microprofile.config.ConfigProvider; +// import org.jboss.pnc.api.deliverablesanalyzer.dto.AnalyzePayload; +// import org.jboss.pnc.api.dto.HeartbeatConfig; +// import org.jboss.pnc.api.dto.Request; + +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; +import java.sql.Struct; +import java.util.*; + +import org.json.JSONObject; +import org.json.JSONArray; + +import static constants.HttpHeaders.AUTHORIZATION_STRING; + +public class PncObjPayload { + public static PncObj constructScanPayload(JSONObject pncObj) throws URISyntaxException { + return new PncObj(pncObj.getString("buildSystemType"),pncObj.getString("buildId")); + } +} \ No newline at end of file diff --git a/src/main/java/rest/CreateStartScan.java b/src/main/java/rest/CreateStartScan.java new file mode 100644 index 0000000..cd6a826 --- /dev/null +++ b/src/main/java/rest/CreateStartScan.java @@ -0,0 +1,90 @@ +package rest; + +import org.eclipse.microprofile.rest.client.inject.RestClient; +import dto.ScanObj; + +import javax.inject.Inject; +import javax.validation.Valid; +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PUT; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import org.json.JSONObject; +import org.json.JSONArray; +import dto.ScanObj; +import dto.ConnectDB; +import dto.ScanObjPayload; + +import javax.ws.rs.PathParam; + +import static constants.HttpHeaders.AUTHORIZATION_STRING; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.Statement; + +@Path("/startScan") +public class CreateStartScan { + + // @Inject + @RestClient + CreateScanService createScanService; + // ScanObjPayload scanObjPayload; + + @PUT + @Path("/{scanId}") + public ScanObj invokeScanAnalyze(@PathParam("scanId") String scanId) throws URISyntaxException { + ConnectDB connectDB = new ConnectDB(); + Connection conn = connectDB.connect(); + //this is ugly needs to berewritten + Statement stmt = null; + ScanObj finalScan = null; + + String sql = "SELECT * FROM scans WHERE scanid=" + scanId; + //need to add figure out an archieve system and wether its nessacery (archieve value??) + try{ + stmt = conn.createStatement(); + //terrible solution has to be a better way of doing this + ResultSet rs = stmt.executeQuery(sql); + + //fix for individual results (not resultset) + String a = null; + String b = null; + String c = null; + String d = null; + String e = null; + while (rs.next()) { + a = rs.getString("scanid"); + b = rs.getString("productid"); + c = rs.getString("eventid"); + d = rs.getString("ismanagedservice"); + e = rs.getString("componentlist"); + } + //TODO: need to add unique keys to DBs + finalScan = new ScanObj(a,b,c,d,e); + String copySql = "INSERT INTO archive (scanid, productid, eventid, ismanagedservice, componentlist) VALUES ('" +finalScan.scanId+"', '"+finalScan.productId+"', '"+finalScan.eventId+"', '"+finalScan.isManagedService+"', '"+finalScan.componentList+"')"; + stmt.executeUpdate(copySql); + + //TODO add proper checks + String deleteSql = "DELETE FROM scans WHERE scanid=" + scanId; + stmt.executeUpdate(deleteSql); + + //send task to the actual interface here using the resultset returned (should multiple scanids be allowed): + //once the task is complete AND we have confirmation that the scan is done run the following sql + + } catch (SQLException e){ + System.out.println(e); + } + return finalScan; + } +} diff --git a/src/main/java/rest/RemoveScan.java b/src/main/java/rest/RemoveScan.java new file mode 100644 index 0000000..51c73f3 --- /dev/null +++ b/src/main/java/rest/RemoveScan.java @@ -0,0 +1,72 @@ +package rest; + +import org.eclipse.microprofile.rest.client.inject.RestClient; +import dto.ScanObj; + +import javax.inject.Inject; +import javax.validation.Valid; +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PUT; +import javax.ws.rs.DELETE; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import org.json.JSONObject; +import org.json.JSONArray; +import dto.ScanObj; +import dto.ConnectDB; +import dto.ScanObjPayload; + +import javax.ws.rs.PathParam; + +import static constants.HttpHeaders.AUTHORIZATION_STRING; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.Statement; + +@Path("/deleteScan") +public class RemoveScan { + + // @Inject + @RestClient + CreateScanService createScanService; + // ScanObjPayload scanObjPayload; + + @DELETE + @Path("/{scanId}") + public boolean invokeScanAnalyze(@PathParam("scanId") String scanId) throws URISyntaxException { + ConnectDB connectDB = new ConnectDB(); + Connection conn = connectDB.connect(); + //this is ugly needs to berewritten + Statement stmt = null; + ScanObj finalScan = null; + //fix this + Boolean success = false; + String sql = "DELETE FROM scans WHERE scanid=" + scanId; + //need to add figure out an archieve system and wether its nessacery (archieve value??) + try{ + stmt = conn.createStatement(); + + //TODO add proper checks + stmt.executeUpdate(sql); + + //send task to the actual interface here using the resultset returned (should multiple scanids be allowed): + //once the task is complete AND we have confirmation that the scan is done run the following sql + + } catch (SQLException e){ + System.out.println(e); + } + success = true; + return success; + } +}