diff --git a/pom.xml b/pom.xml index 4355c4ca761d81aca27d885fc271887b091415c1..f4f2d5abb48e01596b6fb8a8a4c22672d4e33661 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,7 @@ <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <hibernate.version>5.6.0.Final</hibernate.version> </properties> <dependencies> @@ -28,6 +29,11 @@ <version>1.5.0-b01</version> </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-core</artifactId> + <version>5.6.0.Final</version> + </dependency> <dependency> <groupId>com.mysql</groupId> diff --git a/src/main/java/com/gymtracker/handler/LogAuthHandler.java b/src/main/java/com/gymtracker/handler/LogAuthHandler.java index 6743135c5bc7fe62c60b5f40e6b8a181904b494a..5b7750f923e8308eec3076be3d2564a10de10d82 100644 --- a/src/main/java/com/gymtracker/handler/LogAuthHandler.java +++ b/src/main/java/com/gymtracker/handler/LogAuthHandler.java @@ -1,8 +1,11 @@ package com.gymtracker.handler; +import com.gymtracker.util.HibernateUtil; import com.gymtracker.util.Util; import com.gymtracker.model.Logging; import io.github.cdimascio.dotenv.Dotenv; +import org.hibernate.Session; +import org.hibernate.SessionFactory; import javax.xml.namespace.QName; import javax.xml.soap.SOAPBody; @@ -10,6 +13,7 @@ import javax.xml.soap.SOAPMessage; import javax.xml.ws.handler.MessageContext; import javax.xml.ws.handler.soap.SOAPHandler; import javax.xml.ws.handler.soap.SOAPMessageContext; +import java.sql.Timestamp; import java.util.List; import java.util.Map; import java.util.Set; @@ -94,8 +98,19 @@ public class LogAuthHandler implements SOAPHandler<SOAPMessageContext> { description.append(" with body: "); description.append(bodyContent); } - Logging log = new Logging(Util.getIP(smc), Util.getURL(smc), description.toString()); - log.insert(); + + Logging logging = new Logging(); + logging.setRequestDescription(description.toString()); + logging.setEndpoint(Util.getURL(smc)); + logging.setIPAddress(Util.getIP(smc)); + logging.setTimestamp(new Timestamp(System.currentTimeMillis())); + + SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); + Session session = sessionFactory.getCurrentSession(); + + session.beginTransaction(); + session.save(logging); + session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/com/gymtracker/service/Application.java b/src/main/java/com/gymtracker/model/Application.java similarity index 98% rename from src/main/java/com/gymtracker/service/Application.java rename to src/main/java/com/gymtracker/model/Application.java index 75e05e4b0aceadbeed4fa459007d83df0dd2bf77..95ac3772819a461720ac14c720fded0ae2eeb8df 100644 --- a/src/main/java/com/gymtracker/service/Application.java +++ b/src/main/java/com/gymtracker/model/Application.java @@ -1,4 +1,4 @@ -package com.gymtracker.service; +package com.gymtracker.model; import com.gymtracker.database.Database; diff --git a/src/main/java/com/gymtracker/model/Logging.java b/src/main/java/com/gymtracker/model/Logging.java new file mode 100644 index 0000000000000000000000000000000000000000..0d3150044695799ae41d9f84ebf4058c54849cd6 --- /dev/null +++ b/src/main/java/com/gymtracker/model/Logging.java @@ -0,0 +1,65 @@ +package com.gymtracker.model; + +import javax.persistence.*; +import java.sql.Time; +import java.sql.Timestamp; + +@Entity +@Table(name = "logging") +public class Logging { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(nullable = false) + private int id; + + @Column(nullable = false) + private String ip_address; + + @Column(nullable = false) + private Timestamp timestamp; + + @Column(nullable = false) + private String endpoint; + + @Lob + @Column(nullable = false) + private String request_description; + + // Getters + public int getID() { + return this.id; + } + + public String getIPAddress() { + return this.ip_address; + } + + public Timestamp getTimestamp() { + return this.timestamp; + } + + public String getEndpoint() { + return this.endpoint; + } + + public String getRequestDescription() { + return this.request_description; + } + + // Setters + public void setIPAddress(String ip_address) { + this.ip_address = ip_address; + } + + public void setTimestamp(Timestamp timestamp) { + this.timestamp = timestamp; + } + + public void setEndpoint(String endpoint) { + this.endpoint = endpoint; + } + + public void setRequestDescription(String request_description) { + this.request_description = request_description; + } +} diff --git a/src/main/java/com/gymtracker/service/Logging.java b/src/main/java/com/gymtracker/service/Logging.java deleted file mode 100644 index 199652f9bdb697b11b98f22c64e018b8c39dafd5..0000000000000000000000000000000000000000 --- a/src/main/java/com/gymtracker/service/Logging.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gymtracker.service; - -import com.gymtracker.database.Database; - -import java.sql.SQLException; -import java.sql.Timestamp; - -public class Logging { - private String ip; - private Timestamp timestamp; - private String endpoint; - private String description; - - public Logging(String ip, String endpoint, String description) { - this.ip = ip; - this.timestamp = new Timestamp(System.currentTimeMillis()); - this.endpoint = endpoint; - this.description = description; - } - - public int insert() { - try { - StringBuilder query = new StringBuilder("INSERT INTO logging "); - query.append("(ip_address,timestamp,endpoint,request_description) VALUES("); - query.append("'").append(this.ip).append("',"); - query.append("'").append(this.timestamp).append("',"); - query.append("'").append(this.endpoint).append("',"); - query.append("'").append(this.description).append("');"); - - return Database.executeUpdate(query.toString()); - } catch (SQLException e) { - e.printStackTrace(); - } - return 0; - } -} diff --git a/src/main/java/com/gymtracker/util/HibernateUtil.java b/src/main/java/com/gymtracker/util/HibernateUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..ec99434865ac06d62ca0f599cddf98f05390186f --- /dev/null +++ b/src/main/java/com/gymtracker/util/HibernateUtil.java @@ -0,0 +1,45 @@ +package com.gymtracker.util; + +import com.gymtracker.model.Logging; +import io.github.cdimascio.dotenv.Dotenv; +import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.Configuration; +import org.hibernate.service.ServiceRegistry; + +import java.util.Properties; + +public class HibernateUtil { + private static final String name = Dotenv.configure().directory("/").load().get("MYSQL_DATABASE"); + private static final String port = Dotenv.configure().directory("/").load().get("MYSQL_TCP_PORT"); + private static final String username = Dotenv.configure().directory("/").load().get("MYSQL_USER"); + private static final String password = Dotenv.configure().directory("/").load().get("MYSQL_ROOT_PASSWORD"); + + private static final String url = String.format("jdbc:mysql://db-java:%s/%s", port, name); + + private static SessionFactory sessionFactory; + + private static SessionFactory buildSessionFactory() { + Properties properties = new Properties(); + properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect"); + properties.setProperty("hibernate.connection.url", HibernateUtil.url); + properties.setProperty("hibernate.connection.username", HibernateUtil.username); + properties.setProperty("hibernate.connection.password", HibernateUtil.password); + properties.setProperty("hibernate.hbm2ddl.auto", "update"); + properties.put("hibernate.current_session_context_class", "thread"); + + Configuration configuration = new Configuration(); + configuration.setProperties(properties); + configuration.addAnnotatedClass(Logging.class); + + ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); + return configuration.buildSessionFactory(serviceRegistry); + } + + public static SessionFactory getSessionFactory() { + if (HibernateUtil.sessionFactory == null) { + HibernateUtil.sessionFactory = HibernateUtil.buildSessionFactory(); + } + return HibernateUtil.sessionFactory; + } +}