-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
29 changed files
with
1,106 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# WARNING: Paths must not include the name of the "lessons" directory. | ||
# Outside, this directory is called "exercises". | ||
|
||
**/*/presentation*.html | ||
.vagrant | ||
.idea/ | ||
node_modules/ | ||
vendor/ | ||
dist | ||
.gradle/ | ||
build/ | ||
caches/ | ||
.vscode/ | ||
.project | ||
.settings | ||
jte-classes | ||
.classpath | ||
bin |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
test: | ||
./gradlew test | ||
|
||
start: | ||
./gradlew run |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
## MVC | ||
|
||
Это задание напрямую не связано с темой урока, но мы закрепим уже пройденный материал и продолжим создавать CRUD-сущности. | ||
|
||
В предыдущих заданиях мы делали создание сущности, вывод списка и просмотр конкретной сущности, поэтому в этом задании они уже написаны. Нам же предстоит добавить в приложение редактирование сущности. | ||
|
||
### Ссылки | ||
|
||
* [Методы работы с контекстом](https://javalin.io/documentation#context) | ||
|
||
### src/main/java/exercise/controller/PostsController.java | ||
|
||
Реализуйте контроллер с методами, необходимыми для вывода формы редактирования и обновления поста. | ||
|
||
При обновлении поста, данные от пользователей должны пройти валидацию по тем же правилам, что и при создании. Если данные при редактировании не прошли валидацию, должна отобразиться форма редактирования с полями, заполненными данными. При успешном обновлении нужно сделать редирект на страницу списка постов. | ||
|
||
### src/main/java/exercise/dto/posts/EditPostPage.java | ||
|
||
Реализуйте дата-класс для передачи данных поста в шаблон с формой редактирования. | ||
|
||
### src/main/java/exercise/util/NamingRoutes.java | ||
|
||
Добавьте в класс `NamingRoutes` методы для именованных маршрутов отображения формы редактирования и обновления пользователей. | ||
|
||
### src/main/java/exercise/App.java | ||
|
||
Добавьте в приложение роутинг для редактирования постов. | ||
|
||
Обычно обновление сущности принято делать с помощью глаголов *PATCH/PUT*. Но здесь ситуация другая — мы не можем отправлять PATCH/PUT запросы из HTML-формы. Поэтому в этом упражнении сделайте обновление сущности через POST-запрос на адрес */posts/{id}*. Так обновление будет работать в браузере. | ||
|
||
### src/main/jte/posts/show.jte | ||
|
||
В шаблон просмотра конкретного поста добавьте ссылку на редактирование поста. | ||
|
||
### src/main/jte/posts/edit.jte | ||
|
||
Реализуйте форму редактирования поста и добавьте вывод ошибок валидации. | ||
|
||
### Подсказки | ||
|
||
* Ориентируйтесь на методы для добавления нового поста | ||
* Если хотите сделать красивый вывод в шаблонах, используйте классы Bootstrap | ||
* В шаблоне с формой редактирования поста используйте идентификатор поста, чтобы сформировать ссылку |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
import org.gradle.api.tasks.testing.logging.TestExceptionFormat | ||
import org.gradle.api.tasks.testing.logging.TestLogEvent | ||
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask | ||
|
||
plugins { | ||
id("com.github.ben-manes.versions") version "0.48.0" | ||
application | ||
|
||
id("io.freefair.lombok") version "8.1.0" | ||
} | ||
|
||
application { | ||
mainClass.set("exercise.App") | ||
} | ||
|
||
group = "exercise" | ||
version = "1.0-SNAPSHOT" | ||
|
||
repositories { | ||
mavenCentral() | ||
} | ||
|
||
dependencies { | ||
implementation("io.javalin:javalin:5.6.1") | ||
|
||
implementation("gg.jte:jte:3.0.1") | ||
implementation("io.javalin:javalin-rendering:5.6.0") | ||
implementation("org.slf4j:slf4j-simple:2.0.7") | ||
implementation("net.datafaker:datafaker:2.0.1") | ||
implementation("com.fasterxml.jackson.core:jackson-databind:2.15.0") | ||
testImplementation(platform("org.junit:junit-bom:5.9.1")) | ||
testImplementation("org.junit.jupiter:junit-jupiter") | ||
testImplementation("com.konghq:unirest-java:3.13.0") | ||
testImplementation("org.hamcrest:hamcrest-core:2.2") | ||
testImplementation("org.assertj:assertj-core:3.24.2") | ||
} | ||
|
||
tasks.test { | ||
useJUnitPlatform() | ||
// https://technology.lastminute.com/junit5-kotlin-and-gradle-dsl/ | ||
testLogging { | ||
exceptionFormat = TestExceptionFormat.FULL | ||
events = mutableSetOf(TestLogEvent.FAILED, TestLogEvent.PASSED, TestLogEvent.SKIPPED) | ||
// showStackTraces = true | ||
// showCauses = true | ||
showStandardStreams = true | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
import io.javalin.Javalin; | ||
|
||
public final class App { | ||
|
||
public static Javalin getApp() { | ||
|
||
var app = Javalin.create(config -> { | ||
config.plugins.enableDevLogging(); | ||
}); | ||
|
||
List<String> users = List.of("John", "Mark", "Ann"); | ||
|
||
app.get("/users", ctx -> { | ||
var userNumber = ctx.pathParamAsClass("id", Integer.class); | ||
var cond = ctx.queryParam("cond"); | ||
List<String> filteredUsers; | ||
|
||
if (term == null) { | ||
filteredUsers = users; | ||
} else { | ||
filteredUsers = users | ||
.stream() | ||
.filter(u -> u.contains(cond)) | ||
.toList(); | ||
} | ||
|
||
var page = new UsersPage(users, cond); | ||
ctx.render("users/index.jte", Collections.singletonMap("page", page)); | ||
}); | ||
|
||
return app; | ||
} | ||
|
||
public static void main(String[] args) { | ||
Javalin app = getApp(); | ||
app.start(7070); | ||
} | ||
} |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
distributionBase=GRADLE_USER_HOME | ||
distributionPath=wrapper/dists | ||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip | ||
networkTimeout=10000 | ||
validateDistributionUrl=true | ||
zipStoreBase=GRADLE_USER_HOME | ||
zipStorePath=wrapper/dists |
Oops, something went wrong.