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; + } +}