From c1ef805cadb944a6a588dce29110316ae95d4ae4 Mon Sep 17 00:00:00 2001 From: Florian <fmeuleman@takima.fr> Date: Mon, 26 Feb 2024 10:34:51 +0100 Subject: [PATCH] feat/Add pipeline to push on trainnes --- .gitignore | 35 ++ .gitlab-ci.yml | 111 ++++ README.md | 9 + {docs => old/docs}/0.guide/000.setup.md | 0 {docs => old/docs}/0.guide/100.npm.md | 0 {docs => old/docs}/0.guide/1000.ending.md | 0 {docs => old/docs}/0.guide/200.spa.md | 0 {docs => old/docs}/0.guide/202.webpack.md | 0 {docs => old/docs}/0.guide/203.webpack-js.md | 0 {docs => old/docs}/0.guide/204.webpack-css.md | 0 .../docs}/0.guide/205.webpack-html.md | 0 {docs => old/docs}/0.guide/300-es6-classes.md | 0 .../docs}/0.guide/301-Let-and-const.md | 0 .../docs}/0.guide/302-arrow-functions.md | 0 .../0.guide/310.functionnal-programming.md | 0 {docs => old/docs}/0.guide/320-promises.md | 0 {docs => old/docs}/0.guide/605.components.md | 0 {docs => old/docs}/0.guide/700-babel.md | 0 {docs => old/docs}/0.guide/800-style.md | 0 .../0.guide/900.practice/910.practise.md | 0 .../docs}/0.guide/900.practice/920.bonuses.md | 0 .../docs}/0.guide/900.practice/README.md | 0 {docs => old/docs}/0.guide/_000.lost-found.md | 0 {docs => old/docs}/0.guide/_620-sourcemaps.md | 0 .../docs}/10.cheatsheet/CHEATSHEET.md | 0 {docs => old/docs}/README.md | 0 {docs => old/docs}/assets/bundle.png | Bin .../docs}/assets/chrome-dev-tools-network.png | Bin .../docs}/assets/clutter-before-spa.gif | Bin {docs => old/docs}/assets/commit.png | Bin .../docs}/assets/component-architecture.png | Bin {docs => old/docs}/assets/components.png | Bin .../docs}/assets/http-server-semver.png | Bin {docs => old/docs}/assets/icons/babel.png | Bin .../docs}/assets/icons/bootstrap-64x64.png | Bin {docs => old/docs}/assets/icons/es6.png | Bin {docs => old/docs}/assets/icons/lodash.png | Bin {docs => old/docs}/assets/icons/npm-64x64.png | Bin {docs => old/docs}/assets/icons/sass.png | Bin {docs => old/docs}/assets/icons/webpack.png | Bin .../docs}/assets/icons/yarn-64x64.png | Bin {docs => old/docs}/assets/mockup.png | Bin .../assets/multiple-page-application.png | Bin .../docs}/assets/mvc-architecture.png | Bin {docs => old/docs}/assets/node_modules.png | Bin {docs => old/docs}/assets/not-bundle.png | Bin {docs => old/docs}/assets/project-image.png | Bin {docs => old/docs}/assets/shell-html.png | Bin {docs => old/docs}/assets/shell.png | Bin .../docs}/assets/single_page_application.png | Bin {docs => old/docs}/assets/spa.png | Bin {done => old/done}/back-end/.gitignore | 0 {done => old/done}/back-end/config.js | 0 {done => old/done}/back-end/package-lock.json | 0 {done => old/done}/back-end/package.json | 0 {done => old/done}/back-end/server.js | 0 {done => old/done}/front-end/.babelrc | 0 {done => old/done}/front-end/browserslist | 0 .../done}/front-end/package-lock.json | 0 {done => old/done}/front-end/package.json | 0 .../components/footer/footer.component.html | 0 .../app/components/footer/footer.component.js | 0 .../components/footer/footer.component.scss | 0 .../components/game/card/card.component.html | 0 .../components/game/card/card.component.js | 0 .../components/game/card/card.component.scss | 0 .../app/components/game/game.component.html | 0 .../src/app/components/game/game.component.js | 0 .../app/components/game/game.component.scss | 0 .../components/navbar/navbar.component.html | 0 .../app/components/navbar/navbar.component.js | 0 .../components/navbar/navbar.component.scss | 0 .../app/components/score/score.component.html | 0 .../app/components/score/score.component.js | 0 .../app/components/score/score.component.scss | 0 .../components/welcome/welcome.component.html | 0 .../components/welcome/welcome.component.js | 0 .../components/welcome/welcome.component.scss | 0 .../front-end/src/app/scripts/component.js | 0 .../done}/front-end/src/app/scripts/router.js | 0 .../done}/front-end/src/app/scripts/utils.js | 0 .../front-end/src/app/styles/_colors.scss | 0 .../done}/front-end/src/app/styles/style.scss | 0 .../done}/front-end/src/assets/cards/back.png | Bin .../front-end/src/assets/cards/card-0.png | Bin .../front-end/src/assets/cards/card-1.png | Bin .../front-end/src/assets/cards/card-2.png | Bin .../front-end/src/assets/cards/card-3.png | Bin .../front-end/src/assets/cards/card-4.png | Bin .../front-end/src/assets/cards/card-5.png | Bin .../front-end/src/assets/cards/card-6.png | Bin .../front-end/src/assets/cards/card-7.png | Bin .../front-end/src/assets/cards/card-8.png | Bin .../front-end/src/assets/cards/card-9.png | Bin .../front-end/src/assets/happy_homer.jpg | Bin .../src/assets/logo_take_my_money.png | Bin {done => old/done}/front-end/src/favicon.ico | Bin {done => old/done}/front-end/src/index.html | 0 {done => old/done}/front-end/src/main.js | 0 .../done}/front-end/webpack.config.js | 0 master3.json => old/master3.json | 0 press.sh => old/press.sh | 0 .../resources}/arrow-fn/router.js | 0 .../resources}/arrow-fn/score.js | 0 .../resources}/arrow-fn/welcome.js | 0 .../resources}/classes/router.js | 0 {resources => old/resources}/classes/score.js | 0 .../resources}/classes/welcome.js | 0 .../resources}/component/card.component.js | 0 .../resources}/component/component.js | 0 .../resources}/component/game.component.js | 0 .../resources}/component/score.component.js | 0 .../resources}/component/welcome.component.js | 0 .../resources}/html-import/score.js | 0 .../resources}/html-import/welcome.js | 0 .../resources}/init/back-end/.gitignore | 0 .../resources}/init/back-end/config.js | 0 .../init/back-end/package-lock.json | 0 .../resources}/init/back-end/package.json | 0 .../resources}/init/back-end/server.js | 0 .../init/front-end/src/app/scripts/game.js | 0 .../init/front-end/src/app/scripts/score.js | 0 .../init/front-end/src/app/scripts/utils.js | 0 .../init/front-end/src/app/scripts/welcome.js | 0 .../front-end/src/app/styles/bootstrap.css | 0 .../init/front-end/src/app/styles/style.css | 0 .../init/front-end/src/app/views/game.html | 0 .../init/front-end/src/app/views/score.html | 0 .../init/front-end/src/app/views/welcome.html | 0 .../init/front-end/src/assets/cards/back.png | Bin .../front-end/src/assets/cards/card-0.png | Bin .../front-end/src/assets/cards/card-1.png | Bin .../front-end/src/assets/cards/card-2.png | Bin .../front-end/src/assets/cards/card-3.png | Bin .../front-end/src/assets/cards/card-4.png | Bin .../front-end/src/assets/cards/card-5.png | Bin .../front-end/src/assets/cards/card-6.png | Bin .../front-end/src/assets/cards/card-7.png | Bin .../front-end/src/assets/cards/card-8.png | Bin .../front-end/src/assets/cards/card-9.png | Bin .../init/front-end/src/assets/happy_homer.jpg | Bin .../src/assets/logo_take_my_money.png | Bin .../resources}/init/front-end/src/index.html | 0 .../resources}/init/html-import/score.js | 0 .../resources}/let-const/router.js | 0 .../resources}/let-const/score.js | 0 .../resources}/let-const/welcome.js | 0 {resources => old/resources}/router/main.js | 0 {resources => old/resources}/router/router.js | 0 .../resources}/template-literals/router.js | 0 .../resources}/template-literals/score.js | 0 .../resources}/template-literals/welcome.js | 0 .../.gitlab-ci-m3-press-milestone.yml | 0 .../.gitlab-ci-m3-press-milestone.yml | 0 {trainer => old/trainer}/CR.md | 0 {trainer => old/trainer}/questions.md | 0 resources/boilerplate/emptydocs/.gitignore | 1 + resources/boilerplate/emptydocs/README.md | 4 + .../emptydocs/docs/assets/takima-logo.jpg | Bin 0 -> 45497 bytes resources/boilerplate/emptydocs/docs/index.md | 1 + resources/boilerplate/emptydocs/mkdocs.yml | 16 + .../java-one-trainees/.gitlab-ci.yml | 11 + resources/docs/.gitignore | 1 + ...-01-28-20-24-21.060-VBoxHeadless-27399.log | 12 + resources/docs/Dockerfile | 15 + resources/docs/README.md | 19 + .../docs/assets/architectural_diagram.png | Bin 0 -> 41440 bytes .../docs/assets/architectural_diagram_dao.png | Bin 0 -> 42695 bytes .../docs/assets/architectural_diagram_dto.png | Bin 0 -> 41808 bytes .../assets/architectural_diagram_model.png | Bin 0 -> 41188 bytes .../assets/architectural_diagram_project.png | Bin 0 -> 42030 bytes .../assets/architectural_diagram_service.png | Bin 0 -> 41307 bytes resources/docs/docs/assets/db_schema.png | Bin 0 -> 49639 bytes resources/docs/docs/assets/img.png | Bin 0 -> 43756 bytes resources/docs/docs/assets/logo-takima.jpg | Bin 0 -> 45497 bytes resources/docs/docs/assets/logo.png | Bin 0 -> 18195 bytes resources/docs/docs/chapters/tp1/about.md | 0 .../docs/docs/chapters/tp1/api_collection.md | 203 +++++++ resources/docs/docs/chapters/tp1/api_date.md | 172 ++++++ resources/docs/docs/chapters/tp1/api_map.md | 151 ++++++ .../docs/docs/chapters/tp1/api_stream.md | 180 +++++++ resources/docs/docs/chapters/tp1/index.md | 24 + resources/docs/docs/chapters/tp1/poo.md | 505 ++++++++++++++++++ .../docs/docs/chapters/tp1/prerequisites.md | 61 +++ .../docs/chapters/tp1/project_creation.md | 87 +++ resources/docs/docs/chapters/tp2/database.md | 403 ++++++++++++++ .../docs/docs/chapters/tp2/dependances.md | 244 +++++++++ resources/docs/docs/chapters/tp2/entite.md | 193 +++++++ resources/docs/docs/chapters/tp2/maven.md | 216 ++++++++ resources/docs/docs/chapters/tp2/release.md | 59 ++ resources/docs/docs/chapters/tp2/spring.md | 275 ++++++++++ .../docs/docs/chapters/tp3/launch_hackaton.md | 51 ++ .../docs/docs/cheatsheets/tp1/command_line.md | 17 + .../docs/cheatsheets/tp2/docker_install.md | 51 ++ resources/docs/docs/downloads/dao.zip | Bin 0 -> 1814 bytes resources/docs/docs/downloads/db-init.zip | Bin 0 -> 1323 bytes .../docs/docs/downloads/docker-compose-db.zip | Bin 0 -> 1130 bytes resources/docs/docs/index.md | 9 + resources/docs/mkdocs.yml | 52 ++ resources/docs/requirements | 3 + resources/docs/run.sh | 5 + .../src/io/takima/agencymanagement/Main.java | 166 ++++++ .../agencymanagement/dao/TravelDao.java | 59 ++ .../takima/agencymanagement/dao/UserDao.java | 54 ++ .../mapper/TravelDtoMapper.java | 20 + .../mapper/UserDtoMapper.java | 12 + .../agencymanagement/model/Airport.java | 22 + .../agencymanagement/model/Discount.java | 5 + .../agencymanagement/model/HotelOffer.java | 36 ++ .../takima/agencymanagement/model/Offer.java | 27 + .../model/PercentDiscount.java | 15 + .../model/RestaurentOffer.java | 34 ++ .../takima/agencymanagement/model/Travel.java | 158 ++++++ .../takima/agencymanagement/model/User.java | 72 +++ .../agencymanagement/model/ValueDiscount.java | 15 + .../responsedto/TravelResponseDto.java | 15 + .../responsedto/UserResponseDto.java | 7 + .../service/TravelService.java | 158 ++++++ .../agencymanagement/service/UserService.java | 42 ++ .../utils/AirportManager.java | 21 + resources/solution/day-2/.gitkeep | 0 resources/solution/day-2/day2.zip | Bin 0 -> 33921 bytes scripts/clean_lab.py | 46 ++ scripts/clean_students_namespaces.py | 67 +++ scripts/clean_trainee_repo.py | 7 + scripts/constant.py | 8 + scripts/deploy_boilerplate.py | 12 + scripts/deploy_solution.py | 12 + scripts/deploy_trainee_repo.py | 7 + scripts/gitcontent/playerrepo.py | 62 +++ scripts/utils.py | 24 + 231 files changed, 4379 insertions(+) create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml create mode 100644 README.md rename {docs => old/docs}/0.guide/000.setup.md (100%) rename {docs => old/docs}/0.guide/100.npm.md (100%) rename {docs => old/docs}/0.guide/1000.ending.md (100%) rename {docs => old/docs}/0.guide/200.spa.md (100%) rename {docs => old/docs}/0.guide/202.webpack.md (100%) rename {docs => old/docs}/0.guide/203.webpack-js.md (100%) rename {docs => old/docs}/0.guide/204.webpack-css.md (100%) rename {docs => old/docs}/0.guide/205.webpack-html.md (100%) rename {docs => old/docs}/0.guide/300-es6-classes.md (100%) rename {docs => old/docs}/0.guide/301-Let-and-const.md (100%) rename {docs => old/docs}/0.guide/302-arrow-functions.md (100%) rename {docs => old/docs}/0.guide/310.functionnal-programming.md (100%) rename {docs => old/docs}/0.guide/320-promises.md (100%) rename {docs => old/docs}/0.guide/605.components.md (100%) rename {docs => old/docs}/0.guide/700-babel.md (100%) rename {docs => old/docs}/0.guide/800-style.md (100%) rename {docs => old/docs}/0.guide/900.practice/910.practise.md (100%) rename {docs => old/docs}/0.guide/900.practice/920.bonuses.md (100%) rename {docs => old/docs}/0.guide/900.practice/README.md (100%) rename {docs => old/docs}/0.guide/_000.lost-found.md (100%) rename {docs => old/docs}/0.guide/_620-sourcemaps.md (100%) rename {docs => old/docs}/10.cheatsheet/CHEATSHEET.md (100%) rename {docs => old/docs}/README.md (100%) rename {docs => old/docs}/assets/bundle.png (100%) rename {docs => old/docs}/assets/chrome-dev-tools-network.png (100%) rename {docs => old/docs}/assets/clutter-before-spa.gif (100%) rename {docs => old/docs}/assets/commit.png (100%) rename {docs => old/docs}/assets/component-architecture.png (100%) rename {docs => old/docs}/assets/components.png (100%) rename {docs => old/docs}/assets/http-server-semver.png (100%) rename {docs => old/docs}/assets/icons/babel.png (100%) rename {docs => old/docs}/assets/icons/bootstrap-64x64.png (100%) rename {docs => old/docs}/assets/icons/es6.png (100%) rename {docs => old/docs}/assets/icons/lodash.png (100%) rename {docs => old/docs}/assets/icons/npm-64x64.png (100%) rename {docs => old/docs}/assets/icons/sass.png (100%) rename {docs => old/docs}/assets/icons/webpack.png (100%) rename {docs => old/docs}/assets/icons/yarn-64x64.png (100%) rename {docs => old/docs}/assets/mockup.png (100%) rename {docs => old/docs}/assets/multiple-page-application.png (100%) rename {docs => old/docs}/assets/mvc-architecture.png (100%) rename {docs => old/docs}/assets/node_modules.png (100%) rename {docs => old/docs}/assets/not-bundle.png (100%) rename {docs => old/docs}/assets/project-image.png (100%) rename {docs => old/docs}/assets/shell-html.png (100%) rename {docs => old/docs}/assets/shell.png (100%) rename {docs => old/docs}/assets/single_page_application.png (100%) rename {docs => old/docs}/assets/spa.png (100%) rename {done => old/done}/back-end/.gitignore (100%) rename {done => old/done}/back-end/config.js (100%) rename {done => old/done}/back-end/package-lock.json (100%) rename {done => old/done}/back-end/package.json (100%) rename {done => old/done}/back-end/server.js (100%) rename {done => old/done}/front-end/.babelrc (100%) rename {done => old/done}/front-end/browserslist (100%) rename {done => old/done}/front-end/package-lock.json (100%) rename {done => old/done}/front-end/package.json (100%) rename {done => old/done}/front-end/src/app/components/footer/footer.component.html (100%) rename {done => old/done}/front-end/src/app/components/footer/footer.component.js (100%) rename {done => old/done}/front-end/src/app/components/footer/footer.component.scss (100%) rename {done => old/done}/front-end/src/app/components/game/card/card.component.html (100%) rename {done => old/done}/front-end/src/app/components/game/card/card.component.js (100%) rename {done => old/done}/front-end/src/app/components/game/card/card.component.scss (100%) rename {done => old/done}/front-end/src/app/components/game/game.component.html (100%) rename {done => old/done}/front-end/src/app/components/game/game.component.js (100%) rename {done => old/done}/front-end/src/app/components/game/game.component.scss (100%) rename {done => old/done}/front-end/src/app/components/navbar/navbar.component.html (100%) rename {done => old/done}/front-end/src/app/components/navbar/navbar.component.js (100%) rename {done => old/done}/front-end/src/app/components/navbar/navbar.component.scss (100%) rename {done => old/done}/front-end/src/app/components/score/score.component.html (100%) rename {done => old/done}/front-end/src/app/components/score/score.component.js (100%) rename {done => old/done}/front-end/src/app/components/score/score.component.scss (100%) rename {done => old/done}/front-end/src/app/components/welcome/welcome.component.html (100%) rename {done => old/done}/front-end/src/app/components/welcome/welcome.component.js (100%) rename {done => old/done}/front-end/src/app/components/welcome/welcome.component.scss (100%) rename {done => old/done}/front-end/src/app/scripts/component.js (100%) rename {done => old/done}/front-end/src/app/scripts/router.js (100%) rename {done => old/done}/front-end/src/app/scripts/utils.js (100%) rename {done => old/done}/front-end/src/app/styles/_colors.scss (100%) rename {done => old/done}/front-end/src/app/styles/style.scss (100%) rename {done => old/done}/front-end/src/assets/cards/back.png (100%) rename {done => old/done}/front-end/src/assets/cards/card-0.png (100%) rename {done => old/done}/front-end/src/assets/cards/card-1.png (100%) rename {done => old/done}/front-end/src/assets/cards/card-2.png (100%) rename {done => old/done}/front-end/src/assets/cards/card-3.png (100%) rename {done => old/done}/front-end/src/assets/cards/card-4.png (100%) rename {done => old/done}/front-end/src/assets/cards/card-5.png (100%) rename {done => old/done}/front-end/src/assets/cards/card-6.png (100%) rename {done => old/done}/front-end/src/assets/cards/card-7.png (100%) rename {done => old/done}/front-end/src/assets/cards/card-8.png (100%) rename {done => old/done}/front-end/src/assets/cards/card-9.png (100%) rename {done => old/done}/front-end/src/assets/happy_homer.jpg (100%) rename {done => old/done}/front-end/src/assets/logo_take_my_money.png (100%) rename {done => old/done}/front-end/src/favicon.ico (100%) rename {done => old/done}/front-end/src/index.html (100%) rename {done => old/done}/front-end/src/main.js (100%) rename {done => old/done}/front-end/webpack.config.js (100%) rename master3.json => old/master3.json (100%) rename press.sh => old/press.sh (100%) rename {resources => old/resources}/arrow-fn/router.js (100%) rename {resources => old/resources}/arrow-fn/score.js (100%) rename {resources => old/resources}/arrow-fn/welcome.js (100%) rename {resources => old/resources}/classes/router.js (100%) rename {resources => old/resources}/classes/score.js (100%) rename {resources => old/resources}/classes/welcome.js (100%) rename {resources => old/resources}/component/card.component.js (100%) rename {resources => old/resources}/component/component.js (100%) rename {resources => old/resources}/component/game.component.js (100%) rename {resources => old/resources}/component/score.component.js (100%) rename {resources => old/resources}/component/welcome.component.js (100%) rename {resources => old/resources}/html-import/score.js (100%) rename {resources => old/resources}/html-import/welcome.js (100%) rename {resources => old/resources}/init/back-end/.gitignore (100%) rename {resources => old/resources}/init/back-end/config.js (100%) rename {resources => old/resources}/init/back-end/package-lock.json (100%) rename {resources => old/resources}/init/back-end/package.json (100%) rename {resources => old/resources}/init/back-end/server.js (100%) rename {resources => old/resources}/init/front-end/src/app/scripts/game.js (100%) rename {resources => old/resources}/init/front-end/src/app/scripts/score.js (100%) rename {resources => old/resources}/init/front-end/src/app/scripts/utils.js (100%) rename {resources => old/resources}/init/front-end/src/app/scripts/welcome.js (100%) rename {resources => old/resources}/init/front-end/src/app/styles/bootstrap.css (100%) rename {resources => old/resources}/init/front-end/src/app/styles/style.css (100%) rename {resources => old/resources}/init/front-end/src/app/views/game.html (100%) rename {resources => old/resources}/init/front-end/src/app/views/score.html (100%) rename {resources => old/resources}/init/front-end/src/app/views/welcome.html (100%) rename {resources => old/resources}/init/front-end/src/assets/cards/back.png (100%) rename {resources => old/resources}/init/front-end/src/assets/cards/card-0.png (100%) rename {resources => old/resources}/init/front-end/src/assets/cards/card-1.png (100%) rename {resources => old/resources}/init/front-end/src/assets/cards/card-2.png (100%) rename {resources => old/resources}/init/front-end/src/assets/cards/card-3.png (100%) rename {resources => old/resources}/init/front-end/src/assets/cards/card-4.png (100%) rename {resources => old/resources}/init/front-end/src/assets/cards/card-5.png (100%) rename {resources => old/resources}/init/front-end/src/assets/cards/card-6.png (100%) rename {resources => old/resources}/init/front-end/src/assets/cards/card-7.png (100%) rename {resources => old/resources}/init/front-end/src/assets/cards/card-8.png (100%) rename {resources => old/resources}/init/front-end/src/assets/cards/card-9.png (100%) rename {resources => old/resources}/init/front-end/src/assets/happy_homer.jpg (100%) rename {resources => old/resources}/init/front-end/src/assets/logo_take_my_money.png (100%) rename {resources => old/resources}/init/front-end/src/index.html (100%) rename {resources => old/resources}/init/html-import/score.js (100%) rename {resources => old/resources}/let-const/router.js (100%) rename {resources => old/resources}/let-const/score.js (100%) rename {resources => old/resources}/let-const/welcome.js (100%) rename {resources => old/resources}/router/main.js (100%) rename {resources => old/resources}/router/router.js (100%) rename {resources => old/resources}/template-literals/router.js (100%) rename {resources => old/resources}/template-literals/score.js (100%) rename {resources => old/resources}/template-literals/welcome.js (100%) rename {template => old/template}/.gitlab-ci-m3-press-milestone.yml (100%) rename {templates => old/templates}/.gitlab-ci-m3-press-milestone.yml (100%) rename {trainer => old/trainer}/CR.md (100%) rename {trainer => old/trainer}/questions.md (100%) create mode 100644 resources/boilerplate/emptydocs/.gitignore create mode 100644 resources/boilerplate/emptydocs/README.md create mode 100644 resources/boilerplate/emptydocs/docs/assets/takima-logo.jpg create mode 100644 resources/boilerplate/emptydocs/docs/index.md create mode 100644 resources/boilerplate/emptydocs/mkdocs.yml create mode 100644 resources/boilerplate/java-one-trainees/.gitlab-ci.yml create mode 100644 resources/docs/.gitignore create mode 100644 resources/docs/2022-01-28-20-24-21.060-VBoxHeadless-27399.log create mode 100644 resources/docs/Dockerfile create mode 100644 resources/docs/README.md create mode 100644 resources/docs/docs/assets/architectural_diagram.png create mode 100644 resources/docs/docs/assets/architectural_diagram_dao.png create mode 100644 resources/docs/docs/assets/architectural_diagram_dto.png create mode 100644 resources/docs/docs/assets/architectural_diagram_model.png create mode 100644 resources/docs/docs/assets/architectural_diagram_project.png create mode 100644 resources/docs/docs/assets/architectural_diagram_service.png create mode 100644 resources/docs/docs/assets/db_schema.png create mode 100644 resources/docs/docs/assets/img.png create mode 100644 resources/docs/docs/assets/logo-takima.jpg create mode 100644 resources/docs/docs/assets/logo.png create mode 100644 resources/docs/docs/chapters/tp1/about.md create mode 100644 resources/docs/docs/chapters/tp1/api_collection.md create mode 100644 resources/docs/docs/chapters/tp1/api_date.md create mode 100644 resources/docs/docs/chapters/tp1/api_map.md create mode 100644 resources/docs/docs/chapters/tp1/api_stream.md create mode 100644 resources/docs/docs/chapters/tp1/index.md create mode 100644 resources/docs/docs/chapters/tp1/poo.md create mode 100644 resources/docs/docs/chapters/tp1/prerequisites.md create mode 100644 resources/docs/docs/chapters/tp1/project_creation.md create mode 100644 resources/docs/docs/chapters/tp2/database.md create mode 100644 resources/docs/docs/chapters/tp2/dependances.md create mode 100644 resources/docs/docs/chapters/tp2/entite.md create mode 100644 resources/docs/docs/chapters/tp2/maven.md create mode 100644 resources/docs/docs/chapters/tp2/release.md create mode 100644 resources/docs/docs/chapters/tp2/spring.md create mode 100644 resources/docs/docs/chapters/tp3/launch_hackaton.md create mode 100644 resources/docs/docs/cheatsheets/tp1/command_line.md create mode 100644 resources/docs/docs/cheatsheets/tp2/docker_install.md create mode 100644 resources/docs/docs/downloads/dao.zip create mode 100644 resources/docs/docs/downloads/db-init.zip create mode 100644 resources/docs/docs/downloads/docker-compose-db.zip create mode 100644 resources/docs/docs/index.md create mode 100644 resources/docs/mkdocs.yml create mode 100644 resources/docs/requirements create mode 100755 resources/docs/run.sh create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/Main.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/dao/TravelDao.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/dao/UserDao.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/mapper/TravelDtoMapper.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/mapper/UserDtoMapper.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/model/Airport.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/model/Discount.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/model/HotelOffer.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/model/Offer.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/model/PercentDiscount.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/model/RestaurentOffer.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/model/Travel.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/model/User.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/model/ValueDiscount.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/TravelResponseDto.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/UserResponseDto.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/service/TravelService.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/service/UserService.java create mode 100644 resources/solution/day-1/src/io/takima/agencymanagement/utils/AirportManager.java create mode 100644 resources/solution/day-2/.gitkeep create mode 100644 resources/solution/day-2/day2.zip create mode 100644 scripts/clean_lab.py create mode 100644 scripts/clean_students_namespaces.py create mode 100755 scripts/clean_trainee_repo.py create mode 100644 scripts/constant.py create mode 100755 scripts/deploy_boilerplate.py create mode 100755 scripts/deploy_solution.py create mode 100755 scripts/deploy_trainee_repo.py create mode 100644 scripts/gitcontent/playerrepo.py create mode 100644 scripts/utils.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fdc9bb8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +out + +# Local .terraform directories +**/.terraform/* +.DS_Store +# .tfstate files +*.tfstate +*.tfstate.* + +__pycache__ + +# Crash log files +crash.log + +# Ignore any .tfvars files that are generated automatically for each Terraform run. Most +# .tfvars files are managed as part of configuration and so should be included in +# version control. +# +# example.tfvars + +# Ignore override files as they are usually used to override resources locally and so +# are not checked in +override.tf +override.tf.json +*_override.tf +*_override.tf.json + +# Include override files you do wish to add to version control using negated pattern +# +# !example_override.tf + +# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan +# example: *tfplan* + +.idea diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..6a35011 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,111 @@ +stages: + - training_resources + - day1 + - day2 + - day3 + - clean_training_resources + - destroy_infra + +deploy_trainee_repository: + stage: training_resources + image: python:3 + tags: + - compute + - small + needs: [] + before_script: + - git config --global user.email "bot@takima.fr" + - git config --global user.name "TakiBot" + script: + - pip install -U python-dotenv + - pip install GitPython + - pip install -r ./resources/docs/requirements + - cd scripts + - python deploy_trainee_repo.py + variables: + GIT_TRAINEE_REPOSITORY: "https://gitlab.takima.io/school/formation-dev-web/es6-epf-trainees" + when: manual + cache: + paths: + - .cache/pip + - venv/ + only: + - main + +deploy_solution_day_2_step_1: + stage: day2 + image: python:3 + tags: + - compute + - small + before_script: + - git config --global user.email "bot@takima.fr" + - git config --global user.name "TakiBot" + script: + - pip install -U python-dotenv + - pip install GitPython + - pip install -r ./resources/docs/requirements + - cd scripts + - python deploy_solution.py day-2 step-1 + variables: + GIT_TRAINEE_REPOSITORY: "https://gitlab.takima.io/school/formation-dev-web/es6-epf-trainees" + when: manual + needs: [] + cache: + paths: + - .cache/pip + - venv/ + only: + - main + +deploy_all_solutions_day_2: + stage: day2 + image: python:3 + tags: + - compute + - small + before_script: + - git config --global user.email "bot@takima.fr" + - git config --global user.name "TakiBot" + script: + - pip install -U python-dotenv + - pip install GitPython + - pip install -r ./resources/docs/requirements + - cd scripts + - python deploy_solution.py day-2 step-1 + variables: + GIT_TRAINEE_REPOSITORY: "https://gitlab.takima.io/school/formation-dev-web/es6-epf-trainees" + when: manual + needs: [] + cache: + paths: + - .cache/pip + - venv/ + only: + - main + +clean_trainee_repository: + stage: clean_training_resources + image: python:3 + tags: + - compute + - small + before_script: + - git config --global user.email "bot@takima.fr" + - git config --global user.name "TakiBot" + script: + - pip install -U python-dotenv + - pip install GitPython + - pip install -r ./resources/docs/requirements + - cd scripts + - python clean_trainee_repo.py + variables: + GIT_TRAINEE_REPOSITORY: "https://gitlab.takima.io/school/formation-dev-web/es6-epf-trainees" + cache: + paths: + - .cache/pip + - venv/ + when: manual + needs: [] + only: + - main diff --git a/README.md b/README.md new file mode 100644 index 0000000..f3a0d57 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# Bootcamp Java + +Le but de ce TP est d'apprendre à construire une application web java spring en 5 jours. + +Le premier jour est dédié à la POO, java et ses apis + +La deuxième journée est consacré à java et son écosystème. (maven, jdbc ...) + +Les trois derniers jours sont un hackaton pour s'essayer à spring. \ No newline at end of file diff --git a/docs/0.guide/000.setup.md b/old/docs/0.guide/000.setup.md similarity index 100% rename from docs/0.guide/000.setup.md rename to old/docs/0.guide/000.setup.md diff --git a/docs/0.guide/100.npm.md b/old/docs/0.guide/100.npm.md similarity index 100% rename from docs/0.guide/100.npm.md rename to old/docs/0.guide/100.npm.md diff --git a/docs/0.guide/1000.ending.md b/old/docs/0.guide/1000.ending.md similarity index 100% rename from docs/0.guide/1000.ending.md rename to old/docs/0.guide/1000.ending.md diff --git a/docs/0.guide/200.spa.md b/old/docs/0.guide/200.spa.md similarity index 100% rename from docs/0.guide/200.spa.md rename to old/docs/0.guide/200.spa.md diff --git a/docs/0.guide/202.webpack.md b/old/docs/0.guide/202.webpack.md similarity index 100% rename from docs/0.guide/202.webpack.md rename to old/docs/0.guide/202.webpack.md diff --git a/docs/0.guide/203.webpack-js.md b/old/docs/0.guide/203.webpack-js.md similarity index 100% rename from docs/0.guide/203.webpack-js.md rename to old/docs/0.guide/203.webpack-js.md diff --git a/docs/0.guide/204.webpack-css.md b/old/docs/0.guide/204.webpack-css.md similarity index 100% rename from docs/0.guide/204.webpack-css.md rename to old/docs/0.guide/204.webpack-css.md diff --git a/docs/0.guide/205.webpack-html.md b/old/docs/0.guide/205.webpack-html.md similarity index 100% rename from docs/0.guide/205.webpack-html.md rename to old/docs/0.guide/205.webpack-html.md diff --git a/docs/0.guide/300-es6-classes.md b/old/docs/0.guide/300-es6-classes.md similarity index 100% rename from docs/0.guide/300-es6-classes.md rename to old/docs/0.guide/300-es6-classes.md diff --git a/docs/0.guide/301-Let-and-const.md b/old/docs/0.guide/301-Let-and-const.md similarity index 100% rename from docs/0.guide/301-Let-and-const.md rename to old/docs/0.guide/301-Let-and-const.md diff --git a/docs/0.guide/302-arrow-functions.md b/old/docs/0.guide/302-arrow-functions.md similarity index 100% rename from docs/0.guide/302-arrow-functions.md rename to old/docs/0.guide/302-arrow-functions.md diff --git a/docs/0.guide/310.functionnal-programming.md b/old/docs/0.guide/310.functionnal-programming.md similarity index 100% rename from docs/0.guide/310.functionnal-programming.md rename to old/docs/0.guide/310.functionnal-programming.md diff --git a/docs/0.guide/320-promises.md b/old/docs/0.guide/320-promises.md similarity index 100% rename from docs/0.guide/320-promises.md rename to old/docs/0.guide/320-promises.md diff --git a/docs/0.guide/605.components.md b/old/docs/0.guide/605.components.md similarity index 100% rename from docs/0.guide/605.components.md rename to old/docs/0.guide/605.components.md diff --git a/docs/0.guide/700-babel.md b/old/docs/0.guide/700-babel.md similarity index 100% rename from docs/0.guide/700-babel.md rename to old/docs/0.guide/700-babel.md diff --git a/docs/0.guide/800-style.md b/old/docs/0.guide/800-style.md similarity index 100% rename from docs/0.guide/800-style.md rename to old/docs/0.guide/800-style.md diff --git a/docs/0.guide/900.practice/910.practise.md b/old/docs/0.guide/900.practice/910.practise.md similarity index 100% rename from docs/0.guide/900.practice/910.practise.md rename to old/docs/0.guide/900.practice/910.practise.md diff --git a/docs/0.guide/900.practice/920.bonuses.md b/old/docs/0.guide/900.practice/920.bonuses.md similarity index 100% rename from docs/0.guide/900.practice/920.bonuses.md rename to old/docs/0.guide/900.practice/920.bonuses.md diff --git a/docs/0.guide/900.practice/README.md b/old/docs/0.guide/900.practice/README.md similarity index 100% rename from docs/0.guide/900.practice/README.md rename to old/docs/0.guide/900.practice/README.md diff --git a/docs/0.guide/_000.lost-found.md b/old/docs/0.guide/_000.lost-found.md similarity index 100% rename from docs/0.guide/_000.lost-found.md rename to old/docs/0.guide/_000.lost-found.md diff --git a/docs/0.guide/_620-sourcemaps.md b/old/docs/0.guide/_620-sourcemaps.md similarity index 100% rename from docs/0.guide/_620-sourcemaps.md rename to old/docs/0.guide/_620-sourcemaps.md diff --git a/docs/10.cheatsheet/CHEATSHEET.md b/old/docs/10.cheatsheet/CHEATSHEET.md similarity index 100% rename from docs/10.cheatsheet/CHEATSHEET.md rename to old/docs/10.cheatsheet/CHEATSHEET.md diff --git a/docs/README.md b/old/docs/README.md similarity index 100% rename from docs/README.md rename to old/docs/README.md diff --git a/docs/assets/bundle.png b/old/docs/assets/bundle.png similarity index 100% rename from docs/assets/bundle.png rename to old/docs/assets/bundle.png diff --git a/docs/assets/chrome-dev-tools-network.png b/old/docs/assets/chrome-dev-tools-network.png similarity index 100% rename from docs/assets/chrome-dev-tools-network.png rename to old/docs/assets/chrome-dev-tools-network.png diff --git a/docs/assets/clutter-before-spa.gif b/old/docs/assets/clutter-before-spa.gif similarity index 100% rename from docs/assets/clutter-before-spa.gif rename to old/docs/assets/clutter-before-spa.gif diff --git a/docs/assets/commit.png b/old/docs/assets/commit.png similarity index 100% rename from docs/assets/commit.png rename to old/docs/assets/commit.png diff --git a/docs/assets/component-architecture.png b/old/docs/assets/component-architecture.png similarity index 100% rename from docs/assets/component-architecture.png rename to old/docs/assets/component-architecture.png diff --git a/docs/assets/components.png b/old/docs/assets/components.png similarity index 100% rename from docs/assets/components.png rename to old/docs/assets/components.png diff --git a/docs/assets/http-server-semver.png b/old/docs/assets/http-server-semver.png similarity index 100% rename from docs/assets/http-server-semver.png rename to old/docs/assets/http-server-semver.png diff --git a/docs/assets/icons/babel.png b/old/docs/assets/icons/babel.png similarity index 100% rename from docs/assets/icons/babel.png rename to old/docs/assets/icons/babel.png diff --git a/docs/assets/icons/bootstrap-64x64.png b/old/docs/assets/icons/bootstrap-64x64.png similarity index 100% rename from docs/assets/icons/bootstrap-64x64.png rename to old/docs/assets/icons/bootstrap-64x64.png diff --git a/docs/assets/icons/es6.png b/old/docs/assets/icons/es6.png similarity index 100% rename from docs/assets/icons/es6.png rename to old/docs/assets/icons/es6.png diff --git a/docs/assets/icons/lodash.png b/old/docs/assets/icons/lodash.png similarity index 100% rename from docs/assets/icons/lodash.png rename to old/docs/assets/icons/lodash.png diff --git a/docs/assets/icons/npm-64x64.png b/old/docs/assets/icons/npm-64x64.png similarity index 100% rename from docs/assets/icons/npm-64x64.png rename to old/docs/assets/icons/npm-64x64.png diff --git a/docs/assets/icons/sass.png b/old/docs/assets/icons/sass.png similarity index 100% rename from docs/assets/icons/sass.png rename to old/docs/assets/icons/sass.png diff --git a/docs/assets/icons/webpack.png b/old/docs/assets/icons/webpack.png similarity index 100% rename from docs/assets/icons/webpack.png rename to old/docs/assets/icons/webpack.png diff --git a/docs/assets/icons/yarn-64x64.png b/old/docs/assets/icons/yarn-64x64.png similarity index 100% rename from docs/assets/icons/yarn-64x64.png rename to old/docs/assets/icons/yarn-64x64.png diff --git a/docs/assets/mockup.png b/old/docs/assets/mockup.png similarity index 100% rename from docs/assets/mockup.png rename to old/docs/assets/mockup.png diff --git a/docs/assets/multiple-page-application.png b/old/docs/assets/multiple-page-application.png similarity index 100% rename from docs/assets/multiple-page-application.png rename to old/docs/assets/multiple-page-application.png diff --git a/docs/assets/mvc-architecture.png b/old/docs/assets/mvc-architecture.png similarity index 100% rename from docs/assets/mvc-architecture.png rename to old/docs/assets/mvc-architecture.png diff --git a/docs/assets/node_modules.png b/old/docs/assets/node_modules.png similarity index 100% rename from docs/assets/node_modules.png rename to old/docs/assets/node_modules.png diff --git a/docs/assets/not-bundle.png b/old/docs/assets/not-bundle.png similarity index 100% rename from docs/assets/not-bundle.png rename to old/docs/assets/not-bundle.png diff --git a/docs/assets/project-image.png b/old/docs/assets/project-image.png similarity index 100% rename from docs/assets/project-image.png rename to old/docs/assets/project-image.png diff --git a/docs/assets/shell-html.png b/old/docs/assets/shell-html.png similarity index 100% rename from docs/assets/shell-html.png rename to old/docs/assets/shell-html.png diff --git a/docs/assets/shell.png b/old/docs/assets/shell.png similarity index 100% rename from docs/assets/shell.png rename to old/docs/assets/shell.png diff --git a/docs/assets/single_page_application.png b/old/docs/assets/single_page_application.png similarity index 100% rename from docs/assets/single_page_application.png rename to old/docs/assets/single_page_application.png diff --git a/docs/assets/spa.png b/old/docs/assets/spa.png similarity index 100% rename from docs/assets/spa.png rename to old/docs/assets/spa.png diff --git a/done/back-end/.gitignore b/old/done/back-end/.gitignore similarity index 100% rename from done/back-end/.gitignore rename to old/done/back-end/.gitignore diff --git a/done/back-end/config.js b/old/done/back-end/config.js similarity index 100% rename from done/back-end/config.js rename to old/done/back-end/config.js diff --git a/done/back-end/package-lock.json b/old/done/back-end/package-lock.json similarity index 100% rename from done/back-end/package-lock.json rename to old/done/back-end/package-lock.json diff --git a/done/back-end/package.json b/old/done/back-end/package.json similarity index 100% rename from done/back-end/package.json rename to old/done/back-end/package.json diff --git a/done/back-end/server.js b/old/done/back-end/server.js similarity index 100% rename from done/back-end/server.js rename to old/done/back-end/server.js diff --git a/done/front-end/.babelrc b/old/done/front-end/.babelrc similarity index 100% rename from done/front-end/.babelrc rename to old/done/front-end/.babelrc diff --git a/done/front-end/browserslist b/old/done/front-end/browserslist similarity index 100% rename from done/front-end/browserslist rename to old/done/front-end/browserslist diff --git a/done/front-end/package-lock.json b/old/done/front-end/package-lock.json similarity index 100% rename from done/front-end/package-lock.json rename to old/done/front-end/package-lock.json diff --git a/done/front-end/package.json b/old/done/front-end/package.json similarity index 100% rename from done/front-end/package.json rename to old/done/front-end/package.json diff --git a/done/front-end/src/app/components/footer/footer.component.html b/old/done/front-end/src/app/components/footer/footer.component.html similarity index 100% rename from done/front-end/src/app/components/footer/footer.component.html rename to old/done/front-end/src/app/components/footer/footer.component.html diff --git a/done/front-end/src/app/components/footer/footer.component.js b/old/done/front-end/src/app/components/footer/footer.component.js similarity index 100% rename from done/front-end/src/app/components/footer/footer.component.js rename to old/done/front-end/src/app/components/footer/footer.component.js diff --git a/done/front-end/src/app/components/footer/footer.component.scss b/old/done/front-end/src/app/components/footer/footer.component.scss similarity index 100% rename from done/front-end/src/app/components/footer/footer.component.scss rename to old/done/front-end/src/app/components/footer/footer.component.scss diff --git a/done/front-end/src/app/components/game/card/card.component.html b/old/done/front-end/src/app/components/game/card/card.component.html similarity index 100% rename from done/front-end/src/app/components/game/card/card.component.html rename to old/done/front-end/src/app/components/game/card/card.component.html diff --git a/done/front-end/src/app/components/game/card/card.component.js b/old/done/front-end/src/app/components/game/card/card.component.js similarity index 100% rename from done/front-end/src/app/components/game/card/card.component.js rename to old/done/front-end/src/app/components/game/card/card.component.js diff --git a/done/front-end/src/app/components/game/card/card.component.scss b/old/done/front-end/src/app/components/game/card/card.component.scss similarity index 100% rename from done/front-end/src/app/components/game/card/card.component.scss rename to old/done/front-end/src/app/components/game/card/card.component.scss diff --git a/done/front-end/src/app/components/game/game.component.html b/old/done/front-end/src/app/components/game/game.component.html similarity index 100% rename from done/front-end/src/app/components/game/game.component.html rename to old/done/front-end/src/app/components/game/game.component.html diff --git a/done/front-end/src/app/components/game/game.component.js b/old/done/front-end/src/app/components/game/game.component.js similarity index 100% rename from done/front-end/src/app/components/game/game.component.js rename to old/done/front-end/src/app/components/game/game.component.js diff --git a/done/front-end/src/app/components/game/game.component.scss b/old/done/front-end/src/app/components/game/game.component.scss similarity index 100% rename from done/front-end/src/app/components/game/game.component.scss rename to old/done/front-end/src/app/components/game/game.component.scss diff --git a/done/front-end/src/app/components/navbar/navbar.component.html b/old/done/front-end/src/app/components/navbar/navbar.component.html similarity index 100% rename from done/front-end/src/app/components/navbar/navbar.component.html rename to old/done/front-end/src/app/components/navbar/navbar.component.html diff --git a/done/front-end/src/app/components/navbar/navbar.component.js b/old/done/front-end/src/app/components/navbar/navbar.component.js similarity index 100% rename from done/front-end/src/app/components/navbar/navbar.component.js rename to old/done/front-end/src/app/components/navbar/navbar.component.js diff --git a/done/front-end/src/app/components/navbar/navbar.component.scss b/old/done/front-end/src/app/components/navbar/navbar.component.scss similarity index 100% rename from done/front-end/src/app/components/navbar/navbar.component.scss rename to old/done/front-end/src/app/components/navbar/navbar.component.scss diff --git a/done/front-end/src/app/components/score/score.component.html b/old/done/front-end/src/app/components/score/score.component.html similarity index 100% rename from done/front-end/src/app/components/score/score.component.html rename to old/done/front-end/src/app/components/score/score.component.html diff --git a/done/front-end/src/app/components/score/score.component.js b/old/done/front-end/src/app/components/score/score.component.js similarity index 100% rename from done/front-end/src/app/components/score/score.component.js rename to old/done/front-end/src/app/components/score/score.component.js diff --git a/done/front-end/src/app/components/score/score.component.scss b/old/done/front-end/src/app/components/score/score.component.scss similarity index 100% rename from done/front-end/src/app/components/score/score.component.scss rename to old/done/front-end/src/app/components/score/score.component.scss diff --git a/done/front-end/src/app/components/welcome/welcome.component.html b/old/done/front-end/src/app/components/welcome/welcome.component.html similarity index 100% rename from done/front-end/src/app/components/welcome/welcome.component.html rename to old/done/front-end/src/app/components/welcome/welcome.component.html diff --git a/done/front-end/src/app/components/welcome/welcome.component.js b/old/done/front-end/src/app/components/welcome/welcome.component.js similarity index 100% rename from done/front-end/src/app/components/welcome/welcome.component.js rename to old/done/front-end/src/app/components/welcome/welcome.component.js diff --git a/done/front-end/src/app/components/welcome/welcome.component.scss b/old/done/front-end/src/app/components/welcome/welcome.component.scss similarity index 100% rename from done/front-end/src/app/components/welcome/welcome.component.scss rename to old/done/front-end/src/app/components/welcome/welcome.component.scss diff --git a/done/front-end/src/app/scripts/component.js b/old/done/front-end/src/app/scripts/component.js similarity index 100% rename from done/front-end/src/app/scripts/component.js rename to old/done/front-end/src/app/scripts/component.js diff --git a/done/front-end/src/app/scripts/router.js b/old/done/front-end/src/app/scripts/router.js similarity index 100% rename from done/front-end/src/app/scripts/router.js rename to old/done/front-end/src/app/scripts/router.js diff --git a/done/front-end/src/app/scripts/utils.js b/old/done/front-end/src/app/scripts/utils.js similarity index 100% rename from done/front-end/src/app/scripts/utils.js rename to old/done/front-end/src/app/scripts/utils.js diff --git a/done/front-end/src/app/styles/_colors.scss b/old/done/front-end/src/app/styles/_colors.scss similarity index 100% rename from done/front-end/src/app/styles/_colors.scss rename to old/done/front-end/src/app/styles/_colors.scss diff --git a/done/front-end/src/app/styles/style.scss b/old/done/front-end/src/app/styles/style.scss similarity index 100% rename from done/front-end/src/app/styles/style.scss rename to old/done/front-end/src/app/styles/style.scss diff --git a/done/front-end/src/assets/cards/back.png b/old/done/front-end/src/assets/cards/back.png similarity index 100% rename from done/front-end/src/assets/cards/back.png rename to old/done/front-end/src/assets/cards/back.png diff --git a/done/front-end/src/assets/cards/card-0.png b/old/done/front-end/src/assets/cards/card-0.png similarity index 100% rename from done/front-end/src/assets/cards/card-0.png rename to old/done/front-end/src/assets/cards/card-0.png diff --git a/done/front-end/src/assets/cards/card-1.png b/old/done/front-end/src/assets/cards/card-1.png similarity index 100% rename from done/front-end/src/assets/cards/card-1.png rename to old/done/front-end/src/assets/cards/card-1.png diff --git a/done/front-end/src/assets/cards/card-2.png b/old/done/front-end/src/assets/cards/card-2.png similarity index 100% rename from done/front-end/src/assets/cards/card-2.png rename to old/done/front-end/src/assets/cards/card-2.png diff --git a/done/front-end/src/assets/cards/card-3.png b/old/done/front-end/src/assets/cards/card-3.png similarity index 100% rename from done/front-end/src/assets/cards/card-3.png rename to old/done/front-end/src/assets/cards/card-3.png diff --git a/done/front-end/src/assets/cards/card-4.png b/old/done/front-end/src/assets/cards/card-4.png similarity index 100% rename from done/front-end/src/assets/cards/card-4.png rename to old/done/front-end/src/assets/cards/card-4.png diff --git a/done/front-end/src/assets/cards/card-5.png b/old/done/front-end/src/assets/cards/card-5.png similarity index 100% rename from done/front-end/src/assets/cards/card-5.png rename to old/done/front-end/src/assets/cards/card-5.png diff --git a/done/front-end/src/assets/cards/card-6.png b/old/done/front-end/src/assets/cards/card-6.png similarity index 100% rename from done/front-end/src/assets/cards/card-6.png rename to old/done/front-end/src/assets/cards/card-6.png diff --git a/done/front-end/src/assets/cards/card-7.png b/old/done/front-end/src/assets/cards/card-7.png similarity index 100% rename from done/front-end/src/assets/cards/card-7.png rename to old/done/front-end/src/assets/cards/card-7.png diff --git a/done/front-end/src/assets/cards/card-8.png b/old/done/front-end/src/assets/cards/card-8.png similarity index 100% rename from done/front-end/src/assets/cards/card-8.png rename to old/done/front-end/src/assets/cards/card-8.png diff --git a/done/front-end/src/assets/cards/card-9.png b/old/done/front-end/src/assets/cards/card-9.png similarity index 100% rename from done/front-end/src/assets/cards/card-9.png rename to old/done/front-end/src/assets/cards/card-9.png diff --git a/done/front-end/src/assets/happy_homer.jpg b/old/done/front-end/src/assets/happy_homer.jpg similarity index 100% rename from done/front-end/src/assets/happy_homer.jpg rename to old/done/front-end/src/assets/happy_homer.jpg diff --git a/done/front-end/src/assets/logo_take_my_money.png b/old/done/front-end/src/assets/logo_take_my_money.png similarity index 100% rename from done/front-end/src/assets/logo_take_my_money.png rename to old/done/front-end/src/assets/logo_take_my_money.png diff --git a/done/front-end/src/favicon.ico b/old/done/front-end/src/favicon.ico similarity index 100% rename from done/front-end/src/favicon.ico rename to old/done/front-end/src/favicon.ico diff --git a/done/front-end/src/index.html b/old/done/front-end/src/index.html similarity index 100% rename from done/front-end/src/index.html rename to old/done/front-end/src/index.html diff --git a/done/front-end/src/main.js b/old/done/front-end/src/main.js similarity index 100% rename from done/front-end/src/main.js rename to old/done/front-end/src/main.js diff --git a/done/front-end/webpack.config.js b/old/done/front-end/webpack.config.js similarity index 100% rename from done/front-end/webpack.config.js rename to old/done/front-end/webpack.config.js diff --git a/master3.json b/old/master3.json similarity index 100% rename from master3.json rename to old/master3.json diff --git a/press.sh b/old/press.sh similarity index 100% rename from press.sh rename to old/press.sh diff --git a/resources/arrow-fn/router.js b/old/resources/arrow-fn/router.js similarity index 100% rename from resources/arrow-fn/router.js rename to old/resources/arrow-fn/router.js diff --git a/resources/arrow-fn/score.js b/old/resources/arrow-fn/score.js similarity index 100% rename from resources/arrow-fn/score.js rename to old/resources/arrow-fn/score.js diff --git a/resources/arrow-fn/welcome.js b/old/resources/arrow-fn/welcome.js similarity index 100% rename from resources/arrow-fn/welcome.js rename to old/resources/arrow-fn/welcome.js diff --git a/resources/classes/router.js b/old/resources/classes/router.js similarity index 100% rename from resources/classes/router.js rename to old/resources/classes/router.js diff --git a/resources/classes/score.js b/old/resources/classes/score.js similarity index 100% rename from resources/classes/score.js rename to old/resources/classes/score.js diff --git a/resources/classes/welcome.js b/old/resources/classes/welcome.js similarity index 100% rename from resources/classes/welcome.js rename to old/resources/classes/welcome.js diff --git a/resources/component/card.component.js b/old/resources/component/card.component.js similarity index 100% rename from resources/component/card.component.js rename to old/resources/component/card.component.js diff --git a/resources/component/component.js b/old/resources/component/component.js similarity index 100% rename from resources/component/component.js rename to old/resources/component/component.js diff --git a/resources/component/game.component.js b/old/resources/component/game.component.js similarity index 100% rename from resources/component/game.component.js rename to old/resources/component/game.component.js diff --git a/resources/component/score.component.js b/old/resources/component/score.component.js similarity index 100% rename from resources/component/score.component.js rename to old/resources/component/score.component.js diff --git a/resources/component/welcome.component.js b/old/resources/component/welcome.component.js similarity index 100% rename from resources/component/welcome.component.js rename to old/resources/component/welcome.component.js diff --git a/resources/html-import/score.js b/old/resources/html-import/score.js similarity index 100% rename from resources/html-import/score.js rename to old/resources/html-import/score.js diff --git a/resources/html-import/welcome.js b/old/resources/html-import/welcome.js similarity index 100% rename from resources/html-import/welcome.js rename to old/resources/html-import/welcome.js diff --git a/resources/init/back-end/.gitignore b/old/resources/init/back-end/.gitignore similarity index 100% rename from resources/init/back-end/.gitignore rename to old/resources/init/back-end/.gitignore diff --git a/resources/init/back-end/config.js b/old/resources/init/back-end/config.js similarity index 100% rename from resources/init/back-end/config.js rename to old/resources/init/back-end/config.js diff --git a/resources/init/back-end/package-lock.json b/old/resources/init/back-end/package-lock.json similarity index 100% rename from resources/init/back-end/package-lock.json rename to old/resources/init/back-end/package-lock.json diff --git a/resources/init/back-end/package.json b/old/resources/init/back-end/package.json similarity index 100% rename from resources/init/back-end/package.json rename to old/resources/init/back-end/package.json diff --git a/resources/init/back-end/server.js b/old/resources/init/back-end/server.js similarity index 100% rename from resources/init/back-end/server.js rename to old/resources/init/back-end/server.js diff --git a/resources/init/front-end/src/app/scripts/game.js b/old/resources/init/front-end/src/app/scripts/game.js similarity index 100% rename from resources/init/front-end/src/app/scripts/game.js rename to old/resources/init/front-end/src/app/scripts/game.js diff --git a/resources/init/front-end/src/app/scripts/score.js b/old/resources/init/front-end/src/app/scripts/score.js similarity index 100% rename from resources/init/front-end/src/app/scripts/score.js rename to old/resources/init/front-end/src/app/scripts/score.js diff --git a/resources/init/front-end/src/app/scripts/utils.js b/old/resources/init/front-end/src/app/scripts/utils.js similarity index 100% rename from resources/init/front-end/src/app/scripts/utils.js rename to old/resources/init/front-end/src/app/scripts/utils.js diff --git a/resources/init/front-end/src/app/scripts/welcome.js b/old/resources/init/front-end/src/app/scripts/welcome.js similarity index 100% rename from resources/init/front-end/src/app/scripts/welcome.js rename to old/resources/init/front-end/src/app/scripts/welcome.js diff --git a/resources/init/front-end/src/app/styles/bootstrap.css b/old/resources/init/front-end/src/app/styles/bootstrap.css similarity index 100% rename from resources/init/front-end/src/app/styles/bootstrap.css rename to old/resources/init/front-end/src/app/styles/bootstrap.css diff --git a/resources/init/front-end/src/app/styles/style.css b/old/resources/init/front-end/src/app/styles/style.css similarity index 100% rename from resources/init/front-end/src/app/styles/style.css rename to old/resources/init/front-end/src/app/styles/style.css diff --git a/resources/init/front-end/src/app/views/game.html b/old/resources/init/front-end/src/app/views/game.html similarity index 100% rename from resources/init/front-end/src/app/views/game.html rename to old/resources/init/front-end/src/app/views/game.html diff --git a/resources/init/front-end/src/app/views/score.html b/old/resources/init/front-end/src/app/views/score.html similarity index 100% rename from resources/init/front-end/src/app/views/score.html rename to old/resources/init/front-end/src/app/views/score.html diff --git a/resources/init/front-end/src/app/views/welcome.html b/old/resources/init/front-end/src/app/views/welcome.html similarity index 100% rename from resources/init/front-end/src/app/views/welcome.html rename to old/resources/init/front-end/src/app/views/welcome.html diff --git a/resources/init/front-end/src/assets/cards/back.png b/old/resources/init/front-end/src/assets/cards/back.png similarity index 100% rename from resources/init/front-end/src/assets/cards/back.png rename to old/resources/init/front-end/src/assets/cards/back.png diff --git a/resources/init/front-end/src/assets/cards/card-0.png b/old/resources/init/front-end/src/assets/cards/card-0.png similarity index 100% rename from resources/init/front-end/src/assets/cards/card-0.png rename to old/resources/init/front-end/src/assets/cards/card-0.png diff --git a/resources/init/front-end/src/assets/cards/card-1.png b/old/resources/init/front-end/src/assets/cards/card-1.png similarity index 100% rename from resources/init/front-end/src/assets/cards/card-1.png rename to old/resources/init/front-end/src/assets/cards/card-1.png diff --git a/resources/init/front-end/src/assets/cards/card-2.png b/old/resources/init/front-end/src/assets/cards/card-2.png similarity index 100% rename from resources/init/front-end/src/assets/cards/card-2.png rename to old/resources/init/front-end/src/assets/cards/card-2.png diff --git a/resources/init/front-end/src/assets/cards/card-3.png b/old/resources/init/front-end/src/assets/cards/card-3.png similarity index 100% rename from resources/init/front-end/src/assets/cards/card-3.png rename to old/resources/init/front-end/src/assets/cards/card-3.png diff --git a/resources/init/front-end/src/assets/cards/card-4.png b/old/resources/init/front-end/src/assets/cards/card-4.png similarity index 100% rename from resources/init/front-end/src/assets/cards/card-4.png rename to old/resources/init/front-end/src/assets/cards/card-4.png diff --git a/resources/init/front-end/src/assets/cards/card-5.png b/old/resources/init/front-end/src/assets/cards/card-5.png similarity index 100% rename from resources/init/front-end/src/assets/cards/card-5.png rename to old/resources/init/front-end/src/assets/cards/card-5.png diff --git a/resources/init/front-end/src/assets/cards/card-6.png b/old/resources/init/front-end/src/assets/cards/card-6.png similarity index 100% rename from resources/init/front-end/src/assets/cards/card-6.png rename to old/resources/init/front-end/src/assets/cards/card-6.png diff --git a/resources/init/front-end/src/assets/cards/card-7.png b/old/resources/init/front-end/src/assets/cards/card-7.png similarity index 100% rename from resources/init/front-end/src/assets/cards/card-7.png rename to old/resources/init/front-end/src/assets/cards/card-7.png diff --git a/resources/init/front-end/src/assets/cards/card-8.png b/old/resources/init/front-end/src/assets/cards/card-8.png similarity index 100% rename from resources/init/front-end/src/assets/cards/card-8.png rename to old/resources/init/front-end/src/assets/cards/card-8.png diff --git a/resources/init/front-end/src/assets/cards/card-9.png b/old/resources/init/front-end/src/assets/cards/card-9.png similarity index 100% rename from resources/init/front-end/src/assets/cards/card-9.png rename to old/resources/init/front-end/src/assets/cards/card-9.png diff --git a/resources/init/front-end/src/assets/happy_homer.jpg b/old/resources/init/front-end/src/assets/happy_homer.jpg similarity index 100% rename from resources/init/front-end/src/assets/happy_homer.jpg rename to old/resources/init/front-end/src/assets/happy_homer.jpg diff --git a/resources/init/front-end/src/assets/logo_take_my_money.png b/old/resources/init/front-end/src/assets/logo_take_my_money.png similarity index 100% rename from resources/init/front-end/src/assets/logo_take_my_money.png rename to old/resources/init/front-end/src/assets/logo_take_my_money.png diff --git a/resources/init/front-end/src/index.html b/old/resources/init/front-end/src/index.html similarity index 100% rename from resources/init/front-end/src/index.html rename to old/resources/init/front-end/src/index.html diff --git a/resources/init/html-import/score.js b/old/resources/init/html-import/score.js similarity index 100% rename from resources/init/html-import/score.js rename to old/resources/init/html-import/score.js diff --git a/resources/let-const/router.js b/old/resources/let-const/router.js similarity index 100% rename from resources/let-const/router.js rename to old/resources/let-const/router.js diff --git a/resources/let-const/score.js b/old/resources/let-const/score.js similarity index 100% rename from resources/let-const/score.js rename to old/resources/let-const/score.js diff --git a/resources/let-const/welcome.js b/old/resources/let-const/welcome.js similarity index 100% rename from resources/let-const/welcome.js rename to old/resources/let-const/welcome.js diff --git a/resources/router/main.js b/old/resources/router/main.js similarity index 100% rename from resources/router/main.js rename to old/resources/router/main.js diff --git a/resources/router/router.js b/old/resources/router/router.js similarity index 100% rename from resources/router/router.js rename to old/resources/router/router.js diff --git a/resources/template-literals/router.js b/old/resources/template-literals/router.js similarity index 100% rename from resources/template-literals/router.js rename to old/resources/template-literals/router.js diff --git a/resources/template-literals/score.js b/old/resources/template-literals/score.js similarity index 100% rename from resources/template-literals/score.js rename to old/resources/template-literals/score.js diff --git a/resources/template-literals/welcome.js b/old/resources/template-literals/welcome.js similarity index 100% rename from resources/template-literals/welcome.js rename to old/resources/template-literals/welcome.js diff --git a/template/.gitlab-ci-m3-press-milestone.yml b/old/template/.gitlab-ci-m3-press-milestone.yml similarity index 100% rename from template/.gitlab-ci-m3-press-milestone.yml rename to old/template/.gitlab-ci-m3-press-milestone.yml diff --git a/templates/.gitlab-ci-m3-press-milestone.yml b/old/templates/.gitlab-ci-m3-press-milestone.yml similarity index 100% rename from templates/.gitlab-ci-m3-press-milestone.yml rename to old/templates/.gitlab-ci-m3-press-milestone.yml diff --git a/trainer/CR.md b/old/trainer/CR.md similarity index 100% rename from trainer/CR.md rename to old/trainer/CR.md diff --git a/trainer/questions.md b/old/trainer/questions.md similarity index 100% rename from trainer/questions.md rename to old/trainer/questions.md diff --git a/resources/boilerplate/emptydocs/.gitignore b/resources/boilerplate/emptydocs/.gitignore new file mode 100644 index 0000000..45ddf0a --- /dev/null +++ b/resources/boilerplate/emptydocs/.gitignore @@ -0,0 +1 @@ +site/ diff --git a/resources/boilerplate/emptydocs/README.md b/resources/boilerplate/emptydocs/README.md new file mode 100644 index 0000000..d043d94 --- /dev/null +++ b/resources/boilerplate/emptydocs/README.md @@ -0,0 +1,4 @@ +# Kubernetes in Action +------ + +Hello World! diff --git a/resources/boilerplate/emptydocs/docs/assets/takima-logo.jpg b/resources/boilerplate/emptydocs/docs/assets/takima-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..27efddb9a5829f7afdef9c4904999a347db18256 GIT binary patch literal 45497 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≧z1EOV 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 literal 0 HcmV?d00001 diff --git a/resources/boilerplate/emptydocs/docs/index.md b/resources/boilerplate/emptydocs/docs/index.md new file mode 100644 index 0000000..415e64d --- /dev/null +++ b/resources/boilerplate/emptydocs/docs/index.md @@ -0,0 +1 @@ +# Java in Action - Guide \ No newline at end of file diff --git a/resources/boilerplate/emptydocs/mkdocs.yml b/resources/boilerplate/emptydocs/mkdocs.yml new file mode 100644 index 0000000..ad9a47a --- /dev/null +++ b/resources/boilerplate/emptydocs/mkdocs.yml @@ -0,0 +1,16 @@ +site_name: Bootcamp Java +nav: + - Briefing: chapters/tp1/index.md +theme: + name: 'material' + features: + - navigation.tabs + - navigation.instant + +markdown_extensions: + - markdown.extensions.admonition: + - pymdownx.highlight: + anchor_linenums: true + - pymdownx.inlinehilite + - pymdownx.snippets + - pymdownx.superfences diff --git a/resources/boilerplate/java-one-trainees/.gitlab-ci.yml b/resources/boilerplate/java-one-trainees/.gitlab-ci.yml new file mode 100644 index 0000000..0cc783a --- /dev/null +++ b/resources/boilerplate/java-one-trainees/.gitlab-ci.yml @@ -0,0 +1,11 @@ +image: python:3 + +pages: + stage: deploy + script: + - ls public + artifacts: + paths: + - public + rules: + - if: '$CI_COMMIT_BRANCH == "main"' diff --git a/resources/docs/.gitignore b/resources/docs/.gitignore new file mode 100644 index 0000000..45ddf0a --- /dev/null +++ b/resources/docs/.gitignore @@ -0,0 +1 @@ +site/ diff --git a/resources/docs/2022-01-28-20-24-21.060-VBoxHeadless-27399.log b/resources/docs/2022-01-28-20-24-21.060-VBoxHeadless-27399.log new file mode 100644 index 0000000..7ef1a42 --- /dev/null +++ b/resources/docs/2022-01-28-20-24-21.060-VBoxHeadless-27399.log @@ -0,0 +1,12 @@ +Log created: 2022-01-28T20:24:21.603684000Z +Process ID: 27399 (0x6b07) +Parent PID: 1 (0x1) +Executable: /usr/lib/virtualbox/VBoxHeadless +Arg[0]: /usr/lib/virtualbox/VBoxHeadless +Arg[1]: --comment +Arg[2]: minikube +Arg[3]: --startvm +Arg[4]: 26d2a365-7d4c-4592-aefc-26080a946bb9 +Arg[5]: --vrde +Arg[6]: config +AddRef: illegal refcnt=3221225469 state=2 diff --git a/resources/docs/Dockerfile b/resources/docs/Dockerfile new file mode 100644 index 0000000..a03c714 --- /dev/null +++ b/resources/docs/Dockerfile @@ -0,0 +1,15 @@ +FROM python:3.7-alpine3.14 + +WORKDIR /home + +COPY docs docs +COPY mkdocs.yml . +COPY requirements . + +RUN pip install -r requirements + +RUN mkdocs build +# site dir generated with previous cmd +WORKDIR /home/site + +ENTRYPOINT ["python3", "-m", "http.server", "8000"] \ No newline at end of file diff --git a/resources/docs/README.md b/resources/docs/README.md new file mode 100644 index 0000000..50f026c --- /dev/null +++ b/resources/docs/README.md @@ -0,0 +1,19 @@ + +# Démarrer en local la documentation + +## Avec Docker +```bash +./run.sh + +#then go to http://localhost:8000 +``` + +## Avec Python (orienté développement, hot-reload) +```bash +# install deps +pip install -r requirements + +# start mkdocs server +python -m mkdocs serve +``` + diff --git a/resources/docs/docs/assets/architectural_diagram.png b/resources/docs/docs/assets/architectural_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..1891741994dbc5dd50bdcf3f130b2b5c0d218cd7 GIT binary patch literal 41440 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 literal 0 HcmV?d00001 diff --git a/resources/docs/docs/assets/architectural_diagram_dao.png b/resources/docs/docs/assets/architectural_diagram_dao.png new file mode 100644 index 0000000000000000000000000000000000000000..b817269a58c6108e30db3f690d034f6e1e412db7 GIT binary patch literal 42695 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 R&;^i_Jzf1=);T3K0RZF4W%vL9 literal 0 HcmV?d00001 diff --git a/resources/docs/docs/assets/architectural_diagram_dto.png b/resources/docs/docs/assets/architectural_diagram_dto.png new file mode 100644 index 0000000000000000000000000000000000000000..832775f4df32ae9261d1a8356a22dd9cd5c78c47 GIT binary patch literal 41808 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 Udiyk_?7_pdp00i_>zopr0NGN5JOBUy literal 0 HcmV?d00001 diff --git a/resources/docs/docs/assets/architectural_diagram_model.png b/resources/docs/docs/assets/architectural_diagram_model.png new file mode 100644 index 0000000000000000000000000000000000000000..c54ee9becb1aa86d324c1eef358d8efe40d4a563 GIT binary patch literal 41188 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⪼HIq25nSxrZ!>Z4~gMP<+a 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 literal 0 HcmV?d00001 diff --git a/resources/docs/docs/assets/architectural_diagram_project.png b/resources/docs/docs/assets/architectural_diagram_project.png new file mode 100644 index 0000000000000000000000000000000000000000..f5d624a442d37fb763e9db6f11d34dcadceec7b6 GIT binary patch literal 42030 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	|BWq~ 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 J);T3K0RV257e4?1 literal 0 HcmV?d00001 diff --git a/resources/docs/docs/assets/architectural_diagram_service.png b/resources/docs/docs/assets/architectural_diagram_service.png new file mode 100644 index 0000000000000000000000000000000000000000..d14c6123fe17099e7b8839ed3480a85322729e11 GIT binary patch literal 41307 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 BB76V< literal 0 HcmV?d00001 diff --git a/resources/docs/docs/assets/db_schema.png b/resources/docs/docs/assets/db_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..761a47deec7281d0560f3e686989d8c0a9482110 GIT binary patch literal 49639 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Ñ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 Mp00i_>zopr08_rET>t<8 literal 0 HcmV?d00001 diff --git a/resources/docs/docs/assets/img.png b/resources/docs/docs/assets/img.png new file mode 100644 index 0000000000000000000000000000000000000000..09e9e1ad8b43088b7756754899278081bc4bf446 GIT binary patch literal 43756 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 literal 0 HcmV?d00001 diff --git a/resources/docs/docs/assets/logo-takima.jpg b/resources/docs/docs/assets/logo-takima.jpg new file mode 100644 index 0000000000000000000000000000000000000000..27efddb9a5829f7afdef9c4904999a347db18256 GIT binary patch literal 45497 zcmex=<NpH&0WUXCHwH#V1_nk3Mh1re4;i#vD>Bm<7(6|-7&sU}!iJ1Y4D1XH3{ngb z;GUnKo|DSJ@c%YL3j;F~69*x{#>U3R&cVvc%EijY&cVsa$;!&j%f-RV#=*(K$jrjR z#>&RU#>U0L!Nmc_APUSNWH3nn{{aR;4(1l-7G_2z1|~s9W<kdPM;K%o7#WzDm_h!6 zIGTZhk&~T+iIt6+<^K@|F98N7MrKA<R#p}cCQcScRt5$}CT12vko$xbg$*486FHR% z8z+hwE!?PV>=aaV@ZyK0hoUN~rq02|n?6dKgfuOZa7mtY>HiT18Ae71Mpk5-7+9H@ zS=c$)Kn`&iWME=sVq#<CU}0usWnl(|C=;_F3oDzDqM>7;uu@`S<3x55Bd4H+8xJZc z6<utav`Ez0Irz{+)8yh!A5={yUs7rQ`2Q9I4>KbJlOVGogFVAm1DKykr3DJ-`jj^m zN!lE{{9fwZIh(7m4{?_NK5<}n{qelnxl{B0UAX>k>M@~dPkbJ1s!21w&F@vbUp9R8 zpY!QwZiy>@xSPEt@%t+$i_eqd&#bfE_V|9_j`KH_Z>V3s_sO8`N`8CLp7Z&o!Rz07 zu78$toLA49x4G#{Y47Uof);@>dw1%yZhjUOcKM_1(x~*UJKO#Kn4EFnYEzrJ<@2}l z+opG4g^Nbd^nUMG{Lk#>r+_%m8o}DcMcd!n?i0WGEZ#deGi258D@lLM|C~K@i$CM) zk?Fe9Ci{=vHoUj}*uRb8wzHS}Kb{;{^yen)RWI(wS1U5Mg*x9@=>KEA{_ojF^Ohd@ zwmbCq_mExXCG}T6U!VQx$}4lt>&^N57u)2qaa{?zGttyv@6hFMnnC@g7V9_OKA)W@ zeR@vuz0&W~FR%Ey?9*TVHpal&QiXj_rWb8Uzjo_YK+VO9y7UuF+t%-SyLf9kx7@E6 zW#4w+ypq^1bs^&2i}R|D%}*!x>zHc(4rqSgmF9Q3V%l}h^hvK~onQQK`Nj)Bu3yWn z+f?%Ek5K{-OINAV4<)O0-VLkYURd=0r%+vX<_;<GEm5x|LUXSCxs`M3x8Ylc4fE_S z?3TB8+Ew)D=Fx){Oa7^Dcj9k+UT7se<@#OE%QX+x_W8Yj5<Txsq5YEB$D4Nc$D2)@ zm}9o=-XcHIm8b23{eMoG?zOr9?v#apco$!M^X$|5w^CENXYGs)x49iZGxgzgwo0D( z#aVvud7}cKN*?>qaAoZmy=lglDXahXJf0l3J^L+hSl5Txx6;BJWa@9+NsM*8{ax+p zv*c4P*E1h%{3SRm(QJj*#+b~#`O}VnGP|!bPdTOhU}Dwe?K@gN|5NEt_1aY%>|0f; zW19QCW3|&#$*e0q3$A^+?EkFRk!3zNsp*(#^&AWn3a6ac+**Bh)8_7Sagmn~%Po~( zh3j2fYPIR=a&fiqDzodAuciE{YFqC&CFYf%VNdn#OsVR<cJ^;yS_W-wp6fdG+`rfL z!olC0kL0ahvHjNdsT%ulF1zJhHPhhm$@e#MV%9qv{@Creb%o=fxU0LBwoPN-v(KPp zH_Oi~t<RBX6h3{*O8dCu?G?S4#c5Nu^6jhNCtQ=7{H*4@p8r1IuPKs+3njkIF4wuR zW;<)9m#xV@t=Zu%<+9iIZrfgNRJ^`0tmeF)p8u4WBH>L3E!Z62J>)o;bx>oSr^=oQ zISCA5n8Cotz@Vfm^7~qyN(0|<k6Tt>RF=AJ^{RLmIN9Ue?A?#ULpD9_O<Q%bzrJUd z>5GJ=N4=|*4QHl_OUuT%T7<ms+V!sbwE5k7>0P<slq3Jni+}ubT8>)(7L)9wep5Zp z>F-?D<#Ime$GT@JviIKK55AnX)ag;F(0_(@v!6j<4AtA>UamHdcQ08LS0TB>PUQJE z{f*vLAN33kGM7EC__{FmSnr=|tA5V&-|UuMe{=6<^xcDgtq~#Ju^%&M6gBsK_DhS@ zGuEBAPHE2KQ(=4LOQs#(%cAC)(~Rj$ibR-<oM*5rN!z@;`1b4CH8HEhmh;7Zc{2G| z%C+7Xg`d;&&vL8Yz8V?v;TO0d^nLnM&s<(N#@6!m=ctRZpQ;77iBJEqTwL>{oA%yq zJ=S~rv`zL}+GSl_sjro5w_j=B_tv9oYgbs-%?i;xZMj_h;gck<uXkoonX^>w)17(s z#zqqP-6w8a#xI__sp8fAe>-Yr=HGgDCEvMU`t-c4vcfkn_r02X$!*(Pxtp=E+umiL z+ZI=-Y1i(<v*Vz9k=Z$B^@9(TSGO<csLPJ?-+J=x{?aB1hBY$?g@*wHi|OC*a<>!A zkFUtw+_U!e`Kk6-&3;BcYW%q5`!wx<<#BwX$&yFk_e{!u7SZ>l;`z2+PZrkxlDaEA zy`*m0)fd0sYJCV^YH?0~=h0<dPXB(D)CcRm>+Z~T_L>ut<+WDiKSQYc9A%+pvbGyP znetV>_%}8B>gjt+wtw-zS-<qdyJ~CiLZ8VTdBI)UyitN)i<U?43YdI+@5^UtCqn#p z94IU-OY1$Bu=>F(tI&rUp83Afr)OC<acUYk5b_ss@{gXB-1>I?_HD;=TO*td-=CSF z-J)u~TI6>1r1138$&U*wC3H@CX`kJr9R7Xo@wEAwXQku6&eU07e&$N;<HFKa_jhVs zDaknfP25u@#i?cKjp{e+or-00ms)%=sQdEGp5y)JjS0JtKMMD`9Q=0m(bETAmtTK! z*6Uur{CClvD{lt9d3@Dv{by6DPv1(VOVzD<|NSodB`<7bqAdH{clXp6dhyL$RxOXq z?%C#kNc-K*7u(iXOy9n#XxEN8w?9qxemVKve}>ABzj~NewWayyS_Jp45$cMb<f;0g zfkB)&-!m{U2sSyezrM7!YKz*cz&R_==^IXo6Ush+=1!gbk0(>j{cZ<W#wxA;x$m)e zfph%*FB)@1rd<*?J-K1$T)Tcjk$;kFC-)cswr#zW^X_usuH{lw(j||1np{3#d0Q={ z?McO?y%%2{)jYL!U(j4jvwJqz7wOC|seZTl>WX6}TCV50XGy-A@3Tg5s-{KR;@Ml; zT@5XLwqAV|l)pMq_wM8v`I9qM1ZJu>A12x_SQT3AWGGTrk6e>0Dkb=Qb&x^-oLQ#7 zt88*!ZnJE)Ec^5>c7DkGl`#oVcM8prSuff*ZJFGhXTQac-uo`C81_)_+w`Lkjz?GT zziaOAzimg;tXRdV)54#9t~hh${hftgvAyaSExt_S;a~Y`YxcgZtLjm4#krgHB=S3M z-HcznYSNaES4G5s7TngC%!^(2B;WcLXHZ_q8_iE!r=Hh){;D_bw(r|l;-89k?3f>a zvu9TSg^!QfVlt0ePu%wDO*8ZK^#_)U{4?9S>`x?T#pCre6~y_;N%V|7Uw-eur+aO7 zoax$C78YCX6u&!J@w94QN?UWdZs=034FxNvELKeyTQ}>i>#~BkM@`qQ^)h+o8NAa| z)5)KAzex^D`lJb8bj#LmjkvbhoNHp{O7)({2d7CNdM<Wl{X*{Oo5$uJI+Aqz(ERo* zeXE^rC-0tkepcwhNr&P^oBTq)pPKhG_}z2)S!PEjKlfUdt-UJ!!eLVZtPw>}kfm6@ zJ^0$nz?iG)68e@V`)6qN#LS(P`^o)X&O@t}65Lfb$(dDk39GcW)`-Z3UzO_J^Uq?d z^u4UI*Ka<&3+{e(vCbq_@9?dsRq`_)zg6Yy;=eyXG<sI_{U-Czx#pLb-#B_|>rs=( zzim#>UcPYE?Tg=<U5lOlmY?~x=KSs_nQq&+n7&IrUl>-J`s~Sn2Icj}itSzZx7^+t z*N{+fZJz3`Pciag^QV2={igct_WNy1>ou*e8wXDRqjF#C<b%)G?ezC<pMQo~Rb{)h zR-4>Zj#oiF3DY^2Og~-Uae(1hJVC$XRKVE$I<;CWxaXm|<k97l>TR>^92ZFKI~JkO zxhK-?nZd?=vwAC*EVQ(n948y!xns+!Wt(;_3%uL==H)r#mO1I-GftLdE;>}<^l0+i z3B6O_T**F|BsBT=>t7SUuDHEcUL?cT@S<FMv}|*1?AOfo<)2+^Y_9V?&Odla)Tqdy zSH}aVv#?39m@%rP{MkOMM|0V8jidTv9}@RIElghe@|EYco>%K$xIS0)(tT&VVTO#G zUepvttKJV?`R6CjR<)6H&naJ>n#^wX^`Xcf%V~8pO_VF|RNRj(b~<OD-d`3!ab2|Q zHuLb};vH*)ifUia{Pfo-)tTr1)(y8R;}`F7jrNx`^{f$m?Z11{&)LWK{Ab8e<*K=` zVfpRn+OxmM&s@2?_K4of6_#b&g+iYGXW-Laqp$Z_O7-dG2Yx&!F7=cv=cUdvp8oV? ziOJ>Z$L+T4s}^r^IhFf;yZUqW>0eVAVr?A`VDl`AVr~65m%RF_5z-qKR5(YfF!S*$ zdxZ>nsi3gx;Cnla&RY0Ciki3F$?WU1sb@_l`+l8fZ=9xd%IC)4b!(Fg{hqbVN%viT zd6%c%%Aeb!rt{7Iym(FIp~}GZB2zumS7jgRUF#j5b@z+qVV^JYSJXaMr2Yu5%~=28 z$$y4RKZ@?8891fPXj?_3gF%sKR(k8$UauCJSLY16B6GL&M&4JK4coToOV0J|&{WNJ z8&Ae0Jl!$l^roJ;WLqB-RlB^qq4&NkXM8=oY+)|D)m3GVrPFS^ZOqT^yR99URo1<I ze#la}Cuh~}nf?7L>z5b$`jlY(Mz$+aUk#ss`|I-}@zS?#vsbHssdk&XDtYN8?>{@< zG`*kp{o#hw)yE!Hhh8a`nmX6Y_e;oaf4Loownr;{pA{9??=`z^SD|v+Q}@`7!wD}E z6IVJ3ESt`8RR23OgS^iMynbbz#GsP$>%yifvjV$wf2vjM@)!M@ddyloYLov_*ZI=k zl}YQArm9v=>Jhi})L;4V6L0s;bDXAGFD;!noo|_DkW#CD^L*)l2C--J4_1iXjnGq{ zy?&`>EPLkl<#k@4eyL?<TIg_{zxmuz<MXxi?-SlXeDm+JO}fn#8yAkum(N1wtMYg8 ztbN0D;y=Te{|uM@Gt{L&zOr|I7_Z)`C6hm%{CrLER-mlisoC4My53%K>ba!(>CkWG z>c3Wfj2AwVEq9*RiSv}`%kvk@r>?s2%ro$^&a&k{F806jt?hL=X=&Vd`9tgK+k4#Z zmDabKCC|+--Tv+8+qJ8lWq)?-X{zsBd@=E}kDBuDRa>6cUYoUl>bpvZ;<>wHU#{;; zKeJ-83Qtc1u7G3YIkCI{-qT#APjfRozxjEFwpCvXkDu6gBK_Fpurxbmet$u)kgTN| zXH8Xp+W)x`YxdskS>M83zehb&7F#U)@O!rR@)KWKGd^S<VOgV>oLXppBeY`K?U!PI zPOEL+-ScRv*qoG2vp%}GMpgCQb60yQ=WerH<fZiv?_AB|?uYlb8-Hoy)Rhas<vN78 zL(b>u-0jz{i7X9!v?Nht&BHCTf5?YjdTLd)T9rdx?d~M6xAWT8mWoch<h^$@bN>2n zZ(cp47PVE^4<AYT-2N(??LR}s&GltZ^Aqk`MP_e}eRDPX_0OxbR|feNPmlESxBNA8 z%ZERyPx5M-9a62s&*Y2l4UD_|H^05?v-<n^PFeTR+0R#Ng>3rh$GhbE$}Zy{-+xSQ zNLQJ5B%jAjs85V*E{B_7^pw#3|9-SIuwT|dxEmWQWyZmMouv%TQ>}crOv>H&q-W=@ zI?1oHL4{A2Y6QPLYq@Ni%{AW#cjH;3O8a$Q>u(A1G+VMuEpl$gk&iQvO-nF3eJtpu z`o9>n{o*?-W{GZyv40iSvS?+%te*XOfi?SsGt8^sd_E?(FjQYAxH9ea%P3nb!GOga zmz)01SR=pD<<K-G|FXlr&!TGkk8GC`TPP=X+x}Vg{364!qaUs>x#_AA?X)`f(u&FT z!YY}+bhW%iRvw!5pMfXHzQXX%?0eaF+>G`qz7Cu7?B3r@^G|m_SuAl+=}TC0*y59L zlLJeFi3h`@2TjY07-XXA>Km`VnysH7{dJ4xmGku`!6$DsgiD^%`<QE&dGqIDq1=9+ zD%U4bQ@3b5KQ_zb!0!AvpBAg!?ai@g4SaAnxVy8=G*$M@mk3>zGX?c`!{$!kt-e-X z{r6Pc?SIr>ZPQ)u78>+%*`|%348@i&3SF!&wdE<>9+g>opGrP$_;9@|Tg~Qn?4g&_ zFJ`UXA~OGvtH}IdHH-P3((-y=`b{$)YibtHF|+$FzWL;o4@UWNUu@^+7W@0HJb&+} z`enK9Ggo=H-sSz;@>J@J+LY?2r+(J$FnSzhbSF1wyN7{g*B`El`w#ru9LMu9!Ne%W zRsvfbGczz{UM<XA_UN*&>AhJx)0^J@)&3ot85jRrB+P2xk9Ci>MZVr1zQ=1<>Qn7i zMTLQr-Uj_$@qEYDFsWDf+^1afnP$0-FJ#Tu$CW|THT7gK-F*`CCGy0l>aDlCs#=#y z&&oBmP`mV@;$8Y`C8>=kLo>am+_hY7v2E6qYo8q04_(0KBDk32v0#gs7>(tcCX*s_ zzj)U8Iz3A6*;TfxY?@H;n$MCU{!465J!Dr;@ky=pQ#M|+;^Cv)kM+y6=geo;cz?Z% z+g3@aYfe^7^4(?gs(yWa5w7>m{BHH?&?&F4PEViq*wbuE`1F;JOW!VBTO1Uc?H8)9 zcDpF|Yh9ds%tUp+N$vH<OF!|79(rmRv}tA7-K^fcH%$+Amp3`+&$|J4Aa({LZ%fb3 z9eI-Zrd?ez>*j8W-y7u3{h)u+q^{it8)w|Iu=3klso|!bo&RL#_Jhh&Z_*CL#$WB# zt_qs7<l~gt@#f9d-vtkR<xb`L)fB2#GCldh%z58KcSh@K^<-XHDp#Xd)vI><OT~*6 zk&ahW?`+d;w|&Vr=lU^oclN4~Z)<a}sy}|W?(Om?mrG`qBrNn2Y*E@UB`8+#w}FQt zZ^Z4q_t`ZL4D#p>XAxqs*fH1c;+x*RcVw-*3|5Lic(nQJd+P;U4=o*6x^B7lZ0@Xg z8JF*VERfBQpSQJTx8?U$cJjgA+dFq=|24`J7fIRp+tXZr9rwgSE8mqjPG_IWn|fB` zO7my$*{^$M2CRF$KXcQjT&rUVZ~X;-e7SD_Ug*tqd3mGBvn0(Y*ZtwzvMMHXZ+Q5P zA4@XJF63Ozj_RA6;U(04*f)8{`BqokV?R$7pHa)?t+BaW_eJjH@x8U*WfM4?9@?RM zgMooV#e{Lk9FF%pFRs=#+w=Ei>2ghb@!uL7D*WwddPK2px6Zn<`ruYA<KT#j^Kp;v zmh<kJkrh?T^~&@7#IkPN^Rh?El*Fn|cb>1CVC3qw>3C3V)Viy>JADiPseU$!P?*ef z8Fx#JgF(JO^y<osEvrH%^(f8G-IJ)?wsB4HLch?glTHG@+wNKK{}ApkS`&6<|4M6b z%N@~2w`#gRp8xPg>~i0;H!J7OS3HsZ?CUS9tPAn?Lbjb)zq>~8Ma7cGY@u_#r8yr> zk2tp`{@xE`KkYk~=9=bezqZ{E|7dY4l4Xs;qBVU>Pi>lG7wH;!_}G1sy)X9_)#sj2 zVbE41)S2Try03eW6YrMkC+^q@SNKjnv#_?7T`Dju<mJiQ_iC3vXw111dXs<Fvn@ua z`1Y2k?49xZa*as%zlc{m(jIcHeY3E%TAaIXQcu+3>HUu)!p`N~m5vHr>?F9{kDJp~ zb$<A>^Ea2@aGImc;p%1>(G%`6$=*{mXz}dZPm0b}&VN)~wd-r_g84zSz9sE@Kbxf? z$_97XGB6$sH2C*xN6yBp57jl?<{p#R^;j~kwjfPO%5K@^UB(78PTlb8TFdDr)c0)u z$<MJpE9QRs@UeQym8_+fUen@rT{g|^k}TWpyJ?HwORwIe7FSv(`_ELne)!}p*(3R^ zp}ITYZTa#l@YP+@?~7l5P|3XRpR!H*KZCo;qiK3KYI0XzxwCwi@cSRppG@8>{EoYE zZq6KaaZpF-;K!5Ga+h2V#|&qdlw0RmzHfP(FWVdWXl~rf?U(I5uDaE|WsaJ<H!JkP zt&(NSFCSIE6KL^TTTpUaJkMdyU|#z={m@U7Zi_#QeQWtt{rUA*#fIk|eQ%a^_uIbX zRM8Z1qfeQVq5@|lZ#<sk%bED<)Re1BIW4x{n%l`B&r^Vz6+j~F53ZSZm1v$?8>!*M zx$X9Gm)iIF%6>+3X7wa(y8X^m^y$&(B6;tMHg2BXD`74*+5f%0=&SB651zfLifLC~ zJNuESR<+W$EAu(@?|yKPJsK}ss{hLG+_^lnkGWof_0_)?ht586Qe{ihqBVW1PaB<* zEM;|S$(i>3n19cbAKMsMT~>hHfQnh<7nKEh>n7VJ{J7<QfPsGjT)IWtIG#tkd*zxq z*HgODftgn($I97=&-~=8T9%kxIAudgYTV|lJ)*aNsowgotWr>YSb6V?_3IU`a%_2d zaQ&XY-hvx0KLizbizSv!iWPEydUNl*rP*#G83&yNx;$0;-jrH9DJ^w3FP>cd=hL>_ z&eF77O*j3-Z%X`o-wjH9C*Tgj&JZYA?P_w_bNR*PS52SPGO%qZ<Uja!+d|1Zkw=4e zdhT<*Wc2aZ)W_Rqa~39sg{;#&CFHwqwWQw0#bWOl7i^n#RMKsYveb?5Sxc|mNgBNj zFTC+x+TU%<rFE>UB(}W@y0dg&$$y55Z~3l{%RHx)U)+(sS82<_Fy70jpU(21x}I;D zu1c_PtgK+$(V(Njp&2LrjKY1bCo$N~L```d#~<JGNRVFq=HI>5y<W3wBWvGnnO4L5 zyIZrmv^r6n*XiCfe%_EC>HiGewchPF{uY^weOYzP%d4RK)aT5U-Xl(z_8ZT!Rd`yr zz9(XZw%e}Tr{k>UXKns$eZWyoaTTgv&`>Iv^1)~3x;c>_`FZtjg?&kxdo|>``?Xnh zs)5~;H>ni;VU4M+c=%%Vsl2<Lg_EC5?EZ1~QSn4?zfCLK?}ioDN6eCs+B`XT&-Q!g zFR#v;yf!FQ%kxxmUQq7y)#*<>rniWQPP{f#&DUM)uv@F@_L}F%iXPohS3M}yz<L<7 z>A>4y<fCx=&@Xv!Z_AKLElN+-FRE-hd-CDuR<Dvw-QdueEt$u+^lFwoJ9NJPNucG5 z)tkgk&%Q|Avdimy_Dv4m&2x6RX>UJq=(q6Bx>Gk_S+&1d;hHu_^-`#OyZgOl*%jAA zvnCbBY`J_yY0n;>nMdk=&RbgY^3r!*jqO|}k1tuoTCID2Cvk~#?fcUc{i3<PD!-Ok zJ9*Zg%nwWD1m8|S^7D<O5M!hTG}L&T1lY?rR%-@*dp32i#!jy#lPY2_=CA%)s=K;y z_KL+zBZC(EY0sZ(d0sX;Gu1eHhtQq)bp9_>D}I0e8x~$<o~F@vBxLv17`~FrXMSH> z{cEcDkCORu=Tnydb}z3z>C%umYYNmNyp+I21?Drk_ujAFDkZeA*w47zSM7Sl^W&=d zh0=$X9-AB#nsM~X*2#Is-n%dUOxRK*o40pC(9We+rVCaD&pNW`THQR?SEVuX>B`q% z{F{_y)HOHkx#zyUYTwF_Pub_+>CtEL;^1}}{}0VU=Yn@{Y@WM6(qid%TRXQUA<G`! z%H}P}J~5@`%G8UOf5v6EpINc$N2S`lukT$yO?q&Gk!e#5io-e1Pp@xZtkd1d`=WN$ z;Wv|}Wkr9<-M2K~*z7~^p7g|3mzt;RYQ5F!w>5qcxmGq~p0&5p`L{f~mIUotxo(o| z$9sE{>xFJ8owT=|dumR|^iY*qKWq~IvN)dXjZR=-et=>X0|P@F|JfDsZgW&Ew=8CP za{H6_`X~G=&EE9O?|u91;-xpQ?p)2D>H4kke56gu!Jyk`@3H23y<2)T((I}FsoC%P zs+4s;7VeLHRX%B{SN@wT(LF)6Z!2eg>GTr$8hY<r$+NbMPp3EhwGI8TH7I|M@*&$l z@e@2I@JvoYcLW1(1ON5KFHN<tv}zR=&$*{8dR@0y*<)qglFUopbDmx52|ArSP4m!v zu7V9M`uYk>i%sSvUH8!EZ`KW2v7q00e)<)oF21F{o6BFk{5biyYhilmq3s+Ow*>Cl z*EBV4GlyqMe}71cO>zFg;I7NMOC}wES!q?YUvHjV+r{^@D?+}UwcC1Rp1gLi{iEYf zi@sgY%8HA*x?`o<(;(lkhAY*BqAoq$am`BKX<v2UwDjKBZj-lK{N8m(BwS<t%uAk6 z7}BK?xwF&w?z`~v%U8B?iG7Il@+$uH)PI$Y^z{BF9qxwMOW(pi?OV-Xw>&B+`<r)Y z`fBNU$sV6WrzNOI-^&i0_2<%!`EB2F=bd=-MK||l;BrxkLz>CgW&K_XOgzzUDO6lM zdCInJxASKwFmS=bPk>S3q2_~6)$x0+r6qR8gtyvMZmIQp`YI$nENaVRP4k^9w?DbB zlQdP&`|+P)!}g+H4zJCxPiuUau+G@=_sX*SHy2Cj^CkVs@SS&^ePQG})$Ed5sp>hm z`rrL?op@?f?Au!Z+56kyAAc39`=3EV>aEY`(5CYfFZg%tjs4H?yR$a3`0CQLa$WNm z*JQ_5ZJA!2|0eoQ-lE@2_AS5av67ol%XC$?;F|eI=WTX=JUe>%r6ns*X`kNn<HMyl zI#<7x&TzjmSF&E%|3#FVr-^xL?V?u}y;t`<xnJF1ICq<HkFVNiuF%D9{=1ATa<;tm zEU;N;?pkc4wAafxv-;v|{i*j)oNstlQoDR%oL0#yx5C=9p0bN3rhJ;z-MwY9Z$Z|X zCk(6#uwVky94ZWT*{>x+S{7QYbn+JJewT4^p7svsfZ%<X7yPU`wN_=<da-|O-{(tr zmul=dskUUp<yW)5>N(}{y_kP;^BlL(*w96H*I#e_wK-<i^OGMmUOl@NkZ0s;dU5%M zhm-3n);^RoZh61uN8*}YQx@&ZUHT*=^=;3}lZP^w&6BE2S);aWUEi{k#cS+x9m5uV zTRXY=+k&6=o9~?OkVGrne?`UY@G|bsJd{-#`|q{S&k6q-POz=tuw74bd≧z1EOV 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 literal 0 HcmV?d00001 diff --git a/resources/docs/docs/assets/logo.png b/resources/docs/docs/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d382958b699f4e6cd4dbf4db3b8e8894ed1befde GIT binary patch literal 18195 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 Q0nn6$r>mdKI;Vst06mS;9smFU literal 0 HcmV?d00001 diff --git a/resources/docs/docs/chapters/tp1/about.md b/resources/docs/docs/chapters/tp1/about.md new file mode 100644 index 0000000..e69de29 diff --git a/resources/docs/docs/chapters/tp1/api_collection.md b/resources/docs/docs/chapters/tp1/api_collection.md new file mode 100644 index 0000000..9fba3ea --- /dev/null +++ b/resources/docs/docs/chapters/tp1/api_collection.md @@ -0,0 +1,203 @@ +# **Collection** + +## Modification de notre classe `Travel` + +Après avoir élaboré les classes pour structurer nos objets, nous allons maintenant explorer les structures de +données avancées, notamment les collections. Les collections en Java constituent des outils puissants pour gérer et +manipuler des ensembles de données de manière dynamique. + +!!! abstract "API Collection" + + Java met à disposition l'API Collection qui propose un ensemble d'interfaces et d'implémentations permettant de + stocker des ensembles d'objets. + + On y trouve 3 interfaces principales (avec les implémentations principales correspondantes) : + + * List : ArrayList et LinkedList + * Set : HashSet, LinkedHashSet et TreeSet + * Queue : LinkedList (implémenté par List et Queue), ArrayDeque et PriorityQueue + + Pour plus d'informations, vous pouvez consulter la [documentation](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Collection.html){:target="_blank"} officielle de Java sur les collections. + +### Ajout d'une collection de participants + +Actuellement, notre classe `Travel` ne contient pas de collection de participants, allons en rajouter une. +Pour notre besoin, on veut qu'un utilisateur ne puisse pas s'inscrire deux fois (un ensemble sans répétitions, il faut donc mettre une collection qui **interdise les doublons**). + +!!! note "À vous de jouer !" + + - Essayez d'ajouter un nouvel attribut participants dans notre classe `Travel`. + + ??? tip "Indice" + Ici, participants est un Set d'utilisateurs `Set<User>`, mais pour l'implémentation, nous utilisons + `HashSet<User>`. Cela offre une certaine flexibilité, car si vous souhaitez changer l'implémentation + sous-jacente à l'avenir, par exemple, passer de HashSet à LinkedHashSet, vous pouvez le faire facilement sans modifier le reste du code qui utilise l'attribut participants. + +Lorsqu'**une classe utilise une autre classe comme type d'attribut**, cela est appelé la **composition**. Cette +approche permet à notre classe `Travel` de manipuler et de gérer ses utilisateurs `User` de manière indépendante. + +!!! quote "" + En programmation orientée objet, **privilégier la composition plutôt que l'héritage** permet une meilleure modularité, + une réutilisabilité accrue du code et une gestion plus souple des dépendances entre les classes. + +Nous sommes confrontés à un problème : avec une disponibilité fixe, en cas de désistement d'un voyageur déjà +enregistré, nous perdons de la valeur, alors que nous pourrions bien instaurer une vérification et éventuellement +inscrire le surplus d'utilisateurs dans une **file d'attente**. + +!!! note "À vous de jouer !" + + À la manière de l'ajout de la liste de participants au voyage, ajoutez un attribut à la classe `Travel` qui + représenterait une collection de participants dans une file d'attente en choisissant la collection la plus + appropriée. + + ??? question "Quelle serait la collection à choisir ? Pourquoi ?" + + Ici, on pourrait très bien imaginer l'utilisation d'une Queue. + Comme nous l'avons vu en point tech, une FIFO (first in, first out) permettrait de modéliser cette file + d'attente et les méthodes proposées par l'API facilitent la modélisation de ce cas d'utilisation. + + En effet, il suffit d'appeler la méthode `poll()` sur la collection pour récupérer l'utilisateur suivant + dans la file d'attente et de l'ajouter dans la liste des participants. + +!!! bug "Bug possible sans `equals` et `hashCode`" + + Comme vu dans la partie POO, si vous ne surchargez pas vos méthodes `equals` et `hashCode`, + vous pouvez introduire des bugs. + + Ajoutez ces deux user identiques dans votre `Set` de `participants` : + ```java + User sameUser1 = new User(0, "Same", "User", "sameuser@gmail.com"); + User sameUser2 = new User(0, "Same", "User", "sameuser@gmail.com"); + ``` + Commentez temporairement les méthodes `hashCode` et `equals`de `User` puis loggez les user de `participants`, que remarquez-vous ? + + +Désormais, nous sommes en mesure de stocker les différents participants à notre `Travel`. Il serait intéressant de pouvoir agir sur cette collection. +Nous vous proposons d'ajouter deux méthodes dans la classe `Main` pour pouvoir inscrire et désinscrire un `User`. + +!!! note "À vous de jouer !" + + Voici leur signature respective : + + ```java + public boolean subscribe(User user, Travel travel) + ``` + + ```java + public void unsubscribe(User user, Travel travel) + ``` + + Les points à prendre en compte lorsque vous implémenterez ces deux méthodes : + + ??? example "_Pour l'inscription :_" + + - retourner true si l'inscription a réussi (donc dans le cas ou l'utilisateur est bien ajouté à la liste des + participants). + - retourner false sinon + + L'inscription ne doit réussir que si l'utilisateur n'est pas déjà inscrit dans le voyage ! + + Cette méthode aura la responsabilité de récupérer le voyage en question, vérifier la disponibilité de ce dernier et inscrire l'utilisateur dans la bonne file (participants ou file d'attente). + + ??? example "_Pour la désinscription :_" + + Nous ne mettrons pas de retour sur la méthode. + + - La première garantie est qu'après un appel à cette méthode, l'utilisateur n'est pas dans la liste des + participants : il est donc supprimé s'il est trouvé. + - La seconde garantie est que si un utilisateur est effectivement désinscrit du voyage et qu'il y a + un/plusieurs utilisateur(s) en file d'attente, le premier utilisateur de cette file passe en liste + d'inscription effective. + +Super ! Nous pouvons maintenant inscrire autant d'utilisateurs que nous voulons pour notre voyage ! Par contre, remarquez que ça commence à faire beaucoup de logique dans `Main.java` et le code manque de structure. Pour +remédier à cela, il serait temps de déplacer le code dans des classes dédiées, appelées **services**. + +## Services + +L'objectif de cette partie est de réaliser la couche service de notre diagramme. + + + +La couche service va contenir la logique métier de notre application. Elle utilise les DAOs pour agir sur la base de données et transmettra les données à la couche présentation. + +### Création du service `Travel` + +!!! note "À vous de jouer !" + + - Créez un package `service` qui comportera l'ensemble de nos services. + - Créez la classe `TravelService` et déplacez les fonctions `subscribe` et `unsubscribe`. + + Maintenant que nous avons utilisé les collections, modifiez le tableau de discounts pour utiliser une List (**Les collections sont plus aisées à manipuler que les tableaux**). + + - Créez une fonction `applyDiscounts` dans le service en reprenant le code déjà écrit dans le main. + + +Nous sommes confrontés à une lacune : la simple indication "true" ou "false" lors de l'inscription ne clarifie pas +suffisamment la situation. Cela peut poser un problème, que ce soit pour nous (risque d'oublier l'implémentation) ou +pour toute personne extérieure qui n'est pas familière avec le code. Ainsi, pour enlever cette ambiguïté, nous opterons +pour le renvoi d'une exception afin de mieux communiquer. + +!!! note "À vous de jouer !" + + - Modifier `subscribe` pour qu'elle ne renvoie rien et qu'elle propage une Exception. + + ??? tip "Indice" + + ```java + ... + public void subscribe(...) throws Exception { + if (// l'utilisateur est inscrit) { + throw new Exception("L'utilisateur est déjà inscrit ou en file d'attente pour ce voyage."); + } + ... + } + ``` + +Pour utiliser le service, on doit faire comme suit : + +```java +... +// Instanciation du TravelService +TravelService travelService = new TravelService(); + +// Utilisation des fonctionnalités du service +travelService.subscribe(user, travel); +... +``` + +Cependant, en raison de la possibilité d'une exception, il est nécessaire d'encadrer cet appel avec un bloc +try/catch pour la capturer et la gérer : +```java +try { + travelService.subscribe(user, travel); +} catch (Exception e) { + System.out.println(e.getMessage()); +} +``` + +### Essayez votre code dans le Main + +Ça y est ! Nos utilisateurs peuvent désormais s'inscrire aux différents voyages. En fonction +de la disponibilité de chaque voyage, l'utilisateur est possiblement inscrit en file d'attente. + +!!! note "À vous de jouer !" + + - Inscrivez les utilisateurs à un voyage en passant par la méthode `subscribe` du service `Travel`. + - Variez la disponibilité d'un voyage et vérifiez que la file d'attente est bien remplie dans le cas où un voyage serait déjà plein. + - Désinscrivez un utilisateur et vérifiez que le premier utilisateur dans la file d'attente passe bien en participant. + +## **Récapitulatif** + +Bravo ! Vous avez ajouté avec succès la fonctionnalité d'inscription à un voyage pour un utilisateur ! Si vous avez tout compris, **vous pouvez passer au chapitre suivant** ! + +!!! success + ``` + . + └── model + │ └── Travel.java + └── service + │ └── TravelService.java + └── Main.java + ``` + +!!! warning "N'oubliez pas de `commit` votre travail !" diff --git a/resources/docs/docs/chapters/tp1/api_date.md b/resources/docs/docs/chapters/tp1/api_date.md new file mode 100644 index 0000000..f244dce --- /dev/null +++ b/resources/docs/docs/chapters/tp1/api_date.md @@ -0,0 +1,172 @@ +# **API Date** + +## Introduction aux dates et heures + +Maintenant que nous avons introduit les aéroports et leurs fuseaux horaires, il est temps de nous concentrer sur un +aspect crucial des voyages : les dates et les heures. Nous allons utiliser l'API `java.time` pour cela. + +!!! info "API `java.time`" + + L'API `java.time` comporte 5 implémentations importantes : + + * `LocalDate`: Représente une date sans heure ni fuseau horaire (par exemple, 2023-12-15). + * `LocalTime`: Représente une heure sans date ni fuseau horaire (par exemple, 10:15:30). + * `LocalDateTime`: Combine LocalDate et LocalTime, représentant une date et une heure sans fuseau horaire. + * `ZonedDateTime`: Comme LocalDateTime, mais avec la prise en charge des fuseaux horaires. + * `Instant`: Représente un moment précis sur la timeline UTC. + * `Period`, `Duration` : Représente des intervalles dans le temps. + +Exemples d'utilisation : + +```java +LocalTime uneHeure = LocalTime.of(14, 30); // 14h30 +LocalDateTime dateEtHeure = LocalDateTime.of(2023, Month.JULY, 15, 14, 30); // 15 juillet 2023, 14h30 +ZonedDateTime dateHeureZone = ZonedDateTime.of(2023, 7, 15, 14, 30, 0, 0, ZoneId.of("Europe/Paris")); // 15 juillet 2023, 14h30, heure de Paris +Instant instant = Instant.now(); // Capture le moment courant en UTC +Period period = Period.between(dateEtHeure.toLocalDate(), dateHeureZone.toLocalDate()); +Duration duration = Duration.between(instant, instant); +``` + +!!! info "`Period` vs `Duration`" + + `Period` : utilise les unités année, mois et jour pour représenter une période de temps (prend des `LocalDate` en paramètre). + + `Duration` : représente un intervalle de temps en secondes ou en nanosecondes et convient mieux pour traiter les + cas qui requièrent plus de précision (prend des `Instant` en paramètre). + +## Intégration des dates du voyage + +!!! note "À vous de jouer" + + * Ajoutez un attribut `departure` et `arrival` dans la classe `Travel` pour gérer les dates de départ et d'arrivée ainsi que les heures. Vous utiliserez un `Instant`. + * Ajoutez dans le constructeur une levée d'exception si la date de départ est postérieure à la date d'arrivée. Vous pourrez utiliser une `IllegalArgumentException` avec un message indiquant que la date de départ est après la date d'arrivée. + +!!! question "Pourquoi un `Instant` plutôt qu'un `ZonedDateTime` ?" + + On privilégie l'utilisation d'`Instant` plutôt que ZonedDateTime car les dates/heures dépendent des fuseaux horaires, qui varient selon les régions du monde. + + Ainsi, il est plus judicieux de convertir l'`Instant` en date/heure dans le frontend, permettant d'afficher la + date et l'heure selon le fuseau horaire de chaque utilisateur. (Dans notre cas, nous ferons la conversion dans notre + vue, au niveau du **DTO**). + +## DTO de sortie + +Les DTO (Data Transfer Object) représentent notre modèle tel qu'il est exposé à l'extérieur. Ils permettent de contrôler les objets entrants et sortants de notre application, on parle donc de `request DTO` et de `response DTO`. Par souci de simplicité, on se focalisera uniquement sur les DTO de sortie dans notre application. + +Les DTO de sortie représentent ce qui est exposé à l'extérieur (par exemple au frontend). On n'envoie pas directement le modèle, car il pourrait contenir des informations sensibles ou inutiles. Dans une application web complète, on ajouterait des controllers à nos DTO pour qu'ils puissent être transmis à notre frontend via le protocole HTTP. + + + +En fait, jusqu'à présent, nous vous avions demandé de créer des classes, mais depuis Java 17, il est possible de concevoir +des classes immuables avec moins de code boilerplate avec les **records**. + +!!! abstract "Record" + Avec les records, il **n'est plus nécessaire** de créer les méthodes _equals()_, _hashCode()_ et _toString()_, + ainsi que les _constructeurs_ et les _accesseurs_. + + !!! example "Exemple" + Notre classe `User` aurait pu être définie comme suit : + ```java + public record User(long id, + String firstName, + String lastName, + String contact) {} + ``` + +C'est l'occasion d'utiliser les **records** pour nos DTO. + +### Création du DTO de sortie `Travel` + +!!! note "À vous de jouer" + + - Créez un fichier `TravelResponseDto` qui correspondra à une représentation du modèle `Travel` contenant seulement + les informations à exposer (pour les dates en renverra des `ZonedDateTime`). + +### Création d'un mapper pour convertir les modèles en DTO + +Maintenant que nous avons nos DTO, il faut pouvoir convertir nos classes dans leur DTO correspondants. +Nous allons créer des méthodes permettant de faire cela. + +Une première stratégie serait de créer des classes avec des méthodes de mapping _**public**_ et _**static**_ à +l'intérieur. + +??? example "Exemple" + + ```java + public class Main { + public static void main(String[] args) { + // Utilisation de la méthode statique sans instance de la classe + int result = MathUtils.add(5, 3); + } + + public static class MathUtils { + public static int add(int a, int b) { + return a + b; + } + } + } + ``` + +!!! note "À vous de jouer" + + - Créez une classe `TravelDtoMapper` avec une méthode `fromTravel` pour convertir le modèle `Travel` dans son DTO + de sortie. + - La méthode `fromTravel` devra gérer la conversion d'Instant en date / heure exprimée dans le fuseau hoaire + de l'aéroport de départ et d'arrivée. Utilisez l'`AirportManager` créé dans la partie précédente pour lier + l'aéroport à son fuseau horaire. + +## <span style="color:orange"> **Optionnel** </span> + +### Calcul de durée et gestion des retards + +!!! note "À vous de jouer" + + Faites les modifications suivantes dans la classe `TravelService` : + + * Créez une méthode `computeTravelDuration` qui calcule la durée totale du voyage ( [méthode de la librairie`Duration`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/time/Duration.html){:target="_blank"} ). + + * Créez une méthode qui permet de modifier les dates des vols en cas de retard. La méthode prendra en paramètre un + objet `Travel` et un `delay` qui correspondra à une durée de retard, par exemple 2 heures, 2 jours ou encore 1 semaine ( [méthode de la librairie`Instant`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/time/Instant.html){:target="_blank"} ). + +### Essayez votre code dans le Main + +!!! note "À vous de jouer" + + Faites les modification suivantes dans le `Main` : + + Jérôme s'inscrit à un voyage entre Paris et Tokyo du 26/04/2023, l'avion décolle à 12h10 et arrive le 27/04/2023 à + 06h36. + + * Vérifiez que la méthode `computeTravelDuration` retourne bien 11 heures et 26 minutes. + * Ajoutez un retard de 5h à la date de départ et assurez-vous que cela fonctionne en affichant la date de départ dans le bon fuseau horaire. + + ??? tip "Date formatter" + + ```java + // Création de l'objet LocalDateTime pour la date et l'heure spécifiées + LocalDateTime dateTime = LocalDateTime.of(2024, Month.DECEMBER, 21, 12, 30); + + // Conversion en Instant + Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant(); + + // Convertir Instant en LocalDateTime + LocalDateTime newLocalDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); + ``` + +## **Récapitulatif** + +Félicitations ! Vous avez maintenant intégré la gestion des dates et des heures dans votre application. Vous êtes dorénavant prêt à gérer des voyages dans différents fuseaux horaires et à effectuer des opérations complexes sur les dates. + +!!! check + ``` + . + └── model + │ ├── Travel.java + │ └── responsedto + │ └── TravelResponseDto.java + ├── mapper + │ └── TravelDtoMapper.java + └── Main.java + ``` + +!!! warning "N'oubliez pas de `commit` votre travail !" diff --git a/resources/docs/docs/chapters/tp1/api_map.md b/resources/docs/docs/chapters/tp1/api_map.md new file mode 100644 index 0000000..784cac5 --- /dev/null +++ b/resources/docs/docs/chapters/tp1/api_map.md @@ -0,0 +1,151 @@ +# **API Map** + +## Rappels sur les `Map` + +Après avoir découvert et manipulé l'API Collection, abordons une autre interface importante : **Map**, qui d'ailleurs ne +fait pas partie de l'API Collection, mais permet de gérer des collections de données. Dans la partie suivante, +nous aurons besoin d'afficher les heures de décollage de l'avion dans le fuseau horaire de l'aéroport. Pour préparer +le terrain, nous allons faire correspondre chaque aéroport avec son fuseau horaire associé. Nous utiliserons une collection de type clé / valeur : les `Map`. + +!!! info "Les implémentations de Map" + + En Java, l'interface Map a plusieurs implémentations, chacune ayant des caractéristiques et des utilisations spécifiques. Voici les plus courantes : + + * `HashMap` : Accès rapide, ordre non garanti. + * `LinkedHashMap` : Accès rapide, ordre d'insertion conservé. + * `TreeMap` : Clés ordonnées selon un critère de tri. + +**Exemple d'utilisation** + +```java +Map<Integer, String> ages = new HashMap<>(); +Map<Long, Double> linkedAges = new LinkedHashMap<>(); +Map<String, Float> sortedAges = new TreeMap<>(); +``` + +??? question "Pourquoi utilise-t-on les classes wrapper ?" + Il est possible d'utiliser des types primitifs (comme int, float, char), mais ils sont automatiquement encapsulés dans + leurs classes wrapper correspondantes (Integer, Float, Character, etc.) grâce à l'autoboxing lorsqu'ils sont + utilisés dans un Map. On préfère donc directement utiliser les wrappers. + +On ajoute un élément(paire clé/valeur) à une `Map` avec la méthode `put`: + +```java +ages.put("Alice", 30); +``` + +On accède à la valeur d'une clé avec `get` : + +```java +Integer aliceAge = ages.get("Alice"); +``` + +On supprime une clé/valeur avec `remove` (notez que la valeur est renvoyée en retour) : + +```java +Integer aliceAge = ages.remove("Alice"); +``` + +## Création de l'enum `Airport` + +Pour gérer les différents fuseaux horaires, nous commencerons par créer une enum appelée `Airport` qui representera l'ensemble des aéroports disponibles pour nos voyages. + +!!! note "À vous de jouer" + Commencez par déclarer l'énumération `Airport` avec les valeurs suivantes : + + - `PARIS_CHARLES_DE_GAULLE("CDG")` + - `PARIS_ORLY("ORY")` + - `NEW_YORK_JFK("JFK")` + - `NEW_YORK_NEWARK("EWR")` + - `NEW_YORK_LAGUARDIA("LGA")` + - `TOKYO_NARITA("NRT")` + - `TOKYO_HANEDA("HND")` + + Chaque constante aura un attribut `acronym` pour stocker son acronyme. N'oubliez pas d'ajouter un constructeur pour initialiser cet attribut, ainsi qu'une méthode `getAcronym()` pour le récupérer. + + ??? example "Exemple" + Cet exemple crée une énumération `Color` avec trois constantes représentant des couleurs, chacune avec un nom français. + Chaque constante possède une méthode pour obtenir son nom français et la méthode `toString()` est redéfinie pour retourner ce nom lors de l'affichage. + + ```java + public enum Color { + RED("Rouge"), + GREEN("Vert"), + BLUE("Bleu"); + + private final String frenchName; + + Color(String frenchName) { + this.frenchName = frenchName; + } + + public String getFrenchName() { + return frenchName; + } + + @Override + public String toString() { + return frenchName; + } + } + ``` + + +Maintenant, pour faire correspondre chaque aéroport à son fuseau horaire, nous allons créer une classe `AirportManager`. Cette classe utilisera une `Map` pour stocker le fuseau horaire lié à l'aéroport. + +!!! note "À vous de jouer" + + Créez une classe `AirportManager` puis déclarez une Map statique `timeZone` qui associera chaque aéroport à son fuseau horaire. + + On pourra utiliser les coefficients suivants : + + * `PARIS_CHARLES_DE_GAULLE` : `Europe/Paris` + * `PARIS_ORLY` : `Europe/Paris` + * `NEW_YORK_JFK` : `America/New_York` + * `NEW_YORK_NEWARK` : `America/New_York` + * `NEW_YORK_LAGUARDIA` : `America/New_York` + * `TOKYO_NARITA` : `Asia/Tokyo` + * `TOKYO_HANEDA` : `Asia/Tokyo` + + ??? tip "Indice" + ```java + private static final Map<Color, String> colorToHexMap = new HashMap<>(); + + static { + colorToHexMap.put(Color.RED, "#FF0000"); + colorToHexMap.put(Color.GREEN, "#00FF00"); + colorToHexMap.put(Color.BLUE, "#0000FF"); + } + ``` + +!!! question "Pourquoi utiliser un attribut et une méthode statique ?" + + L'usage d'éléments statiques dans la classe `AirportManager` permet d'accéder aux fuseaux horaires des + aéroports sans créer une instance de la classe, ce qui est pratique car ces informations sont communes et ne + changent pas selon les instances. Cela simplifie l'accès aux données et économise la mémoire. + + ```java + AirportManager.AirportZoneMap.get(Airport.PARIS_CHARLES_DE_GAULLE); + ``` + +- Pensez à changer le type des attributs `departure` et `arrival` pour les définir comme étant de type `Airport`. + +!!! quote "" + Une autre manière de faire pour stocker les fuseaux horaires aurait été de les stocker directement dans l'enum, + dans un attribut d'enum (comme cela a été fait pour les acronymes). + +## **Récapitulatif** + +Dans cette partie, nous avons examiné comment utiliser l'énumération `Airport` et créer notre Map de fuseaux horaires. +Cette dernière sera utilisée ultérieurement pour afficher l'heure de décollage des avions pour chaque voyage dans leur +fuseau horaire spécifique. + +!!! check + ``` + . + └── utils + │ └── AirportManager.java + └── Main.java` + ``` + +!!! warning "N'oubliez pas de `Commit` votre travail !" diff --git a/resources/docs/docs/chapters/tp1/api_stream.md b/resources/docs/docs/chapters/tp1/api_stream.md new file mode 100644 index 0000000..92564af --- /dev/null +++ b/resources/docs/docs/chapters/tp1/api_stream.md @@ -0,0 +1,180 @@ +# **API Stream** + +### Programmation fonctionnelle + +Comme vous le savez, Java est un langage de programmation multi-paradigme. Vous avez pu traiter la +programmation orientée objet, la programmation procédurale et nous allons désormais découvrir la +**programmation fonctionnelle**. + +Cette approche a été renforcée dans _Java 8_ avec l'introduction d'une nouvelle amélioration syntaxique puissante sous +la forme d'expressions **lambda**. + +!!! abstract "Lambda" + + Une expression lambda est une fonction anonyme que nous pouvons traiter de la même manière que n'importe quel + autre objet. Cela signifie qu'elle peut être utilisée de manière flexible, telle que **la passer en tant + qu'argument** de méthode ou encore **en valeur de retour**. + +L'interface fonctionnelle est un exemple qui permet de bien comprendre le principe de `lambda`. +Voici un exemple de **BiFunction** : + +!!! quote "" + ```java linenums="1" + public class Main { + public static void main(String[] args) { + // Les lambda sont ce que vous observez avec la notation fléchée + // Addition + // L'instance du lambda est stockée dans une variable + BiFunction<Double, Double, Double> addition = (a, b) -> { + return a + b; + }; + System.out.println("Addition : " + addition.apply(5.0, 3.0)); + + // Multiplication + BiFunction<Double, Double, Double> multiplication = (a, b) -> a * b; + System.out.println("Multiplication : " + multiplication.apply(4.0, 2.5)); + } + } + ``` + +!!! info "Voici quelques points à savoir sur les lambda :" + + - Il n'est pas obligatoire de mettre les parenthèses s'il n'y a qu'un seul paramètre. + - Vous pouvez omettre le bloc de code après la flèche s'il n'y a qu'une seule instruction `return` (_cf. ligne 12_). + +Le plus souvent, les lambda iront de pair avec un autre concept Java apparu dans la même version : **les +streams**. Les streams sont une extension naturelle des lambdas, offrant une approche de code plus lisible et +maintenable pour manipuler des collections de données. + +### Streams + +!!! abstract "Qu'est-ce qu'un Stream ?" + + Un Stream est un objet qui encapsule un flux de données sur lequel on peut effectuer des opérations. + Son utilisation est très répandue, voire privilégiée pour beaucoup de cas d'utilisation. + + Il existe deux types d'opérations que l'on peut effectuer sur des streams : + + - les opérations **terminales** : on récupère le résultat à l'issue de l'opération + - les opérations **intermédiaires** : opérations intermédiaires qui modifient le flux + + Concrètement, là où l'on aurait utilisé une boucle `for` sur une collection pour modifier ses éléments, nous allons désormais préférer utiliser des streams et appliquer des fonctions de modification sur les différents éléments de la collection. + +Toutes les collections qui étendent l'`API Collection` proposent une méthode `stream()` qui permet de récupérer un objet Stream sur lequel appliquer des opérations. +??? info "Opérations sur les Streams" + + **Opérations terminales** : + + - reduce(identity, accumulator, combiner) : combine les éléments d'une collection en utilisant une valeur initiale, une opération d'accumulation et une opération de combinaison + - forEach(element) : itère sur la collection avec `element` comme valeur courante + - collect : permet de transformer le stream en une valeur (List, Double, ...) + - min/max(comparator) : renvoie un Optional<T> qui contient la valeur min/max de la collection trouvée en appliquant `comparator` à tous les éléments deux à deux + - anyMatch(predicate) : évalue le fait qu'au moins un élément de la collection valide le `predicate` + - findFirst : renvoie un Optional<T> du premier élément du Stream + - findAny : renvoie un Optional<T> d'un élément du Stream + + **Opérations intermédiaires** : + + - filter(predicate) : renvoie une sous collection des éléments qui valident le `predicate` + - map(mapping) : renvoie une collection où l'on a appliqué `mapping` à tous les éléments + - distinct : renvoie un Stream qui ne contient pas de doublons + - sorted : trie les éléments du Stream + - limit(n) : limite le Stream à `n` éléments + +!!! example "Exemple" + + Étant donné la collection suivante : + ```java + List<String> chars = List.of("20", "35", "", "14", " ", "51"); + ``` + On veut écrire un stream qui renvoie la somme des tailles des chaînes de caractères présentes dans la liste. + + ```java + chars.stream() + .filter(c -> !c.isBlank()) + .mapToInt(c -> c.length()) + .sum() + ``` + Ce stream enlève les valeurs vides et calcule la somme des tailles des chaînes de caractères présentes dans la liste. + +## Requêtage de notre application + +Maintenant que vous avez appréhendé les Streams, il est l'heure d'ajouter des fonctionnalités de requêtage à notre application. + +Nous vous proposons un jeu de données à ajouter avant de commencer cette partie. + +!!! edit "À vous de jouer" + + Il faudra, pour chaque fonctionnalité, coder une méthode dans le service associé à la fonctionnalité. Quasiment toutes ces méthodes prendront un paramatre `List<Travel>`. + + **Voici les différentes fonctionnalités :** + + - Notre agence doit pouvoir exposer la liste de tous les voyages disponibles actuellement (donc pour lesquels il reste encore des places) + - Dans un second temps, nous voulons pouvoir paramétrer cette liste de voyages disponibles par une localisation. + Exemple : tous les voyages disponibles à destination de Tokyo + - Nos utilisateurs aimeraient faire une recherche détaillée sur les voyages que propose l'agence dans une certaine + fourchette de prix. + - Nos utilisateurs aimeraient avoir le voyage le plus proche de la date actuelle. + +## <span style="color:orange"> **Optionnel** </span> + +Si vous avez bien progressé et qu'il vous reste du temps, continuez à implémenter ces fonctionnalités : + +- L'agence doit pouvoir lister la liste des n premiers voyages triés par ordre croissant de prix. +- Elle devra pouvoir également lister tous les voyages disponibles avec une promotion en cours. +- Nous voulons que l'agence puisse lister tous les voyages auxquels le `User` Jean-Michel est inscrit (Il faudrait + pouvoir filtrer sur les user qui [match](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/stream/Stream.html#anyMatch(java.util.function.Predicate)){:target="_blank"} la condition). + +- Il y a un nouveau CEO dans l'entreprise. Il veut pouvoir évaluer la rentabilité de notre agence et il souhaiterait + obtenir la moyenne du prix des voyages proposés par l'agence. + +## Essayez votre code dans le Main +!!! note "À vous de jouer" + + Vous pouvez maintenant tester votre service dans le main. + + === "TravelService.java" + ```java + ... + List<Travel> findAvailableTravels (List<Travel> travels){ + ... + } + ... + ``` + === "Main.java" + ```java + ... + // Ma liste de voyages + List<Travel> travels = new LinkedList(); + travels.add(new Travel(0, "To New York", Airport.PARIS_CHARLES_DE_GAULLE, Airport.NEW_YORK_JFK, + Instant.now().plus(Duration.ofDays(2)), + Instant.now().plus(Duration.ofDays(15)), "NewYork", 6, 3500)); + travels.add(new Travel(0, "Paris is next", Airport.TOKYO_HANEDA, Airport.PARIS_ORLY, + Instant.now().minus(Duration.ofDays(2)), + Instant.now().plus(Duration.ofDays(5)),"Paris", 10, 2900)); + + // instancier mon service + TravelService travelService = new TravelService(); + + // récupérer que les voyages disponible + List<Travel> availableTravels = findAvailableTravels(travels); + ... + ``` + +## **Récapitulatif** + +Excellent, nous avons clôturé la partie sur les streams et vous avez pu créer vos programmes de recherche. + +!!! check + ``` + . + └── service + │ └── TravelService.java + └── Main.java` + ``` + +!!! warning "N'oubliez pas de `Commit` votre travail !" + +# **Conclusion** + +On est arrivé à la fin de cette première partie de la formation. À demain pour de nouvelles aventures ! diff --git a/resources/docs/docs/chapters/tp1/index.md b/resources/docs/docs/chapters/tp1/index.md new file mode 100644 index 0000000..ae3c1c9 --- /dev/null +++ b/resources/docs/docs/chapters/tp1/index.md @@ -0,0 +1,24 @@ +# Introduction + +Bienvenue dans le **Jour 1** de votre formation Java. + +Lors de ce premier jour de formation, nous vous invitons à plonger dans l'univers de **Java**, à créer vos premières classes et à explorer plus en détail les différentes API de ce langage. + +## **Au programme** + +- Déclaration d'une classe, ses attributs et ses méthodes. +- Utilisation des **records**. +- Les **énumérations** (enum). +- **Héritage** et **interfaces**. +- Les **collections** de données. +- Manipulation de **Date**. +- **Programmation fonctionnelle**. + +Afin de couvrir tous ces concepts, nous allons construire ensemble une application de gestion de voyages tout au long de cette formation. + +Nous vous proposons de découper le développement de cette application en deux parties : + +- **Une première partie** portera sur la conception des différentes briques de notre application : nous aurons l'occasion d'aborder les Collections ou encore les différentes API de Date existantes. +- **Une seconde partie** portera sur le requêtage de notre application : cela nous permettra de mettre en œuvre les Streams ainsi que les Lambda. + +Après avoir construit une telle application, les Collections, les Dates ou les Streams n'auront plus aucun secret pour vous ! diff --git a/resources/docs/docs/chapters/tp1/poo.md b/resources/docs/docs/chapters/tp1/poo.md new file mode 100644 index 0000000..43860ec --- /dev/null +++ b/resources/docs/docs/chapters/tp1/poo.md @@ -0,0 +1,505 @@ +# **Programmation Orientée Objet** + +Java repose solidement sur la POO qui offre une approche de programmation centrée sur les concepts de classes et +d'objets. Les classes définissent des modèles de données et de comportements, tandis que les objets sont des +instances spécifiques de ces classes. + +Voyons comment nous allons réaliser les modèles nécessaires qui vont structurer et contenir les données utilisées +dans le projet. + + + +## Création des classes + +Avant de plonger dans la création de nos classes, prenons un moment pour comprendre ce qu'est une classe et ses +éléments essentiels. + +??? abstract "Classe Java" + + Une classe contient : + + - **Attributs** : Ce sont les variables qui définissent les caractéristiques de l'objet. + - **Méthodes** : Ce sont les fonctions qui définissent le comportement de la classe. + - **Constructeur** : C'est une méthode spéciale portant le même nom que la classe, utilisée pour initialiser un objet + dès sa création. Si la classe n'a pas d'attribut, par défaut, la classe aura un constructeur sans paramètre. + + Les classes en Java doivent respecter le principe de l'**encapsulation**. Cela se réalise en définissant les + attributs comme étant _**private**_ et en fournissant des méthodes _**public**_ pour y accéder qui sont : + + - **Setters et Getters** : Ce sont des méthodes permettant de contrôler l'accès aux attributs. Les setters modifient + les valeurs, tandis que les getters les récupèrent. + + ??? example "Exemple" + + ```java + public class MyClass { + private int myNumber; + + public MyClass(int myNumber) { // Le constructeur + this.myNumber = myNumber; + } + + public int getMyNumber() { // Getter + return this.myNumber; + } + + public void setMyNumber(int myNumber) { // Setter + this.myNumber = myNumber; // Ici pour pouvoir faire la distinction entre + // myNumber en paramètre et celui déclaré au + // niveau de la classe, il suffit de rajouter + // this.nomDeLAttribut pour indiquer celui de + // la classe. Celui sans 'this.' réfère donc + // la variable passée en paramètre. + } + } + ``` + Dans l'exemple ci-dessus, nous avons utilisé `private` comme modificateur d'accès. + Il existe 4 modificateurs d'accès, en voici la liste avec leur _scope_ : + + | Modificateur d'accès | Classe | Package | Sous-classe | Tout le monde | + |:----------------------|:------------|:-------------|:---------------|:---------------| + | `public ` | Oui | Oui | Oui | Oui | + | `protected` | Oui | Oui | Oui | Non | + | Sans modificateur | Oui | Oui | Non | Non | + | `private` | Oui | Non | Non | Non | + + + +### Classe `Travel` + +On peut maintenant commencer la création de la classe `Travel` qui représentera un voyage proposé par l'agence. + +!!! edit "**À vous de jouer !**" + + - Créez un package `model`, dans le package `agencymanagement`, qui comportera l'ensemble de nos modèles. + - Créez la classe `Travel` en suivant la même logique que l'exemple d'une classe Java. + - Pour cette classe, nous aurons besoin d'un id, d'un nom, d'un aéroport de départ, d'un aéroport d'arrivée, d'une + destination, d'un nombre maximal de participants ainsi que d'un prix. + + ??? abstract "**Type de données primitifs**" + + | Type de données primitifs | Description | + |:--------------------------|:----------------------------| + | `byte` | Nombre entier sur 8 bits | + | `short` | Nombre entier sur 16 bits | + | `int` | Nombre entier sur 32 bits | + | `long ` | Nombre entier sur 64 bits | + | `float` | Nombre décimal sur 32 bits | + | `double` | Nombre décimal sur 64 bits | + | `boolean` | Valeur `true` ou `false` | + | `char` | Un caractère simple | + + Il existe un objet très utilisé en Java mais qui n'est pas un type primitif : l'objet `String`. Il est + utilisé pour contenir les chaînes de caractères. + +!!! warning "Attention" + + - Prenez soin de choisir les types appropriés et d'ajouter le constructeur, les getters et les setters. + Votre IDE peut vous les générer. + +### Classe `User` + +À présent, pour représenter les profils de nos utilisateurs, nous allons créer une classe `User`. + +Nous aimerions pouvoir construire notre utilisateur comme suit : + +```java +User tom = new User(0, "Tom", "Dupont", "tom.dupont@gmail.com"); +``` + +!!! note "À vous de jouer !" + + Essayez de construire ce modèle `User` en identifiant les informations qu'il doit contenir. + +#### Les méthodes _toString, equals et hashCode_ + +En plus des éléments courants comme les constructeurs, les getters et les setters, il est fréquent de redéfinir les +méthodes **toString**, **equals** et **hashCode** dans une classe. + +Ces méthodes sont héritées de la classe **Object** en Java. + +??? abstract "Concernant les méthodes toString, equals et hashCode" + + Par défaut, toutes les classes créées en Java héritent de la classe `Object`. Parmi les méthodes héritées + de `Object`, on retrouve `toString`, `equals` et `hashCode`. Si on redéfinit pas ces méthodes, elles se basent par défaut sur la référence de l'objet : + + - `toString` renvoie une représentation textuelle de l'objet qui est la référence. + - `equals` compare deux objets pour vérifier leur égalité en comparant les références. + - `hashCode` fournit un code de hachage unique pour l'objet en calculant le `hash` de la référence. + + ??? example "Exemple" + + ```java + public class MyClass { + ... + @Override + public boolean equals(Object o) { + // S'ils ont la même référence, c'est qu'il s'agit du même objet. + if (this == o) return true; // En Java, si le if ne contient qu'une ligne, il n'est + // pas nécessaire d'encadrer le code avec { ... } + + // Il faut que ça soit le même type d'objet. + // getClass() est aussi une méthode héritée de Object. + if (o == null || getClass() != o.getClass()) return false; + + // Maintenant qu'on sait que c'est le même type d'objet, on peut 'cast' Object en MyClass. + // Le `cast` est possible parce que MyClass est une sous-classe de Object. + MyClass myClass = (MyClass) o; + + return myClass.getId() == id; + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "MyClass{" + + "id=" + id + + '}'; + } + } + ``` + + ??? info "Il faut toujours surcharger `hashCode` lorsque vous surchargez `equals`" + D'après la documentation du [`hashCode()`](<https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()>){:target="_blank"} : + > The general contract of hashCode is: + > + > * Whenever it is invoked on the same object more than once during an execution of a Java application, + > the hashCode method must consistently return the same integer, provided no information used in equals + > comparisons on the object is modified. This integer need not remain consistent from one execution of an + > application to another execution of the same application. + > + > * If two objects are equal according to the equals method, then calling the hashCode method on each of + > the two objects must produce the same integer result. + > + > * It is not required that if two objects are unequal according to the equals method, then calling the + > hashCode method on each of the two objects must produce distinct integer results. However, the programmer + > should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables. + + Cette documentation fournit des détails sur le contrat entre `hashCode()` et `equals()` et pourquoi il est + indispensable de surcharger la méthode `hashCode()` lorsque vous surchargez `equals()` pour maintenir le comportement + correct des objets dans les structures de données basées sur les hashs comme `HashSet`, `HashMap`, etc. + + +!!! note "À vous de jouer !" + + - Redéfinissez `equals` et `hashCode`. Deux utilisateurs sont différents si et seulement si leurs `id` sont différents. + + Votre IDE peut générer ces méthodes. + + +### Essayez votre code dans le Main + +!!! note "À vous de jouer !" + + Dans le `Main` : + + - Créez un voyage `firstTravel` dont le départ est prévu depuis Paris à destination de Tokyo, pour un maximum de + 5 participants au prix de 2000 euros. + - Créez un utilisateur nommé `John Doe` avec le contact suivant : `john.doe@gmail.com` et loggez ses + informations ( _pensez à redéfinir toString_). + + _Exemple_ : + ```java + User tom = new User(0, "Tom", "Dupont", "tom.dupont@gmail.com"); + ``` + + _Résultat attendu_ : + === "Console" + `Utilisateur John Doe, contact : john.doe@mail.com` + +## Proposition d'offres et intégration des réductions + +### Héritage, polymorphisme et classe abstraite + +#### Héritage et polymorphisme + +Comme pour plusieurs langages de programmation objet, Java dispose aussi d'un système d'héritage. Par contre, +un objet Java ne peut hériter que d'une seule classe. Le multi héritage en Java n'est pas possible. Quand on crée +un nouvel objet, si on ne le fait pas explicitement hériter d'une classe, il sera automatiquement hérité par `Object` +au moment de la compilation. La classe `Object` n'étend aucune autre classe. + +Le mot clé qui permet d'hériter d'une classe est `extends` : + +```java +public class MyClass extends ParentClass { + // ... +} +``` + +Pour voir comment fonctionne l'héritage, nous allons coder un cas pratique. + +Nous voulons proposer à nos utilisateurs différents types d'offres durant leur voyage, pouvant inclure des services de restauration ou d'hôtellerie. + +Nos offres partagent des caractéristiques entre elles, mais ont aussi leurs propres caractéristiques. +Nous allons retranscrire cela dans le code. + +!!! note "À vous de jouer" + + Nous vous laissons choisir le type pour chaque attribut. Dans `model` : + + * Créez les classes `Offer`, `RestaurentOffer` et `HotelOffer`. + * Ajoutez les attributs `id`, `score`, `description`, `nbOfReviews` dans `Offer`. + Nous souhaitons respecter le principe d'encapsulation, mais nous voulons aussi que les classes enfants puissent. + accéder aux attributs sans utiliser de getters et de setters. (cf. le tableau des [modificateurs d'accès](#creation-des-classes)). + * Ajoutez les attributs `nbOfPersons` et `nbOfStars` dans `RestaurentOffer`. + * Ajoutez les attributs `isBreakfastIncluded` et `nbOfAvailableDays` dans `HotelOffer`. + * Faites hériter `RestaurentOffer` et `HotelOffer` de `Offer`. + * Dans `Main.java`, créez une annonce de type `HotelOffer`. + + ??? tip "Indice" + + ```java + public HotelOffer(...) { + super(...); // Pour instancier les attributs de la classe parent. + // super est utilisé pour appeler des fonctions ou accéder + // à des attributs définis dans la classe parent. + ...; + } + ``` + * Créez une méthode `String getDetails()` dans les sous-classes `RestaurantOffer` et `HotelOffer`. + Loggez le détail de la classe `RestaurantOffer` + + ??? info "Les différentes manières de créer une String" + Il existe plusieurs moyens de créer une `String` en Java. Voici les façons les plus courantes de le faire : + ```java + return "Premier détail " + attribut1 + " second détail " + attribut2; + + return "Premier détail %s second détail %s".formatted(attribut1, attribut2)); + + StringBuilder sb = new StringBuilder(); + sb.append("Premier détail "); + sb.append(attribut1); + sb.append(" second détail "); + sb.append(attribut2); + return sb.toString(); + ``` + +À présent, nous souhaiterions savoir si nos offres sont valides ou pas. + +Pour cela, nous allons ajouter cette méthode dans la classe `Offer` : + +```java +public boolean isValid() { +return score >= 0 && + score <= 5 && + description != null && + !description.isBlank() && + nbOfReviews >= 0; +} +``` + +Mais comme vous vous en doutez, on voudrait faire de la validation pour chaque sous-type d'offre. + +Pour ce faire, nous allons devoir employer une des notions du polymorphisme en Java, qui est la surcharge de méthode. +La méthode enfant doit avoir la même signature que celle présente dans la classe parent. Elle devrait aussi être annotée par `@Override` même +si ce n'est pas requis pour compiler le code. Cela contribue à rendre le code source plus lisible. + +Il faudra aussi que la validation des méthodes enfants prennent en compte celle du parent. + +!!! note "À vous de jouer !" + + - Redéfinissez la méthode `isValid()` dans chaque classe enfant. + + ??? tip "Indice" + + ```java + @Override + public boolean isValid() { + return super.isValid() && + ... + } + ``` + +#### Classe abstraite + +Vous remarquerez qu'on a une méthode `getDetails()` dans toutes les sous-classes et on voudrait l'avoir pour toutes les futures sous classes. +Aussi, il y a peu d'intérêt à instancier uniquement la classe `Offre`. C'est là que rentrent en jeu les classes abstraites. + +Pour que l'on ne puisse pas instancier une classe `Offre` dans le code, il faut rendre cette classe abstraite de la +manière suivante : +```java +public abstract class Offer { + ... +} +``` + +De plus, si on veut garantir que l'ajout de `getDetails()` soit effectué à chaque fois qu'une nouvelle sous-classe sera créée, il faudra ajouter une méthode abstraite dans la classe abstraite pour rendre obligatoire la création de la méthode `getDetails()` : +```java +public abstract class Offer { + ... + // Ajouter cette ligne en dessous des attributs. + protected abstract String getDetails(); + ... +} +``` + +Regardez ce qui se passe lorsque vous supprimez une des méthodes `getDetails()` et que vous essayez de compiler. + +Pensez à rajouter `@Override` sur toutes les méthodes `getDetails()`. + +??? info "Modificateur d'accès et surcharge" + + Vous avez probablement remarqué que les modificateurs d'accès utilisés ne sont pas les mêmes entre la classe parent et les classes enfants. En Java, le modificateur d'accès d'une méthode de surcharge peut autoriser plus, mais pas moins, + d'accès que la méthode surchargée. Par exemple, une méthode d'instance `protected` dans la classe parent peut être + rendue `public`, mais pas `private`, dans la sous-classe. + + + +#### Interfaces + +On a presque défini toutes nos classes. On veut désormais offrir des réductions à notre clientèle, comment pourrait-on +les appliquer ? + +L'idée est de définir une **interface** commune appelée `Discount` qui énonce la méthode nécessaire pour calculer une réduction. Cette interface servira de contrat, en spécifiant le comportement attendu. + +Ensuite, nous créerons deux classes distinctes : `PercentDiscount` et `ValueDiscount`. Ces deux classes implémenteront l'interface `Discount`, ce qui signifie qu'elles doivent fournir une implémentation de la méthode définie dans cette interface. + +??? example "Exemple" + + Dans cet exemple, une interface Animal est définie avec une méthode shout() (crier). + + _Interface_ : + ```java + public interface Animal { + void shout(); // Toutes les déclarations de méthodes dans une interface sont implicitement `public` + // de sorte que vous pouvez omettre le modificateur `public`. + } + ``` + + Les classes Chien et Chat implémentent cette interface, ce qui signifie qu'elles devront fournir une implémentation + concrète de la méthode shout(). + + _Implémentation_ : + + ```java + // Classe Dog qui implémente l'interface Animal + public class Dog implements Animal { + + // ... + + @Override + public void shout() { + bark(); // Pour cet exemple, aboyer est utilisé pour implémenter crier + } + + // Autres méthodes spécifiques aux chiens + } + + // Classe Cat qui implémente l'interface Animal + public class Cat implements Animal { + + // ... + + @Override + public void shout() { + meow(); // Pour cet exemple, miauler est utilisé pour implémenter crier + } + + // Autres méthodes spécifiques aux chats + } + ``` + +!!! note "À vous de jouer" + + * Créez l'interface `Discount` et les classes `PercentDiscount` et `ValueDiscount`. + * Ajoutez un tableau de `Discount` à la classe `Travel`. + + ??? tip "Indice" + + === "Discount.java" + ```java + public interface Discount { + double apply(double price); + } + ``` + === "PercentDiscount" + ```java + ... + price * (1 - ((double) percent / 100)); // price * (1 - (percent / 100)) utilise une division entière + // si percent est un entier, conduisant à une troncature. + // Ajouter (double) avant percent assure une division en nombres décimaux, + // préservant les décimales dans le résultat. + ... + ``` + === "ValueDiscount" + ```java + ... + price - value; + ... + ``` + === "Travel.java" + ```java + ... + private Discount[] discounts; + ... + ``` + +Lorsque vous déclarez un tableau `discounts` dans la classe `Travel` comme étant de type `Discount`, cela +signifie que **discounts peut contenir n'importe quelle instance d'une classe qui implémente `Discount`**. Ainsi, +vous pouvez utiliser des instances de `PercentDiscount`, `ValueDiscount`, ou même d'autres classes qui +implémentent Discount sans modifier le code de la classe `Travel`. Cela s'appelle du **polymorphisme +paramétrique**. + +Le polymorphisme paramétrique est aussi connu sous le nom [generic types](https://docs.oracle.com/javase/tutorial/java/generics/types.html){:target="_blank"} ou templates. + + +### Essayez votre code dans le Main + +!!! note "À vous de jouer" + + Dans le `Main` : + + * Modifiez `firstTravel` en ajoutant une réduction de 50%. + ??? tip "Indice" + ```java + // TODO: Création d'un tableau de discount de taille 1 + // TODO: Ajout d'une PercentDiscout dans le tableau + // TODO: Ajout du tableau de discount dans le travel + ``` + + * Calculez le nouveau prix après l'application de cette réduction, affichez-le et assurez-vous qu'il est bien de + 1000 euros. + + ??? tip "Indice" + ```java + firstTravel.getDiscounts()[0]... + ``` + + * Ajoutez une nouvelle réduction de type `ValueDiscount` au tableau `discounts` et calculez le nouveau prix après + l'application de toutes les réductions. Affichez et assurez vous que le prix prend bien en compte toutes les réductions. + Pensez à augmenter la taille du tableau `Discount[]`. + + ??? tip "Indice" + Pensez à gérer le cas ou `firstTravel.getDiscounts().length` est 0. + ```java + double discountedPrice = ...; + for (Discount discount : firstTravel.getDiscounts()) { + discountedPrice = ... + } + ``` + +## **Récapitulatif** + +Bravo ! Vous avez terminé votre première initiation à Java. Pour aller plus loin, nous allons maintenant explorer +les API Java pour découvrir les fonctionnalités avancées que le langage a à offrir. + +!!! check + ``` + . + └── model + │ ├── Travel.java + │ ├── User.java + │ ├── Discount.java + │ ├── PercentDiscount.java + │ ├── ValueDiscount.java + │ ├── Offer.java + │ ├── RestaurentOffer.java + │ └── HotelOffer.java + └── Main.java` + ``` + +!!! warning "N'oubliez pas de `Commit` votre travail !" diff --git a/resources/docs/docs/chapters/tp1/prerequisites.md b/resources/docs/docs/chapters/tp1/prerequisites.md new file mode 100644 index 0000000..916e223 --- /dev/null +++ b/resources/docs/docs/chapters/tp1/prerequisites.md @@ -0,0 +1,61 @@ +# Prérequis + +Avant de commencer, il est nécessaire d'installer quelques outils pour ce tutoriel. + +## Java JDK + +!!! info "Java est un langage de programmation, qui nécessite entre autres 2 outils : le **JDK** et le **JRE**" + + - Le **JRE** (Java Runtime Environment) fournit la **JVM** (Java Virtual Machine) indispensable à l'exécution des programmes + Java qui ont été préalablement compilés à l'aide du JDK. + - Le **JDK** (Java Development Kit), en plus de contenir le **JRE**, comprend également l'ensemble des outils nécessaires + pour développer du code Java, tels qu'un **compilateur**, un **debugger**, la **documentation JavaDoc** et bien d'autres fonctionnalités. + +### Installer le _JDK_ + +Installer la dernière version _LTS_ du _JDK_ sur votre machine. + +??? question "LTS ?" + + Depuis la version 9 de Java, une nouvelle version de Java est publiée [tous les 6 mois](https://www.oracle.com/java/technologies/java-se-support-roadmap.html){:target="_blank"}. + À chaque nouvelle version, Oracle arrête le support de la précédente. Certaines versions sont dites "LTS" (Long-Term Support) et sont supportées pendant une période de plusieurs années, au lieu de quelques mois. + +**Installation avec SDKMan** + +La procédure pour installer Java varie en fonction des versions, des plateformes, des systèmes d'exploitation, ... + +[SDKMan](https://sdkman.io/){:target="_blank"} est un outil "cross-platform" qui a pour but de rendre l'opération plus facile. + +```bash + curl -s "https://get.sdkman.io" | bash +``` + +**Installation avec un package manager** + +Il est possible d'installer le JDK à la main, sans _SDKMan_. + +??? example "Voir les instructions" + + * Debian-based + + ```bash + sudo apt install openjdk-21-jdk + ``` + + * Windows + + Télécharger l'installeur [ici](https://www.oracle.com/java/technologies/downloads){:target="_blank"} et suivre les instructions + + +## Installer un IDE + +Pour écrire du code Java, un simple éditeur de texte suffit, mais utiliser un _IDE_ rend les choses plus faciles, car il apporte de l'aide supplémentaire (coloration syntaxique, auto-complétion, ...). + +## **Choisir un IDE adapté** + +!!! info "Environnement de développement intégré (IDE)" + + Voici nos recommendations : + + * **Visual Studio Code (VSCode)** : pour sa légèreté et sa facilité d'utilisation ([Visual Studio Code](https://code.visualstudio.com/){:target="_blank"} et [le pack d'extension java](https://code.visualstudio.com/docs/java/extensions#_fundamental-java-development){:target="_blank"}) + * **IntelliJ IDEA** : un autre choix populaire parmi les développeurs Java, connu pour ses puissantes fonctionnalités et son support approfondi de Java ([IntelliJ Community](https://www.jetbrains.com/idea/download/){:target="_blank"}) diff --git a/resources/docs/docs/chapters/tp1/project_creation.md b/resources/docs/docs/chapters/tp1/project_creation.md new file mode 100644 index 0000000..6eb97aa --- /dev/null +++ b/resources/docs/docs/chapters/tp1/project_creation.md @@ -0,0 +1,87 @@ +# Création du projet + +Avant de plonger dans la programmation des fonctionnalités de notre application, il est essentiel de configurer +correctement notre environnement de développement. + +!!! edit "À vous de jouer" + - Ouvrez votre IDE et créez un nouveau projet que vous nommerez _**AgencyManagement**_. + - Ajoutez votre projet sur Git. + - Dans le dossier src, créez un nouveau package nommé _**io.takima.agencymanagement**_ + +!!! info + Un package est un dossier dont le but est de regrouper les classes qui fonctionnent ensemble. + + 1. Il porte un **nom unique**. + 2. Il doit être nommé en **minuscule**, avec un nom alphanumérique (a..z, 0..9, _). Le nom ne doit pas commencer par + un nombre. + 3. Le début du package doit identifier votre projet / organisation. A cet effet, on utilise par convention un nom de + domaine inversé comme nom de package. + + En Java, **chaque classe doit appartenir à un package**. + +!!! edit "À vous de jouer" + + - Déplacez la classe Main générée dans le package précédemment créé. + - Modifiez votre programme pour que ça affiche `Agency App` et exécutez-le depuis votre IDE. + + ??? tip + === "Main.java" + ```java + public class Main { + public static void main(String[] args) { + System.out.println("Agency App"); + } + } + ``` + === "Console" + ``` + Agency App + ``` + +Vous pouvez également compiler et exécuter votre code en ligne de commande : [voir cheatsheet](../../cheatsheets/tp1/command_line.md){:target="_blank"} + +## **Architecture utilisée** + +Nous utiliserons une architecture 3-tiers pour notre projet. C'est une des architectures les plus utilisées pour faire du +backend en Java : + +- La couche **persistance** est la couche qui gère l'interaction avec la base de données. Cette couche est mise en œuvre à l'aide de DAO (Data Access Objects). Les DAO sont des +composants responsables de la gestion des opérations d'accès aux données, agissant comme une interface entre le +reste de l'application et la base de données sous-jacente. +- La couche **service** est la couche qui applique les règles métiers de notre application. Elle utilise les DAO de la +couche persistence et transmet les informations à la couche présentation. +- La couche **présentation** permet d'exposer des informations à l'extérieur (par exemple au frontend). Elle fait +intervenir des controllers qui échangeront les données (par exemple via le protocole HTTP) avec un autre service (par +exemple un frontend). + + + +La partie **Model** permet de représenter les objets en base de données en objet Java. Ce n'est pas une couche en +tant que telle mais elle est essentielle pour que les couches persistance et service manipulent les données. + +La partie DTO permet de contrôler les échanges avec l'extérieur. Elle correspond à une représentation de notre +modèle et permet de l'exposer. + +Pour notre première session, nous nous limiterons aux couches model, service ainsi que la partie response DTO. La +gestion de la **couche persistance** sera réservée au **Jour 2**, tandis que la **couche de présentation** sera +explorée au cours du **Jour 3**. + +Voici un apercu des parties que nous traiterons au cours du Jour 1 (les parties grisées ne seront pas traitées). + + + +## **Récapitulatif** + +Vous disposez désormais d'un environnement de développement fonctionnel pour Java et avez découvert la structure +envisagée pour notre projet. Nous pouvons maintenant passer à notre première étape, qui consiste à définir nos classes. + +À la fin de cette partie, vous devriez avoir cette arborescence. + +!!! check + ``` + └── src + └── io + └── takima + └── agencymanagment + └── Main.java + ``` diff --git a/resources/docs/docs/chapters/tp2/database.md b/resources/docs/docs/chapters/tp2/database.md new file mode 100644 index 0000000..343f03e --- /dev/null +++ b/resources/docs/docs/chapters/tp2/database.md @@ -0,0 +1,403 @@ +# Utiliser une base de données + +Dans cette section, nous verrons comment utiliser une base de données avec Java et nous réaliserons nos **DAO**. + +## Préparation + +Pour la suite de ce tutoriel, nous utiliserons une base de données comportant les tables : +- travel, +- user, +- reservation (pour la relation d'un utilisateur inscrit pour un voyage) +- wait_list (pour la relation d'un utilisateur inscrit dans la file d'attente d'un voyage). + +### Récupérez les scripts de la base de données + +- Téléchargez les scripts d'initialisation : + + [Database init](../../downloads/db-init.zip){ .md-button .md-button--primary } + + Cette archive contient quatre scripts : + + - `db/V1.0.0__travel_user.table.sql` : Définit les tables `Travel` et `User`. + - `db/V1.0.1__travel_user.data.sql` : Ajoute quelques entrées aux tables mentionnées ci-dessus + +- Placez les scripts dans un nouveau dossier appelé `db`, à la racine de votre répertoire de travail. + +### Mise en place de la base de données + +Nous allons utiliser une base de données [_PostgreSQL_](https://www.postgresql.org/){:target="_blank"}. + +Pour des raisons de simplicité, la base de données tourne dans un conteneur Docker et nous vous fournissons tous les fichiers d'installation. + +- Installez [Docker Engine](https://docs.docker.com/engine/install/){:target="_blank"}. + + Vous pouvez ignorer cette étape si Docker est déjà installé sur votre système. Dans le cas contraire, voici comment procéder à son installation : [_installer Docker Engine_](../../cheatsheets/tp2/docker_install.md){:target="_blank"} + +- Téléchargez les fichiers `docker-compose` et placez-les à la racine de votre projet : + [Download docker-compose-db](../../downloads/docker-compose-db.zip){ .md-button .md-button--primary} + + Cette archive contient trois fichiers : + + - `docker-compose.yml` : Définit un service `db` qui démarre une instance PostgreSQL, initialisée avec les scripts que nous avons placés précédemment dans le dossier `db`. + - `docker-compose.override.yml` : Définit les paramètres Docker pour le développement, expose la base de données au port `5432` et génère un [Adminer](https://www.adminer.org/){:target="_blank"} pour gérer la base de données avec une *GUI*. + +- Exécutez la base de données avec la commande `docker compose`. + ```bash + docker compose up + ``` + +- Une fois l'exécution réussie, vous pouvez vous connecter à la base de données à l'aide de l'_Adminer_ sur [http://localhost:18080](http://localhost:18080){:target="_blank"} en utilisant : + - **nom d'utilisateur**=_madmin_ + - **mot de passe**=_madmin_ + - **nom de la base de données**=_agencymanagement_db_ + Ce sont les valeurs par défaut spécifiées dans le fichier docker-compose. + + Assurez-vous d'avoir quatre tables : `travel`, `user`, `reservation` et `wait_list`. + +  + +## JDBC + +La connexion à une base de données avec Java est normalisée par la [spécification JDBC](https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html){:target="_blank"} pour "Java Database Connectivity". +C'est une API fondamentale pour la connectivité des bases de données dans l'écosystème Java. Elle offre les outils nécessaires pour établir des connexions, exécuter des requêtes SQL, récupérer et mettre à jour des données dans les bases de données, tout en gérant efficacement les connexions. + +!!! info + - Pour faire simple, _JDBC_ offre un objet [`Connection`](https://docs.oracle.com/en/java/javase/17/docs/api/java.sql/java/sql/Connection.html){:target="_blank"}, ainsi que le strict minimum pour exécuter des instructions SQL ([`Statement`](https://docs.oracle.com/en/java/javase/17/docs/api/java.sql/java/sql/Statement.html){:target="_blank"}, [`PreparedStatement`](https://docs.oracle.com/en/java/javase/17/docs/api/java.sql/java/sql/PreparedStatement.html){:target="_blank"}). + - Dans des projets plus avancés, on utilise des bibliothèques avancées telles que [**Hibernate**](https://hibernate.org/){:target="_blank"} ou [**jOOQ**](https://www.jooq.org/){:target="_blank"} au lieu du simple JDBC pour gérer nos bases de données SQL. + +### Installez le pilote JDBC / JDBC Driver + +JDBC est compatible avec les _SGBD_ (Systèmes de Gestion de Base de Données) les plus populaires. + +- Ajoutez la dernière dépendance [`PostgreSQL`](https://mvnrepository.com/artifact/org.postgresql/postgresql){:target="_blank"} à votre `pom.xml`. + +??? abstract "Affichez le pom.xml résultant" + ```xml + <dependency> + <groupId>org.postgresql</groupId> + <artifactId>postgresql</artifactId> + <version>${postgres.version}</version> + <scope>runtime</scope> + </dependency> + ``` + +Le pilote JDBC est une bibliothèque qui fournit l'implémentation **spécifique** pour se connecter à un _SGBD_. En d'autres termes, il est **nécessaire à l'exécution** mais n'est jamais référencé directement dans le code. Par conséquent, la portée de Maven pour les pilotes JDBC **doit être `runtime`**. + +### JDBC Connection + +JDBC définit un objet `Connection` qui représente une seule connexion à la base de données. Vous pouvez obtenir cet objet `Connection` avec l'instruction suivante : +```java +public Connection getConnection() throws SQLException { + return DriverManager.getConnection("jdbc:postgresql://localhost:5432/agencymanagement_db", "user", "password"); +} +``` + +Nous allons utiliser l'objet `Connection` à plusieurs endroits, mais comme il est préférable de ne pas copier-coller cette méthode dans tout le code, nous allons définir une classe `ConnectionManager` pour s'en occuper. + +#### Le **singleton ConnectionManager** : + +Nous n'avons besoin que d'un seul `ConnectionManager` pour gérer l'objet `Connection`. Pour ce cas d'utilisation, +le design pattern [**Singleton**](https://en.wikipedia.org/wiki/Singleton_pattern){:target="_blank"} convient parfaitement. + +- Créez une nouvelle classe appelée `ConnectionManager`. Cette classe utilise le modèle **singleton**. +- Ajoutez une méthode appelée `getConnection()` permettant de récupérer la connexion. + +!!! tip + Comme l'a popularisé _Joshua Block_ dans son livre **_Effective Java_**, il est recommandé d'écrire des + singletons à l'aide des [Java enums](https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html){:target="_blank"}. + + === "ConnectionManager.java" + ```java + package io.takima.agencymanagement + + import java.sql.Connection; + import java.sql.DriverManager; + import java.sql.SQLException; + + public enum ConnectionManager { + INSTANCE; + + private final String JDBC_URL = "jdbc:postgresql://localhost:5432/agencymanagement_db"; + private final String JDBC_USER = "madmin"; + private final String JDBC_PASSWORD = "madmin"; + + public Connection getConnection() throws SQLException { + return DriverManager.getConnection(JDBC_URL,JDBC_USER,JDBC_PASSWORD); + } + } + ``` + +## DAO + +La récupération et le mapping des données de la base de données vers Java doivent être effectués par des **DAO**. +Comme on l'a déjà mentionné, les DAO (Data Access Objects) servent d'interface intermédiaire entre la logique métier +et la base de données. Leur rôle principal est de simplifier l'accès aux données en isolant la logique d'accès, formant ainsi une couche de persistance. + +Étant donné que des DAO vous ont été fournis lors du jour 1, c'est maintenant à votre tour de créer vos propres DAO. + +### **PreparedStatement** + +L'objet `Connection` offre plusieurs méthodes pour exécuter des requêtes SQL. Dans cette étape, nous allons utiliser +[`Connection.prepareStatement`](https://docs.oracle.com/en/java/javase/21/docs/api/java.sql/java/sql/Connection.html#prepareStatement(java.lang.String)){:target="_blank"}. + +??? question "Pourquoi privilégier les _PreparedStatement_ plutôt que les _Statement_ ?" + Contrairement à la classe [`Statement`](https://docs.oracle.com/en/java/javase/21/docs/api/java.sql/java/sql/Statement.html){:target="_blank"}, la classe [`PreparedStatement`](https://docs.oracle.com/en/java/javase/21/docs/api/java.sql/java/sql/PreparedStatement.html){:target="_blank"} permet de définir des paramètres de manière dynamique et offre une protection contre les injections SQL. De plus, elle est mise en cache par le SGBD, ce qui la rend plus efficace lorsqu'elle est exécutée plusieurs fois. + +Codons ensemble la fonction nous permettra d'insérer des données, on fera ça pour un travel. + +```java +public void save(Travel travel) throws SQLException { + // Récupérer la connexion + Connection connection = cm.getConnection(); + // Ecriture de la requête SQL + PreparedStatement ps = connection.prepareStatement("INSERT INTO travel(id, name, departure_airport, " + + " arrival_airport, departure_date, arrival_date, destination, capacity, price) " + + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"); + + // Attribution des paramêtres + ps.setLong(1, travel.getId()); + ps.setString(2, travel.getName()); + ps.setString(3, travel.getDepartureAirport().getAcronym()); + ps.setString(4, travel.getArrivalAirport().getAcronym()); + // Il faut transformer le Instant en Timestamp + ps.setTimestamp(5, java.sql.Timestamp.from(travel.getDepartureDate())); + ps.setTimestamp(6, java.sql.Timestamp.from(travel.getArrivalDate())); + ps.setString(7, travel.getDestination()); + ps.setInt(8, travel.getCapacity()); + ps.setDouble(9, travel.getPrice()); + + // Exécution de la requête + ps.executeQuery(); +} +``` + +!!! note "À vous de jouer" + + - Créez une classe nommée `JdbcTravelDao` qui utilise JDBC et implémente les fonctions suivantes : + + On veut commencer par lister tous les voyages proposés par notre agence. + + - Créez la méthode `List<Travel> findAll();`. + - Créez une `PreparedStatement` pour sélectionner tous les voyages. + - Créez la méthode `List<Travel> findTravelsByDestination(String destination)` pour lister tous les voyages ayant + une destination précise. + - Exécutez cette instruction, itérez sur le `ResultSet` et imprimez les noms des voyages. + + ??? tip "Indice" + === "JdbcTravelDao" + ```java + private final ConnectionManager cm = ConnectionManager.INSTANCE; + // dao fonctions + ... + ``` + === "findAll" + ```java + public List<String> findAll() throws SQLException { + Connection connection = cm.getConnection(); + PreparedStatement ps = connection.prepareStatement("SELECT t.name FROM travel t"); + + ... + } + ``` + === "findTravelsByDestination" + ```java + public List<String> findTravelsByDestination(String destination) { + Connection connection = cm.getConnection(); + PreparedStatement ps = connection.prepareStatement( "SELECT * FROM travel t + WHERE t.destination LIKE? ") ; + + ps.setString(1, "%" + destination + "%"); + } + ``` + === "ResultSet" + ```java + public List<String> findTravelsByDestination(String destination) throws SQLException { + // ... + + ResultSet rs = ps.executeQuery(); + List<String> travels = new LinkedList<>(); + + while (rs.next()) { + travels.add(rs.getString("name")); + } + + return travels; + } + ``` + +!!! bug "Note" + - Envisagez de nommer une méthode findById() au lieu de geById() : + + N'appelez pas la méthode getById() si elle risque de ne pas donner de résultat. Si la méthode renvoie un résultat null dans le cas d'une ressource non trouvée, il est préférable d'appeler la méthode findById(). + + - Renvoyez un Optional<X> plutôt que null : + + Si une méthode renvoie null, vous devez vérifier la nullité à chaque fois que vous appelez la méthode. Vous prenez le risque d'oublier cette vérification et d'avoir une `NullPointerException`. + +- N'oubliez pas de fermer les ressources une fois qu'elles ne sont plus nécessaires : + +!!! danger "Attention !" + ```java + connection.close(); + ``` + +Comme indiqué dans [la documentation](https://docs.oracle.com/en/java/javase/21/docs/api/java.sql/java/sql/Connection.html#close()){:target="_blank"}, la fermeture de la `Connection` ferme également les `PreparedStatement` et `ResultSet` associés. + +- N'oubliez pas de fermer la `Connection` en cas d'exception également. Comme `Connection` implémente +[`AutoClosable`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/AutoCloseable.html){:target="_blank"}, la méthode [_try-with-resources_](https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html){:target="_blank"} est parfaitement adaptée à ce cas d'utilisation. + +!!! quote "" + === "try-catch" + ```java + Connection connection = null; + try { + connection = cm.getConnection(); + PreparedStatement ps = connection.prepareStatement("..."); + + ResultSet rs = ps.executeQuery(); + } catch (SQLException e) { + if (connection != null) { + connection.close(); + } + throw e; + } + ``` + + === "try-with-resources" + ```java + try (Connection connection = cm.getConnection()) { + + PreparedStatement ps = connection.prepareStatement("..."); + + ResultSet rs = ps.executeQuery(); + } + ``` + +!!! note "À vous de jouer" + - À votre tour, implémentez `List<User> findAllParticipantsByTravelId(long travelId);` pour lister tous les + voyageurs inscrits à un voyage précis. + - Respectez la structure proposée lors du premier jour et créez votre service `TravelService`, utilisant les fonctions du DAO. + - Testez votre code en appelant le service à partir de votre méthode main. + + ??? example "Exemple" + + ```java + + public static void main(String[] args) throws Exception { + List<String> travels = travelService.findAll(); + + travels.forEach(travel -> { + LOGGER.info("{}", travel); + }); + } + ``` + +## **Connection pool** + +Dans les applications d'entreprise réelles, la base de données a souvent beaucoup de lecture/écriture à faire et peut devenir un "goulot d'étranglement". + +Pour atténuer ce problème, nous utilisons souvent plusieurs objets `Connection` pour équilibrer la charge. + +Avec votre code actuel, il serait facile d'appeler `DriverManager.getConnection(jdbcUrl)` à chaque fois que vous en avez besoin, mais cela pose un certain nombre de problèmes : + +- Il est difficile de contrôler le nombre de connexions ouvertes. +- Un trop grand nombre de connexions ouvertes ralentit l'application. +- L'ouverture et la fermeture d'une connexion est un processus lourd. + +Idéalement, nous voulons ouvrir un nombre fixe de connexions et les réutiliser à l'infini. + +C'est exactement ce à quoi sert un **connexion pool**. + +### [HikariCP](https://github.com/brettwooldridge/HikariCP){:target="_blank"} + +HikariCP est en effet un pool de connexions pour Java, utilisé pour gérer et optimiser l'utilisation des connexions à une base de données. + +!!! note "À vous de jouer" + + - Ajoutez la [dépendance HikariCP](https://mvnrepository.com/artifact/com.zaxxer/HikariCP){:target="_blank"} à votre `pom.xml`. + ??? example "Afficher le pom.xml résultant" + ```xml + <dependency> + <groupId>com.zaxxer</groupId> + <artifactId>HikariCP</artifactId> + <version>${hikaricp.version}</version> + </dependency> + ``` + + - Modifiez le `ConnectionManager` pour utiliser _HikariCP_. + + ??? tip "Indice" + ```java + public enum ConnectionManager { + INSTANCE; + + private static final String JDBC_URL = "jdbc:postgresql://localhost:5432/agency_management_db"; + private static final HikariConfig config = new HikariConfig(); + private static final HikariDataSource ds; + + ... + } + ``` + +## Service / DAO + +Maintenant que nous avons compris comment les interactions avec notre base de données fonctionnent, revenons à notre diagramme. Vous remarquerez que les DAO sont appelés uniquement par leur service correspondant. D'autre part, les services peuvent être appelés entre eux. + + + +**_Exemple : _** + +Nous avons une fonction `findAll` dans notre DAO. Pour pouvoir l'utiliser dans le service, il faut faire : +!!! quote "" + === "JdbcTravelDao" + ```java + ... + public List<String> findAll() ... + ... + ``` + + === "TravelService" + ```java + ... + private final JdbcTravelDao jdbcTravelDao = new JdbcTravelDao(); + + public List<Travel> findAll() { + return jdbcTravelDao.findAll(); + } + ... + ``` + +!!! note "À vous de jouer" + + - Pour toutes les fonctions créées dans votre service (durant le jour 1), réalisez une fonction DAO que vous appellerez selon vos besoins : + + !!! quote "" + === "JdbcTravelDao" + ```java + ... + public List<String> findAvailableTravels() { + ... + } + ... + ``` + + === "TravelService" + ```java + ... + public List<Travel> findAvailableTravels() { + return jdbcTravelDao.findAvailableTravels(); + } + ... + ``` + +## Fichiers modifiés + +``` +docker-compose.yml +docker-compose.override.yml +pom.xml +src/main/java/io/takima/agencymanagement/Application.java +``` + +!!! warning "N'oubliez pas de `Commit` votre travail !" + diff --git a/resources/docs/docs/chapters/tp2/dependances.md b/resources/docs/docs/chapters/tp2/dependances.md new file mode 100644 index 0000000..7ac7984 --- /dev/null +++ b/resources/docs/docs/chapters/tp2/dependances.md @@ -0,0 +1,244 @@ +# Travailler avec des dépendances + +Pendant l'écriture et le débogage de notre application, il peut être tentant d'utiliser beaucoup de `System.out.println` pour imprimer la _trace d'exécution_, pour "voir où cela commence à échouer". +```java +// ... +if (user == null) { + if (enableDebug) { + System.out.println("foo 1") + System.out.println("Error: user is null") + } + // ... +} +``` + +C'est une très mauvaise façon de créer des logs : + +- Elle alourdit à la fois le code et la sortie. +- Cela ralentit l'exécution du programme. +- Vous oublierez de les supprimer après le débogage, ce qui entraînera beaucoup de bruit dans le code. + +Pour faciliter le débogage de votre code, il est préférable d'utiliser un **Logger** car : + +- Il existe plusieurs **niveaux de log** (`DEBUG`, `INFO`, `WARN`, `ERROR`). Vous pouvez donc choisir celui qui convient le mieux à votre environnement (ex : `INFO` pour les besoins de production, `DEBUG` pour les environnements de développement...) +- Il peut **écrire les logs dans un fichier** plutôt que dans la console. +- Il est **indépendant de la plateforme**. +- Il offre de **meilleures performances** avec des flux tamponnés. +- Il permet aux bibliothèques installées de logger avec votre Logger afin d'éviter l'encombrement de plusieurs loggers. + +Dans ce chapitre, nous utiliserons l'API de journalisation **_SLF4J_**. + +## SLF4J + +### Installez SLF4J + +- Ajoutez la dernière version de [`slf4j-api`](https://mvnrepository.com/artifact/org.slf4j/slf4j-api){:target="_blank"} dans la partie `dependencies` du fichier `pom.xml`. + +??? example "Afficher le pom.xml résultant" + + ```xml + <project> + <dependencies> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>2.0.6</version> + </dependency> + </dependencies> + </project> + ``` + +!!! tip "**tip**" + - Lorsque vous cherchez une bibliothèque Maven, ne cherchez pas sur Google. Parcourez simplement [ Maven central](https://mvnrepository.com){:target="_blank"}. + - Si vous utilisez un IDE comme Intellij, lancez la synchronisation des dépendances Maven lorsque vous ajoutez de nouvelles dépendances, pour lui permettre de vous donner les bonnes suggestions d'importation. + +### Utilisez SLF4J + +* Modifiez App.java et réécrivez le message initial Hello world ! pour utiliser le logger. + +??? example "app.java" + ```java + package io.takima.agencymanagement; + + import org.slf4j.Logger; + import org.slf4j.LoggerFactory; + + public class App { + private static final Logger LOGGER = LoggerFactory.getLogger(App.class); + + public static void main(String[] args) { + LOGGER.info("Hello World!"); + } + } + ``` + +* Lancez le code : + +!!! failure + ``` + SLF4J: No SLF4J providers were found. + SLF4J: Defaulting to no-operation (NOP) logger implementation + SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details. + ``` + + Comme l'indique l'erreur, _SLF4J_ a besoin d'une implémentation. `slf4j-api` est seulement une API qui ne fait donc rien par elle-même : elle s'appuie sur d'autres dépendances pour implémenter les fonctionnalités de logging. + Dans ce chapitre, nous utiliserons [`slf4j-log4j12`](https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12){:target="_blank"} comme **implémentation pour SLF4J**. + +## Installez et configurez `log4j` + +- Ajoutez [`slf4j-log4j12`](https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12){:target="_blank"} dans la partie `dependencies` du fichier `pom.xml`. + +??? example "Afficher le pom.xml résultant" + + ```xml + <project> + <dependencies> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>2.0.6</version> + </dependency> + </dependencies> + </project> + ``` + +!!! info + + Certaines dépendances peuvent avoir des versions alignées (ex : `slf4j-log4j12` avec `slf4j-api`). Pour les garder alignées et éviter le copier-coller, c'est une bonne pratique d'utiliser `<properties>` au-dessus du `pom.xml` pour déclarer les versions comme des variables. + + ??? info "pom.xml" + ```xml + <properties> + <java.version>17</java.version> + <maven.compiler.source>${java.version}</maven.compiler.source> + <maven.compiler.target>${slf4j.version}</maven.compiler.target> + <slf4j.version>2.0.6</slf4j.version> + </properties> + <dependencies> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>${slf4j.version}</version> + </dependency> + </dependencies> + ``` + +### Configurez `Log4j` + +- Créez un dossier dans `src/main/resources` s'il n'existe pas. +- Mettez-y un nouveau fichier appelé [`log4j.properties`](https://logging.apache.org/log4j/2.x/manual/configuration.html#Properties){:target="_blank"}, avec la configuration suivante. + +```properties + log4j.rootLogger=DEBUG, stdout + + log4j.appender.stdout=org.apache.log4j.ConsoleAppender + log4j.appender.stdout.Target=System.out + log4j.appender.stdout.layout=org.apache.log4j.PatternLayout + log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n +``` + +- Exécutez à nouveau le code. Cette fois, le journal devrait apparaître sur la sortie standard : + + ``` + INFO App:14 - Hello World! + ``` + +??? failure "Error: No SLF4J providers were found." + + Vous avez à nouveau cette erreur ? + + Avez-vous correctement défini le `<scope>` à `compile` pour la dépendance `slf4j-log4j12` ? + +## Exécutez sans IDE + +Dans cette étape, nous allons compiler et exécuter le code **sans avoir besoin d'un IDE**. + +```bash +mvn clean package +java -jar target/takima-agencymanagement-1.0-SNAPSHOT.jar +``` + +!!! failure + + ``` + Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory + at io.takima.agencymanagement.App.<clinit>(App.java:11) + Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) + ... 1 more + ``` + +Une autre erreur d'exécution. Cette fois, Java exécute le `jar`, mais notre application dépend d'une dépendance externe `org/slf4j/LoggerFactory`. +Parce que cette dépendance est gérée par Maven, elle a été installée dans votre dépôt local `.m2`. Cependant, Java ne va pas automatiquement y chercher des classes supplémentaires, d'où l'erreur. + +Pour activer cette dépendance, vous devez configurer le classpath de la _JVM_ avec l'option `java -classpath`. +Dans l'étape suivante, nous allons explorer une technique appelée **_fat JAR_**. + +### Fat JAR + +Un _fat JAR_, également appelé _uber JAR_, ou [_jar-with-dependencies_](https://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html#jar-with-dependencies){:target="_blank"}, est un `jar` qui regroupe toutes les dépendances nécessaires, de sorte que l'application ne dépende pas des dépendances installées localement. + +Ce type de `jar` peut être construit avec l'aide de [`maven-assembly-plugin`](https://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html#jar-with-dependencies){:target="_blank"}. + +!!! info + - Un _fat JAR_ ne nécessite pas de configurer le _CLASSPATH_. + - Un _fat JAR_ a une taille plus importante que les _JARs_ normaux. + +- Editez le `pom.xml` et ajoutez ou remplacez le `maven-jar-plugin` existant, avec la configuration suivante : + +!!! quote "" + ```xml + <!-- Maven Assembly Plugin --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <!-- get all project dependencies --> + <descriptorRefs> + <descriptorRef>jar-with-dependencies</descriptorRef> + </descriptorRefs> + <!-- MainClass in manifest make a jar executable --> + <archive> + <manifest> + <mainClass>io.takima.agencymanagement.App</mainClass> + </manifest> + </archive> + </configuration> + <executions> + <execution> + <id>make-assembly</id> + <!-- bind to the packaging phase --> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + </plugin> + ``` + +- Créez à nouveau le paquet, puis exécutez le fichier `*-with-dependencies.jar`. + + ```bash + mvn clean package assembly:single + java -jar target/takima-agencymanagement-1.0-SNAPSHOT-jar-with-dependencies.jar + ``` + +??? bug "Le jar-with-dependencies n'est pas généré ?" + Il se peut que vous deviez supprimer la balise `pluginManagement` dans le fichier pom.xml. + +## Fichiers modifiés + +``` +src/main/java/io/takima/agencymanagement/App.java +src/main/resources/log4j.{properties|xml} +``` + +!!! warning "N'oubliez pas de `Commit` votre travail !" diff --git a/resources/docs/docs/chapters/tp2/entite.md b/resources/docs/docs/chapters/tp2/entite.md new file mode 100644 index 0000000..7a7a6a7 --- /dev/null +++ b/resources/docs/docs/chapters/tp2/entite.md @@ -0,0 +1,193 @@ +# Les **entités** + +Dans cette section, nous allons revisiter les classes que nous avons écrites lors du jour 1. + +!!! info + Nous appelons généralement **Entité**, une classe de domaine qui est la représentation **classe** d'une **table** + dans la base de données. Dans ce cas, chaque ligne de ladite _table_ est une instance d'objet de ladite _classe_. + + **Correspondance entre les types SQL et Java :** + + | Types SQL | Types Java | + | :-------------------------------------------------------------- | :---------------- | + | `BIGSERIAL`: `BIGINT` auto-incrementé | `long` | + | `CHAR(n)` | `String` | + | `VARCHAR`: `CHAR(n)` avec une longueur variable | `String` | + | `DOUBLE PRECISION` | `double` | + | `INT` | `int` | + +## Builder pattern + +Partons du principe que, lorsque l'on crée un voyage, on ne connaît pas toutes les informations dès le départ. On voudrait donc pouvoir créer un objet voyage en se passant de certains attributs, pour les préciser dans un second temps. + +Pour créer un `Travel` avec uniquement un nom, nombre de places, aéroport de départ et d'arrivée, on doit appeler le +constructeur avec des valeurs nulles. + +```java +// Create +Travel travel = new Travel( + 1, + "Voyage vers les montagnes", + 20, + Airport.PARIS_CHARLES_DE_GAULLE, + Airport.TOKYO_HANEDA, + Instant.now(), + Instant.now().plusSeconds(86400), + "France", + 0.0, //null + null, //disocunts + null, //participants + null; //waitList +``` + +Le constructeur ci-dessus n'est pas très pratique, car il nécessite un grand nombre de paramètres dans un ordre très +spécifique. +Le [design pattern **Builder**](https://en.wikipedia.org/wiki/Builder_pattern){:target="_blank"} est une bonne solution pour contourner ce +problème. + +### Travel.Builder + +- Créez une nouvelle classe statique `Builder` à l'intérieur de la classe `Travel`. + +??? example "Travel.Builder" + + ```java + public class Travel { + // ... + public static Builder builder() { + return new Builder(); + } + + public static Builder builder(Travel travel) { + return new Builder(travel); + } + + public static final class Builder { + private Long id; + private String name; + private Airport departureAirport; + private Airport arrivalAirport; + private Instant departureDate; + private Instant arrivalDate; + private String destination; + private int capacity; + private double price; + private List<Discount> discounts; + private Set<User> participants; + private Queue<User> waitingParticipants; + + public Builder() { + } + + public Builder(Travel travel) { + this.id = travel.id; + this.name = travel.name; + this.departureAirport = travel.departureAirport; + this.arrivalAirport = travel.arrivalAirport; + this.departureDate = travel.departureDate; + this.arrivalDate = travel.arrivalDate; + this.destination = travel.destination; + this.capacity = travel.capacity; + this.price = travel.price; + this.discounts = travel.discounts; + this.participants = travel.participants; + this.waitingParticipants = travel.waitingParticipants; + } + + public Builder id(Long id) { + this.id = id; + return this; + } + + public Builder name(String name) { + this.name = name; + return this; + } + + public Builder departureAirport(Airport departureAirport) { + this.departureAirport = departureAirport; + return this; + } + + public Builder arrivalAirport(Airport arrivalAirport) { + this.arrivalAirport = arrivalAirport; + return this; + } + + public Builder departureDate(Instant departureDate) { + this.departureDate = departureDate; + return this; + } + + public Builder arrivalDate(Instant arrivalDate) { + this.arrivalDate = arrivalDate; + return this; + } + + public Builder destination(String destination) { + this.destination = destination; + return this; + } + + public Builder capacity(int capacity) { + this.capacity = capacity; + return this; + } + + public Builder price(double price) { + this.price = price; + return this; + } + + public Builder disocunts(List<Discount> discounts) { + this.discounts = discounts; + return this; + } + + public Builder participants(List<User> participants) { + this.participants = participants; + return this; + } + + public Builder waitingParticipants(List<User> waitingParticipants) { + this.waitingParticipants = waitingParticipants; + return this; + } + + public Travel build() { + return new Travel(id, name, departureAirport, arrivalAirport, departureDate, arrivalDate, + destination, capacity, price, discounts, participants, waitingParticipants); + } + } + } + ``` + +On pourra utiliser ce builder afin de créer des `Travel` comme suit : + +=== "Main.java" + ```java + Travel travel = Travel.builder() + .id(1) + .name("name") + .departureDate(Instant.now()) + .arrivalDate(Instant.now().plusSeconds(86400)) + .departureAirport(Airport.PARIS_CHARLES_DE_GAULLE) + .arrivalAirport(Airport.TOKYO_HANEDA) + .destination("destination") + .capacity(10) + .price(350.00) + .build(); + ``` + +!!! edit "À vous de jouer" + Maintenant, c'est à vous de réaliser le `User.Builder`. + +## Fichiers modifiés + +``` +src/main/java/io/takima/agencymanagement/App.java +src/main/java/io/takima/agencymanagement/model/Travel.java +src/main/java/io/takima/agencymanagement/model/User.java +``` + +!!! warning "N'oubliez pas de `Commit` votre travail !" diff --git a/resources/docs/docs/chapters/tp2/maven.md b/resources/docs/docs/chapters/tp2/maven.md new file mode 100644 index 0000000..0b469fb --- /dev/null +++ b/resources/docs/docs/chapters/tp2/maven.md @@ -0,0 +1,216 @@ +# Maven + +Bienvenue dans le **Jour 2** de votre formation Java. + +Dans le jour précédent, nous avons vu comment créer un projet à partir de zéro. Cette méthode fonctionne pour les petits projets ou les exemples, mais elle présente certaines limites à plus grande échelle. Par exemple, si vous souhaitez utiliser une bibliothèque externe dans votre code, vous devez : + +* Rechercher la bibliothèque sur le web et télécharger le fichier `.jar` correspondant. +* Placer ce fichier `.jar` dans le dossier `lib/`. +* Configurer le `$PATH` ou le `--classpath` pour inclure cette bibliothèque. +* Oublier tout cela et ne plus jamais toucher à ce fichier. + +Inutile de dire que cette méthode est loin d'être pratique et qu'elle n'encourage pas les mises à jour fréquentes des dépendances. + +Dans ce chapitre, nous allons introduire l'utilisation d'un gestionnaire de paquets. Laissez-moi vous présenter +[**Maven**](https://maven.apache.org/guides/getting-started/){:target="_blank"} ! + +!!! info "Gestionnaire de paquets" + + - Il s'agit d'un outil permettant de télécharger et d'installer les dépendances requises (c'est-à-dire les bibliothèques externes). + - Les paquets sont connectés à un dépôt d'artefacts : un serveur externe à partir duquel les paquets sont téléchargés. + - Le dépôt par défaut de Maven est [Maven Repository](https://mvnrepository.com){:target="_blank"}. + - Les organisations configurent généralement leurs propres dépôts hébergés (par exemple : [Jfrog's Artifactory](https://jfrog.com/artifactory/){:target="_blank"}, [Sonatype Nexus](https://www.sonatype.com/products/nexus-repository){:target="_blank"}, [Gitlab Package Registry](https://docs.gitlab.com/ee/user/packages/maven_repository/){:target="_blank"}) afin de pouvoir publier leurs propres paquets. + - Java dispose de deux gestionnaires de paquets que vous pouvez utiliser : + - [_Maven_](https://maven.apache.org/){:target="_blank"} : le standard de facto + - [_Gradle_](https://gradle.org/){:target="_blank"} : un gestionnaire de paquets relativement récent, qui fonctionne avec les mêmes dépôts que Maven. Il est principalement adopté par la communauté Android et Kotlin. + +### Générez un nouveau projet Maven + +Un projet Java qui utilise Maven est appelé **artifact**. En tant que tel, il doit suivre une structure de fichier spécifique : +```bash +├── pom.xml # project descriptor. +├── src # sources root +│ ├── main +│ │ └── java # main sources +│ │ └── com.my-package.my-project +│ │ └── App.java +│ └── test +│ └── java # test sources +│ └── com +│ └── com.my-package.my-project +│ └── AppTest.java # Tests are suffixed with `Test` +└── target # compiled classes & artifacts + ├── classes + └── my-project-1.0-SNAPSHOT.jar +``` + +En plus de la gestion des dépendances, Maven vous aide également à créer une structure de projet générique. + +!!! edit "À vous de jouer" + - Lancez cette commande [`mvn archetype:generate`](https://maven.apache.org/guides/mini/guide-creating-archetypes.html){:target="_blank"} pour générer un projet qui suit les conventions des projets Maven. Nommez le projet `takima-agency` et définissez `io.takima.agencymanagement` pour le group id. + + ```bash + mvn -B archetype:generate \ + -DarchetypeVersion=1.4 \ + -DgroupId=io.takima.agencymanagement \ + -DartifactId=takima-agencymanagement + ``` + +!!! info Gestion des dépendances + + - Un **artifact** est un morceau de code, généralement compilé, qui **peut être utilisé comme dépendance** par d'autres artifacts. Par conséquent, la combinaison du _name_ et du _groupId_ d'un artifact doit être unique. + - La commande `mvn archetype:generate` est utilisée pour créer un nouveau projet, basé sur un _archetype_ (un modèle). Sans spécifier d'_archetype_, il utilisera `maven-archetype-quickstart`, qui est un _Hello World_. + + +Quand on crée la structure du projet, Maven génère aussi un fichier de configuration appelé `pom.xml`, pour **Project Object Model**. +Gardez-le propre, bien structuré et commenté. Référez-vous à [la documentation officielle](https://maven.apache.org/guides/getting-started/){:target="_blank"} pour plus de détails. + +Le fichier `pom.xml` est utilisé pour lister toutes les dépendances dont le projet a besoin. + +Pour l'instant, le projet est livré avec une seule dépendance (très ancienne) [_JUnit_](https://junit.org/junit4/){:target="_blank"}. Il s'agit d'un framework Java populaire permettant d'écrire des tests automatiques. + +??? abstract "pom.xml" + ```xml + <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + <groupId>io.takima.agencymanagement</groupId> + <artifactId>takima-agency</artifactId> + <packaging>jar</packaging> + <version>1.0-SNAPSHOT</version> + <name>takima-agency</name> + <url>http://maven.apache.org</url> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <maven.compiler.source>1.7</maven.compiler.source> + <maven.compiler.target>1.7</maven.compiler.target> + </properties> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.11</version> + <scope>test</scope> + </dependency> + </dependencies> + + </project> + ``` + +!!! info "Maven scopes" + + - `scope` est utilisé pour définir la visibilité d'une dépendance dans un projet Maven. Il y a **4 scopes importants que vous devez connaître** : [`compile`, `runtime`, `provided` et `test`](https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#dependency-scope){:target="_blank"}. + - `<scope>test</scope>` indique que cette dépendance est disponible seulement pendant la phase de test et pas au runtime. + +### Retirez JUnit 4 + +Comme nous n'allons pas faire de test vous pouvez retirer la dépendance JUnit ainsi que le fichier `src/test`. + +## Définissez la version de Java + +Maven gère également la compilation de votre projet. Cela signifie qu'au lieu d'appeler la commande `javac` vous-même, vous pouvez appeler `mvn compile` et Maven appellera la commande `javac` pour vous. + +La version de Java à utiliser est configurée par quelques propriétés : + +* `maven.compiler.source`: Utiliser les fonctionnalités de cette version de Java. + * Cette propriété indique quelle valeur doit être définie pour l'option `javac -source`. Elle spécifie la version de Java que nous utilisons pour développer. + +* `maven.compiler.target`: Compiler un binaire en bytecode compatible avec cette version. + * Cette propriété indique quelle valeur doit être définie pour l'option `javac -target`. Elle spécifie la version minimale de la JVM avec laquelle le bytecode généré doit être compatible. + +!!! edit "À vous de jouer" + + - Définissez une `property` appelée `java.version` et mettez la dernière version de Java _LTS_ (eg: `21`). + - Utilisez `maven.compiler.source` et `maven.compiler.target` pour définir cette version. + + ```xml + <!-- ... --> + <properties> + <java.version>17</java.version> + <maven.compiler.source>${java.version}</maven.compiler.source> + <maven.compiler.target>${java.version}</maven.compiler.target> + </properties> + <!-- ... --> + ``` + +## Compilez un `jar` avec Maven + +Maven definit un [cycle de vie de construction](https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html){:target="_blank"} pour accomplir différentes tâches pour le projet : +_compile_, _package_, _test_, _deploy_, ... + +- Lancez la commande `clean package` pour builder et packager le projet : + ```bash + mvn clean package + ``` +Cette commande compile l'artifact dans le répertoire `target/`. Il doit contenir des fichiers `.class` , ainsi qu'un fichier `.jar` qui les packages tous. + +!!! info "jar" + - Un fichier `.jar` est comme un `zip` contenant les fichiers Java compilés. Il contient également un fichier exécutable. + - Rappelez-vous de mettre le `target/` dans votre `.gitignore` car il contient des fichiers binaires générés, qui **ne doivent pas être commit**. + +- Essayez de lancer le `jar` avec la commande suivante : + ```bash + java -jar target/takima-agencymanagement-1.0-SNAPSHOT.jar + ``` + +!!! failure + ==**No main manifest attribute in target/takima-agencymanagement-1.0-SNAPSHOT.jar**== + + Cette erreur montre que Java **ne sait pas quel fichier est exécutable dans le `jar`**. En fait il vous demande de lui indiquer **quelle classe définit la méthode `public void main()`**. + +### Fichier exécutable `.jar` + +- Modifiez le `pom.xml` et ajoutez ces quelques lignes : + + ```xml + <build> + <plugins> + ... + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifest> + <mainClass>io.takima.agencymanagement.App</mainClass> + </manifest> + </archive> + </configuration> + </plugin> + </plugins> + </build> + ``` + +- Packagez le `jar` à nouveau et décompressez l'archive avec un gestionnaire d'archives pour voir les fichiers qu'elle contient. + + ```bash + mvn clean package + cd target/ + unzip takima-agencymanagement-1.0-SNAPSHOT.jar + ``` + + Assurez-vous que l'archive contienne un `MANIFEST.MF` qui pointe vers votre Main.class. + + ```bash + Archive: takima-agencymanagement-1.0-SNAPSHOT.jar + creating: META-INF/ + inflating: META-INF/MANIFEST.MF + ``` +- Lancez le `jar` à nouveau, ça devrait fonctionner ! + + ```bash + java -jar takima-agencymanagement-1.0-SNAPSHOT.jar + ``` + +## Fichiers modifiés + +``` +pom.xml +src/ +.gitignore +``` + +!!! warning "N'oubliez pas de `Commit` votre travail !" diff --git a/resources/docs/docs/chapters/tp2/release.md b/resources/docs/docs/chapters/tp2/release.md new file mode 100644 index 0000000..fb065b9 --- /dev/null +++ b/resources/docs/docs/chapters/tp2/release.md @@ -0,0 +1,59 @@ +# La release + +Maintenant, votre application offre un point d'entrée _CLI_ qui vous permet de lister les voyages disponibles ainsi +que les voyageurs inscrits. Le moment est venu de la publier. + +Lorsque vous publiez un artefact Java, vous devez définir un nouveau numéro de version et lui donner un _Git tag_ spécifique pour identifier facilement cette version. +Vous savez quoi ? Maven dispose d'un outil pour faire cela. + +## [**Maven Release plugin**](https://maven.apache.org/maven-release/maven-release-plugin/){:target="_blank"} + +- Ajoutez le [**Maven Release plugin**](https://maven.apache.org/maven-release/maven-release-plugin/){:target="_blank"} à votre `pom.xml`. + +```xml +<project> +<scm> + <developerConnection>scm:git:git@[YOUR_REPO.git]</developerConnection> +</scm> + +<build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-release-plugin</artifactId> + <version>2.5.3</version> + </plugin> + </plugins> + <!-- ... --> +</build> + <!-- ... --> +<!-- ... --> +</project> +``` + +- Lancez `mvn release:prepare`. + +!!! bug "Cependant, veuillez effectuer un `add`, un `commit` et un `push` de votre code avant cela." + +```sh +mvn release:prepare \ + -Dtag=1.0.0 \ + -DreleaseVersion=1.0.0 \ + -DdevelopmentVersion=2.0-SNAPSHOT +``` + +Avec cette commande, Maven **met à jour la `<version>`** dans le `pom.xml` à la version spécifiée, **crée le tag Git** et **pousse les changements**. +!!! info "Une bonne pratique pour définir le numéro de version est d'utiliser [SEMVER](https://semver.org/){:target="_blank"} (Semantic Versioning)." + +- Lancez la commande `mvn release:clean` pour préparer la prochaine version. + ```sh + mvn release:clean + ``` + +!!! warning "N'oubliez pas de `Commit` votre travail !" + +# Récapitulatif + +Félicitations pour avoir terminé ce TP qui a abordé plusieurs aspects essentiels du développement logiciel, +notamment Maven, JDBC et la gestion des releases avec ce dernier. Cependant, préparez-vous à plonger dans l'univers +de Spring ! diff --git a/resources/docs/docs/chapters/tp2/spring.md b/resources/docs/docs/chapters/tp2/spring.md new file mode 100644 index 0000000..272c444 --- /dev/null +++ b/resources/docs/docs/chapters/tp2/spring.md @@ -0,0 +1,275 @@ +## <span style="color:orange"> **Optionnel** </span> + +!!! info "Spring ?" + - Vous n'avez jamais entendu parler de spring ? En quelques mots, voici ce qu'il faut retenir : + - C'est un framework + - C'est une alternative à JakartaEE (anciennement connu sous le nom de JEE) + - Il offre DI (dependency injection) et IoC (Inversion of control) + - Il exploite l'AOP (Aspect Oriented Programming) pour améliorer vos POJO (objets Java ordinaires). + - Dans cette étape, vous allez ajouter le framework Spring-Boot à une base de code Java existante. + +!!! info "Spring vs Spring Boot" + - Il ne faut pas confondre Spring et Spring Boot. + - Spring est le framework, celui qui offre DI, IoC, AOP etc... Il est puissant et plein de fonctionnalités et de modules, mais nécessite beaucoup de - configuration pour le faire fonctionner. + - Spring Boot peut être considéré comme une extension de Spring. Il est construit au-dessus de Spring et fournit des fonctionnalités très pratiques : autoconfiguration, configuration par défaut, serveur embarqué, cohérence de la version des dépendances, starters, etc. + +## Générer un nouveau projet + +### Le pom + +Allez sur [start.spring.io](https://start.spring.io/#!type=maven-project&language=java&platformVersion=3.2.2&packaging=jar&jvmVersion=21&groupId=io.takima.agencymanagement&artifactId=agencymanagement&name=agencymanagement&description=Takima%20Store&packageName=io.takima.agencymanagement&dependencies=postgresql,jdbc,web), et download le projet. Le projet a été préconfiguré avec les settings suivants, n'hésitez pas à rajouter des dépendances pour tester si vous en avez besoin: + +**group**: + +- `io.takima.agencymanagement` + +**artifact**: + +- `agencymanagement` + +**dependencies**: + +- `postgreSQL` +- `JDBC` +- `Web` + +### Code source + +Copier votre code source dans le nouveau projet (Attention il faut que vous mixiez la classe main et vous allez peut-être avoir quelques problèmes d'imports) + +!!! info "Pom Parent" + - Comme vous avez pu le remarquer, `<artifactId>postgresql</artifactId>` n'a pas de numéro de version spécifié, + c'est parce que `spring-boot-starter-parent` fournit et gère toutes les versions des dépendances. + - Si, pour une raison quelconque, vous souhaitez modifier la version d'une dépendance, vous devez définir la balise `dependencyManagement`, puis à + l'intérieur de celle-ci, vous devez spécifier la dépendance pour laquelle vous souhaitez une version spécifique et la version que vous souhaitez. + - Mais réfléchissez-y à deux fois avant de le faire. Spring-Boot assure (la plupart du temps) la compatibilité entre les versions des dépendances. Il peut être préférable de mettre à jour la version de Spring Boot plutôt que celle d'une dépendance spécifique. + - Cependant, cela peut permettre de corriger rapidement un bug dans une dépendance sans attendre la nouvelle version de Spring Boot. + + +!!! info "HicariCP" + - Si vous regardez attentivement le fichier `pom.xml`, vous verrez que la dépendance `hikariCP` n'est pas spécifiée, + c'est parce qu'elle est incluse par défaut par `spring-boot-starter-jdbc`, puisqu'elle est utilisée pour le **connection pooling** par défaut dans `Spring Boot 2` + + + +!!! info "Starter Spring Boot" + - Un spring boot starter est une dépendance regroupant un ou plusieurs modules Spring, et les dépendances externes nécessaires avec une version définie. - Comme son nom l'indique, il est utilisé pour commencer à utiliser rapidement une fonctionnalité. + - Prenez un moment pour explorer le contenu de `spring-boot-starter-parent` et de certains spring-boot-starters comme `spring-boot-starter-jdbc`. + +- Lancez mvn dependency:tree pour afficher toutes les dépendances incluses dans votre installation Spring. + + +!!! info "Tips Intellij" + - Notez qu'IntelliJ vous permet de démarrer un nouveau projet avec Spring Initializer directement (en évitant de le générer depuis le site web puis de le télécharger) + + +### La db + +Compilez et exécutez votre application : + +!!! failure + =**java.lang.IllegalStateException: Failed to load ApplicationContext**= + Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. + +Si tu ouvres ton `pom.xml`, tu verras que ton projet vient avec une `spring-boot-starter-jdbc` dépendance. +Celle-ci dit à Spring automatiquement de configurer une connection de db, mais Spring n'arrive pas à le faire car on lui a donné aucune info sur la db. + +Une petite recherche sur internet te dirait que Spring (plus spécifiquement Spring Boot) a besoin d'une configuration (soit dans le fichier `application.properties`, soit dans le fichier `application.yml`) , pour configurer la connexion à la base de données: + + + +```yml +spring: + datasource: + url: jdbc:postgresql://localhost:5432/agencymanagement_db + username: madmin + password: madmin +``` + +```properties +spring.datasource.url=jdbc:postgresql://localhost:5432/agencymanagement_db +spring.datasource.username=madmin +spring.datasource.password=madmin +``` + +!!! info "doc Spring" + -Il y a plusieurs façons de définir les propriétés de Spring. + Les définir dans votre fichier `application.properties`/`application.yml` est la plus standard, mais il en existe d'autres ! + Consultez [la documentation](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.external-config) pour en savoir plus. + +Mettez à jour vos noms de propriétés, exécutez l'application à nouveau, et si votre docker `agencymanagement_db` est en cours d'exécution, vous devriez obtenir ce qui suit : + +```bash +Tomcat started on port(s): 8080 (http) with context path '' +Started MaStoreApplication in 3.248 seconds (JVM running for 4.51) +``` + +### Le logger + +Spring boot est livré avec l'API de logging SLF4j (`spring-boot-starter-web` => `spring-boot-starter` => `spring-boot-starter-logging` ). +L'implémentation par défaut est **Logback** (voir : `spring-boot-starter-logging-X.X.X.RELEASE.pom:42`). +Logback est le successeur de **log4j**. Il a été conçu par le même développeur, avec la performance à l'esprit. +De plus, il offre une **intégration native avec slf4j** et ne nécessite pas de connecteur. + +Profitons de cette occasion pour passer de **log4j** à **logback**. +Si vous le souhaitez, logback dispose d'un [traducteur](https://logback.qos.ch/translator/) pour migrer votre ancien fichier `log4j.properties` vers le fichier `logback.xml` requis. + +Cependant, si vous ne voulez pas écrire du XML, Spring Boot vous permet de configurer le logger à travers le fichier `properties` : + + +```yaml +logging: + level: + root: info + pattern: + console: '%d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger.%M - %msg%n' +``` + +```properties +logging.level.root=info +logging.pattern.console=%d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger.%M - %msg%n +``` + +!!! info tips + - Spring peut configurer logback pour utiliser les couleurs avec cette option:`spring.output.ansi.enabled=always` + - N'oubliez pas de supprimer l'ancien fichier `log4j.properties`, car il n'est plus utile + - Ecrivez le `application.properties` comme ça `application.yml`, le yaml est plus lisible + + +### L'injection de dépendances + +Que le fun commence ! + +L'ensemble du framework Spring est construit autour du concept d'injection de dépendances (Dependency Injection). +Dans cette étape, vous découvrirez l'injection de dépendance en configurant la manière d'injecter le DataSource. + +DataSource est un composant JPA qui contient les connexions à la base de données. + +Lorsque vous avez introduit le pool de connexion DB dans l'étape Java précédente, vous avez probablement créé une sorte de singleton ConnectionManager pour configurer HikariCP et fournir un objet de connexion. +En fait, HikariCP vous donne accès à la connexion par l'intermédiaire d'un HikariDataSource : + +```bash +DataSourceManager() { + HikariConfig config = new HikariConfig(); + config.setJdbcUrl(url); + // ... + this.datasource = new HikariDataSource(config); +} +Connection getConnection() { + return this.datasource.getConnection(); +} +``` +Tous vos DAO ont besoin de cette source de données et, plutôt que de coder en dur le lien entre chaque DAO et la source de données, injectons-le ! + +!!! info + L'instanciation d'objets directement dans la classe qui les requiert n'est pas flexible, car elle engage la classe dans un ensemble particulier d'objets et rend impossible la modification ultérieure de leur instanciation, indépendamment de la classe. + Cela empêche la classe d'être réutilisable si d'autres objets sont nécessaires, et rend difficile le test de la classe, car les objets réels ne peuvent pas + être remplacés par des objets fictifs. C'est là que l'injection de dépendances devient pratique. + +Créez un nouveau fichier ApplicationContext.java, qui utilise les annotations suivantes : + +@Configuration +@Bean +@Primary + +Le fichier ApplicationContext.java est utilisé par Spring pour définir le contexte. +Considérez le contexte comme une classe annotée avec @Configuration, que Spring utilise au démarrage de l'application, pour instancier vos services, +vos singletons, tout configurer et tout relier. + +!!! info + Il peut y avoir autant de classes @Configuration que vous le souhaitez. + Initialement, Spring s'appuyait sur des fichiers XML pour configurer le contexte (i.e. : context.xml). Depuis Spring 4.X, nous préférons utiliser la configuration basée sur JavaConfig, qui s'appuie largement sur des annotations (comme @Bean ou @Configuration) plutôt que sur l'approche XML. + Consultez cette [excellent article on Baeldung](https://www.baeldung.com/inversion-control-and-dependency-injection-in-spring) si vous voulez en savoir plus! + + +Lorsque le fichier ci-dessus est lu par Spring, le DataSource est alors considéré comme un bean et peut être @Autowired à vos DAOs, leur donnant accès à une Connection. Si vous avez besoin de changer votre source de données, vous n'avez qu'à changer votre bean, aucune modification de DAO n'est nécessaire. N'est-ce pas génial ? + +Allez y créer votre class ApplicationContext avec un bean datasource ! + +??? tip + + ```java + @Configuration + public class ApplicationContext { + + @Bean + @Primary + DataSource datasource() { + return DataSourceManager.INSTANCE.getDatasource(); + } + } + ``` + +## Spring Autowire + +> Consultez cet [article de Baeldung sur spring autowire](https://www.baeldung.com/spring-autowire) si vous voulez en savoir plus. + +Comme nous l'avons vu précédemment, le contexte consiste essentiellement à fournir des beans de certains types à l'ensemble de l'application. + +Au cours de cette étape, vous allez transformer tous vos singletons en **composants** gérés par Spring et **Autowired** les uns avec les autres. + +!!! info + Une classe annotée avec `@Component` se transformera en Bean une fois instanciée et pourra alors être injectée. + +- Dans votre DAO, injectez et utilisez la source de données que nous avons configurée plus tôt: + +```bash +class SomeDao { + @Autowired. + DataSource ds; // Spring will inject a DataSource instance HERE. +} +``` + +L'annotation [@Autowired](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Autowired.html) indique à Spring d'injecter le bean `DatasSource` que nous avons configuré plus tôt. + +!!! info + - Il est recommandé d'utiliser `@Autowired` sur les **constructeurs** plutôt que sur les **champs**, car ils vous permettent d'implémenter des composants d'application comme des _objets immuables_ et de vous assurer que les dépendances requises ne sont pas _nulles_. + - Les injections de setter ou de champ ne doivent être utilisées que pour les dépendances optionnelles. + - Vous pouvez en savoir plus à ce sujet [ici](https://docs.spring.io/spring/docs/5.0.x/spring-framework-reference/core.html#beans-constructor-vs-setter-injection) + - Le saviez-vous ? Depuis Spring 4.3, les classes annotées `@Component` qui n'ont qu'un seul constructeur ne doivent pas nécessairement définir l'annotation `@Autowired` pour bénéficier de la DI. + +- Ajoutez l'annotation `@Repository` à vos classes DAO. + Cela les transforme en **Composants** gérés par Spring. + +!!! info + - Les deux `@Component` et `@Repository` marquent un bean comme un composant géré par Spring, mais `@Repository` attrape aussi les exceptions spécifiques à la persistance et les relance comme l'une des exceptions unifiées non contrôlées de Spring. + + - Si une classe n'est pas un composant, elle n'est probablement pas gérée par Spring. N'utilisez jamais `@Autowired` à l'intérieur d'une telle classe, car rien ne sera injecté. + +- Annotez vos classes de service avec l'annotation @Service. + +!!! info + Tous vos composants doivent avoir un constructeur public et trivial. + Par trivial, nous entendons un constructeur sans argument ou avec des arguments qui sont autowired. + +- Modifiez vos services pour `autowire` les composants requis. + +- Vous n'aurez pas besoin de `autowire` quoi que ce soit dans votre main dans le futur, parce que votre application gérera les requêtes web. + Cependant, pour le moment, vous avez toujours besoin d'exécuter votre application CLI, et pour ce faire, vous pouvez écrire un constructeur dans votre main et l'injecter avec vos dépendances. + + +```bash +@SpringBootApplication +public class MaStoreApplication { + private final SellerService sellerService; + private final ArticleService articleService; + @Autowired + public MaStoreApplication(SellerService sellerService, ArticleService articleService) { + this.sellerService = sellerService; + this.articleService = articleService; + // Put your old main code here +} + public static void main(String[] args) { + SpringApplication.run(MaStoreApplication.class, args); + } +} +``` + +!!! info + Spring instanciera la classe `@SpringBootApplication` en appelant le constructeur. + Vous pouvez également externaliser votre code dans une autre classe et l'annoter avec `@Service` pour réduire la quantité de code dans le constructeur. + +- Compilez et testez votre code ; tout devrait bien se passer ! + +Comme vous le voyez, il n'y a rien comme `new SellerDaoImpl()` dans votre code. +C'est à Spring d'appeler les constructeurs du composant et d'instancier l'objet. \ No newline at end of file diff --git a/resources/docs/docs/chapters/tp3/launch_hackaton.md b/resources/docs/docs/chapters/tp3/launch_hackaton.md new file mode 100644 index 0000000..72c8085 --- /dev/null +++ b/resources/docs/docs/chapters/tp3/launch_hackaton.md @@ -0,0 +1,51 @@ +# Hackaton + +## **Au programme** + +Vous possédez maintenant toutes les compétences pour créer votre propre applation java. C’est un bon début ! +Mais quoi de mieux que la pratique pour appliquer tout ça ! + +Le but de ces trois derniers jours et de créer une application de bout en bout Java Spring Angular. +On a confiance en vous mais on sait que c'est un projet ambitieux. + +Pour vous aider on vous fournit [un skelette d'application backend et frontend](https://gitlab.takima.io/formation-dev-web/squeleton-web-app). +N'hésitez surtout pas à le consulter et à vous en inspirez grandement. + +C'est à vous de jouer : Formez des groupes de 3. + +Vous avez deux choix : +- Soit vous partez juste du skelette et vous nous créez votre propre application +- Soit le front vous donne des boutons et vous développez l'api de notre super TakiCine + +Si vous partez sur l'option TakiCine, [voici le lien du repo front](https://gitlab.takima.io/formation-dev-web/allocine-exemple-webb-app-front) et [un open api deployé](https://api.allocine.takima.dev/swagger-ui/index.html#/) pour vous aider un peu ! + +Si vous partez sur l'option libre, [voici des exemples de projet](https://gitlab.takima.io/formation-dev-web/squeleton-web-app/-/tree/main/projects-ideas?ref_type=heads). + +Vous devez aussi préparer une petite présentation de votre projet pour le dernier jour ! + +Que la force soit avec vous + +!!! info "Spring ?" + - Vous n'avez jamais entendu parler de spring ? En quelques mots, voici ce qu'il faut retenir : + - C'est un framework + - C'est une alternative à JakartaEE (anciennement connu sous le nom de JEE) + - Il offre DI (dependency injection) et IoC (Inversion of control) + - Il exploite l'AOP (Aspect Oriented Programming) pour améliorer vos POJO (objets Java ordinaires). + - Dans cette étape, vous allez ajouter le framework Spring-Boot à une base de code Java existante. + +!!! info "Spring vs Spring Boot" + - Il ne faut pas confondre Spring et Spring Boot. + - Spring est le framework, celui qui offre DI, IoC, AOP etc... Il est puissant et plein de fonctionnalités et de modules, mais nécessite beaucoup de - configuration pour le faire fonctionner. + - Spring Boot peut être considéré comme une extension de Spring. Il est construit au-dessus de Spring et fournit des fonctionnalités très pratiques : autoconfiguration, configuration par défaut, serveur embarqué, cohérence de la version des dépendances, starters, etc. + + +!!! info "Hibernate" + - Il y a deux frameworks dans Java EE que tout développeur Java doit connaître : Le premier est Spring boot. Son meilleur ami est la bibliothèque ORM populaire Hibernate, et c'est le sujet de ce jalon. + + - Qu'est-ce qu'un ORM ? + + - Vous savez déjà comment écrire de simples requêtes SQL à partir de votre application Java, mais vous avez certainement constaté que c'était assez fastidieux. + + - Imaginez maintenant que vous devez interroger plusieurs tables, et que de nombreuses tables se réfèrent les unes aux autres. Il faut les récupérer toutes, faire toutes les correspondances encore et encore... C'est beaucoup trop de code si nous écrivons tout cela avec le bon vieux PreparedStatement. + + - Hibernate permet de simplifier tout ça ! \ No newline at end of file diff --git a/resources/docs/docs/cheatsheets/tp1/command_line.md b/resources/docs/docs/cheatsheets/tp1/command_line.md new file mode 100644 index 0000000..f26e6c9 --- /dev/null +++ b/resources/docs/docs/cheatsheets/tp1/command_line.md @@ -0,0 +1,17 @@ +## **Compilation et exécution du code** + +!!! info "Compilation avec javac" + `javac` est le compilateur officiel de Java. Il transforme le code source Java en bytecode, nécessaire pour l'exécution par la machine virtuelle Java (JVM). +Utilisez la commande suivante dans votre terminal pour compiler votre projet : +``` +javac src/*.java -d target +``` + +Cette commande compile tous les fichiers Java dans le dossier `src` et place les fichiers de sortie dans le dossier `target`. + +Une fois le code compilé, vous pouvez exécuter votre application avec la commande suivante : + +``` +java -cp target src.Main +``` +Cette commande exécute la classe `Main` en utilisant les fichiers compilés dans le dossier `target`. diff --git a/resources/docs/docs/cheatsheets/tp2/docker_install.md b/resources/docs/docs/cheatsheets/tp2/docker_install.md new file mode 100644 index 0000000..bc5138d --- /dev/null +++ b/resources/docs/docs/cheatsheets/tp2/docker_install.md @@ -0,0 +1,51 @@ +## <i class="fa-solid fa-download"></i> Install _Docker Engine_ + +> You can skip this part if you already have Docker installed. + +:::spoiler Linux installation +### <i class="fab fa-linux"></i> Linux installation + +> **warning** +> +> As of 2022, **Docker Desktop** now requires a paid subscription for commercial usage in large companies. +> +> - **Docker Desktop** is a convenience utility that packages the _Docker Engine_ plus a _Graphical User Interface_ (_GUI_). +> - **Docker Engine** is a free _Command Line Tool_ (_CLI_) to create and manage **Docker objects**, such as **images**, **containers**, **networks** and **volumes**. +> +> - If you use _Mac_ or _Windows_, you have to use _Docker Desktop_ to gain compatibility with _Docker Engine_. + +- [Install _Docker Engine_](https://docs.docker.com/engine/install/){:target="_blank"} for Linux: + ```sh + curl -fsSL https://get.docker.com -o get-docker.sh + sudo sh get-docker.sh + ``` +- Add your user to the docker group: + ```sh + sudo usermod -aG docker $USER + ``` + +> **warning** +> +> - As a Linux user, you can use _Docker Engine_ only, even if the official documentation pushed toward the adoption of [Docker Desktop for Linux](https://docs.docker.com/desktop/linux/install/){:target="_blank"}. + +::: + +:::spoiler MacOs installation +### <i class="fab fa-apple"></i> MacOs installation + +> **warning** Docker on _MacOS_ is packaged into _Docker Desktop_, that requires now a paid subscription for commercial usage in large companies. + +[Install Docker Desktop on MacOs](https://docs.docker.com/desktop/mac/install/){:target="_blank"} +::: + +:::spoiler Windows installation +### <i class="fab fa-windows"></i> Windows installation + + +> **warning** Docker on _Windows_ is packaged into _Docker Desktop_, that requires now a paid subscription for commercial usage in large companies. + +> **warning** Docker Engine creates isolation with the help of unix system primitives and kernel features (eg: [CGroups](https://en.wikipedia.org/wiki/Cgroups){:target="_blank"}, [Chroot](https://en.wikipedia.org/wiki/Chroot){:target="_blank"}, ...). As a result, it cannot run natively on any non-unix based system. +> Docker works around this issue using virtualization with [`Hyper-V`](https://en.wikipedia.org/wiki/Hyper-V){:target="_blank"} or [`WSL2`](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux){:target="_blank"}, but some features will not work the same (eg: [_Bind mount volumes_](https://docs.docker.com/desktop/windows/troubleshoot/#path-conversion-on-windows){:target="_blank"}) + +[Install Docker Desktop on Windows](https://docs.docker.com/desktop/windows/install/){:target="_blank"} +::: diff --git a/resources/docs/docs/downloads/dao.zip b/resources/docs/docs/downloads/dao.zip new file mode 100644 index 0000000000000000000000000000000000000000..7c85b3e7d5e26806ba692edc112f74a11604e473 GIT binary patch literal 1814 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 IzzX640M#Ay*Z=?k literal 0 HcmV?d00001 diff --git a/resources/docs/docs/downloads/db-init.zip b/resources/docs/docs/downloads/db-init.zip new file mode 100644 index 0000000000000000000000000000000000000000..df1ccc811a690ce6e285de3355a75914e609d513 GIT binary patch literal 1323 zcmWIWW@Zs#00H$nod^&O!z>I648?^x`k^7b4D4Bf3sYgZw1S&~k>v$50|S_Vn83ln z!7wFG8*V}!D+7Zf)PyiYJp(<1`1q2d#In?!_|oFkBE6Etq?}Z};=&xT@s%g$r>dTr zpBfXmFcr=Cvy)Hf9WoGb{r<BnvZ+OD*Nd*Hp6pqs{I6zstx+;BRP|;IIv()#{p*%+ zp-EkNtE$qU-Z^<@uiSLSha7W!Y+Gu+Ph0uqT*k)fGmQ%vLb$G{dp#F4^0J9AcqP28 zDLtlFXRly(rR#p7XLf>RJ6IIk6JA!T&OH^AvH7x*nAh{@+^CYdqEV~&o_Lj_U%hfR zSMjU%V0mS~Kd$jlrG7KdJ#}bBuR+%Cor#BBo+t%ATm6uo_s7$q<;80!Y5$fxoI3MN z(?V}$DYo=h<2e?6w<q3PH(}SQb=G_DePFmZRnO-R&ql-O-N_9;f5H^6JEg9jSEYJ& z!jZ=(6b?;SWz#$Ku=JQ#FZWNzHD@{tcgRmaJ}X=I<HabO*n@{FE{RQlc1P=NNw{}( zV!Um`;*-zoW~s#|<(;d4vtX{Ld>l6?+w=HdztlGNEHR@cpBK3DzU?qhdHNu*czfan zUE9#N0@LPeMZQ1$TjbP{nObM&OC)bkT^+qUHF8e!aixFZ^7|PByxBS4AMS80XJlXi z#U&z^&m|yYc@q-@g936a8=}T?N@7VOJd(Gbo}c>t^n7qSLW|_uiGluy3<Qqf|E~GV ztm6_-i^rjEXSGGeGYnO2%HA+d%~O5L_GtO`<0*`Ra<g9l{k%VZeR(gNWU5rixl}iy z3n|LwIgGcYScUa_PH1!-ONl+wbUt(44K|j_^1tT!NmplGKhmet`6Np{w|Kuik0DE9 zij%>-Yp?7ZV-$~Z`zmhC_dHZ4)w|xOaF2;>u~nb5?DD$Yt5K?E4Z1Tuw>mvfHaPIW z_ptYqWx)&kyR6ynt$kpwdZ+xNDPOw8Jh^%LiPoZ5r_b7PlZhqa)}d|DqB~<J@z3A% z_u)n9|A%(Ff6$pI*~e_1H~r4MRMR^B6(@E+nDsPZh5hyriO(ndViq6zx43BL%fHfQ z&b@V04$0PRD$#8?mzpIXc44}ql)C2m=@p%+KBj8vd2?2(D<o%dr!M-js6pR{A#@er zrAXCtZ(7e!=V7_^+bi$;-K9(2l12PhS6wp)#omcWX0HMm85lru6yVLsB*Kh4pTqL} zUq=v&xLgl05ti?f(+VixgUkWpEsahL4B&EvqEZ0n0g!c|1c>Z8Pyz&51;SezHJFgB aBQrS$c(byBOk-wXX3%G3V0gw1;sF4gTjw$W literal 0 HcmV?d00001 diff --git a/resources/docs/docs/downloads/docker-compose-db.zip b/resources/docs/docs/downloads/docker-compose-db.zip new file mode 100644 index 0000000000000000000000000000000000000000..d4908786b21701a1bbf2e2a53cc15bb143cb9dd7 GIT binary patch literal 1130 zcmWIWW@Zs#0D&!$RuLc?hJ_du7*g_+vr~(7lk;;6@{3b-Q<C&ULwFh3ueNSZz16xo z6-1X-a5FHnykKTv022`NI2bq>kj*P%Vqj3gY96W$dX>33a2r6TgD{#6wLu5{4jb_7 z{jR-+D^q-vks6=NqYD?g_@rlF^OX^pb?I2t;;o*Zn-+1tz3*vl#pMyRX!`e@<8^+$ zw>VTae>{G;_PyklttT!7@HZ?!%c<bC&6R7aQQ7LbCc7l#gu_Cdl2%)vGs@L`liGMp zAUQNtG2gWFTkOlZmZ3}v>$125uQ_Q)F4}VcR?@sRa?=VoMYec;vWa&q7ncv*!KI!k zG~d$8>zKD<fBofao_pRbH~C(FXtAgL56wA8r|bw!Ez_7;vLG|>@a5pNwOzHH_H2rC zBHfy2y<8xWc|r0^7)x&fpA1{yBF6BWe5Qq_Ul#^BMJX-WU?W?!DpY!ovUbkAr!(H} zN?-GN+hGR%be0GA&nr!`Id*wv{mtdRd@9Y3Tkmo#p7@b@g6W@6PdHkv*QFmRys-My zuhy9Uch(!44!t;4!rLiy^`36^9Yd+LV&^0zs^jYKp8fuE=CzwoYncMP**TUjERl;~ zWMBZr7a}H&;^u_IQpI`(1_oVXVluxhwWugFB^4f}2ZMUSiDvWX`Kf48n%m>ZcSu3N z_4}Mh?Y7Hq&APIa_rwhW-5HWO>+=^#i|57F#l`(QwrFKaldQja_LNlb@-QO@p56ny zJ+3A*@qM%E70=qREIjY|gU7QzU0iZi-{(c!QtiaGaas#gzJGZ6Rq)^UntAP&3)<Eh zUEh1+vwFuvZjfi~XDGiYVqjoc&%nSC;LXS+!i+m3z`Xz05yV1Gw8Ui#i21OLfgI4F zi~%wggts&XFfd@rcBnSO!xWS~U>Ge-VLk%c2#P>t--03#WE%)?X_R6j!bVb}Gr*gb T4P-Pk12cm!BLf3FGl&NOmI#g& literal 0 HcmV?d00001 diff --git a/resources/docs/docs/index.md b/resources/docs/docs/index.md new file mode 100644 index 0000000..a534ac4 --- /dev/null +++ b/resources/docs/docs/index.md @@ -0,0 +1,9 @@ +# **Java One** + +### Sessions pratiques + +[Fondamentaux Java et API ](chapters/tp1/index.md) + +[Maven, Bases de Données, Spring](chapters/tp2/maven.md) + +[Hackaton](chapters/tp3/launch_hackaton.md) \ No newline at end of file diff --git a/resources/docs/mkdocs.yml b/resources/docs/mkdocs.yml new file mode 100644 index 0000000..4383306 --- /dev/null +++ b/resources/docs/mkdocs.yml @@ -0,0 +1,52 @@ +site_name: Java One Formation - Application de gestion des voyages +nav: + - Sessions: index.md + - Jour 1: + - "Briefing": chapters/tp1/index.md + - "Prérequis": chapters/tp1/prerequisites.md + - "Création du projet": chapters/tp1/project_creation.md + - "POO ": chapters/tp1/poo.md + - "Collection ": chapters/tp1/api_collection.md + - "API Map": chapters/tp1/api_map.md + - "API Date": chapters/tp1/api_date.md + - "API Stream": chapters/tp1/api_stream.md + - Jour 2: + - "Maven": chapters/tp2/maven.md + - "Dépendances": chapters/tp2/dependances.md + - "Entité": chapters/tp2/entite.md + - "Database": chapters/tp2/database.md + - "Release": chapters/tp2/release.md + - "Spring": chapters/tp2/spring.md + - Jour 3: + - "Hackaton": chapters/tp3/launch_hackaton.md + - Cheatsheet: + - "Compilation": cheatsheets/tp1/command_line.md + +theme: + name: "material" + logo: assets/logo.png + palette: + primary: pink + features: + - navigation.tabs + - navigation.instant + theme: + icon: + file: fontawesome/solid/file + +markdown_extensions: + - markdown.extensions.admonition + - pymdownx.highlight: + anchor_linenums: true + - pymdownx.inlinehilite + - pymdownx.snippets + - pymdownx.superfences + - pymdownx.details + - pymdownx.mark + - pymdownx.tabbed: + alternate_style: true + - attr_list + - tables + +extra_dirs: + - downloads \ No newline at end of file diff --git a/resources/docs/requirements b/resources/docs/requirements new file mode 100644 index 0000000..0b6ff60 --- /dev/null +++ b/resources/docs/requirements @@ -0,0 +1,3 @@ +mkdocs==1.2.4 +mkdocs-material==8.1.1 +pymdown-extensions==9.4 diff --git a/resources/docs/run.sh b/resources/docs/run.sh new file mode 100755 index 0000000..a8c72c7 --- /dev/null +++ b/resources/docs/run.sh @@ -0,0 +1,5 @@ + +docker build . -t java-one-lab + +echo "Building done" +docker run -p 8000:8000 java-one-lab \ No newline at end of file diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/Main.java b/resources/solution/day-1/src/io/takima/agencymanagement/Main.java new file mode 100644 index 0000000..cfdacf8 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/Main.java @@ -0,0 +1,166 @@ +package io.takima.agencymanagement; + +import io.takima.agencymanagement.model.Airport; +import io.takima.agencymanagement.model.Discount; +import io.takima.agencymanagement.model.RestaurentOffer; +import io.takima.agencymanagement.model.PercentDiscount; +import io.takima.agencymanagement.model.Travel; +import io.takima.agencymanagement.model.User; +import io.takima.agencymanagement.service.TravelService; +import io.takima.agencymanagement.utils.AirportManager; + +import java.time.Duration; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Queue; +import java.util.Set; + +public class Main { + + public static void main(String[] args) { + + TravelService travelService = new TravelService(); + //Update Main + System.out.printf("Agency App \n"); + + User user1 = new User(0, "John", "Doe", "john.doe@gmail.com"); + User user2 = new User(1, "John", "Doe", "john.doe@gmail.com"); + User user3 = new User(2, "John", "Doe", "john.doe@gmail.com"); + User user4 = new User(3, "John", "Doe", "john.doe@gmail.com"); + User user5 = new User(4, "John", "Doe", "john.doe@gmail.com"); + User user6 = new User(5, "Mat", "Doe", "mat.doe@gmail.com"); + + //Add 50% discount + List<Discount> discounts = new ArrayList<>(); + discounts.add(new PercentDiscount(50)); + + //Add participant set + Set<User> users = Set.of(user1, user2, user3, user4, user5); + Set<User> participants = new HashSet<>(users); + + // Bug without overriding equals and hashCode + User sameUser1 = new User(0, "Same", "User", "sameuser@gmail.com"); + User sameUser2 = new User(0, "Same", "User", "sameuser@gmail.com"); + + Set<User> sameUsers = new HashSet<>(); + try { + sameUsers = Set.of(sameUser1, sameUser2); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + } + Travel travelWithBug = new Travel(0L, null, Instant.now(), Instant.now().plusSeconds(1), + null, null, null, 0, 0, null, + sameUsers, null); + + System.out.println(travelWithBug.getParticipants()); + + //Add waitList + Queue<User> waitList = new ArrayDeque<>(); + waitList.add(user6); + + // Log RestaurentOffer details + RestaurentOffer offer = new RestaurentOffer( + 0L, + 4, + "description", + 2, + Instant.now().plusSeconds(10), + 2, + Instant.now() + ); + System.out.println(offer.getDetails()); + + //Create firstTravel + Travel firstTravel = new Travel(0L, "to Japan", Instant.now(), Instant.now().plusSeconds(86400), Airport.PARIS_CHARLES_DE_GAULLE, Airport.TOKYO_HANEDA, "Tokyo", 5, 2000, discounts, participants, waitList); + + //Apply discount + applyDiscounts(firstTravel); + + //Log user information + System.out.println(user1); + //Log travel information + System.out.println(firstTravel); + + //Subscribe user using TravelService and get an exception + try { + travelService.subscribe(user1, firstTravel); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + + System.out.println("Utilisateurs en file d'attente : " + firstTravel.getWaitList().element()); + + //Unsubscribe a participant then check the first one in the waitList is subscribed + travelService.unsubscribe(user1, firstTravel); + + for (User participant : firstTravel.getParticipants()) { + System.out.println(participant); + } + + //Log CDG airport timeZone + System.out.println(AirportManager.getTimeZone(Airport.PARIS_CHARLES_DE_GAULLE)); + + //Use computeTravelDuration + String dateStr = "26/04/2023, 12:10"; + String dateStr2 = "27/04/2023, 06:36"; + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy, HH:mm"); + LocalDateTime localDateTime1 = LocalDateTime.parse(dateStr, formatter); + LocalDateTime localDateTime2 = LocalDateTime.parse(dateStr2, formatter); + + + Instant instant1 = localDateTime1.atZone(ZoneId.of(AirportManager.getTimeZone(Airport.PARIS_CHARLES_DE_GAULLE))).toInstant(); + Instant instant2 = localDateTime2.atZone(ZoneId.of(AirportManager.getTimeZone(Airport.TOKYO_HANEDA))).toInstant(); + + firstTravel.setDepartureDate(instant1); + firstTravel.setArrivalDate(instant2); + + System.out.println(travelService.computeTravelDuration(firstTravel)); + + //Use adjustDates + travelService.adjustDates(Duration.ofHours(5), firstTravel); + //Log it in the appropriate zoneTime + System.out.println(firstTravel.getDepartureDate().atZone(ZoneId.of(AirportManager.getTimeZone(firstTravel.getDepartureAirport())))); + + //Find available ones + List<Travel> availableTravels = travelService.findAvailableForDestination("Paris"); + + } + + //Before services + public static void applyDiscounts(Travel travel) { + if (travel.getDiscounts().isEmpty()) { + System.out.println("Aucune réduction n'est applicable sur ce voyage !"); + } else { + for (Discount discount : travel.getDiscounts()) { + double discountedPrice = discount.apply(travel.getPrice()); + System.out.println("Prix après réduction : " + discountedPrice); + } + } + } + + public static boolean subscribe(User user, Travel travel) { + + if (travel.getParticipants().size() < travel.getCapacity()) { + travel.getParticipants().add(user); + return true; + } + travel.getWaitList().add(user); + return false; + } + + public void unsubscribe(User user, Travel travel) { + + travel.getParticipants().remove(user); + + if (!travel.getWaitList().isEmpty()) { + travel.getParticipants().add(travel.getWaitList().poll()); + } + } +} \ No newline at end of file diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/dao/TravelDao.java b/resources/solution/day-1/src/io/takima/agencymanagement/dao/TravelDao.java new file mode 100644 index 0000000..5937d37 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/dao/TravelDao.java @@ -0,0 +1,59 @@ +package io.takima.agencymanagement.dao; + +import io.takima.agencymanagement.model.Airport; +import io.takima.agencymanagement.model.Discount; +import io.takima.agencymanagement.model.Travel; +import io.takima.agencymanagement.model.User; + +import java.time.Instant; +import java.util.*; + +public class TravelDao { + + private final Map<Long, Travel> travels = Collections.synchronizedMap(new HashMap<>()); + + public TravelDao() { + addTravelsToMap(); + } + + public Travel persist(Travel travel) { + travels.put(travel.getId(), travel); + return travel; + } + + public Travel update(Travel travel) { + if (travels.containsKey(travel.getId())) { + travels.put(travel.getId(), travel); + return travel; + } + return null; + } + + public void delete(Long travelId) { + travels.remove(travelId); + } + + public Travel findById(Long travelId) { + return travels.get(travelId); + } + + public List<Travel> findAll() { + return new ArrayList<>(travels.values()); + } + + public void addTravelsToMap() { + List<Discount> emptyDiscountsList = new ArrayList<>(); + Queue<User> emptyWaitList = new LinkedList<>(); + Set<User> emptyParticipantsList = new HashSet<>(); + Set<User> participantsList = new HashSet<>(); + participantsList.add(new User(10, "Jean", "Michel", "j.m@gamil.com")); + + Travel travel1 = new Travel(1, "Trip to Paris", Instant.now(), Instant.now().plusSeconds(3600), Airport.NEW_YORK_NEWARK, Airport.PARIS_ORLY, "Paris",50, 500.0, emptyDiscountsList, emptyParticipantsList, emptyWaitList); + Travel travel2 = new Travel(2, "Holiday in Tokyo", Instant.now(), Instant.now().plusSeconds(7200), Airport.PARIS_CHARLES_DE_GAULLE, Airport.TOKYO_HANEDA,"Tokyo", 40, 800.0, emptyDiscountsList, emptyParticipantsList, emptyWaitList); + Travel travel3 = new Travel(3, "Exploring Rome", Instant.now(), Instant.now().plusSeconds(10800), Airport.TOKYO_NARITA, Airport.NEW_YORK_JFK, "New York", 30, 600.0, emptyDiscountsList, participantsList, emptyWaitList); + + travels.put(travel1.getId(), travel1); + travels.put(travel2.getId(), travel2); + travels.put(travel3.getId(), travel3); + } +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/dao/UserDao.java b/resources/solution/day-1/src/io/takima/agencymanagement/dao/UserDao.java new file mode 100644 index 0000000..689edb6 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/dao/UserDao.java @@ -0,0 +1,54 @@ +package io.takima.agencymanagement.dao; + +import io.takima.agencymanagement.model.User; + +import java.util.*; + +public class UserDao { + + public UserDao() { + //add data + addUsersToMap(); + } + + private final Map<Long, User> users = Collections.synchronizedMap(new HashMap<>()); + + public User persist(User user) { + users.put(user.getId(), user); + return user; + } + + public User update(User user) { + if (users.containsKey(user.getId())) { + users.put(user.getId(), user); + return user; + } + return null; + } + + public void delete(Long userId) { + users.remove(userId); + } + + public User findById(Long userId) { + return users.get(userId); + } + + public List<User> findAll() { + return new ArrayList<>(users.values()); + } + + public void addUsersToMap() { + User user1 = new User(1, "John", "Doe", "john@example.com"); + User user2 = new User(2, "Jane", "Smith", "jane@example.com"); + User user3 = new User(3, "Alice", "Johnson", "alice@example.com"); + User user4 = new User(4, "Bob", "Williams", "bob@example.com"); + User user5 = new User(5, "Eva", "Brown", "eva@example.com"); + + users.put(user1.getId(), user1); + users.put(user2.getId(), user2); + users.put(user3.getId(), user3); + users.put(user4.getId(), user4); + users.put(user5.getId(), user5); + } +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/mapper/TravelDtoMapper.java b/resources/solution/day-1/src/io/takima/agencymanagement/mapper/TravelDtoMapper.java new file mode 100644 index 0000000..4ea0ed9 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/mapper/TravelDtoMapper.java @@ -0,0 +1,20 @@ +package io.takima.agencymanagement.mapper; + +import io.takima.agencymanagement.model.Travel; +import io.takima.agencymanagement.presentation.responsedto.TravelResponseDto; +import io.takima.agencymanagement.utils.AirportManager; + +import java.time.ZoneId; +import java.time.ZonedDateTime; + +public class TravelDtoMapper { + + public static TravelResponseDto fromTravel(Travel travel) { + ZonedDateTime zonedDepartureDate = travel.getDepartureDate() + .atZone(ZoneId.of(AirportManager.timeZone.get(travel.getDepartureAirport()))); + ZonedDateTime zonedArrivalDate = travel.getDepartureDate() + .atZone(ZoneId.of(AirportManager.timeZone.get(travel.getArrivalAirport()))); + + return new TravelResponseDto(travel.getName(), travel.getDestination(), travel.getDepartureAirport(), travel.getArrivalAirport(), zonedDepartureDate, zonedArrivalDate, travel.getPrice()); + } +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/mapper/UserDtoMapper.java b/resources/solution/day-1/src/io/takima/agencymanagement/mapper/UserDtoMapper.java new file mode 100644 index 0000000..d3351a9 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/mapper/UserDtoMapper.java @@ -0,0 +1,12 @@ +package io.takima.agencymanagement.mapper; + +import io.takima.agencymanagement.model.User; +import io.takima.agencymanagement.presentation.responsedto.UserResponseDto; + +public class UserDtoMapper { + + public static UserResponseDto fromUser(User user) { + + return new UserResponseDto(user.getFirstName(), user.getLastName(), user.getContact()); + } +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/Airport.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/Airport.java new file mode 100644 index 0000000..e2eabb8 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/model/Airport.java @@ -0,0 +1,22 @@ +package io.takima.agencymanagement.model; + +public enum Airport { + + PARIS_CHARLES_DE_GAULLE("CDG"), + PARIS_ORLY("ORY"), + NEW_YORK_JFK("JFK"), + NEW_YORK_NEWARK("EWR"), + NEW_YORK_LAGUARDIA("LGA"), + TOKYO_NARITA("NRT"), + TOKYO_HANEDA("HND"); + + private final String acronym; + + Airport(String acronym){ + this.acronym = acronym; + } + + public String getAcronym() { + return acronym; + } +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/Discount.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/Discount.java new file mode 100644 index 0000000..4ab3d08 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/model/Discount.java @@ -0,0 +1,5 @@ +package io.takima.agencymanagement.model; + +public interface Discount { + public double apply(double price); +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/HotelOffer.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/HotelOffer.java new file mode 100644 index 0000000..cea6ddb --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/model/HotelOffer.java @@ -0,0 +1,36 @@ +package io.takima.agencymanagement.model; + +import java.time.Instant; + +public class HotelOffer extends Offer { + private boolean isBreakfastIncluded; + private int nbOfAvailableDays; + + public HotelOffer( + long id, + double score, + String description, + int nbOfReviews, + boolean isBreakfastIncluded, + int nbOfAvailableDays + ) { + super(id, score, description, nbOfReviews); + this.isBreakfastIncluded = isBreakfastIncluded; + this.nbOfAvailableDays = nbOfAvailableDays; + } + + @Override + public boolean isValid() { + return super.isValid() && + nbOfAvailableDays > 0; + } + + public String getDetails() { + return "Le nombre de jours valaibles " + + nbOfAvailableDays + + ". Petit déjeuner est " + + (isBreakfastIncluded ? "" : "non") + + "inclu"; + } + +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/Offer.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/Offer.java new file mode 100644 index 0000000..3b30b57 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/model/Offer.java @@ -0,0 +1,27 @@ +package io.takima.agencymanagement.model; + +import java.time.Instant; + +public abstract class Offer { + protected long id; + protected double score; + protected String description; + protected int nbOfReviews; + protected abstract String getDetails(); + + protected Offer(long id, double score, String description, int nbOfReviews) { + this.id = id; + this.score = score; + this.description = description; + this.nbOfReviews = nbOfReviews; + } + + protected boolean isValid() { + return score >= 0 && + score <= 5 && + description != null && + !description.isBlank() && + nbOfReviews >= 0; + } + +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/PercentDiscount.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/PercentDiscount.java new file mode 100644 index 0000000..04876ad --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/model/PercentDiscount.java @@ -0,0 +1,15 @@ +package io.takima.agencymanagement.model; + +public class PercentDiscount implements Discount{ + + private double percent; + + public PercentDiscount(int percent) { + this.percent = percent; + } + + @Override + public double apply(double price) { + return price * (1 - (percent / 100)); + } +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/RestaurentOffer.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/RestaurentOffer.java new file mode 100644 index 0000000..f203bae --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/model/RestaurentOffer.java @@ -0,0 +1,34 @@ +package io.takima.agencymanagement.model; + +import java.time.Instant; + +public class RestaurentOffer extends Offer { + private int nbOfStars; + private int nbOfPerson; + + public RestaurentOffer( + long id, + double score, + String description, + int nbOfReviews, + Instant expiration, + int nbOfStars, + int nbOfPerson + ) { + super(id, score, description, nbOfReviews); + this.nbOfStars = nbOfStars; + this.nbOfPerson = nbOfPerson; + } + + @Override + public boolean isValid() { + return super.isValid() && + nbOfPerson > 0 && + nbOfStars >0; + } + + public String getDetails() { + return "La reservation est dans un restaurant de %d étoiles, pour %s personnes".formatted(nbOfStars, nbOfPerson); + } + +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/Travel.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/Travel.java new file mode 100644 index 0000000..af92355 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/model/Travel.java @@ -0,0 +1,158 @@ +package io.takima.agencymanagement.model; + +import java.time.Instant; +import java.util.List; +import java.util.Queue; +import java.util.Set; + +public class Travel { + + private long id; + private String name; + private Instant departureDate; + private Instant arrivalDate; + private Airport departureAirport; + private Airport arrivalAirport; + private String destination; + private int capacity; + private double price; + private List<Discount> discounts; + + private Set<User> participants; + + private Queue<User> waitList; + + public Travel(long id, String name, Instant departureDate, Instant arrivalDate, Airport departureAirport, Airport arrivalAirport, String destination, int capacity, double price, List<Discount> discounts, Set<User> participants, Queue<User> waitList) { + if(departureDate.isAfter(arrivalDate)){ + throw new IllegalArgumentException("Date de départ et après la date d'arrivée"); + } + + this.id = id; + this.name = name; + this.departureDate =departureDate; + this.arrivalDate = arrivalDate; + this.departureAirport = departureAirport; + this.arrivalAirport = arrivalAirport; + this.destination = destination; + this.capacity = capacity; + this.price = price; + this.discounts = discounts; + this.participants = participants; + this.waitList = waitList; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Instant getDepartureDate() { + return departureDate; + } + + public void setDepartureDate(Instant departureDate) { + this.departureDate = departureDate; + } + + public Instant getArrivalDate() { + return arrivalDate; + } + + public void setArrivalDate(Instant arrivalDate) { + this.arrivalDate = arrivalDate; + } + + public Airport getDepartureAirport() { + return departureAirport; + } + + public void setDepartureAirport(Airport departureAirport) { + this.departureAirport = departureAirport; + } + + public Airport getArrivalAirport() { + return arrivalAirport; + } + + public void setArrivalAirport(Airport arrivalAirport) { + this.arrivalAirport = arrivalAirport; + } + + public String getDestination() { + return destination; + } + + public void setDestination(String destination) { + this.destination = destination; + } + + public int getCapacity() { + return capacity; + } + + public void setCapacity(int capacity) { + this.capacity = capacity; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } + + public List<Discount> getDiscounts() { + return discounts; + } + + public void setDiscounts(List<Discount> discounts) { + this.discounts = discounts; + } + + public Set<User> getParticipants() { + return participants; + } + + public void setParticipants(Set<User> participants) { + this.participants = participants; + } + + public Queue<User> getWaitList() { + return waitList; + } + + public void setWaitList(Queue<User> waitList) { + this.waitList = waitList; + } + + @Override + public String toString() { + + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("Le voyage '") + .append(name) + .append("' à destination de ") + .append(destination) + .append(" a ") + .append(participants.size()) + .append(" voyageurs inscrits qui sont respectivement:\n"); + + for (User participant : participants) { + stringBuilder.append("- ").append(participant.getFirstName()).append(participant.getLastName()).append("\n"); + } + + return stringBuilder.toString(); + } +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/User.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/User.java new file mode 100644 index 0000000..b8393a8 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/model/User.java @@ -0,0 +1,72 @@ +package io.takima.agencymanagement.model; + +import java.util.Objects; + +public class User { + + private long id; + private String firstName; + private String lastName; + private String contact; + + public User(long id, String firstName, String lastName, String contact) { + this.id = id; + this.firstName = firstName; + this.lastName = lastName; + this.contact = contact; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getContact() { + return contact; + } + + public void setContact(String contact) { + this.contact = contact; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + User user = (User) o; + return id == user.id; + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "Utilisateur " + + firstName + " " + + lastName + " " + + ", contact '" + contact + "\n" + ; + } +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/ValueDiscount.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/ValueDiscount.java new file mode 100644 index 0000000..61ea2fc --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/model/ValueDiscount.java @@ -0,0 +1,15 @@ +package io.takima.agencymanagement.model; + +public class ValueDiscount implements Discount{ + + private double value; + + public ValueDiscount(double value) { + this.value = value; + } + + @Override + public double apply(double price) { + return price - value; + } +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/TravelResponseDto.java b/resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/TravelResponseDto.java new file mode 100644 index 0000000..38a2048 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/TravelResponseDto.java @@ -0,0 +1,15 @@ +package io.takima.agencymanagement.presentation.responsedto; + +import io.takima.agencymanagement.model.Airport; + +import java.time.ZonedDateTime; + +public record TravelResponseDto( + String name, + String destination, + Airport departureAirport, + Airport destinationAirport, + ZonedDateTime departureDate, + ZonedDateTime endDate, + double price) { +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/UserResponseDto.java b/resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/UserResponseDto.java new file mode 100644 index 0000000..5a41162 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/UserResponseDto.java @@ -0,0 +1,7 @@ +package io.takima.agencymanagement.presentation.responsedto; + +public record UserResponseDto( + String firstName, + String lastName, + String contact) { +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/service/TravelService.java b/resources/solution/day-1/src/io/takima/agencymanagement/service/TravelService.java new file mode 100644 index 0000000..37969c2 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/service/TravelService.java @@ -0,0 +1,158 @@ +package io.takima.agencymanagement.service; + +import io.takima.agencymanagement.dao.TravelDao; +import io.takima.agencymanagement.mapper.TravelDtoMapper; +import io.takima.agencymanagement.model.Travel; +import io.takima.agencymanagement.model.User; +import io.takima.agencymanagement.presentation.responsedto.TravelResponseDto; +import io.takima.agencymanagement.model.Discount; + +import java.time.Duration; +import java.time.Instant; +import java.util.Comparator; +import java.util.List; +import java.util.NoSuchElementException; + +import static io.takima.agencymanagement.mapper.TravelDtoMapper.fromTravel; + +public class TravelService { + + private TravelDao travelDao; + + public TravelService() { + travelDao = new TravelDao(); + } + + public TravelResponseDto create(Travel travel) { + travelDao.persist(travel); + return fromTravel(travel); + } + + public TravelResponseDto update(Travel travel) { + travelDao.persist(travel); + return fromTravel(travel); + } + + public TravelResponseDto delete(Travel travel) { + travelDao.persist(travel); + return fromTravel(travel); + } + + public TravelResponseDto findById(Long id) { + Travel travel = travelDao.findById(id); + return fromTravel(travel); + } + + public List<TravelResponseDto> findAll() { + return travelDao.findAll().stream() + .map(TravelDtoMapper::fromTravel) + .toList(); + + } + public void applyDiscounts(Travel travel) { + if (travel.getDiscounts().isEmpty()) { + System.out.println("Aucune réduction n'est applicable sur ce voyage !"); + } else { + double discountedPrice = travel.getPrice(); + for (Discount discount : travel.getDiscounts()) { + discountedPrice = discount.apply(discountedPrice); + } + System.out.println("Prix après les réductions : " + discountedPrice); + } + } + + public boolean subscribe(User user, Travel travel) throws Exception { + + if (travel.getParticipants().contains(user) || travel.getWaitList().contains(user)) { + //User already subscribed or in waitList + throw new Exception("L'utilisateur est déjà inscrit ou en file d'attente pour ce voyage."); + } + + if (travel.getParticipants().size() < travel.getCapacity()) { + travel.getParticipants().add(user); + return true; + } + travel.getWaitList().add(user); + return false; + } + + public void unsubscribe(User user, Travel travel) { + + travel.getParticipants().remove(user); + + if (!travel.getWaitList().isEmpty()) { + travel.getParticipants().add(travel.getWaitList().poll()); + } + } + + public Duration computeTravelDuration(Travel travel) { + return Duration.between(travel.getDepartureDate(), travel.getArrivalDate()); + } + + public void adjustDates(Duration delay, Travel travel) { + travel.setDepartureDate(travel.getDepartureDate().plus(delay)); + travel.setArrivalDate(travel.getArrivalDate().plus(delay)); + } + + public Travel findClosestToCurrentDate(List<Travel> travels) { + Instant now = Instant.now(); + + return travels.stream() + .min(Comparator.comparing(travel -> Duration.between(now, travel.getDepartureDate()).abs())) + .orElseThrow(NoSuchElementException::new); + } + + public List<Travel> findAvailableForDestination(String destination) { + List<Travel> travels = travelDao.findAll(); + + return travels.stream() + .filter(travel -> travel.getCapacity() > travel.getParticipants().size() && travel.getDestination().equals(destination)) + .toList(); + } + + public List<Travel> findInPriceRange(double minPrice, double maxPrice) { + List<Travel> travels = travelDao.findAll(); + + return travels.stream() + .filter(travel -> travel.getPrice() >= minPrice && travel.getPrice() <= maxPrice) + .toList(); + } + + public List<Travel> findNSortedByPriceAsc(int n) { + List<Travel> travels = travelDao.findAll(); + + return travels.stream() + .sorted(Comparator.comparing(Travel::getPrice)) + .limit(n) + .toList(); + } + + public List<Travel> findWithPromotions() { + List<Travel> travels = travelDao.findAll(); + + return travels.stream() + .filter(travel -> !travel.getDiscounts().isEmpty()) + .toList(); + } + + public List<Travel> findByUser(String firstName, String lastName) { + List<Travel> travels = travelDao.findAll(); + + return travels.stream() + .filter(travel -> + travel.getParticipants().stream() + .anyMatch(user -> + user.getFirstName().equals(firstName) && + user.getLastName().equals(lastName))) + .toList(); + } + + public double getAveragePrice() { + List<Travel> travels = travelDao.findAll(); + + return travels.stream() + .mapToDouble(Travel::getPrice) + .average() + .orElse(0.0); + } +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/service/UserService.java b/resources/solution/day-1/src/io/takima/agencymanagement/service/UserService.java new file mode 100644 index 0000000..08903f6 --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/service/UserService.java @@ -0,0 +1,42 @@ +package io.takima.agencymanagement.service; + +import io.takima.agencymanagement.dao.UserDao; +import io.takima.agencymanagement.mapper.UserDtoMapper; +import io.takima.agencymanagement.model.User; +import io.takima.agencymanagement.presentation.responsedto.UserResponseDto; + +import java.util.List; + +import static io.takima.agencymanagement.mapper.UserDtoMapper.fromUser; + +public class UserService { + + UserDao userDao = new UserDao(); + + public UserResponseDto create(User user) { + userDao.persist(user); + return fromUser(user); + } + + public UserResponseDto update(User user) { + userDao.persist(user); + return fromUser(user); + } + + public UserResponseDto delete(User user) { + userDao.persist(user); + return fromUser(user); + } + + public UserResponseDto findById(Long id) { + User user = userDao.findById(id); + return fromUser(user); + } + + public List<UserResponseDto> findAll() { + return userDao.findAll().stream() + .map(UserDtoMapper::fromUser) + .toList(); + + } +} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/utils/AirportManager.java b/resources/solution/day-1/src/io/takima/agencymanagement/utils/AirportManager.java new file mode 100644 index 0000000..d48a17b --- /dev/null +++ b/resources/solution/day-1/src/io/takima/agencymanagement/utils/AirportManager.java @@ -0,0 +1,21 @@ +package io.takima.agencymanagement.utils; + +import io.takima.agencymanagement.model.Airport; + +import java.util.HashMap; +import java.util.Map; + +public class AirportManager { + + private static final Map<Airport, String> timeZone = new HashMap<>(); + + static { + timeZone.put(Airport.PARIS_CHARLES_DE_GAULLE, "Europe/Paris"); + timeZone.put(Airport.PARIS_ORLY, "Europe/Paris"); + timeZone.put(Airport.NEW_YORK_JFK, "America/New_York"); + timeZone.put(Airport.NEW_YORK_NEWARK, "America/New_York"); + timeZone.put(Airport.NEW_YORK_LAGUARDIA, "America/New_York"); + timeZone.put(Airport.TOKYO_NARITA, "Asia/Tokyo"); + timeZone.put(Airport.TOKYO_HANEDA, "Asia/Tokyo"); + } +} diff --git a/resources/solution/day-2/.gitkeep b/resources/solution/day-2/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/resources/solution/day-2/day2.zip b/resources/solution/day-2/day2.zip new file mode 100644 index 0000000000000000000000000000000000000000..a7f5535d8e48728a50bdf7d56035e61f38d2449c GIT binary patch literal 33921 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 literal 0 HcmV?d00001 diff --git a/scripts/clean_lab.py b/scripts/clean_lab.py new file mode 100644 index 0000000..35ce2b0 --- /dev/null +++ b/scripts/clean_lab.py @@ -0,0 +1,46 @@ +from ast import Return +import subprocess +import shlex +import csv +import json +import os +from pathlib import Path +from dotenv import load_dotenv +from ansible_playbook_runner import Runner +import boto3 +import re + + +# Declare glob var +DOMAIN = os.getenv("DOMAIN") +SCHOOL_NAME = os.getenv("SCHOOL_NAME") +REGION = os.getenv("REGION") +students_usernames = [] +students = {} +client = boto3.client('route53') + +def sanitize_user(username): + return re.sub("[^0-9a-zA-Z]+", "-", username.lower()) + +def get_str_users_json_conf(CSV): + str_students_usernames_json_conf= "" + array_students_usernames=[] + with open(CSV) as csv_file: + csv_reader = csv.reader(csv_file, delimiter=',') + for line in csv_reader: + for email in line: + username = email.split('@')[0].lower() + username_sanitized = sanitize_user(username) + array_students_usernames.append("\"" + username_sanitized + "\"") + str_students_usernames_json_conf="\'{\"usernames\":[" + ",".join(array_students_usernames) + "]}\'" + return str_students_usernames_json_conf + +students_usernames = get_str_users_json_conf(os.getenv("CSV")) +print (students_usernames) +#ansible_cmd="ansible-playbook -i ../ansible/inventories/k8s.ini ../ansible/provision.yml --extra-vars " + "\'{\"USERNAMES\": \"" + students_usernames + "\"}\'" + " --extra-vars argo_website_host=argocd." + DOMAIN + " --extra-vars argo_grpc_api_host=grpc-argocd." + DOMAIN +ansible_cmd="ansible-playbook -i ../ansible/inventories/k8s.ini ../ansible/clean.yml --extra-vars " + students_usernames + " --extra-vars dns_zone=" + DOMAIN +print (ansible_cmd) +subprocess.call(shlex.split(ansible_cmd)) + + + diff --git a/scripts/clean_students_namespaces.py b/scripts/clean_students_namespaces.py new file mode 100644 index 0000000..46320d2 --- /dev/null +++ b/scripts/clean_students_namespaces.py @@ -0,0 +1,67 @@ +from ast import Return +import subprocess +import shlex + + +import csv +import json +import os +import re +from pathlib import Path +from dotenv import load_dotenv + +# Load .env variables +load_dotenv() +DOMAIN = os.getenv("DOMAIN") +SCHOOL_NAME = os.getenv("SCHOOL_NAME") +REGION = os.getenv("REGION") +LAB_ENV = os.getenv("LAB_ENV") + +# deploy ingress controller and retrieve Public ip LB +#subprocess.check_call(['./create_ingress_controller.sh']) + + + +# Declare glob var +students_usernames = [] +students = {} + +def sanitize_user(username): + return re.sub("[^0-9a-zA-Z]+", "-", username.lower()) + +def get_str_users_json_conf(CSV): + str_students_usernames_json_conf= "" + array_students_usernames=[] + with open(CSV) as csv_file: + csv_reader = csv.reader(csv_file, delimiter=',') + for line in csv_reader: + for email in line: + username = email.split('@')[0].lower() + username_sanitized = sanitize_user(username) + array_students_usernames.append("\"" + username_sanitized + "\"") + str_students_usernames_json_conf="\'{\"usernames\":[" + ",".join(array_students_usernames) + "]}\'" + return str_students_usernames_json_conf + + +students_usernames = get_str_users_json_conf(os.getenv("CSV")) +print (students_usernames) + +## send mail and construct kubernetes ns + kubconf by user +with open(os.getenv("CSV")) as csv_file: + csv_reader = csv.reader(csv_file, delimiter=',') + # For each trainee + for line in csv_reader: + for email in line: + try: + username = email.split('@')[0].lower() + username_sanitized = sanitize_user(username) + # Create users in cluster, create kubeconfig + subprocess.check_call(['./clean_namespaces.sh', username_sanitized, username_sanitized]) + except RuntimeError: + print('An Error occurred with user ' + email + ': did not fully complete namespace cleanup') + + with open('students.tfvars.json', 'w') as outfile: + students_dict = { + "students": students + } + json.dump(students_dict, outfile) diff --git a/scripts/clean_trainee_repo.py b/scripts/clean_trainee_repo.py new file mode 100755 index 0000000..232abb1 --- /dev/null +++ b/scripts/clean_trainee_repo.py @@ -0,0 +1,7 @@ +#!/usr/bin/env python3 +from gitcontent import playerrepo +import os +os.chdir(os.path.dirname(os.path.realpath(__file__))) +playerrepo.clean_trainee_doc() +playerrepo.commit_and_push_force_master() +playerrepo.clear() \ No newline at end of file diff --git a/scripts/constant.py b/scripts/constant.py new file mode 100644 index 0000000..6c7fb2c --- /dev/null +++ b/scripts/constant.py @@ -0,0 +1,8 @@ +import os + +# Public Git Repo for Trainees +GIT_REPOSITORY = os.getenv("GIT_TRAINEE_REPOSITORY") +GIT_USERNAME = os.getenv("GIT_TRAINEE_ACCESS_TOKEN_NAME") +GIT_PASSWORD = os.getenv("GIT_TRAINEE_ACCESS_TOKEN_SECRET") + +GIT_REPO = 'https://' + GIT_USERNAME + ':' + GIT_PASSWORD + '@' + GIT_REPOSITORY diff --git a/scripts/deploy_boilerplate.py b/scripts/deploy_boilerplate.py new file mode 100755 index 0000000..4a17b75 --- /dev/null +++ b/scripts/deploy_boilerplate.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python3 +from gitcontent import playerrepo +import os +import sys +os.chdir(os.path.dirname(os.path.realpath(__file__))) +playerrepo.clone_from_remote() + +if (len(sys.argv) != 3): + print("Usage: python3 deploy_boilerplate.py [chapter] [step]") + print("Example: python3 deploy_boilerplate.py chapter1 step-2") + exit(1) +playerrepo.deploy_boilerplate(sys.argv[1], sys.argv[2]) diff --git a/scripts/deploy_solution.py b/scripts/deploy_solution.py new file mode 100755 index 0000000..7feb73b --- /dev/null +++ b/scripts/deploy_solution.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python3 +from gitcontent import playerrepo +import os +import sys +os.chdir(os.path.dirname(os.path.realpath(__file__))) +playerrepo.clone_from_remote() + +if (len(sys.argv) != 3): + print("Usage: python3 deploy_solution.py [chapter] [step]") + print("Example: python3 deploy_solution.py chapter1 step-2") + exit(1) +playerrepo.deploy_solution(sys.argv[1], sys.argv[2]) diff --git a/scripts/deploy_trainee_repo.py b/scripts/deploy_trainee_repo.py new file mode 100755 index 0000000..e12110f --- /dev/null +++ b/scripts/deploy_trainee_repo.py @@ -0,0 +1,7 @@ +#!/usr/bin/env python3 +from gitcontent import playerrepo +import os +os.chdir(os.path.dirname(os.path.realpath(__file__))) +playerrepo.init_with_resources() +playerrepo.commit_and_push_force_master() +playerrepo.clear() \ No newline at end of file diff --git a/scripts/gitcontent/playerrepo.py b/scripts/gitcontent/playerrepo.py new file mode 100644 index 0000000..acfedd3 --- /dev/null +++ b/scripts/gitcontent/playerrepo.py @@ -0,0 +1,62 @@ +import constant +import tempfile +import subprocess +from git import Repo +import shutil + +tmpdir = tempfile.mkdtemp(suffix='trainee') +repodir = tmpdir + "/repo" +public_docs_dir = repodir + "/public" + +def init_with_resources(): + print("Copying resources to " + repodir) + shutil.copytree("../resources/boilerplate/java-one-trainees", repodir) + print("Building docs") + return_code = subprocess.call("cd ../resources/docs && mkdocs build", shell=True) + if (return_code != 0): + exit(1) + print("Copying resources to " + public_docs_dir) + shutil.copytree("../resources/docs/site", public_docs_dir) + +def clean_trainee_doc(): + print("Building empty doc to replace older one") + return_code = subprocess.call("cd ../resources/boilerplate/emptydocs/ && mkdocs build", shell=True) + if (return_code != 0): + exit(1) + print("Copying resources to " + public_docs_dir) + shutil.copytree("../resources/boilerplate/emptydocs/site", public_docs_dir) + shutil.copy("../resources/boilerplate/java-one-trainees/.gitlab-ci.yml", repodir) + +def commit_and_push_force_master(): + repo = Repo.init(repodir) + origin = repo.create_remote('origin', constant.GIT_REPO) + assert origin.exists() + repo.git.add("--all") + repo.git.commit(message="Initial Commit") + repo.git.push("-f", "origin", "master:main") + +def clone_from_remote(): + repo = Repo.clone_from(constant.GIT_REPO, repodir) + assert repo.__class__ is Repo + +def deploy_boilerplate(chapter, step): + print(f'Copying boilerplate {chapter}/{step}') + shutil.copytree(f'../resources/boilerplate/{chapter}/{step}', f'{repodir}/boilerplate/{chapter}/{step}') + repo = Repo(repodir) + repo.git.add("--all") + repo.git.commit(message="Added boilerplate for " + chapter + " - " + step) + repo.git.push("origin", "main:main") + +def deploy_solution(chapter, step): + print("Copying solution from " + chapter + " / " + step) + shutil.copytree("../resources/solution/" + chapter + "/" + step, repodir + "/solution/" + chapter + "/" + step) + repo = Repo(repodir) + repo.git.add("--all") + repo.git.commit(message="Added solution for " + chapter + " - " + step) + repo.git.push("origin", "main:main") + +def clear(): + global tmpdir + global repodir + tmpdir = tempfile.mkdtemp(suffix='trainee') + repodir = tmpdir + "/repo" diff --git a/scripts/utils.py b/scripts/utils.py new file mode 100644 index 0000000..e3f6503 --- /dev/null +++ b/scripts/utils.py @@ -0,0 +1,24 @@ +def replace(file, begintoken, endtoken, replacementlines): + destfile = open(file, "r") + lines = destfile.readlines() + destfile.close() + destfile = open(file, "w") + begintokenline = -1 + endtokenline = -1 + for i, line in enumerate(lines): + if begintoken in line: + destfile.write(line) + begintokenline = i + if endtoken in line: + endtokenline = i + if begintokenline == -1: + destfile.write(line) + continue; + if endtokenline == -1: + continue; + for replacementline in replacementlines: + destfile.write(replacementline + '\r\n') + destfile.write(line) + begintokenline = -1 + endtokenline = -1 + destfile.close() -- GitLab