Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • iaholm/todo-list
  • eikhr/todo-list
  • juliada/todo-list
  • gabrioh/todo-list
  • annikeqs/todo-list
  • lauritko/todo-list
  • matskva/todo-list
  • annelold/todo-list
  • olehbak/todo-list
  • edvardbj/todo-list
  • matsel/todo-list
  • eivindoy/todo-list
  • maxg/todo-list
  • sebasv/todo-list
  • sakariks/todo-list
  • asfurnes/todo-list
  • thomaset/todo-list
  • it1901/todo-list
18 results
Select Git revision
Show changes
Commits on Source (127)
Showing
with 416 additions and 93 deletions
{
"image":"adrianstoica/it1901:latest",
"forwardPorts": [6080,8080,5901],
"postStartCommand": "nohup bash -c '~/.vnc/startup &'",
"customizations":{
"vscode": {
"extensions" : [
"vscjava.vscode-java-pack",
"vscjava.vscode-java-debug",
"vscjava.vscode-maven",
"vscjava.vscode-java-dependency",
"vscjava.vscode-java-test",
"redhat.java",
"yzhang.markdown-all-in-one",
"shd101wyy.markdown-preview-enhanced",
"DavidAnson.vscode-markdownlint",
"jebbs.plantuml",
"ms-vscode.live-server",
"vsls-contrib.codetour",
"ritwickdey.liveserver"
]
}
}
}
\ No newline at end of file
# remove devcontainer command output for 'nohup'
*.out
image: maven:3.8.3-openjdk-17
variables:
MAVEN_OPTS: "-Djava.awt.headless=true -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository"
MAVEN_CLI_OPTS: "--batch-mode -P headless -DskipUiTests=true"
stages:
- test
- build
cache:
paths:
- .m2/repository
key: "$CI_BUILD_REF_NAME"
test:
stage: test
script:
- "cd todolist; mvn clean test $MAVEN_CLI_OPTS"
build:
stage: build
when: manual
script:
- "cd todolist; mvn clean install $MAVEN_CLI_OPTS"
FROM gitpod/workspace-full-vnc
USER root
RUN add-apt-repository universe
RUN apt update
RUN apt -y install graphviz
USER gitpod
RUN bash -c ". /home/gitpod/.sdkman/bin/sdkman-init.sh \
&& sdk install java 14.0.2.j9-adpt \
&& sdk default java 14.0.2.j9-adpt"
image:
file: .gitpod.Dockerfile
tasks:
- init: sdk use java 14.0.2.j9-adpt
command: cd todolist
ports:
# used by virtual desktop and vnc, supports JavaFX
- port: 6080
vscode:
extensions:
- jebbs.plantuml@2.13.12:q7DiD6H5NTesaWYIXmeMMQ==
- vsls-contrib.codetour@0.0.37:n/LcXr1DIqz+xFGficwDHA==
\ No newline at end of file
# Hallvard
Hallvard Trætteberg <hal@ntnu.no> Hallvard Trætteberg <hal@ntnu.no>
Hallvard Trætteberg <hal@ntnu.no> Hallvard Traetteberg <hal@ntnu.no>
Hallvard Trætteberg <hal@ntnu.no> hal <hal@ntnu.no>
# Adrian
George Adrian Stoica <stoica@ntnu.no> George Adrian Stoica <stoica@ntnu.no>
George Adrian Stoica <stoica@ntnu.no> Adrian Stoica <stoica@ntnu.no>
\ No newline at end of file
......@@ -3,5 +3,6 @@
"java.format.settings.url": "todolist/config/checkstyle/eclipse-java-google-style.xml",
"[java]": {
"editor.tabSize": 2
}
},
"java.dependency.packagePresentation": "hierarchical"
}
{
"title": "core-modulen",
"steps": [
{
"file": "todolist/pom.xml",
"line": 10,
"description": "pom.xml inneholder konfigurasjonen til prosjektet."
},
{
"file": "todolist/pom.xml",
"line": 14,
"description": "<properties>-seksjonen definerer konfigurasjonsvariabler som kan brukes andre steder."
}
],
"ref": "master"
}
\ No newline at end of file
{
"$schema": "https://aka.ms/codetour-schema",
"title": "Todo-list-oversikt",
"steps": [
{
"title": "Introduction",
"description": "Todo-list er et eksempel på en desktop-applikasjon for en rest-API-basert applikasjon, som bygges med maven.\nDenne kodeturen gir en oversikt over innholdet i prosjektet."
},
{
"file": "todolist/pom.xml",
"description": "Toppnivå-modulen angir modulene som prosjektet består av og innstillingene som er felles for disse.\n`module`-elementene angir mapper som inneholder del-modulene til hovedmodulen, her ser vi finner sub-moduler i mappene\n`core`, `fxutil`, `fxui`, `rest`, `integrationtest` og `springboot/restserver`.",
"line": 163
},
{
"file": "todolist/pom.xml",
"description": "`<properties>`-elementet i pom.xml-fila (eller bare pom-fila) angir egenskaper som blir brukt i andre innstillinger eller konfigurasjonselementer.\nSelve egenskapene angis direkte som element-navnet, her heter egenskapen `project.build.sourceEncoding`.\nDisse brukes andre steder ved å angi `${property}` inni attributte-verdier. Her er det tegnkodingen i kildekode som angis som `UTF-8?`.",
"line": 13
},
{
"file": "todolist/pom.xml",
"description": "<dependencyManagement>-elementet brukes for å angi avhengigheter og deres versjoner,\nslik at det sikres at alle del-moduler bruker de samme versjonene for dere avhengigheter.\nElementet sier ikke at denne modulen (altså hovedmodulen) har denne avhengigheten, men\nangir at en tilsvarende avhengighet i en del-modul må ha denne versjonen.\nI del-modulen oppgir en da ikke versjonen, den plukker automatisk opp versjonen som er angitt her.",
"line": 24
},
{
"file": "todolist/pom.xml",
"description": "Plugins er tillegg til maven, som bidrar med byggetrinn knyttet til faser.\n<pluginManagement>-elementet lar deg konfigurere disse tilleggene, uten at de aktiveres, slik at en sikrer at\nsamme konfigurasjon gjelder for alle aktiveringer i del-moduler.\nHer konfigureres kompilator-tillegget (maven-compile-plugin) til å ha en bestemt versjon, tegnkoding og Java-versjon (source og target).\nDel-moduler slipper dermed å oppgi dette på nytt i sin pom-fil.",
"line": 71
},
{
"file": "todolist/pom.xml",
"description": "Surefire-tillegget bidrar med byggetrinn for kjøring av JUnit-tester og vil som default kjøre JUnit 5-tester.",
"line": 75
},
{
"file": "todolist/pom.xml",
"description": "Checkstyle-tillegget bidrar med kodekvalitetsjekker.\n`<dependency>`-elementet under angir hvilken versjon av `checkstyle`-biblioteket som brukes,\nmens konfigurasjonen angir hva slags konfigurasjonsfil som brukes og andre innstillinger.\n`<executions>`-elementet knytter `check`-trinnet til `verify`-fasen, slik at kodekvalitetsjekken kjøres som en del av `verify`-fasen.",
"line": 86
},
{
"file": "todolist/pom.xml",
"description": "Spotbugs-tillegget bidrar også med en kodekvalitetsjekk, basert på statisk analyse av class-filene.\nSom for `checkstyle`-tillegget, så knyttes spotbugs sitt `check`-trinn til `verify`-fasen.",
"line": 115
},
{
"file": "todolist/pom.xml",
"description": "Jacoco-tillegg rigger opp samling av data om testdekningsgrad ved kjøring av tester og\nbidrar med et eget rapporteringstrinn basert på innsamlede data. Rapportene havner i\nen egen `jacoco`-mappe under `target/site`-mappa.",
"line": 134
},
{
"directory": "todolist/core",
"description": "Core-modulen inneholder klasser for å representere todo-liste-dataene og logikk for håndtering av det JSON-baserte formatet for å lagre og sende slike data over nettet (såkalt serialisering og deserialisering)."
},
{
"file": "todolist/core/pom.xml",
"description": "Core-modulen har bl.a. avhengigheter til to moduler i jackson-prosjektet, og vi kan derfor importere jackson-klasser i core-klassene.\nTilsvarende har core-modulen test-avhengigheter til flere jupiter-moduler (JUnit 5).\nVi ser vi slipper å oppgi `<version>`- og `<scope>`-elementer, siden disse er oppgitt i parent-modulen sitt `<dependencyManagement>`-element.",
"line": 19
},
{
"file": "todolist/core/pom.xml",
"description": "I `<plugins>`-elementer aktiveres diverse maven-tillegg. Vi kan godt, men trenger ikke, konfigurere dem,\nsiden de er oppgitt i parent-modulens `<pluginManagement>`-element.\nSom med avhengighetene lengre opp, så slipper vi å oppgi versjon, som det er gitt i parent-modulen.",
"line": 53
},
{
"directory": "todolist/core/src",
"description": "Kildekoden og tilhørende ressurser ligger i det standard maven-oppsettet under `src`-mappa.\nVanlig kode ligger under `main/java`, mens tilhørende ressurser ligger under `main/resources`.\nTester ligger under `test/java`, mens tilhørende ressurser ligger under `test/resources`.\n\nMappene under disse undermappene utgjør pakke-hierarkiet i modulen vår.\nVi har valgt å ha todolist som toppnivå-pakke, og derfor er det `todolist`-mapper under hver av de fire mappene nevnt over.\n`core`- og `json`-mappene under der igjen tilsvarer dermed `todolist.core`- og `todolist.json`-pakkene."
}
],
"ref": "master"
}
\ No newline at end of file
{
"title": "TodoList-oversikt",
"steps": [
{
"title": "introduksjon",
"description": ""
},
{
"title": "core-modulen",
"description": ""
}
],
"description": "Oversikt over todo-list-eksemplet"
}
\ No newline at end of file
{
"recommendations": [
"vscjava.vscode-java-pack",
"vscjava.vscode-java-debug",
"vscjava.vscode-maven",
"vscjava.vscode-java-dependency",
"vscjava.vscode-java-test",
"redhat.java",
"yzhang.markdown-all-in-one",
"shd101wyy.markdown-preview-enhanced",
"DavidAnson.vscode-markdownlint",
"jebbs.plantuml",
"ms-vscode.live-server",
"vsls-contrib.codetour",
"ritwickdey.liveserver"
]
}
\ No newline at end of file
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Launch Current File",
"request": "launch",
"mainClass": "${file}"
},
{
"type": "java",
"name": "Launch TodoApp",
"request": "launch",
"mainClass": "todolist.ui/todolist.ui.TodoApp",
"vmArgs": "--add-opens todolist.ui/todolist.ui=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.application=ALL-UNNAMED",
"projectName": "fxui"
},
{
"type": "java",
"name": "Launch TodoDocumentApp",
"request": "launch",
"mainClass": "todolist.ui/todolist.ui.TodoDocumentApp",
"vmArgs": "--add-opens todolist.ui/todolist.ui=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.application=ALL-UNNAMED",
"projectName": "fxui"
},
{
"type": "java",
"name": "Launch TodoRemoteApp",
"request": "launch",
"mainClass": "todolist.ui/todolist.ui.TodoRemoteApp",
"vmArgs": "--add-opens todolist.ui/todolist.ui=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.application=ALL-UNNAMED",
"projectName": "fxui"
}
]
}
\ No newline at end of file
{
"java.configuration.updateBuildConfiguration": "automatic",
"java.format.settings.url": "todolist/config/checkstyle/eclipse-java-google-style.xml",
"[java]": {
"editor.tabSize": 2
},
"java.test.config": [
{
"name": "coreTesting",
"vmArgs": []
},
{
"name": "fxuiTesting",
"vmArgs": ["--add-opens", "todolist.ui/todolist.ui=ALL-UNNAMED", "--add-exports", "javafx.graphics/com.sun.javafx.application=ALL-UNNAMED"]
}
],
"java.test.defaultConfig": "fxuiTesting"
}
\ No newline at end of file
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Run vnc",
"type": "shell",
"command": "./.che/startui.sh",
"group": "none",
"presentation": {
"reveal": "always",
"panel": "new"
}
}
]
}
\ No newline at end of file
[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.idi.ntnu.no/#https://gitlab.stud.idi.ntnu.no/it1901/todo-list)
# todo-list-prosjektet
[open in Eclipse Che](https://che.stud.ntnu.no/#https://gitlab.stud.idi.ntnu.no/it1901/todo-list?new)
Dette prosjektet er et utviklingsprosjekt tilsvarende det en skal gjennom i IT1901. Det er ment å være til et nyttig eksempel på flere måter:
- Det viser hvordan prosjektet kan deles opp i mange fokuserte og håndterbare trinn
- Prosjektoppsett og kodingsteknikker
- Det er utgangspunktet for en videoserie som også viser hvordan det jobbes praktisk med utviklingsverktøy
Ikke alt vi gjør blir tatt opp på video, noe arbeid vil bli gjort som forarbeid eller mellom episodene, videoene skal gi en oversikt over alt arbeidet.
Ikke alt vi gjør blir tatt opp på video, noe arbeid vil bli gjort som forarbeid eller mellom episodene, videoene skal gi en oversikt over alt arbeidet. Merk at oppsettet er ikke nødvendigvis likt fra år til år, så ikke alt kan gjøres på samme måte i ditt prosjekt.
## Bygging og kjøring av prosjektet
......@@ -28,12 +29,16 @@ Planen er å primært bruke gitpod til utvikling (selv om det kanskje ville vær
Først må vi "gitpodifisere" repoet, dvs. gjøre at gitpod kan startes opp rett fra repo-sida på gitlab.
I starten så setter vi opp et enkelt JavaFX-prosjekt med **maven** som bygge-system. Vi setter det opp fra scratch, vha. en enkel mal for
maven-prosjekter og så justerer vi litt på det ved å kopiere elementer fra andre prosjekter f.eks. malen som ligger i *javafx-maven*-grenen i
[gitpod-templates-repoet](https://gitlab.stud.idi.ntnu.no/it1901/gitpod-templates) eller [simpleexample-repoet](https://gitlab.stud.idi.ntnu.no/it1901/simpleexamepl).
maven-prosjekter og så justerer vi litt på det ved å kopiere elementer fra andre prosjekter.
Maler til javafx-prosjekter finnes bl.a. i [javafx-template-kodelageret](https://gitlab.stud.idi.ntnu.no/it1901/javafx-template). Varianter finnes for alt i én modul og pakke, alt i én modul, men egne pakker for domenelogikk og javafx-grensesnitt, og domenelogikk og javafx-grensesnitt i hver side moduler. Disse inneholder også module-info.java, slik at det blir enklere å kjøre koden i en IDE, altså uten bruk av maven i terminalen.
Jeg gjør det på denne måten, fordi det da er enklere å forklare hvert element i pom.xml-fila, som inneholder oppsettet.
Merk at prosjektoppsettet i starten er enklere enn det vil bli etter hvert, men vi gjør det sånn for å komme raskere i gang.
Så bygger vi ut og omstrukturerer når det trengs.
[Første episode](https://ntnu.cloud.panopto.eu/Panopto/Pages/Viewer.aspx?id=d6d40267-19f0-4b5a-87fd-ac2f00bbbaf6)
### Vår første utviklingsoppgave: Et enkelt API for todo-lister
Vi tar utgangspunkt i [brukerhistorie 1](brukerhistorier.md) og definerer tre brukeroppgaver, én for API-et, en for JSON-basert tekstformat og én for GUI-et og begynner på API-et.
......
......@@ -42,4 +42,4 @@ Elementer som ikke har en frist har implisitt samme frist som lista.
### Viktig å kunne gjøre
- legge inn nye elementer m/frist
- huke av elementer
- huke av elementer, slik at de forsvinner
schemaVersion: 2.1.0
metadata:
name: todolist
components:
- name: todolist
container:
image: adrianstoica/it1901:latest
memoryLimit: 3Gi
endpoints:
- exposure: public
name: 6080-tcp-desktop-ui
protocol: https
targetPort: 6080
- exposure: public
name: 3000-tcp
protocol: http
targetPort: 3000
- exposure: public
name: 5900-tcp
protocol: http
targetPort: 5900
- exposure: public
name: 5901-tcp
protocol: http
targetPort: 5901
- exposure: public
name: 8080-tcp
protocol: http
targetPort: 8080
- exposure: public
name: 5500-tcp
protocol: http
targetPort: 5500
commands:
- id: changedir
exec:
component: todolist
commandLine: cd todolist
label: change directory
# ignore maven build folder
# eclipse JDT files
*.prefs
# Created by https://www.toptal.com/developers/gitignore/api/java,macos,windows,linux,maven
# Edit at https://www.toptal.com/developers/gitignore?templates=java,macos,windows,linux,maven
### Java ###
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*
### Linux ###
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### macOS Patch ###
# iCloud generated files
*.icloud
### Maven ###
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
# eclipse JDT files
# Eclipse m2e generated files
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
*.prefs
\ No newline at end of file
### Windows ###
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# End of https://www.toptal.com/developers/gitignore/api/java,macos,windows,linux,maven
\ No newline at end of file
@startuml architecture
@startuml
component core {
package todolist.core
package todolist.json
}
todolist.core ..> todolist.json
component jackson {
}
......@@ -15,9 +16,10 @@ component fxutil {
component fxui {
package todolist.ui
package todolist.ui.util
}
todolist.ui ..> todolist.ui.util
todolist.ui ..> todolist.core
todolist.ui ..> todolist.json
......@@ -30,21 +32,18 @@ fxui ..> javafx
fxui ..> fxml
fxui ..> fxutil
component restapi {
package todolist.restapi
}
todolist.restapi ..> todolist.core
component jaxrs {
}
restapi ..> jaxrs
component restserver {
component rest {
package todolist.restapi
package todolist.restserver
}
rest ..> jaxrs
todolist.restapi ..> todolist.core
todolist.restserver ..> todolist.core
todolist.restserver ..> todolist.json
todolist.restserver ..> todolist.restapi
......@@ -55,19 +54,7 @@ component jersey {
component grizzly2 {
}
restserver ..> jersey
restserver ..> grizzly2
component "springboot/restserver" as springboot.restserver {
package todolist.springboot.restserver
}
todolist.springboot.restserver ..> todolist.core
todolist.springboot.restserver ..> todolist.json
component "spring boot" as springboot {
}
springboot.restserver ..> springboot
rest ..> jersey
rest ..> grizzly2
@enduml
\ No newline at end of file
<FindBugsFilter>
<Match>
<Bug pattern="SA_LOCAL_SELF_COMPARISON" />
</Match>
<Match>
<Bug pattern="EI_EXPOSE_REP" />
</Match>
<Match>
<Bug pattern="EI_EXPOSE_REP2" />
</Match>
</FindBugsFilter>