Demo Juwelier applicatie

17
Juwelier applicatie Auteur: Maarten Zuur Datum: 6 Oktober 2015 Demonstratie eindresultaat beschrijving onderdelen implementatie

Transcript of Demo Juwelier applicatie

Page 1: Demo Juwelier applicatie

Juwelier applicatie

Auteur: Maarten ZuurDatum: 6 Oktober 2015

Demonstratie eindresultaat beschrijving onderdelen implementatie

Page 2: Demo Juwelier applicatie

Introductie

De webapplicatie is gebouwd voor een fictieve juwelier.

Een klant er producten bekijken en bestellen.

Alle gegevens (producten, klanten, bestellingen) staan in een database.

Page 3: Demo Juwelier applicatie

Overzicht

De applicatie bestaat uit 3 onderdelen.View: de klant heeft vanuit een webbrowser toegang tot de webapplicatieJuwelierApp: Java software die alle datastromen van/naar de database verwerktDatabase: persistent datastore met klanten, producten en bestellingen

Page 4: Demo Juwelier applicatie

ViewHoofdpagina van de webapplicatie

Page 5: Demo Juwelier applicatie

Lijst met alle producten Product informatieView

Page 6: Demo Juwelier applicatie

Venster voor inloggen (wachtwoord is niet geïmplementeerd) Gegevens van de klant

View

Page 7: Demo Juwelier applicatie

Een bestelling verwijderen gebeurt eenvoudig door op ‘Verwijder’ te klikken.

(de attributen Betaald en Bezorgd zijn aanwezig in de database maar verder niet geïmplementeerd)

View

Een product bestellen gebeurt door eerst een bestelling te selecteren, dan het product bekijken en daar op ‘Bestellen’ klikken.

Bestellingen Bestelde producten

Page 8: Demo Juwelier applicatie

Klant 2 heeft product 9 aan bestelling 2 toegevoegd

View

Page 9: Demo Juwelier applicatie

Data model

De applicatie werkt met 4 tabellen in een (relationele) SQL database. Iedere Java klasse wordt gemapt naar een tabel.

Class diagram voor het data model:Een Klant heeft 0 of meer BestellingenEen Bestelling bestaat uit 0 of meer BesteldProductenEen BesteldProduct verwijst naar een Product

Page 10: Demo Juwelier applicatie

SQL database

build20.sql volledige (her) creatie van de database

fill30.sql maakt de database leeg en plaatst wat gegevens in elke tabel

unit_test.sql maakt de database leeg en plaatst wat gegevens in elke tabel (voor Java unit test)

test.sql aantal queries om de foreign keys te testen

tproduct kolommen: product_id, merk, naam, code, model, kleur, afbeelding, prijs, soort, materiaal, maat, steen, kast, band, waterbestendig, uurwerk, functie

tklant kolommen: klant_id, inlogcode, achternaam, voorletterstbestelling kolommen: bestelling_id, klant_id, betaald

foreign key: naar tklant (klant_id → klant_id)tbesteld_product kolommen: bp_id, bestelling_id, product_id, bezorgd

foreign key: naar tbestelling (bestelling_id → bestelling_id)foreign key: naar tproduct (product_id → product_id)

Scripts

Tabellen in de SQL database

Page 11: Demo Juwelier applicatie

Java applicatie

Het Java component regelt communicatie tussen View en DatabasePaginaController levert de services (servlets) voor ViewJuwelierDAO is een interface naar persistent datastoreJuwelierDAOSql implementeert d.m.v. MySQL databaseModel bevat de business objecten (Product, Klant, Bestelling, BesteldProduct)Model (transfer) bevat de transfer objecten

Page 12: Demo Juwelier applicatie

PaginaController is de Java klasse die alle servlets implementeert

Servlet Beschrijving

/hoofdpagina/producten/product/{id}/inloggen/{inlogCode}/klant/{id}/bestellingen/{id}/bestelling/{id}/bestel/{regel}/mand/{id}/verwijderbs/{regel}/verwijderbp/{regel}

Toont de hoofdpaginaToont alle productenToont product <id>Haalt het id op van klant <inlogCode>Toont klant <id>Toont de bestellingen van klant <id>Toont de bestelde producten van bestelling <id>Voegt product <id> toe aan bestelling <id>Maakt een nieuwe bestelling aan voor klant <id>Verwijder bestelling <id> van klant <id>Verwijder besteld product <id> uit bestelling <id>

Java applicatie

Page 13: Demo Juwelier applicatie

JuwelierDAO is een Java interface met methoden voor CR(U)D naar een persistent datastore.

Methoden van deze interface met hun signatuur:

+ readKlant(String inlogCode): int+ readKlant(int id): Klant+ readKlanten(): Collection<Klant>+ readBestelling(int bestellingId): Bestelling+ createBestelling(int klantId, Bestelling b): int+ deleteBestelling(int bestellingId)+ readBesteldProduct(int bpId): BesteldProduct+ createBesteldProduct(int bestellingId, BesteldProduct bp): int+ deleteBesteldProduct(int bpId)+ readProduct(int id): Product+ readProducten(): Collection<Product>

Java applicatie

Page 14: Demo Juwelier applicatie

View implementatie

De view is een webapplicatie (jsp, html/css/js) met als kern:De hoofdpagina.jsp is een vaste pagina die kader.jsp bevatIn kader.jsp worden wisselende jsp pagina’s met inhoud geplaatstDoor buttons en hyperlinks worden JavaScript functies gestart (kader.js) die Java servlets aanroepenDe Java servlets in PaginaController produceren jsp pagina’s met inhoud

Page 15: Demo Juwelier applicatie

jsp hoofdpagina.jsp – vaste hoofdpagina van de webapplicatiekader.jsp – kader waar inhoud kan worden geplaatstproducten.jsp – toont lijst met productenproduct.jsp – toont een productklant.jsp – toont een klantbestellingen.jsp – toont lijst met bestellingenbestelling.jsp – toont een bestelling

JavaScript kader.js – functies die inhoud op de pagina plaatsen, inclusief aanroep van servletssessie.js – functies waarmee de klant sessie wordt bijgehouden en bestellingen worden verwerkt, inclusief aanroep van servlets

css menu.css – opmaak en gedrag van het menupagina.css – opmaak van de pagina

html onder andere header, footer, formulier voor inloggen en het menuafbeeldingen jpg en bmp afbeeldingen (tabel tproduct verwijst naar de bestandnaam)

Overzicht onderdelen van de View

View implementatie

Page 16: Demo Juwelier applicatie

TechniekDe applicatie is gebouwd met:

Relationele database in MySQLJava applicatie die de servlets levert

Spring MVCHibernateTestcases met JUnit (voor servlets en DAO interface)

View met jsp, html/css/js, afbeeldingen

De webapplicatie draait met MySQL server en Apache Tomcat server

Design goals tijdens bouw:solide structuurgoede backendminder prio voor layout en user experience

Page 17: Demo Juwelier applicatie

Samenvatting

De webapplicatie is gebouwd voor een fictieve juwelier.Klant kan producten bekijken en bestellen in de viewGegevens worden bewaard in een databaseEen Java applicatie vormt de schakel tussen de view en de databaseSolide structuur en geavanceerde backend

Maarten Zuur

www.linkedin.com/in/maartenzuur