Systemintegration-Yrgo-2018

From Juneday education
Jump to: navigation, search

Contents

Systemintegration för klassen Java 17, vårterminen 2018

Välkomna till kurssidan för Systemintegration!

Nedan kommer ett schema. Det är viktigt att ni tittar i schemat och förbereder er inför lektionerna.

Kursen har ingen tenta, utan en laboration som skall lämnas in. Ni får lektioner som hjälper er att klara laborationen men detta bygger också på att ni gör "läxor" enligt vad som anges i schemat. Laborationen är ett system med databas och Java-servlet som publicerar JSON och slutligen en Android-app som kopplar upp sig mot er Java-servlet och hämtar JSON. Vi bygger systemet stegvis, så det är viktigt att ni har varje steg klart då stegen bygger vidare på varandra.

I slutet av kursen tar vi fram Android-appen. Det är ingen Android-kurs, utan en workshop/tutorial i två dagar (två tillfällen), så en lärare visar er alla steg för att ta fram appen (men ni skriver själva av det läraren visar).

Vecka 10, torsdag 8/3 - intro, bash

Mål för dagen

  • Alla har bash (antingen på Mac eller Cygwin)
  • alla har programmen och en editor
  • alla kan cd, mkdir osv (grundläggande bash - arbeta i terminalen)
  • Alla är medvetna om att lektionerna är 09:00 - 12:00 och inte det som står i Yrgos fantastiska schema
  • TODO: skriv lösning på laborationen (Nahid)

Tema

Introduktion till kursen, installation bash, introduktion bash: cd, pwd, mkdir, cp, mv, wget -O

Installera program: wget, editor (notepad++, sublime, eller annat)

Tider för dagen

Installationsinstruktioner

Börja med att installera programmen curl och unzip (på Mac respektive i Cygwin). Kör sedan skriptet nedan från en terminal:

  • Du har väl curl och unzip installerat nu? I så fall, kör följande kommando: curl https://raw.githubusercontent.com/progund/utils/master/bin/jd-bootstrap.sh | bash
  • om kommandot ovan inte fungerar och du får en utskrift som ser ut ungefär så här curl: (77) error setting certificate verify locations:", kör följande kommando istället:
     curl --insecure https://raw.githubusercontent.com/progund/utils/master/bin/jd-bootstrap.sh | bash
    
  • Klicka här för mer information om scriptet.
  • Skriptet hämtar och installerar programvara som är bra att ha under kursen

Se till att er editor går att starta från terminalen via bash

  • Fixa PATH till er editor. Exempel: Notepad++ på windows:

Lägg till följande i .bashrc i er hemkatalog:

export PATH=$PATH:/cygdrive/c/Program\ Files/Notepad++/

Det finns anvisningar för Atom på sidan Editor - ni väljer vilken editor ni använder. Läraren ger inte support på IDE:er såsom Netbeans, Eclipse, IntelliJ - ni sköter sånt själva - våra instruktioner utgår från en vanlig text-editor (emacs, atom, notepad++, sublime osv som startas från bash).

Läxa till nästa dag

Vecka 11 torsdag 15/3 Repetiion Interface, Exceptions

Mål för dagen

Alla har fräschat upp interface och exceptions. Alla vet att de ska se filmer i läxa.

Tema

Repetition Java (interface, exceptions)

Tider för dagen

Läxa

Se filmer om HTTP och servlet-workshop, och response codes

Vecka 12, tisdag 20/3 - Intro HTTP, Servlets, Response codes

Mål för dagen

  • Alla vet vad HTTP är
  • alla har skapat en enkel servlet i workshopen och anslutit till den via browser etc(lwp-request)
  • Alla vet vad Response codes (200, 404, 500 osv) är
  • Alla har i förväg sett:
  • Om ni vill kan ni utgå från servleten ni skapar i workshopen för er laboration och bygga vidare på den

