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