diff --git a/simpleexample2/README.md b/simpleexample2/README.md new file mode 100644 index 0000000000000000000000000000000000000000..fe49a181b5eca9c82b59a20d0e0cb4102a058545 --- /dev/null +++ b/simpleexample2/README.md @@ -0,0 +1,9 @@ +# Simpleexample2 + +Dette prosjektet er et eksempel på en nokså minimalistisk trelagsapplikasjon, altså med et domenelag, brukergrensesnitt (UI) og persistens (lagring). Prosjektet inneholder tester for alle lagene, med rimelig god dekningsgrad. + +Prosjektet er konfigurert som et multi-modul-prosjekt med gradle, hvor domene- og persistenslagene ligger i en [kjernemodul (core)](core/README.md) og brukergrensesnittet i en [ui-modul (fxui)](fxui/README.md). + +## Bygging med gradle + +I et multi-modul-prosjekt så inneholder **settings.gradle** en oversikt over del-prosjektene (sub-modulene) og **build.gradle** konfigurasjonen som er felles for disse. Det som vi har lagt inn av felles konfigurasjon (så langt) er repo-ene hvor avhengighetene finnes. diff --git a/simpleexample2/core/README.md b/simpleexample2/core/README.md new file mode 100644 index 0000000000000000000000000000000000000000..9500dc502cb161d2fac70b85f1c1168bb7814ff9 --- /dev/null +++ b/simpleexample2/core/README.md @@ -0,0 +1,30 @@ +# Kjernemodulen (core) + +Dette prosjektet inneholder domene- og persistenslagene for [simpleexample2](../README.md). + +## Organisering av koden + +Prosjektet er organisert med 2 * 2 = 4 kildekodemapper, kode og ressurser for henholdsvis applikasjonen selv og testene: + +- **src/main/java** for koden til applikasjonen +- **src/main/resources** for tilhørende ressurser, f.eks. data-filer, som brukes av applikasjonen. +- **src/test/java** for testkoden +- **src/test/resources** for tilhørende ressurser, f.eks. data-filer, som brukes av testene. + +## Domenelaget + +Domenelaget inneholder alle klasser og logikk knyttet til dataene som applikasjonen handler om og håndterer. Dette laget skal være helt uavhengig av brukergrensesnittet eller lagingsteknikken som brukes. + +Vår app handler om samlinger av såkalte geo-lokasjoner, altså steder identifisert med lengde- og breddegrader. Domenelaget inneholder klasser for å representere og håndtere slike, og disse finnes i **[simpleex.core](src/main/java/simpleex/core/README.md)**-pakken. + +## Persistenslaget + +Persistenslaget inneholder alle klasser og logikk for lagring (skriving og lesing) av dataene i domenelaget. Vårt persistenslag implementerer fillagring med JSON-syntaks. + +Persistenslaget finnes i **[simpleex.json](src/main/java/simpleex/json/README.md)**-pakken. + +## Bygging med gradle + +Vårt gradle-bygg er satt opp med tillegg for java-bibliotek, fordi doemen- og persistenslagene fungerer som klassebibliotek for andre (typer) moduler. Vi trenger (minst) java-versjon 10 og javafx-version 11. + +I tillegg bruker vi diverse kodekvalitetsanalyseverktøy ([jacoco](https://github.com/jacoco/jacoco) med **[jacoco](https://docs.gradle.org/current/userguide/jacoco_plugin.html)**, [spotbugs](https://spotbugs.github.io) med **[com.github.spotbugs](https://spotbugs.readthedocs.io/en/latest/gradle.html)** og [checkstyle](https://checkstyle.sourceforge.io) med **[checkstyle](https://docs.gradle.org/current/userguide/checkstyle_plugin.html)**). Disse er satt opp slik at de ikke stopper bygget om ikke alt er på stell. spotbugs er satt opp til å lage rapport med html i stedet for xml. diff --git a/simpleexample2/fxui/README.md b/simpleexample2/fxui/README.md new file mode 100644 index 0000000000000000000000000000000000000000..9237c57f38ad7a60fdc394b628b5d5a148e86624 --- /dev/null +++ b/simpleexample2/fxui/README.md @@ -0,0 +1,26 @@ +# Brukergrensesnittmodulen + +Dette prosjektet inneholder brukergrensesnittlaget for [simpleexample2](../README.md). + +## Organisering av koden + +Prosjektet er organisert med 2 * 2 = 4 kildekodemapper, kode og ressurser for henholdsvis applikasjonen selv og testene: + +- **src/main/java** for koden til applikasjonen +- **src/main/resources** for tilhørende ressurser, f.eks. FXML-filer, som brukes av applikasjonen. +- **src/test/java** for testkoden +- **src/test/resources** for tilhørende ressurser, f.eks. FXML-filer, som brukes av testene. + +## Brukergrensesnittlaget + +Brukergrensesnittlaget inneholder alle klasser og logikk knyttet til visning og handlinger på dataene i domenelaget. Brukergrensesnittet til vår app viser frem en liste av geo-lokasjoner, den som velges vises på et kart. En flytte og legge til geo-lokasjoner. Samlingen med geo-lokasjoner kan lagres og evt. leses inn igjen. + +Brukergrensesnittet er laget med JavaFX og FXML og finnes i **[simpleex.ui](src/main/java/simpleex/ui/README.md)**-pakken (JavaFX-koden i **src/main/java** og FXML-filen i **src/main/resources**) + +## Bygging med gradle + +Vårt gradle-bygg er satt opp med tillegg for java-applikasjoner generelt (**application**) og med JavaFX spesielt (**org.openjfx.javafxplugin**). Vi trenger (minst) java-versjon 10 og javafx-version 11. + +I tillegg bruker vi diverse kodekvalitetsanalyseverktøy ([jacoco](https://github.com/jacoco/jacoco) med **[jacoco](https://docs.gradle.org/current/userguide/jacoco_plugin.html)**, [spotbugs](https://spotbugs.github.io) med **[com.github.spotbugs](https://spotbugs.readthedocs.io/en/latest/gradle.html)** og [checkstyle](https://checkstyle.sourceforge.io) med **[checkstyle](https://docs.gradle.org/current/userguide/checkstyle_plugin.html)**). Disse er satt opp slik at de ikke stopper bygget om ikke alt er på stell. spotbugs er satt opp til å lage rapport med html i stedet for xml. + +De fleste avhengighetene hentes fra de vanlige sentrale repo-ene, med unntak av FxMapControl som er lagt ved som jar-fil i **libs**-mappa.