From 191322b23713563963e9e144353ed7a3e6402b72 Mon Sep 17 00:00:00 2001 From: Nicholas Caughey Date: Mon, 24 Apr 2023 14:21:34 +0100 Subject: [PATCH] added example of using hibernate orm, rest of the objects should be converted to use it (this will be the last commit straight to main proper branches should be used moving forwards) --- pom.xml | 32 +++++- src/main/java/dto/ScanInterface.java | 9 ++ src/main/java/dto/ScanObj.java | 1 + src/main/java/rest/CreateGetResource.java | 14 +++ src/main/java/rest/Scan.java | 43 ++++++++ src/main/java/rest/StoreData.java | 124 ++++++++++++++++++++++ src/main/resources/Scan.hbm.xml | 19 ++++ src/main/resources/application.properties | 4 +- src/main/resources/hibernate.cfg.xml | 21 ++++ 9 files changed, 261 insertions(+), 6 deletions(-) create mode 100644 src/main/java/dto/ScanInterface.java create mode 100644 src/main/java/rest/Scan.java create mode 100644 src/main/java/rest/StoreData.java create mode 100644 src/main/resources/Scan.hbm.xml create mode 100644 src/main/resources/hibernate.cfg.xml diff --git a/pom.xml b/pom.xml index 9f7aca9..a884d11 100644 --- a/pom.xml +++ b/pom.xml @@ -66,6 +66,26 @@ 42.6.0 + + + + + + org.hibernate + hibernate-core + + + org.glassfish.jaxb + jaxb-runtime + + + + + + io.quarkus + quarkus-jdbc-postgresql + + io.quarkus quarkus-resteasy-reactive-jackson @@ -92,11 +112,13 @@ validation-api 1.0.0.GA - - org.hibernate - hibernate-validator - 4.0.2.GA - + + + jakarta.persistence + jakarta.persistence-api + 3.1.0 + + org.eclipse.microprofile.rest.client diff --git a/src/main/java/dto/ScanInterface.java b/src/main/java/dto/ScanInterface.java new file mode 100644 index 0000000..a435f62 --- /dev/null +++ b/src/main/java/dto/ScanInterface.java @@ -0,0 +1,9 @@ +package dto; + +import java.io.Serializable; + +//interface for the scan objects + +public interface ScanInterface extends Serializable{ + public String constructPayload(); +} \ No newline at end of file diff --git a/src/main/java/dto/ScanObj.java b/src/main/java/dto/ScanObj.java index 090b179..c9f825b 100644 --- a/src/main/java/dto/ScanObj.java +++ b/src/main/java/dto/ScanObj.java @@ -8,6 +8,7 @@ import lombok.extern.jackson.Jacksonized; // import org.jboss.pnc.api.dto.Request; //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 diff --git a/src/main/java/rest/CreateGetResource.java b/src/main/java/rest/CreateGetResource.java index f5f532c..8ab6974 100644 --- a/src/main/java/rest/CreateGetResource.java +++ b/src/main/java/rest/CreateGetResource.java @@ -33,9 +33,23 @@ import java.sql.*; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; +// import org.hibernate.EntityManager; +import jakarta.persistence.EntityManager; +import jakarta.persistence.Cacheable; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.QueryHint; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; + // @Path("/api/v1/[osh-scan]") @Path("/scanGet") public class CreateGetResource { + // @Inject + // EntityManager em; CreateScanService createScanService; diff --git a/src/main/java/rest/Scan.java b/src/main/java/rest/Scan.java new file mode 100644 index 0000000..2394c6f --- /dev/null +++ b/src/main/java/rest/Scan.java @@ -0,0 +1,43 @@ +package rest; + +import javax.persistence.Entity; + +public class Scan { + private int scanId; + private String productId; + private String eventId; + private String isManagedService; + private String componentList; + + public int getScanId() { + return scanId; + } + public void setScanId(int scanId) { + this.scanId = scanId; + } + public String getProductId() { + return productId; + } + public void setProductId(String productId) { + this.productId = productId; + } + public String getEventId() { + return eventId; + } + public void setEventId(String eventId) { + this.eventId = eventId; + } + public String getIsManagedService(){ + return isManagedService; + } + public void setIsManagedService(String isManagedService){ + this.isManagedService = isManagedService; + } + public String getComponentList(){ + return componentList; + } + public void setComponentList(String componentList){ + this.componentList = componentList; + } + +} \ No newline at end of file diff --git a/src/main/java/rest/StoreData.java b/src/main/java/rest/StoreData.java new file mode 100644 index 0000000..ae2925e --- /dev/null +++ b/src/main/java/rest/StoreData.java @@ -0,0 +1,124 @@ +package rest; + + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Set; +import dto.ScanObj; +// import dto.ConnectDB; +// import dto.Scan; + +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; + +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.inject.Inject; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import java.util.Set; +import java.util.stream.Collectors; +import javax.inject.Inject; +import javax.ws.rs.Consumes; + +import java.sql.*; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; +import org.hibernate.boot.Metadata; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; + // import org.hibernate.EntityManager; +import jakarta.persistence.EntityManager; +import jakarta.persistence.Cacheable; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.QueryHint; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; + +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("/storeData") +public class StoreData { + + //all of these need cleaning up to be a more sensible soution + // @RestClient + // CreateScanService createScanService; + + @GET + public void Store() { + System.out.println("hmm"); + + //Create typesafe ServiceRegistry object + StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build(); + + Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build(); + + SessionFactory factory = meta.getSessionFactoryBuilder().build(); + Session session = factory.openSession(); + Transaction t = session.beginTransaction(); + System.out.println("i assume we fail before here?"); + Scan e1=new Scan(); + e1.setScanId(2); + e1.setProductId("1"); + e1.setEventId("Chawla"); + e1.setIsManagedService("aa"); + e1.setComponentList("aaa"); + + session.save(e1); + t.commit(); + System.out.println("successfully saved"); + factory.close(); + session.close(); + + } +} \ No newline at end of file diff --git a/src/main/resources/Scan.hbm.xml b/src/main/resources/Scan.hbm.xml new file mode 100644 index 0000000..73cd545 --- /dev/null +++ b/src/main/resources/Scan.hbm.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 30b269f..eca88b0 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -2,4 +2,6 @@ # quarkus.rest-client."rest.CreateScanService".scope=javax.inject.Singleton # couchdb.name=scan-results -# couchdb.url=https://localhost:5984 \ No newline at end of file +# couchdb.url=https://localhost:5984 + +# quarkus.hibernate-orm.database.generation=drop-and-create \ No newline at end of file diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml new file mode 100644 index 0000000..f3621dc --- /dev/null +++ b/src/main/resources/hibernate.cfg.xml @@ -0,0 +1,21 @@ + + + + + + + update + org.hibernate.dialect.PostgreSQLDialect + org.postgresql.Driver + jdbc:postgresql://localhost:5432/mydb + postgres + password + + true + true + + + + \ No newline at end of file