Tema

  • Vad är HTTP och Servlets

Tider för dagen

Läxa

Vecka 12, torsdag 22/3 - Introduktion XML, JSON

Mål för dagen

  • Alla vet vad XML/JSON är
  • Alla har en servlet för sin labb som kan servera XML eller JSON (genom att titta på GET-parametrarna)

Tema

XML och JSON - introduktion.

Tider för dagen

  • 09:00 Lektion: Introduktion till XML och JSON
  • 10:00 Lektion: Servlet serving XML or JSON - Fokus är på GET-parametern format of if-satserna
  • 11:00 Handledning - Skriv servleten till er labb - den ska kunna svara med XML eller JSON
    • Läraren går igenom ett mycket liknande exempel på er labb här Ett schedule-system för vikarier (github) Fokus ligger på att förklara Servleten, inte JDBC/Databasen mm, och vad det är till för (publicera schema)
    • Notera: Servleten i exemplet genererar HTML - er servlet i labben ska generera XML eller JSON i stället, beroende på format-parametern!
    • Ni kan utgå från det systemet och anpassa det till er labb!
    • Vill ni ha mer av en utmaning, utgå från servleten i servlet-workshopen! Den innehåller mindre kod från lärarna.
    • Igen: Er servlet ska kunna svara med XML eller JSON, inte HTML så som exemplets servlet

Läxa

  • Jobba med servleten som ni skapade i workshopen så att den kan svara på format=xml respektive format=json
    • Låt doGet() läsa parametern format och kolla om det är xml eller json. Om det är något annat eller om parametern saknas (getParameter returnerar då null), så ska servleten skriva ett felmeddelande "Format missing" eller "Format not supported"
    • Ni kan hårdkoda en låtsas xml som svar repsektive en låstas JSON som svar och skriva det som response
    • Titta på labb-sidan för ett exempel på hur JSON kan se ut - vi går igenom JSON och XML senare i kursen!
    • Sätt rätt content-type på response: application/xml respektive application/json - titta i exemplet ovan för hur man sätter content-type (Ni kan googla content-type för json, xml och html eller få tips av läraren)
    • Testa att er servlet gör rätt genom att använda en browser - nästa gång kan vi visa hur man testar från bash!
  • Läs på JDBC: Introduction_to_JDBC (inklusive eventuella övningar och filmer) och se filmerna:
  • Läs wiki-sida: Introduction_to_layered_architectures och se filmerna:
  • Läs wiki-sida: Getting started with SQLite och se filmerna:
    • Kom igång med SQLite3 (Swe)
    • Kom igång med SQLite3 Live-kodning (Swe)

Vecka 13, torsdag 29/3 - JDBC, SQLite3, Skiktad arkitektur

Mål för dagen

  • Alla har i förväg sett filmerna om JDBC mm
  • Alla vet vad JDBC är och kan använda SQLite3 från Java
  • Alla kan skapa databas från dump-fil SQLite3

Tema

  • JDBC
  • Tiered architecture (no JDBC in servlet, use Java interfaces)
  • Servlet reading from DB

Tider för dagen

Läxa

  • Skapa en enkel databas i SQLite3 och få er servlet att läsa från den och skriva resultat som text eller html
    • Titta igen på Exemplet från SubstituteScheduleServlet:en från tidigare i kursen
    • Använd skiktad arkitektur - JDBC är förbjudet i servleten - använd hjälpklasser och dölj att det är en databas (se exemplen från dagens föreläsningar)
    • Ni måste lägga sqlite.jar (eller vad den heter hos er) i www/WEB-INF/lib/ för att servleten ska hitta sqlite.jar och JDBC-grejerna
  • Läs sidan Creating_JSON_from_Java och se filmerna:
  • Läs sidan Creating_XML_from_Java och se filmerna:
  • Repetera filmen Servlet serving XML or CSV or JSON (OBS! Ni kommer använda annan JSON-syntax än i filmen!)

