From a0275ec7078d2448cf492d7e33c68010462239d3 Mon Sep 17 00:00:00 2001 From: VictorGotsenko Date: Fri, 27 Jun 2025 17:45:05 +0500 Subject: [PATCH] Step04 - done --- app/build.gradle.kts | 5 ++- app/src/main/java/hexlet/code/App.java | 43 +++++++++++++------ app/src/main/resources/templates/.jteroot | 0 app/src/main/resources/templates/index_s.jte | 4 ++ .../main/resources/templates/layout/page.jte | 18 ++++++++ 5 files changed, 55 insertions(+), 15 deletions(-) create mode 100644 app/src/main/resources/templates/.jteroot create mode 100644 app/src/main/resources/templates/index_s.jte create mode 100644 app/src/main/resources/templates/layout/page.jte diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f7c59f6..26b6607 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -30,9 +30,12 @@ dependencies { // Javalin implementation("io.javalin:javalin:6.7.0") implementation("io.javalin:javalin-rendering:6.7.0") - implementation("org.slf4j:slf4j-simple:2.1.0-alpha1") implementation("gg.jte:jte:3.2.1") + implementation("org.slf4j:slf4j-simple:2.1.0-alpha1") + + + // LOMBOK compileOnly("org.projectlombok:lombok:1.18.38") annotationProcessor("org.projectlombok:lombok:1.18.38") diff --git a/app/src/main/java/hexlet/code/App.java b/app/src/main/java/hexlet/code/App.java index 5bb3852..a04dff7 100644 --- a/app/src/main/java/hexlet/code/App.java +++ b/app/src/main/java/hexlet/code/App.java @@ -1,7 +1,17 @@ package hexlet.code; -import hexlet.code.repository.BaseRepository; -// import io.hexlet.component.DataInitializer; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.stream.Collectors; + +import gg.jte.ContentType; +import gg.jte.TemplateEngine; +import gg.jte.resolve.ResourceCodeResolver; import io.javalin.Javalin; import io.javalin.rendering.template.JavalinJte; @@ -11,17 +21,18 @@ import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import java.sql.SQLException; -import java.util.stream.Collectors; +import hexlet.code.repository.BaseRepository; @Slf4j public class App { + private static TemplateEngine createTemplateEngine() { + ClassLoader classLoader = App.class.getClassLoader(); + ResourceCodeResolver codeResolver = new ResourceCodeResolver("templates", classLoader); + TemplateEngine templateEngine = TemplateEngine.create(codeResolver, ContentType.Html); + return templateEngine; + } private static String getDatabaseUrl() { // Получаю url базы данных из переменной окружения DATABASE_URL @@ -42,24 +53,28 @@ public static Javalin getApp() throws IOException, SQLException { // hikariConfig.setJdbcUrl(getDatabaseUrl()); HikariDataSource dataSource = new HikariDataSource(hikariConfig); - var sql = readResourceFile("schema.sql"); + String sql = readResourceFile("schema.sql"); log.info(sql); - try (var connection = dataSource.getConnection(); - var statement = connection.createStatement()) { + try (Connection connection = dataSource.getConnection(); + Statement statement = connection.createStatement()) { statement.execute(sql); } BaseRepository.dataSource = dataSource; - var app = Javalin.create(config -> { + Javalin app = Javalin.create(config -> { config.bundledPlugins.enableDevLogging(); - config.fileRenderer(new JavalinJte()); + config.fileRenderer(new JavalinJte(createTemplateEngine())); }); + // root path app.get("/", ctx -> { - ctx.result("Hello World"); +// ctx.result("Hello World"); + ctx.render("index_s.jte"); + }); + return app; } diff --git a/app/src/main/resources/templates/.jteroot b/app/src/main/resources/templates/.jteroot new file mode 100644 index 0000000..e69de29 diff --git a/app/src/main/resources/templates/index_s.jte b/app/src/main/resources/templates/index_s.jte new file mode 100644 index 0000000..90a0b6c --- /dev/null +++ b/app/src/main/resources/templates/index_s.jte @@ -0,0 +1,4 @@ +@template.layout.page( +content = @` +

Hello World!

+`) \ No newline at end of file diff --git a/app/src/main/resources/templates/layout/page.jte b/app/src/main/resources/templates/layout/page.jte new file mode 100644 index 0000000..ba35299 --- /dev/null +++ b/app/src/main/resources/templates/layout/page.jte @@ -0,0 +1,18 @@ +@param gg.jte.Content content + + + + + + + + flash example + + + +
+ ${content} +
+ +