From 7678ea381248261932342f0dc397725d11462b45 Mon Sep 17 00:00:00 2001
From: Daniel <59575049+lumijiez@users.noreply.github.com>
Date: Thu, 14 Nov 2024 22:42:38 +0200
Subject: [PATCH] dockerfile, other bs
---
Dockerfile | 15 ++
docker-compose.yml | 30 +++
pom.xml | 16 +-
resources/test.txt | 2 +
.../java/io/github/lumijiez/example/Main.java | 15 +-
.../lumijiez/example/ThreadedWriter.java | 50 ++++
.../lumijiez/example/daos/ProductDao.java | 16 +-
src/main/resources/hibernate.cfg.xml | 4 +-
uploads/index.html | 224 ++++++++++++++++++
9 files changed, 359 insertions(+), 13 deletions(-)
create mode 100644 Dockerfile
create mode 100644 docker-compose.yml
create mode 100644 resources/test.txt
create mode 100644 src/main/java/io/github/lumijiez/example/ThreadedWriter.java
create mode 100644 uploads/index.html
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..ede79e6
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,15 @@
+FROM maven:3.9.9-amazoncorretto-23 AS builder
+
+WORKDIR /app
+
+COPY . /app
+
+RUN mvn clean package -DskipTests
+
+FROM openjdk:23-jdk
+
+WORKDIR /app
+
+COPY --from=builder /app/target/wirestream-1.0.0.jar wirestream-1.0.0.jar
+
+ENTRYPOINT ["java", "-jar", "wirestream-1.0.0.jar"]
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..8c51079
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,30 @@
+version: '3.8'
+
+services:
+ database:
+ image: postgres:latest
+ container_name: accounting-db
+ environment:
+ POSTGRES_USER: user
+ POSTGRES_PASSWORD: password
+ POSTGRES_DB: accounting
+ ports:
+ - "5432:5432"
+ networks:
+ - app-network
+
+ app:
+ build:
+ context: .
+ container_name: java-app
+ ports:
+ - "8080:8080"
+ - "8081:8081"
+ depends_on:
+ - database
+ networks:
+ - app-network
+
+networks:
+ app-network:
+ driver: bridge
diff --git a/pom.xml b/pom.xml
index 254ecd8..9fb6da2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,13 +88,15 @@
org.apache.maven.plugins
maven-jar-plugin
3.2.0
-
-
-
- test-jar
-
-
-
+
+
+
+ true
+ lib/
+ io.github.lumijiez.example.Main
+
+
+
diff --git a/resources/test.txt b/resources/test.txt
new file mode 100644
index 0000000..12d3aff
--- /dev/null
+++ b/resources/test.txt
@@ -0,0 +1,2 @@
+hellp
+hellp
diff --git a/src/main/java/io/github/lumijiez/example/Main.java b/src/main/java/io/github/lumijiez/example/Main.java
index 7ada27f..d620e70 100644
--- a/src/main/java/io/github/lumijiez/example/Main.java
+++ b/src/main/java/io/github/lumijiez/example/Main.java
@@ -13,10 +13,12 @@ import io.github.lumijiez.example.models.Product;
import io.github.lumijiez.core.logging.Logger;
import java.io.File;
+import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
+ ThreadedWriter writer = new ThreadedWriter("test.txt");
ProductDao productDao = new ProductDao();
ServerConfig config = new ServerConfig.Builder()
@@ -31,6 +33,12 @@ public class Main {
chain.next(req, res);
});
+ server.POST("/write/:text", (req, res) -> {
+ Logger.info("PATH", req.getPathParam("text"));
+ writer.writeToFile(req.getPathParam("text"));
+ res.sendResponse(HttpStatus.OK, "OK");
+ });
+
server.GET("/test/:lel/", (req, res) -> {
Logger.info("PATH", req.getPathParam("lel"));
Logger.info("QUERY", req.getQueryParam("lol"));
@@ -78,9 +86,10 @@ public class Main {
res.sendJson(HttpStatus.OK, product);
});
- server.GET("/products", (req, res) -> {
- Product product = productDao.getProductById(5);
- res.sendResponse(HttpStatus.OK, product.toString());
+ server.GET("/products/:page/", (req, res) -> {
+ Logger.info("PATH", req.getPathParam("page"));
+ List products = productDao.getProductsByPage(Integer.parseInt(req.getPathParam("page")), 5);
+ res.sendResponse(HttpStatus.OK, products.toString());
});
WebSocketServer wsServer = new WebSocketServer(8081);
diff --git a/src/main/java/io/github/lumijiez/example/ThreadedWriter.java b/src/main/java/io/github/lumijiez/example/ThreadedWriter.java
new file mode 100644
index 0000000..7f7e705
--- /dev/null
+++ b/src/main/java/io/github/lumijiez/example/ThreadedWriter.java
@@ -0,0 +1,50 @@
+package io.github.lumijiez.example;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+public class ThreadedWriter {
+ private final String filePath;
+ private final Lock lock;
+
+ public ThreadedWriter(String fileName) {
+ String resourcesPath = System.getProperty("user.dir") + "/resources";
+ File resourcesDir = new File(resourcesPath);
+ if (!resourcesDir.exists()) {
+ resourcesDir.mkdirs();
+ }
+ this.filePath = resourcesPath + "/" + fileName;
+ this.lock = new ReentrantLock();
+ createFileIfNotExist();
+ }
+
+ private void createFileIfNotExist() {
+ File file = new File(filePath);
+ if (!file.exists()) {
+ try {
+ Files.createDirectories(Paths.get(file.getParent()));
+ file.createNewFile();
+ } catch (IOException e) {
+ System.err.println("Failed to create file: " + e.getMessage());
+ }
+ }
+ }
+
+ public void writeToFile(String content) {
+ lock.lock();
+ try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath, true))) {
+ writer.write(content);
+ writer.newLine();
+ } catch (IOException e) {
+ System.err.println("Error writing to file: " + e.getMessage());
+ } finally {
+ lock.unlock();
+ }
+ }
+}
diff --git a/src/main/java/io/github/lumijiez/example/daos/ProductDao.java b/src/main/java/io/github/lumijiez/example/daos/ProductDao.java
index 4429111..b1bde1d 100644
--- a/src/main/java/io/github/lumijiez/example/daos/ProductDao.java
+++ b/src/main/java/io/github/lumijiez/example/daos/ProductDao.java
@@ -4,6 +4,7 @@ import io.github.lumijiez.example.models.Product;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
+import org.hibernate.query.Query;
import java.util.List;
@@ -58,7 +59,6 @@ public class ProductDao {
}
}
-
public void deleteProduct(int id) {
Transaction transaction = null;
try (Session session = new Configuration().configure().buildSessionFactory().openSession()) {
@@ -76,4 +76,18 @@ public class ProductDao {
e.printStackTrace();
}
}
+
+ public List getProductsByPage(int pageNumber, int pageSize) {
+ try (Session session = new Configuration().configure().buildSessionFactory().openSession()) {
+ Query query = session.createQuery("from Product", Product.class);
+
+ query.setFirstResult((pageNumber - 1) * pageSize);
+ query.setMaxResults(pageSize);
+
+ return query.getResultList();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
}
diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml
index db6bfa3..80f5684 100644
--- a/src/main/resources/hibernate.cfg.xml
+++ b/src/main/resources/hibernate.cfg.xml
@@ -5,8 +5,8 @@
org.postgresql.Driver
jdbc:postgresql://localhost:5432/accounting
- postgres
- postgres
+ user
+ password
5
20
diff --git a/uploads/index.html b/uploads/index.html
new file mode 100644
index 0000000..ff576fb
--- /dev/null
+++ b/uploads/index.html
@@ -0,0 +1,224 @@
+
+
+
+
+
+WebSocket Chat
+
+
+
+
+
WebSocket Chat
+
Disconnected
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file