• Home
  • /
  • Angular
  • /
  • S2E7 Tworzenie encji z wykorzystaniem JDL

S2E7 Tworzenie encji z wykorzystaniem JDL

Adres aplikacji: https://skrotowiec.elk.pl/
Kod aplikacji: https://gitlab.com/jaktworzycaplikacje.pl/skrotowiec/-/tree/master

Ten wpis zawiera informacje w jaki sposób:

* Tworzyć schemat bazy danych z wykorzystaniem JDL Studio,
* Utworzyć encje JPA,
* Szybko stworzyć operację CRUD dla encji,
* Importować dane z pliku excel do bazy danych,
* Skonfigurować logowanie dla logback.

Przed przystąpieniem do tego kroku powinieneś posiadać wstępnie skonfigurowaną aplikację z wykorzystaniem jhipster:

S2E2 Programowanie szkieletu aplikacji skrótowiec

Posiadasz wstępnie zaprogramowaną aplikację, ładnie ostylowaną z panelem admina, logami oraz statystykami. W tym momencie jest ona kompletnie bezużyteczna. Nie możesz wyszukiwać skrótów, ponieważ nie masz bazy danych w której można szukać. Przed Tobą jeszcze tona roboty, musisz stworzyć:

- Bazę danych wraz z tabelami,
- Liquibas’owe chainsety,
- operacje JPA,
- Kontrolery Rest’owe które będą posiadały podstawowe funkcje Create, Read, Update, Delete,
- Angularow’owe routery, componenty i serwisy,
- Podstawowe widoki w HTML,
- Testy integracyjne,
- Testy wydajnościowe.

To wszystko musisz stworzyć dla prostej wyszukiwarki skrótów, programowanie nie jest proste i szybkie. Ja wysiadam. A teraz czy nie byłoby super gdyby te wszystkie operacje, które wypisałem powyżej nie zajmowały tygodni, tylko minuty?

W swoich pierwszych aplikacjach musiałem programować te wszystkie operacje ręcznie, bez implementacji logiki biznesowej zajmowało to sporo czasu, lekką ręką licząc ponad tydzień. Przedstawiam Ci rozwiązanie, które pozwoli zaoszczędzić tygodnie:

https://start.jhipster.tech/jdl-studio/

1. Tworzenie Encji

Jdl studio jest narzędziem, które jest przeznaczone do pracy z jhipsterem w którym modelujesz encje w przyjazny sposób https://www.jhipster.tech/jdl/intro :

Widok JDL studio

Po stworzeniu encji w JDL studio, wystarczy użyć generatora jhipstera komedną:

jhipster jdl plik-z-enjcami.jh

Który wykona za Ciebie całą masę kodu o którym pisałem na wstępie. Po prostu Magia!

Będziesz posiadał widoki, endpointy, walidacje oraz testy do wszystkich operacji CRUD dla encji które zamodelujesz w JDL.

Pełną listę pól oraz relacji znajdziesz w linku: https://www.jhipster.tech/creating-an-entity/

Dla skrótowca, będziesz używał maksymalnie uproszczonego przykładu, bez relacji z prostymi walidacjami:

entity Acronym {
    abbreviation String required minlength(2) maxlength(50)
    meaning String required maxlength(1500)
    addedBy String required minlength(3) maxlength(150)
    searchCount Long required
}

Powyższego kodu raczej nie trzeba specjalnie tłumaczyć.

Cały kod który odpowiada za dodanie encji znajduje się w komicie:

https://gitlab.com/jaktworzycaplikacje.pl/skrotowiec/-/commit/f714b0a5ef8c91f7ca7cfe38f171e54e4fae3b2d

w branchu https://gitlab.com/jaktworzycaplikacje.pl/skrotowiec/-/commits/feature/entity-acronym

2. Dodanie encji z pliku excel

Po zalogowaniu się do panelu admina w sekcji Encje pojawi się pozycja Acronym:

W sekcji Acronym dodasz przycisk z logiką dodania skrótowców z pliku excel:

Oraz stworzysz formularz dodawania pliku i logikę zapisu do bazy danych z pliku excel:

Cały kod dodania z pliku Excel znajduje się w komicie:

https://gitlab.com/jaktworzycaplikacje.pl/skrotowiec/-/commit/7a3820f68e13e803f37362324e96938b0c71315d

3. Skonfigurowanie logowania logback

Jhipster, jeśli nie podejmiesz żadnej akcji nie tworzy plików logowania na produkcji. Konfiguracja jest już gotowa, znajduje się zakomentowana w pliku:

src/main/resources/logback-spring.xml

odkomentuj kod który jest poniżej z pliku logback-spring.xml:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>skrLogFile.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>90</maxHistory>
        </rollingPolicy>
        <encoder>
            <charset>utf-8</charset>
            <Pattern>%d %-5level [%thread] %logger{0}: %msg%n</Pattern>
        </encoder>
    </appender>

    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <queueSize>512</queueSize>
        <appender-ref ref="FILE"/>
    </appender>

    <root level="${logging.level.root}">
        <appender-ref ref="ASYNC"/>
    </root>

W fileNamePattern podaj nazwę pliku do jakiego będą zapisywać się logi. W tym przypadku użyłem nazwy skrLogFile.

Teraz, jeśli tworzysz aplikację zgodnie z serią wpisów, wystarczy, że pushniesz swój kod do repozytorium i zmergujesz z branchem master. Po minucie jenkins automatycznie odpali builda, zmieni wersję aplikacji na najnowszą bez twojej ingerencji.

Plik z logami znajduje się w folderze: /var/lib/jenkins/workspace/skr/target

One Comment

Dodaj komentarz