Vecka 14, tisdag 3/4 JDBC i skiktad arkitektur, skap JSON, Skapa XML

Mål för dagen

  • Alla kan använda JDBC från servlet med skiktad arkitektur,
  • alla kan skapa JSON med org.json
  • alla kan skapa XML från Java

Tema

Skapa en servlet som använder skiktad arkitektur och jdbc, svarar med HTML, Skapa JSON, Skapa XML från Java

Tider för dagen

Läxa

  • Se filmerna:
    • film
  • Läs kapitlen:
    • kapitel
  • Arbeta med er servlet? labb?

Vecka 14, torsdag 5/4 Labben - Databasen och Servleten

Mål för dagen

Ni ska vara ett steg närmare att ha löst labben.

Tema

Gör om LABB-servleten så den

  • läser data från databasen och
  • skapar JSON (samt svarar med application/json) som content-type

Tider för dagen

  • 09:00 Labbens databas gås igenom
  • 10:00 Labbens Webb API gås igenom
    • Läraren visar igen koden från detta exempel: github.com/progund/web-misc/tree/master/nahid-sysint och förklarar anropen och vad de betyder
    • En strategi för ser servlet tas fram
    • Ex: Följande typer av frågor till web api:et (servleten) finns:
      • alla schemapunkter (assignments) för alla lärare
      • alla schemapunkter (assignments) för en viss lärare
      • alla schemapunkter (assignments) för en viss tid
      • alla schemapunkter (assignments) för en viss lärare en viss tid
    • Skapa metoder för ovanstående fyra typer av frågor, och motsvarande SQL
    • Ni kan använda modellen från exemplet:
      • En enkel klass Assignment som har tre String: teacher, date, school
    • Ni kan vara ambitiösa och använda modellen från Creating JSON with org.json-exemplet med flera klasser:
      • Schedule
      • School
      • Substitute
  • 11:00 Handledning

Läxa

  • Ni ska ha en fungerade Databas-JSON-kedja i er Servlet till nästa gång
  • Repetera Creating XML (wiki, slide och filmerna från tidigare i schemat)

Om API:et och de anrop/queries som er servlet skall svara på

  • Inga parametrar - Alla Assignments skall ges som svar
  • format - värdet skall kunna vara json eller xml (bara json skall funka än så länge)
  • day - om endast denna parameter anges, skall alla lärares assignments den dagen listas
  • substitute_id - om endast denna parameter anges, skall denna vikaries assignments listas
  • substitute_id i kombination med day - denna vikaries assignment denna dag listas

TODO

TODO: Skriv manus för workshop


Vecka 15, torsdag 12/4

Mål för dagen

Tema

Tider för dagen

  • 09:00
  • 10:00
  • 11:00

Läxa

Tema Gör om servleten så den läser data från databasen och skapar XML, svarar med application/xml "Nahid: http://wiki.juneday.se/mediawiki/index.php/Java-Web:Using_a_factory_for_creating_XML_or_JSON http://wiki.juneday.se/mediawiki/index.php/Java-Web:Servlet_serving_XML_or_JSON" 9 "Workshop - skapa servleten som ska läsa från databasen och skapa XML som svar på: substitute_id och eventuellt också day från GET-parametrarna Testa denna servlet från browser, lwp-request, wget osv" Skriv manus för workshop 10 samma Skriv manus för workshop 11 samma Skriv manus för workshop Mål för dagen Skriv mål för dagen Läxa: Välj en läxa

Vecka 16, torsdag 19/4

Mål för dagen

Tema

Tider för dagen

  • 09:00
  • 10:00
  • 11:00

Läxa

Tema Att från Java konsumera JSON (parse JSON to Java-objects)

               Wiki-sida: Java-Web:Introduction_to_JSON#Slides_and_videos
                	

