diff --git a/src/main/java/dto/BrewObjPayload.java b/src/main/java/dto/BrewObjPayload.java index 2252837..57c2ad9 100644 --- a/src/main/java/dto/BrewObjPayload.java +++ b/src/main/java/dto/BrewObjPayload.java @@ -1,19 +1,20 @@ package dto; -import java.net.URISyntaxException; +import org.json.JSONException; import org.json.JSONObject; -import static constants.HttpHeaders.AUTHORIZATION_STRING; - public class BrewObjPayload { - public static BrewObj constructScanPayload(JSONObject brewObj) throws URISyntaxException { + + public static BrewObj constructScanPayload(JSONObject jsonObj) throws JSONException { return new BrewObj( - brewObj.getString("buildSystemType"), - brewObj.getString("brewId"), - brewObj.getString("brewNVR"), - brewObj.getString("pncId"), - brewObj.getString("artifactType"), - brewObj.getString("fileName"), - brewObj.getBoolean("builtfromSource")); + jsonObj.getString("buildSystemType"), + jsonObj.getString("brewId"), + jsonObj.getString("brewNVR"), + jsonObj.getString("pncId"), + jsonObj.getString("artifactType"), + jsonObj.getString("fileName"), + jsonObj.getBoolean("builtfromSource")); } + + private BrewObjPayload() {} } diff --git a/src/main/java/dto/ConnectDB.java b/src/main/java/dto/ConnectDB.java index db73c09..ff7f535 100644 --- a/src/main/java/dto/ConnectDB.java +++ b/src/main/java/dto/ConnectDB.java @@ -1,5 +1,7 @@ package dto; +import org.json.JSONException; + import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; @@ -9,24 +11,15 @@ import static constants.PSGQL.password; import static constants.PSGQL.url; public class ConnectDB { - // private final String url = "jdbc:postgresql://localhost:5432/scandb"; - // private final String user = "postgres"; - // private final String password = "password"; - /** - * Connect to the PostgreSQL database - * - * @return a Connection object - */ - public Connection connect() { - Connection conn = null; + public Connection connect() throws JSONException { try { - conn = DriverManager.getConnection(url, user, password); + Connection conn = DriverManager.getConnection(url, user, password); System.out.println("Connected to the PostgreSQL server successfully."); + return conn; } catch (SQLException e) { System.out.println(e.getMessage()); } - - return conn; + return null; } } diff --git a/src/main/java/dto/GitObjPayload.java b/src/main/java/dto/GitObjPayload.java index 9bc5ffb..ad8bc5b 100644 --- a/src/main/java/dto/GitObjPayload.java +++ b/src/main/java/dto/GitObjPayload.java @@ -1,16 +1,17 @@ package dto; -import java.net.URISyntaxException; +import org.json.JSONException; import org.json.JSONObject; -import static constants.HttpHeaders.AUTHORIZATION_STRING; - public class GitObjPayload { - public static GitObj constructScanPayload(JSONObject gitObj) throws URISyntaxException { + + public static GitObj constructScanPayload(JSONObject jsonObj) throws JSONException { return new GitObj( - gitObj.getString("buildSystemType"), - gitObj.getString("repository"), - gitObj.getString("reference"), - gitObj.getString("commitId")); + jsonObj.getString("buildSystemType"), + jsonObj.getString("repository"), + jsonObj.getString("reference"), + jsonObj.getString("commitId")); } + + private GitObjPayload() {} } diff --git a/src/main/java/dto/PncObjPayload.java b/src/main/java/dto/PncObjPayload.java index e8b106c..ad43edd 100644 --- a/src/main/java/dto/PncObjPayload.java +++ b/src/main/java/dto/PncObjPayload.java @@ -1,14 +1,15 @@ package dto; -import java.net.URISyntaxException; +import org.json.JSONException; import org.json.JSONObject; -import static constants.HttpHeaders.AUTHORIZATION_STRING; - public class PncObjPayload { - public static PncObj constructScanPayload(JSONObject pncObj) throws URISyntaxException { + + public static PncObj constructScanPayload(JSONObject jsonObj) throws JSONException { return new PncObj( - pncObj.getString("buildSystemType"), - pncObj.getString("buildId")); + jsonObj.getString("buildSystemType"), + jsonObj.getString("buildId")); } + + private PncObjPayload() {} } diff --git a/src/main/java/dto/ScanObj.java b/src/main/java/dto/ScanObj.java index 8c04963..54fcc69 100644 --- a/src/main/java/dto/ScanObj.java +++ b/src/main/java/dto/ScanObj.java @@ -6,9 +6,10 @@ import lombok.Getter; import lombok.ToString; import lombok.extern.jackson.Jacksonized; +import java.io.Serializable; + //still need to fix all the scan objects to be significantly less poorly written //TODO add interface for the scan objects (is probably the cleanest solution) -import java.io.Serializable; @ToString @Getter diff --git a/src/main/java/dto/ScanObjPayload.java b/src/main/java/dto/ScanObjPayload.java index b9a8be1..c4e49e4 100644 --- a/src/main/java/dto/ScanObjPayload.java +++ b/src/main/java/dto/ScanObjPayload.java @@ -1,15 +1,17 @@ package dto; -import java.net.URISyntaxException; +import org.json.JSONException; import org.json.JSONObject; public class ScanObjPayload { - public static ScanObj constructScanPayload(JSONObject scanObj) throws URISyntaxException { + public static ScanObj constructScanPayload(JSONObject jsonObj) throws JSONException { return new ScanObj( - scanObj.getString("scanID"), - scanObj.getString("offeringId"), - scanObj.getString("eventID"), - scanObj.getString("isManagedService"), - scanObj.getString("componentList")); + jsonObj.getString("scanID"), + jsonObj.getString("offeringId"), + jsonObj.getString("eventID"), + jsonObj.getString("isManagedService"), + jsonObj.getString("componentList")); } + + private ScanObjPayload() {} } diff --git a/src/main/java/rest/CreateGetResource.java b/src/main/java/rest/CreateGetResource.java index 6fd3858..8f937db 100644 --- a/src/main/java/rest/CreateGetResource.java +++ b/src/main/java/rest/CreateGetResource.java @@ -3,14 +3,17 @@ package rest; import java.util.Collections; import java.util.LinkedHashMap; import java.util.Set; + import dto.ScanObj; import dto.ConnectDB; + import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; -import java.sql.*; - -// import org.hibernate.EntityManager; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; // @Path("/api/v1/[osh-scan]") @Path("/scanGet") @@ -22,7 +25,6 @@ public class CreateGetResource { private Set Scans = Collections.newSetFromMap(Collections.synchronizedMap(new LinkedHashMap<>())); - public CreateGetResource() { } diff --git a/src/main/java/rest/CreateScanRequest.java b/src/main/java/rest/CreateScanRequest.java index bbf0d11..d59c476 100644 --- a/src/main/java/rest/CreateScanRequest.java +++ b/src/main/java/rest/CreateScanRequest.java @@ -1,13 +1,5 @@ package rest; -import org.eclipse.microprofile.rest.client.inject.RestClient; -import javax.validation.Valid; -import javax.ws.rs.Consumes; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import java.net.URISyntaxException; -import java.sql.*; -import org.json.JSONObject; import dto.BrewObj; import dto.ConnectDB; import dto.BrewObjPayload; @@ -16,6 +8,18 @@ import dto.GitObjPayload; import dto.PncObj; import dto.PncObjPayload; +import org.eclipse.microprofile.rest.client.inject.RestClient; +import org.json.JSONObject; + +import javax.validation.Valid; +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import java.net.URISyntaxException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; + @Path("/scanRequest") public class CreateScanRequest { @@ -27,7 +31,7 @@ public class CreateScanRequest { @Path("/brew") @Consumes({ "application/json" }) // in theory should take List to clean it up - public BrewObj invokeBrewScanAnalyze(@Valid String scanInvocation) throws URISyntaxException { + public BrewObj invokeBrewScanAnalyze(@Valid String scanInvocation) throws URISyntaxException { JSONObject jsonData = new JSONObject(scanInvocation); BrewObj brewObj = BrewObjPayload.constructScanPayload(jsonData); ConnectDB connectDB = new ConnectDB(); diff --git a/src/main/java/rest/CreateScanResource.java b/src/main/java/rest/CreateScanResource.java index df83367..916786e 100644 --- a/src/main/java/rest/CreateScanResource.java +++ b/src/main/java/rest/CreateScanResource.java @@ -1,17 +1,20 @@ package rest; -import dto.*; +import dto.ConnectDB; +import dto.ScanObjPayload; +import dto.ScanObj; + import org.eclipse.microprofile.rest.client.inject.RestClient; +import org.json.JSONObject; + import javax.validation.Valid; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import java.net.URISyntaxException; -import java.sql.*; -import org.json.JSONObject; -import dto.ScanObj; - -import static constants.HttpHeaders.AUTHORIZATION_STRING; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; @Path("/") public class CreateScanResource { diff --git a/src/main/java/rest/CreateStartScan.java b/src/main/java/rest/CreateStartScan.java index 85fd1d2..a689716 100644 --- a/src/main/java/rest/CreateStartScan.java +++ b/src/main/java/rest/CreateStartScan.java @@ -1,14 +1,18 @@ package rest; import dto.ConnectDB; -import org.eclipse.microprofile.rest.client.inject.RestClient; import dto.ScanObj; + +import org.eclipse.microprofile.rest.client.inject.RestClient; + import javax.ws.rs.Path; import javax.ws.rs.PUT; import javax.ws.rs.PathParam; import java.net.URISyntaxException; -import java.sql.*; - +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; @Path("/startScan") public class CreateStartScan { @@ -23,8 +27,12 @@ public class CreateStartScan { ConnectDB connectDB = new ConnectDB(); try (Connection conn = connectDB.connect()) { finalScan = selectDataForArchiving(conn, scanId); - ArchiveSelectedScans(conn, finalScan); - PostArchivingCleanup(conn, scanId); + if (finalScan != null) { + ArchiveSelectedScans(conn, finalScan); + PostArchivingCleanup(conn, scanId); + } else { + System.out.println("No data match found for scan ID=" + scanId); + } } catch (SQLException e) { System.out.println(e.getMessage()); } diff --git a/src/main/java/rest/RemoveScan.java b/src/main/java/rest/RemoveScan.java index efc0d19..17e6cc6 100644 --- a/src/main/java/rest/RemoveScan.java +++ b/src/main/java/rest/RemoveScan.java @@ -1,70 +1,38 @@ package rest; +import dto.ConnectDB; + 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.PreparedStatement; 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 { + public boolean invokeScanAnalyze(@PathParam("scanId") String scanId) { + Boolean rc = false; + //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 + String qry = "DELETE FROM scans WHERE scanid=?"; 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 - conn.close(); - } catch (SQLException e){ - System.out.println(e); - } - success = true; - return success; + try(Connection conn = connectDB.connect(); + PreparedStatement pstmt = conn.prepareStatement(qry)) { + pstmt.setString(1, scanId); + pstmt.executeUpdate(); + rc = true; + } catch (SQLException e) { + System.out.println(e.getMessage()); + } + return rc; } } diff --git a/src/test/java/dto/TestPayload.java b/src/test/java/dto/TestPayload.java new file mode 100644 index 0000000..aab36ee --- /dev/null +++ b/src/test/java/dto/TestPayload.java @@ -0,0 +1,75 @@ +package dto; + +import org.json.JSONObject; +import org.junit.jupiter.api.Test; + +class TestPayload { + + @Test + void TestBrew() { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("buildSystemType", "brew"); + jsonObject.put("brewId", "1"); + jsonObject.put("brewNVR", "1.1.0"); + jsonObject.put("pncId", "153"); + jsonObject.put("artifactType", "arti1"); + jsonObject.put("fileName", "myfile1"); + jsonObject.put("builtfromSource", true); + + BrewObj brewObj1 = BrewObjPayload.constructScanPayload(jsonObject); + BrewObj brewObj2 = new BrewObj( + jsonObject.getString("buildSystemType"), + jsonObject.getString("brewId"), + jsonObject.getString("brewNVR"), + jsonObject.getString("pncId"), + jsonObject.getString("artifactType"), + jsonObject.getString("fileName"), + jsonObject.getBoolean("builtfromSource")); + System.out.println("BrewObj1: " + brewObj1.toString()); + System.out.println("BrewObj2: " + brewObj2.toString()); + assert(brewObj1.getBuildSystemType().equals(brewObj2.getBuildSystemType())); + assert(brewObj1.getBrewId().equals(brewObj2.getBrewId())); + assert(brewObj1.getBrewNvr().equals(brewObj2.getBrewNvr())); + assert(brewObj1.getPncId().equals(brewObj2.getPncId())); + assert(brewObj1.getArtifactType().equals(brewObj2.getArtifactType())); + assert(brewObj1.getFileName().equals(brewObj2.getFileName())); + assert(brewObj1.getBuiltFromSource() == brewObj2.getBuiltFromSource()); + } + + @Test + void TestGit() { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("buildSystemType", "git"); + jsonObject.put("repository", "repo"); + jsonObject.put("reference", "ref"); + jsonObject.put("commitId", "comid"); + + GitObj gitObj1 = GitObjPayload.constructScanPayload(jsonObject); + GitObj gitObj2 = new GitObj( + jsonObject.getString("buildSystemType"), + jsonObject.getString("repository"), + jsonObject.getString("reference"), + jsonObject.getString("commitId")); + System.out.println("GitObj1: " + gitObj1.toString()); + System.out.println("GitObj2: " + gitObj2.toString()); + assert(gitObj1.getBuildSystemType().equals(gitObj2.getBuildSystemType())); + assert(gitObj1.getRepository().equals(gitObj2.getRepository())); + assert(gitObj1.getReference().equals(gitObj2.getReference())); + assert(gitObj1.getCommitId().equals(gitObj2.getCommitId())); + } + + @Test + void TestPnc() { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("buildSystemType", "pnc"); + jsonObject.put("buildId", "153"); + + PncObj pncObj1 = PncObjPayload.constructScanPayload(jsonObject); + PncObj pncObj2 = new PncObj(jsonObject.getString("buildSystemType"), jsonObject.getString("buildId")); + System.out.println("PncObj1: " + pncObj1.toString()); + System.out.println("PncObj2: " + pncObj2.toString()); + assert(pncObj1.getBuildSystemType().equals(pncObj2.getBuildSystemType())); + assert(pncObj1.getBuildId().equals(pncObj2.getBuildId())); + } + +}