Skip to content

andersholt/pgr203-exam-Velpre

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java CI with Maven

Hvordan kjøre dette programmet

  • Legg til databaseinfo i en pgr203.properties fil som skal ligge i root directory
  • Bygg prosjektet ved å kjøre kommandoen: mvn package
  • Naviger seg i terminalen til root mappen av prosjektet og start SurveyServer ved å kjøre kommandoen: java -jar target\exam-1.0-SNAPSHOT.jar
  • Programme kan også kjøres direkte i main methoden som ligger i SurveyServer klassen

Ekstra utover minimum

Liste svar

User tabellen og survey tabellen er knyttet sammen med questions tabellen. På /showAnswers.html har vi mulighet for å liste svarene i forhold til forskjellige spørreundersøkelser og users som har besvart de. Det er også mulighet for å liste alle svarene fra alle users på valgt spørreundersøkelse.

Legge til spørsmål

Ved opprettelse av nye spørsmål er det mulig å velge om spørsmålet skal besvares med options(radio buttons) eller slider.

Annet

  • Terminerer while loop med break i readLine methoden for å fikse java heap feilmeldingen
  • Mulighet for å legge til og slette eksisterende spørreundersøkelser
  • Mulighet for å legge til eller velge eksisterende users når brukeren besvarer spørreundersøkelse
  • Ved forandring av esisterende spørsmål, blir svarene som allerede er angit på spørsmålet som forandres slettet. (ingen vits å beholde svarene når spørsmål blir endret)

Database struktur

DB java

Server struktur

image

Viser hva som skjer på serveren når brukeren lister alle spørsmål image

Sjekkliste

Vedlegg: Sjekkliste for innlevering

  • Dere har lest eksamensteksten
  • Dere har lastet opp en ZIP-fil med navn basert på navnet på deres Github repository
  • Koden er sjekket inn på github.com/pgr203-2021-repository
  • Dere har committed kode med begge prosjektdeltagernes GitHub konto (alternativt: README beskriver arbeidsform)

README.md

  • README.md inneholder en korrekt link til Github Actions
  • README.md beskriver prosjektets funksjonalitet, hvordan man bygger det og hvordan man kjører det
  • README.md beskriver eventuell ekstra leveranse utover minimum
  • README.md inneholder et diagram som viser datamodellen

Koden

  • mvn package bygger en executable jar-fil
  • Koden inneholder et godt sett med tester
  • java -jar target/...jar (etter mvn package) lar bruker legge til og liste ut data fra databasen via webgrensesnitt
  • Serveren leser HTML-filer fra JAR-filen slik at den ikke er avhengig av å kjøre i samme directory som kildekoden
  • Programmet leser dataSource.url, dataSource.username og dataSource.password fra pgr203.properties for å connecte til databasen
  • Programmet bruker Flywaydb for å sette opp databaseskjema
  • Server skriver nyttige loggmeldinger, inkludert informasjon om hvilken URL den kjører på ved oppstart

Funksjonalitet

  • Programmet kan opprette spørsmål og lagrer disse i databasen (påkrevd for bestått)
  • Programmet kan vise spørsmål (påkrevd for D)
  • Programmet kan legge til alternativ for spørsmål (påkrevd for D)
  • Programmet kan registrere svar på spørsmål (påkrevd for C)
  • Programmet kan endre tittel og tekst på et spørsmål (påkrevd for B)

Ekstraspørsmål (dere må løse mange/noen av disse for å oppnå A/B)

  • Når brukeren utfører en POST hadde det vært fint å sende brukeren tilbake til dit de var før. Det krever at man svarer med response code 303 See other og headeren Location
  • Når brukeren skriver inn en tekst på norsk må man passe på å få encoding riktig. Klarer dere å lage en med action=POST og encoding=UTF-8 som fungerer med norske tegn? Klarer dere å få æøå til å fungere i tester som gjør både POST og GET?
  • Å opprette og liste spørsmål hadde vært logisk og REST-fult å gjøre med GET /api/questions og POST /api/questions. Klarer dere å endre måten dere hånderer controllers på slik at en GET og en POST request kan ha samme request target?
  • Vi har sett på hvordan å bruke AbstractDao for å få felles kode for retrieve og list. Kan dere bruke felles kode i AbstractDao for å unngå duplisering av inserts og updates?
  • Dersom brukeren går til http://localhost:8080 får man 404. Serveren burde i stedet returnere innholdet av index.html
  • Kan dere lage noen diagrammer som illustrerer hvordan programmet deres virker?
  • JDBC koden fra forelesningen har en feil ved retrieve dersom id ikke finnes. Kan dere rette denne?
  • I forelesningen fikk vi en rar feil med CSS når vi hadde <!DOCTYPE html>. Grunnen til det er feil content-type. Klarer dere å fikse det slik at det fungerer å ha <!DOCTYPE html> på starten av alle HTML-filer?
  • FARLIG: I løpet av kurset har HttpServer og tester fått funksjonalitet som ikke lenger er nødvendig. Klarer dere å fjerne alt som er overflødig nå uten å også fjerne kode som fortsatt har verdi? (Advarsel: Denne kan trekke ned dersom dere gjør det feil!)

Ekstraspørsmål fra eksamens dokumentet

  • Avansert datamodell (mer enn 3 tabeller)
  • Avansert funksjonalitet (skala på spørsmål, spørreundersøkelser)
  • Rammeverk rundt Http-håndtering (en god HttpMessage class med HttpRequest og HttpResponse subtyper) som gjenspeiler RFC7230
  • God bruk av Controller-pattern

About

Exam in Avansert Java

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 89.7%
  • HTML 8.3%
  • CSS 2.0%