9 Parsing JSON from Java (föreläsning) 18 Slides: http://wiki.juneday.se/mediawiki/images/e/e8/Parsing_JSON_from_Java.pdf

           http://wiki.juneday.se/mediawiki/images/9/9e/Org.json_-_parsing.pdf     using org.json:

Videos: https://vimeo.com/channels/1188518

           https://vimeo.com/250121863     using org.json

Source code: https://github.com/progund/java-web/blob/master/java-json/exercises/suggested-solutions/OrgJsonMain.java 10 Övningar övningar för parsing Json... 11 Övningar "org.json: Exercise_-_Introduction_to_JSON https://search.maven.org/remotecontent?filepath=org/json/json/20171018/json-20171018.jar" Mål för dagen Alla kan använda org.json för att parsea JSON från ett Java-program Skriv mål för dagen Läxa: Välj en läxa

Vecka 17, torsdag 26/4

Mål för dagen

Tema

Tider för dagen

  • 09:00
  • 10:00
  • 11:00

Läxa

Tema Skapa kommandorads- (text-based)Java-applikation som konsumerar JSON över HTTP 9 "Workshop: skriv en klient som via HttpUrlConnection hämtar JSON från servleten och gör om till Java t ex skriver ut text som är läsbar för människor" "Skriv workshop-manus Skriv en lösning som fungerar" 10 11 Mål för dagen Alla har skrivit en klient som pratar med deras servlet Skriv mål för dagen Läxa: Välj en läxa

Vecka 18, torsdag 3/5

Mål för dagen

Tema

Tider för dagen

  • 09:00
  • 10:00
  • 11:00

Läxa

Tema Att från Java kunna konsumera XML (parse XML to Java-objects) 9 Parsing XML from Java (föreläsning) 18 "Hitta slides för parsing XML http://wiki.juneday.se/mediawiki/images/3/36/Parsing_XML_From_Java.pdf" 10 Övningar parsing XML "Hitta övningar för parsing XML http://wiki.juneday.se/mediawiki/index.php/Java-Web:Exercises_-_Introduction_to_XML" 11 Övnignar Mål för dagen Alla kan parse:a XML från Java Skriv mål för dagen Läxa: Välj en läxa

Vecka 19, tisdag 8/5

Mål för dagen

Tema

Tider för dagen

  • 09:00
  • 10:00
  • 11:00

Läxa

Tema Skapa kommandorads- (text-based)Java-applikation som konsumerar XML över HTTP 9 "Workshop: skriv en klient som via HttpUrlConnection hämtar XML från servleten och gör om till Java (samma som ovan fast XML i stället för JSON)" "Skriv workshop-manus Skriv en lösnign som fungerar" 10 11 Mål för dagen Alla har skrivit en klient som läser och parsear XML från deras servlet Skriv mål för dagen Läxa: Välj en läxa

Vecka 20, torsdag 17/5

Mål för dagen

Tema

Tider för dagen

  • 09:00
  • 10:00
  • 11:00

Läxa

Tema "Android-workshop/tutorial - Henrik kommer och håller Android walk-through för en Android-klient som konsumerar JSON från Servleten - bara följa-med-och-apa-efter, inga krav egentligen." Få Henrik att bekräfta tid och att han har material 9 10 11 Mål för dagen Läxa:

Vecka 21, torsdag 24/5

"Android-workshop/tutorial - Henrik kommer och håller Android walk-through för en Android-klient

Mål för dagen

Tema

Tider för dagen

  • 09:00
  • 10:00
  • 11:00

Läxa

som konsumerar JSON från Servleten - bara följa-med-och-apa-efter, inga krav egentligen." Få Henrik att bekräfta tid och att han har material Tema 9 10 11 Mål för dagen Läxa: "Skicka in er kod: Servlet med JDBC som svarar med XML eller JSON Klient (kommandoradsbaserad) som läser XML och en som läser JSON (eller samma som kan båda) Dokumentation över projektet" Planera in tid för rättning!