aplikacija za praĆenje sadrŽaja hladnjaka na …• programske biblioteke (libraries) • sloj...

49
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA DIPLOMSKI RAD br. 624 APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA UREĐAJIMA S OPERACIJSKIM SUSTAVOM ANDROID Sunčana Parać Zagreb, lipanj 2013.

Upload: others

Post on 17-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

DIPLOMSKI RAD br. 624

APLIKACIJA ZA PRAĆENJE SADRŽAJA

HLADNJAKA NA UREĐAJIMA S

OPERACIJSKIM SUSTAVOM ANDROID

Sunčana Parać

Zagreb, lipanj 2013.

Page 2: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

Mentor diplomskog rada: doc. dr. sc. Krešimir Pripužić

Page 3: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

Sadržaj

Uvod ...................................................................................................................................... 1

1. Korištene tehnologije ..................................................................................................... 2

1.1. Platforma Android ................................................................................................. 2

1.1.1. Uvod .............................................................................................................. 2

1.1.2. Značajke platforme Android .......................................................................... 2

1.1.3. Arhitektura ..................................................................................................... 2

1.1.4. Virtualni stroj Dalvik (Dalvik Virtual Machine) ........................................... 4

1.1.5. Životni ciklus aplikacije ................................................................................ 5

1.2. Poslužitelj Jetty ...................................................................................................... 7

1.3. Sustav mySQL ....................................................................................................... 8

1.4. REST (Representational State Transfer) ............................................................... 8

1.5. Objektno relacijsko mapiranje ............................................................................... 9

1.6. Mapiranje objekata pomoću XML-a (XML data binding) .................................. 10

2. Sustav myFridge .......................................................................................................... 11

2.1. Klijentska aplikacija ............................................................................................ 11

2.1.1. Prijava u profil ............................................................................................. 11

2.1.2. Stvaranje novog korisničkog profila ........................................................... 13

2.1.3. Glavni izbornik ............................................................................................ 14

2.1.4. Očitavanje linijskog kôda i pregled detalja artikla ...................................... 15

2.1.5. Dodavanje artikla u listu korisničkih artikala .............................................. 17

2.1.6. Popis korisničkih artikala ............................................................................ 19

2.1.7. Brisanje artikla s popisa korisničkih artikala ............................................... 22

2.1.8. Brisanje popisa korisničkih artikala ............................................................ 23

2.1.9. Dohvat popisa korisničkih artikala .............................................................. 24

Page 4: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

2.1.10. Izmjena podataka korisničkog profila i brisanje korisničkog profila .......... 27

2.1.11. Uređivanje postavki za udaljenog poslužitelja ............................................ 30

2.2. Poslužiteljska aplikacija ...................................................................................... 30

2.2.1. Model baze podataka ................................................................................... 30

2.2.2. Sloj DAO (Data Access Object layer) ......................................................... 33

2.2.3. Upravitelji resursima poslužitelja ................................................................ 35

2.2.4. Resursi poslužitelja ...................................................................................... 35

2.2.5. Slanje obavijesti korisnicima o skorom isteku roka valjanosti artikla ........ 37

2.2.6. Sigurnosne značajke poslužiteljske aplikacije ............................................. 39

Zaključak ............................................................................................................................. 40

Literatura ............................................................................................................................. 41

Sažetak ................................................................................................................................. 42

Summary .............................................................................................................................. 43

Privitak ................................................................................................................................ 44

Upute za konfiguraciju baze podataka............................................................................. 44

Upute za instalaciju poslužiteljske aplikacije .................................................................. 44

Upute za instalaciju klijentske aplikacije ........................................................................ 45

Page 5: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

1

Uvod

S pojavom pametnih telefona na tržistu te kontinuiranim radom na poboljšanju performansi

sklopovlja i prateće programske podrške pametnih telefona omogućen je razvoj širokog

spektra korisničkih aplikacija. Takve aplikacije svojom brojnošću i mogućnostima

korisnicima pružaju značajnu fleksibilnost kod prilagodbe uređaja vlastitim potrebama.

Sustav razvijen u sklopu ovog rada služi praćenju sadržaja hladnjaka te obavještavanju

korisnika o isteku valjanosti pojedinih artikala. Zbog otvorenosti kôda te visokog udjela na

tržištu pametnih telefona kao razvojna platforma za klijentsku aplikaciju sustava odabrana

je platforma Android. Rad kroz nekoliko poglavlja opisuje tehnologije korištene pri

razvoju sustava za praćenje sadržaja hladnjaka myFridge, njegove karakteristike, primjenu

te način korištenja.

Page 6: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

2

1. Korištene tehnologije

1.1. Platforma Android

1.1.1. Uvod

Platforma Android je programsko okruženje zasnovano na operacijskom sustavu Linux te

je primarno namijenjena korištenju na uređajima s ekranom osjetljivim na dodir

(touchscreen) kao što su pametni telefoni i tablet računalima. Za razvoj platforme

zadužena je grupa OHS (Open Handset Alliance), konzorcij tvrtki posvećenih razvoju

platformi otvorenog kôda za pokretne uređaje. Platforma je predstavljena 2007. godine te

je zaključno s prvim kvartalom 2013. godine zauzela prvo mjesto sa 75% udjela u

operacijskim sustavima pametnih telefona [1]. U sustavu myFridge klijentska aplikacija je

implementirana na platformi Android.

1.1.2. Značajke platforme Android

Jedna od glavnih značajki platforme Android je otvorenost, odnosno slobodno korištenje i

razvoj platforme pod licencom Apache Software License, 2.0., koja specificira pravila

korištenja, reprodukcije te distribucije izvornog kôda platforme. Aplikacije razvijene za

platformu Android imaju pristup velikom izboru jezgrenih funkcija, kao što su korištenje

kamere, slanje tekstualnih poruka, pristup Internetu te ostvarivanje telefonskih poziva. Sve

aplikacije imaju jednako pravo pristupa resursima uređaja. Životni ciklus aplikacija je

nadziran od strane operacijskog sustava te pri pokretanju i zaustavljanju aplikacija uzima u

obzir trenutne zahtjeve na resurse uređaja.

1.1.3. Arhitektura

Slika 1 prikazuje arhitekturu platforme Android. Operacijski sustav Android se može

promatrati kao slojevita struktura programske podrške, gdje se svaki sloj sastoji od

nekoliko programskih komponenti. Svaki sloj arhitekture pruža više usluga sloju koji je

neposredno iznad njega:

Page 7: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

3

• Jezgra Linux (Linux Kernel)

• Programske biblioteke (Libraries)

• Sloj izvršavanja (Android Runtime)

• Aplikacijsko okruženje (Application framework)

• Aplikacije (Applications)

Slika 1 - Arhitektura platforme Android [2]

1.1.3.1 Jezgra Linux (Linux Kernel)

Najniži sloj arhitekture je jezgra operacijskog sustava Linux. Operacijski sustav Android

izgrađen je na jezgri Linux 2.6. Ona pruža programsku potporu i upravlja sklopovljem

(hardware drivers) te služi kao sloj apstrakcije između sklopovlja i ostalih slojeva

programske podrške. Operacijski sustav Android koristi jezgru Linux za ostvarivanje

temeljnih funkcionalnosti sustava kao što je upravljanje memorijom, upravljanje

procesima, mrežnu komunikaciju, i drugi.

Page 8: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

4

1.1.3.2 Programske biblioteke (Libraries)

Iznad jezgre operacijskog sustava nalazi se sloj programskih biblioteka. On omogućava

operacijskom sustavu rad s različitim tipovima podataka. Biblioteke su napisane u

programskim jezicima C ili C++ te se razlikuju ovisno o sklopovlju pojedinog uređaja.

1.1.3.3 Sloj izvršavanja (Android Runtime)

Iznad programskih biblioteka nalazi se sloj izvršavanja koja se sastoji od virtualnog stroja

Dalvik (Dalvik Virtual Machine) i jezgrenih biblioteka (core libraries). DVM je za razliku

od virtualnog stroja Java (Java Virtual Machine) registarski baziran virtualni stroj.

Umjesto *.class datoteka koristi *.dex datoteke koje se stvaraju iz *.class datoteka i

omogućavaju veću efikasnost u korištenju ograničenih resursa sustava. Jezgrene biblioteke

sadrže sve osnovne Javine razrede nužne za ispravan rad operacijskog sustava.

1.1.3.4 Aplikacijsko okruženje (Application framework)

Idući sloj arhitekture je aplikacijsko okruženje. Ono se sastoji od skupa programskih

komponenti koje zajednički koriste sve aplikacije. Neke od važnijih komponenti su

upravitelj aktivnostima (Activity Manager) koji je zadužen za upravljanje životnim

ciklusom aplikacije, upravitelj pozivima (Telephony Manager) te upravitelj obavijestima

(Notification Manager).

1.1.3.5 Aplikacije (Applications)

Najviši sloj arhitekture je sloj aplikacija kojeg čini skup korisničkih aplikacija. Većina

inačica operacijskog sustava Android sadrži nekoliko osnovnih korisničkih aplikacija kao

što su Web preglednik, aplikacija za slanje tekstualnih poruka, aplikacija za upravljanje

kontaktima, i drugi.

1.1.4. Virtualni stroj Dalvik (Dalvik Virtual Machine)

Za pokretanje Java aplikacija operacijski sustav Android koristi virtualni stroj Dalvik.

DVM je registarski baziran virtualni stroj, a njegov međukôd (bytecode) se pomoću alata

dx transformira u *.dex (Dalvik Executable) datoteke. Takva transformacija omogućava

bolje korištenje raspoloživih resursa sustava kao što su memorija i procesorska snaga.

Svaka aplikacija se pokreće kao zasebni proces koji ima vlastitu instancu virtualnog stroja.

Page 9: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

5

1.1.5. Životni ciklus aplikacije

Aplikacija se obično sastoji od nekoliko aktivnosti (Activities) pomoću kojih korisnik vrši

interakciju s aplikacijom. Aktivnosti se slažu u stog (back stack) obrnutim redoslijedom

prispijeća (last in, first out), s aktivnosti koja je trenutno u fokusu na vrhu stoga [3].

Slika 2 - Stog aktivnosti aplikacije

U primjeru na Slici 2 prikazano je pozivanje Aktivnosti 1, zatim Aktivnosti 2 te Aktivnosti

3, nakon čega se korisnik navigacijom vratio na Aktivnost 2, čime je Aktivnost 3 uklonjena

sa stoga. Pozivanjem odgovarajućih metoda operacijski sustav upravlja životnim ciklusom

pojedine aktivnosti. Na Slici 3 prikazan je životni ciklus aktivnosti.

Page 10: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

6

Slika 3 - Životni ciklus aktivnosti

Metode za upravljanje životnim ciklusom aktivnosti dio su sučelja Activity te se po potrebi

nadjačavaju kod implementacije aplikacije. Redoslijed i opis metoda dan je u Tabeli 1.

Page 11: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

7

Tabela 1 - Opis metoda za upravljanje životnim ciklusom aktivnosti

Ime metode

Opis metode

Sljedeća metoda

onCreate() poziva se prilikom

pokretanja aplikacije onStart()

onStart()

poziva se neposredno nakon

metode onCreate() prije

nego što aktivnost postane

vidljiva korisniku

onResume()

ili

onStop()

onResume()

poziva se prilikom početka

interakcije s korisnikom u

trenutku kada je aktivnost na

vrhu stoga aktivnosti

onPause()

onPause()

poziva se prije stavljanja

druge aktivnosti na vrh

stoga, služi osiguranju

perzistencije podataka

onResume()

ili

onStop()

onStop()

poziva se kada aktivnost

više nije vidljiva korisniku

zbog zaustavljanja aplikacije

ili zato što je neka druga

aktivnost stavljena na vrh

stoga

onRestart()

ili

onDestroy()

onRestart()

poziva se nakon što je

aktivnost zaustavljena a

potrebno ju je ponovno

pokrenuti

onStart()

onDestroy()

poziva se trenutak prije

terminacije aktivnosti te

predstavlja posljednji poziv

metode u aktivnosti

-

1.2. Poslužitelj Jetty

Web poslužitelj Jetty je primarno HTTP poslužitelj i ovojnica oko servleta te se može

koristiti kao samostalna ili ugradbena (embedded) instanca za posluživanje statičkog ili

dinamičkog sadržaja. U implementaciji sustava myFridge poslužitelj Jetty dinamički stvara

odgovor na korisničke upite na temelju podataka dohvaćenih iz baze.

Page 12: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

8

1.3. Sustav mySQL

MySQL je sustav za upravljanje relacijskom bazom podataka (relational database

management system). MySQL je besplatni sustav otvorenog kôda koji pruža podršku za

višekorisnički pristup jednoj ili više pohranjenih shema, a modifikacija i distribucija

izvornog kôda regulirana je licencom GNU General Public License. Glavne značajke

sustava MySQL su:

• Podrška za ANSI SQL 99 gramatiku

• Mogućnost stvaranja procedura

• Mogućnost stvaranja okidača

• Podrška za implementaciju SSL-a (Secure Socket Layer)

• Lokalna pohrana upita

• Mogućnost gniježđenja SELECT upita

U sustavu myFridge sustav MySQL je korišten za pohranu podataka o postojećim

prehrambenim artiklima, korisnicima te korisničkim artiklima.

1.4. REST (Representational State Transfer)

Programska sučelja Web aplikacija (Web Application Programming Interface) se danas

dominantno modeliraju pomoću REST arhitekture [4]. REST arhitektura se sastoji od

klijenata i poslužitelja, pri čemu klijenti iniciraju komunikaciju slanjem zahtjeva

poslužitelju, a poslužitelji obrađuju zahtjeve i šalju odgovore. Odgovori poslužitelja

prenose stanja resursa na koje je poslan zahtjev. Glavne značajke REST arhitekture su:

Arhitektura klijent-poslužitelj - klijenti i poslužitelji se razvijaju modularno i

implementiraju sučelje koje im omogućuje komunikaciju. Klijent i poslužitelj imaju

zasebne domene odgovornosti (separation of concerns).

Komunikacija bez stanja (stateless) - komunikacija između klijenta i poslužitelja

nema stanje te se između dva zahtjeva na poslužitelju nigdje ne čuva kontekst

klijenta. Svaki klijentski zahtjev sadrži sve informacije potrebne za procesiranje i

odgovor na zahtjev, a stanje sesije se čuva na klijentu.

Lokalna pohrana podataka (cacheable) - klijenti moraju moći lokalno spremati

odgovore na upite osim ako odgovor ne sadrži eksplicitnu zabranu lokalne pohrane.

Page 13: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

9

Lokalna pohrana može značajno utjecati na poboljšanje performansi sustava i

njegovu skalabilnost.

Slojeviti sustav - klijentu nije poznato komunicira li s krajnjim poslužiteljem ili

poslužiteljskim posrednikom. Slojeviti razvoj sustava omogućuje veću skalabilnost

i raspodjelu opterećenja poslužitelja (load balancing).

Slanje programskog kôda (code on demand) - poslužitelj mora na zahtjev klijentu

isporučiti programski kôd namijenjen lokalnom izvršavanju (npr. JavaScript kôd).

Za razliku od ostalih značajki REST arhitekture implementacija slanja

programskog kôda nije obavezna.

Uniformno sučelje - resursi kojima se pristupa su definirani u klijentskim

zahtjevima. U Web sustavima zasnovanim na REST arhitekturi resursi su definirani

univerzalnim identifikatorima resursa (Uniform Resource Indentifier). Klijent

dohvatom resursa dobiva dovoljno informacija za promjenu ili brisanje resursa s

poslužitelja ukoliko ima dopuštenje za to. Zahtjevi na resurs sadrže sve informacije

potrebne za uspješnu obradu zahtjeva. Klijent ima dopuštenje pristupati resursima

samo na način opisan u ranije dobivenim odgovorima na zahtjeve.

U sustavu myFridge za implementaciju REST arhitekture korištena je programska

biblioteka Jersey 2.0.

1.5. Objektno relacijsko mapiranje

Objektno relacijsko mapiranje (object-relational mapping) je metoda konverzije podataka

za rad sa sustavima koji koriste različite tipove podatka. Objektno relacijsko mapiranje se

koristi u objektno-orijentiranim jezicima te se na taj način stvara virtualna objektna baza

podataka koja se može koristiti unutar programskog jezika. U objektno-orijentiranim

jezicima upravljanje podacima se vrši manipulacijom objekata koji su vrlo rijetko skalarne

vrijednosti. Usprkos tome većina baza podataka može pohranjivati i upravljati jedino

skalarima kao što su cijeli brojevi i nizovi znakova. Pomoću objektno relacijskog

mapiranja omogućava se konverzija atributa objekata u skalare te njihova grupna pohrana

te konverzija natrag u objekt pri dohvatu iz baze podataka. U sustavu myFridge objektno-

relacijsko mapiranje je implementirano pomoću Hibernate ORM API-ja.

Page 14: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

10

1.6. Mapiranje objekata pomoću XML-a (XML data

binding)

Kako bi se objekt moglo prikazati u formatu XML (eXtended Markup Language) koristi se

mapiranje objekata pomoću XML-a. Mapiranjem objekata moguće je povezati elemente

XML sheme i atribute razreda koje želimo učitati. Proces pretvaranja objekta u XML zapis

se zove serijalizacija (marshalling) a proces pretvaranja XML zapisa u objekt se zove

deserijalizacija (unmarshalling). U sustavu myFridge u poslužiteljskoj aplikaciji je za

mapiranje objekata pomoću XML-a korišten JAXB API (Java Architecture for XML

Binding) čija je programska biblioteka sadržana u programskoj biblioteci Jersey 2.0

korištenoj za implementaciju REST-a. U klijentskoj aplikaciji korišten je Simple API s

obzirom na to da JAXB API nije kompatibilan s platformom Android.

Page 15: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

11

2. Sustav myFridge

2.1. Klijentska aplikacija

Klijentska aplikacija sustava myFridge implementirana je na platformi Android te se

sastoji od skupa aktivnosti pomoću kojih korisnik vrši interakciju s aplikacijom i

asinkronih zadataka koji su zaduženi za komunikaciju s poslužiteljskom aplikacijom

pomoću pozadinske dretve. U nastavku su opisane funkcionalnosti klijentske aplikacije.

2.1.1. Prijava u profil

Slika 4 - Dijagram toka prijave i odjave iz korisničkog profila

Korisnik pokretanjem aplikacije pristupa aktivnosti „Prijava u profil“ te unosi svoje

korisničko ime i lozinku. Korisnik ima mogućnost stavljanja kvačice na opciju „Zapamti

korisničke podatke“, u kojem slučaju se jednom uneseni podaci potrebni za prijavu u

sustav prikazuju pri svakom idućem pokretanju aplikacije. Izvršava se lokalna provjera

zadovoljavaju li korisnički podaci zadana ograničenja:

Duljine korisničkog imena je između 3 i 15 znakova

Korisničko ime sadrži jedino velika i mala slova, brojeve, crtice i donje crtice

(underscore)

Duljina korisničke lozinke je između 6 i 20 znakova

Page 16: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

12

Ako su uneseni korisnički podaci ispravni poziva se asinkroni zadatak „Prijava u profil“

koji priprema i šalje zahtjev HTTP GET na resurs poslužitelja zadužen za prijavu korisnika

u profil.

Nakon uspješne prijave u korisnički profil aplikacija prikazuje aktivnost „Glavni izbornik“.

U slučaju neuspješne prijave korisniku se ponovo prikazuje aktivnost „Prijava u profil“.

Dijagram toka prikazan na Slici 4 prikazuje i odjavu iz korisničkog profila pokretanjem

zadatka „Odjava iz profila“ koji terminira sve aktivnosti aplikacije te korisniku ponovo

prikazuje početnu aktivnost aplikacije „Prijava u profil“.

Na uspješno obrađeni zahtjev za prijavom u profil poslužiteljska aplikacija odgovara

dohvatom i slanjem korisničkih podataka korisniku. Primjer uspješne prijave u korisnički

profil dan je u Kôdovima 1 i 2 koji prikazuju promet ostvaren protokolom HTTPS između

klijentske i poslužiteljske aplikacije.

GET /MyFridgeServer/user HTTP/1.1

Host: solaris.bot.nu:8081

Connection: Keep-Alive

Authorization: Basic dGVzdDoxMjM0NTY=

Kôd 1 - Zahtjev za prijavu u korisnički profil

HTTP/1.1 200 OK

Content-Type: application/xml

Content-Length: 183

Server: Jetty(9.0.1.v20130408)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<user>

<notifications>true</notifications>

<username>test</username>

<eMail>[email protected]</eMail>

</user>

Kôd 2 - Odgovor na uspješno obrađeni zahtjev za prijavu u korisnički profil

Page 17: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

13

Korisnički podaci primljeni u tijelu odgovora na zahtjev za prijavu u korisnički profil se

tijekom jedne sesije korištenja aplikacije čuvaju u posebnom objektu te se pri slanju

svakog zahtjeva koriste za postavljanje autorizacijskog zaglavlja. Primljeni podaci se

koriste i za prikaz korisničkih podataka u aktivnosti „Izmjena korisničkih podataka“. Jedini

podatak koji se ne šalje klijentu je lozinka profila, s obzirom na to da se lozinka prije

perzistiranja u bazi podataka transformira kriptografskim hash algoritmom SHA1.

2.1.2. Stvaranje novog korisničkog profila

Slika 5 - Dijagram toka stvaranja novog korisničkog profila

Korisnik iz aktivnosti „Prijava u profil“ može pokrenuti aktivnost „Stvaranje novog

korisničkog profila“, nakon čega mu se prikazuje obrazac za odabir korisničkog imena i

lozinke, korisničke adrese te odabir primanja obavijesti u slučaju isteka roka trajanja

korisničkih artikala. Izvršava se lokalna provjera zadovoljavaju li korisnički podaci zadana

ograničenja:

Duljine korisničkog imena je između 3 i 15 znakova

Korisničko ime sadrži jedino velika i mala slova, brojeve, crtice i donje crtice

(underscore)

Duljina korisničke lozinke je između 6 i 20 znakova

Lozinka unesena u polje za ponovni unos lozinke jednaka je prvoj lozinci

Unesena adresa elektroničke pošte zadovoljava opći format zapisa adresa

elektroničke pošte

Page 18: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

14

U slučaju ispravnog unosa pokreće se asinkroni zadatak „Stvori novi profil“ koji priprema

i šalje zahtjev HTTP PUT na resurs poslužitelja zadužen za stvaranje novih korisničkih

profila. U slučaju odabira neispravnih korisničkih podataka ili neuspješnog stvaranja

novog korisničkog profila korisniku se ponovo prikazuje aktivnost „Stvaranje novog

profila“. U slučaju uspješnog stvaranja korisničkog profila terminiraju se sve postojeće

aktivnosti aplikacije te se korisniku prikazuje početna aktivnost aplikacije „Prijava u

profil“ s poljima za unos korisničkog imena i lozinke već ispunjenim s ranije odabranim

korisničkim podacima.

Primjer uspješnog stvaranja novog korisničkog profila dan je u Kôdovima 3 i 4 koji

prikazuju promet ostvaren protokolom HTTPS između klijentske i poslužiteljske

aplikacije.

PUT /MyFridgeServer/user/register HTTP/1.1

Content-Length: 145

Content-Type: application/xml

Host: solaris.bot.nu:8081

Connection: Keep-Alive

<user>

<eMail>[email protected]</eMail>

<username>test</username>

<password>123456</password>

<notifications>true</notifications>

</user>

Kôd 3 - Zahtjev za stvaranjem novog korisničkog profila

HTTP/1.1 200 OK

Content-Length: 0

Server: Jetty(9.0.1.v20130408)

Kôd 4 - Odgovor na uspješno obrađeni zahtjev za stvaranjem novog korisničkog profila

2.1.3. Glavni izbornik

Osim mogućnosti odjave iz profila pozivanjem zadatka „Odjava iz profila“, aktivnost

„Glavni izbornik“ nudi mogućnost očitavanja linijskog kôda artikla pozivom zadatka

Page 19: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

15

„Očitaj linijski d“, dohvat popisa svih korisničkih artikala iz baze podataka pokretanjem

zadatka „Dohvati popis korisničkih artikala“, brisanje popisa svih korisničkih artikala iz

baze podataka pokretanjem zadatka „Obriši popis korisničkih artikala“, pregled popisa svih

korisničkih artikala pokretanjem aktivnosti „Popis korisničkih artikala“ te mogućnost

izmjene podataka korisničkog profila pokretanjem aktivnosti „Izmjena korisničkih

podataka“.

2.1.4. Očitavanje linijskog kôda i pregled detalja artikla

Pritiskom na tipku „Očitaj linijski kôd“ u aktivnosti „Glavni izbornik“ pokreće se zadatak

„Očitavanje kôda“ koji pomoću kamere pametnog telefona te aplikacijskog programskog

sučelja ZXing („zebra crossing“) očitava linijski kôd artikla te ga računa i vraća

pozivajućoj aktivnosti.

Slika 6 - Dijagram toka očitavanja i pretrage linijskog kôda artikla

U slučaju ispravno očitanog linijskog kôda pokreće se zadatak „Pretraga po kôdu“ koji

priprema i šalje zahtjev HTTP GET na resurs poslužitelja zadužen za dohvat prehrambenih

artikala pohranjenih u bazi podataka. U slučaju neuspješnog dohvata artikla iz baze

Page 20: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

16

podataka poslužitelj pokreće zadatak „Pretraga na Internetu“ koji pretražuje i parsira

podatke o artiklu te ih sprema u bazu podataka za dohvat kod narednih upita te pronađeni

artikl vraća klijentskoj aplikaciji. Na uspješno obrađeni zahtjev za dohvatom

prehrambenog artikla poslužiteljska aplikacija odgovara dohvatom i slanjem podataka o

artiklu korisniku. U slučaju uspješnog dohvata artikla klijentska aplikacija korisniku

prikazuje aktivnost „Detalji artikla“. Primjer uspješnog dohvata prehrambenog artikla dan

je u Kôdovima 5 i 6 koji prikazuju promet ostvaren protokolom HTTPS između klijentske i

poslužiteljske aplikacije.

GET /MyFridgeServer/food/3859889940153 HTTP/1.1

Host: solaris.bot.nu:8081

Connection: Keep-Alive

Authorization: Basic dGVzdDoxMjM0NTY=

Kôd 5 - Zahtjev za dohvatom prehrambenog artikla

HTTP/1.1 200 OK

Content-Type: application/xml

Transfer-Encoding: chunked

Server: Jetty(9.0.1.v20130408)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<foodItem>

<barcode>3859889940153</barcode>

<description>Instant suhi pekarski kvasac...</description>

<id>1</id>

<imageLarge>R0lGODlhjwCPAPcAADswNUc4OVY7P...</imageLarge>

<imageSmall>R0lGODlhPAA8APcAAEY7PFpCPVNGR...</imageSmall>

<manufacturer>PODRAVKA d.d.</manufacturer>

<name>Suhi Digo kvasac 5x7 g Podravka</name>

</foodItem>

Kôd 6 - Odgovor na uspješno obrađeni zahtjev za dohvatom prehrambenog artikla

Page 21: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

17

2.1.5. Dodavanje artikla u listu korisničkih artikala

Slika 7 - Dijagram toka dodavanja artikla u listu korisničkih artikala

Nakon uspješnog dohvata artikla korisniku se prikazuje aktivnost „Detalji artikla“ u kojoj

korisnik može pogledati detalje korisničkog artikla:

Ime artikla

Ime proizvođača artikla

Opis artikla

Korisnik ima mogućnost dodati artikl u popis korisničkih artikala pritiskom na tipku

„Dodaj artikl“ u aktivnosti „Detalji artikla“. Pritiskom na tipku prikazuje se izbornik u

kojem je potrebno odabrati datum isteka roka valjanosti artikla te unijeti broj dana nakon

otvaranja nakon kojih je proizvod još uvijek valjan. Izvršava se lokalna provjera

zadovoljavaju li uneseni podaci zadana ograničenja:

najmanja dopuštena vrijednost datuma isteka valjanosti artikla je datum godinu

dana manji od današnjeg datuma

najveća dopuštena vrijednost datuma isteka valjanosti artikla je datum dvadeset

godina veći od današnjeg datuma

broj dana nakon otvaranja nakon kojih je proizvod još uvijek valjan mora biti u

rasponu od 0 do 9999 dana

Page 22: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

18

U slučaju ispravnog unosa podataka o artiklu izvršava se zadatak „Dodavanje artikla“ koji

priprema i šalje zahtjev HTTP PUT na resurs poslužitelja zadužen za pohranu podataka o

korisničkim artiklima u bazu podataka. U slučaju uspješnog zapisa korisničkog artikla u

bazu podataka korisniku se prikazuje poruka o uspjehu te mu se ponovo prikazuje

aktivnost „Glavni izbornik“. U slučaju neuspjeha aplikacija i dalje prikazuje aktivnost

„Detalji artikla“ i korisnik ima mogućnost ponovo pokušati dodati artikl u popis

korisničkih artikala.

Na uspješno obrađeni zahtjev za pohranom korisničkog artikla poslužiteljska aplikacija

odgovara slanjem podataka o pohranjenom artiklu korisniku. Artikl se perzistira lokalno u

datoteci koja sadrži popis svih korisničkih artikala. Primjer uspješne pohrane korisničkog

artikla u bazu podataka dan je u Kôdovima 7 i 8 koji prikazuju promet ostvaren

protokolom HTTPS između klijentske i poslužiteljske aplikacije.

PUT /MyFridgeServer/userFood/3859889940153/11-07-2013/3 HTTP/1.1

Content-Length: 0

Host: solaris.bot.nu:8081

Kôd 7 - Zahtjev za pohranom korisničkog artikla u bazu podataka

HTTP/1.1 200 OK

Content-Type: application/xml

Transfer-Encoding: chunked

Server: Jetty(9.0.1.v20130408)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<userFood>

<dateExpiry>2013-07-11T00:00:00+02:00</dateExpiry>

<food>

<barcode>3859889940153</barcode>

<description>Instant suhi pekarski kvasac proizvodi se iz...</description>

<id>1</id>

<imageLarge>R0lGODlhjwCPAPcAADswNUc4OVY7P...</imageLarge>

<imageSmall>R0lGODlhPAA8APcAAEY7PFpCPVNGR... </imageSmall>

<manufacturer>PODRAVKA d.d.</manufacturer>

<name>Suhi Digo kvasac 5x7 g Podravka</name>

</food>

Page 23: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

19

<id>262144</id>

<validAfterOpening>3</validAfterOpening>

</userFood>

Kôd 8 - Odgovor na uspješno obrađeni zahtjev za pohranom korisničkog artikla

2.1.6. Popis korisničkih artikala

Korisnik iz aktivnosti „Glavni izbornik“ može pritiskom na tipku „Popis korisničkih

artikala“ pokrenuti aktivnost „Popis korisničkih artikala“ te pregledati sve korisničke

artikle. Svaki artikl s popisa je osjenčan s bojom koja služi kao indikator svježine artikla:

Zelena boja

do isteka roka valjanosti artikla ima 3 dana ili više

ako je artikl otvoren do isteka valjanosti nakon otvaranja ima 3 dana ili više

Žuta boja

roka valjanosti artikla istječe unutar 2 dana

ako je artikl otvoren rok valjanosti nakon otvaranja istječe unutar 2 dana

Narančasta boja

roka valjanosti artikla je istekao

ako je artikl otvoren rok valjanosti nakon otvaranja je istekao

Kratkim pritiskom na artikl s popisa pokreće se aktivnost „Detalji korisničkog artikla“ u

kojoj korisnik može pogledati detalje korisničkog artikla:

Ime artikla

Ime proizvođača artikla

Opis artikla

Datum isteka roka valjanosti artikla

Datum otvaranja artikla

Broj dana nakon kojih je otvoreni artikl još uvijek valjan

Page 24: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

20

Slika 8 - Dijagram toka koji prikazuje pregled popisa korisničkih artikala, pregled detalja

korisničkog artikla, izmjenu korisničkog artikla i kloniranje korisničkog artikla

Page 25: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

21

Aktivnost „Detalji korisničkog artikla“ pruža mogućnost izmjene korisničkog artikla

pritiskom na tipku „Izmijeni artikl“. Pritiskom na tipku prikazuje se izbornik za unos

datuma otvaranja artikla. Izvršava se lokalna provjera zadovoljavaju li uneseni podaci

zadana ograničenja:

najmanja dopuštena vrijednost datuma otvaranja artikla je datum godinu dana manji

od današnjeg datuma

najveća dopuštena vrijednost datuma otvaranja artikla je današnji datum

U slučaju ispravnog unosa podataka o artiklu izvršava se zadatak „Dodavanje artikla“ koji

priprema i šalje zahtjev HTTP POST na resurs poslužitelja zadužen za izmjenu podataka o

korisničkim artiklima. U slučaju uspješne izmjene korisničkog artikla korisniku se

prikazuje poruka o uspjehu te se ponovo prikazuje aktivnost „Popis korisničkih artikala“.

Datoteka u kojoj se lokalno perzistira popis svih korisničkih artikala se osvježava s novim

podacima o artiklu. U slučaju neuspjeha aplikacija i dalje prikazuje aktivnost „Detalji

korisničkog artikla“ te korisniku omogućuje ponovni pokušaj unosa datuma otvaranja.

Primjer uspješne izmjene korisničkog artikla dan je u Kôdovima 9 i 10 koji prikazuju

promet ostvaren protokolom HTTPS između klijentske i poslužiteljske aplikacije.

POST /MyFridgeServer/userFood/262144/10-06-2013 HTTP/1.1

Content-Length: 0

Host: solaris.bot.nu:8081

Connection: Keep-Alive

Authorization: Basic dGVzdDoxMjM0NTY=

Kôd 9 - Zahtjev za izmjenom korisničkog artikla

HTTP/1.1 200 OK

Content-Length: 0

Server: Jetty(9.0.1.v20130408)

Kôd 10 - Odgovor na uspješno obrađeni zahtjev za izmjenom korisničkog artikla

Pritiskom na tipku „Kloniraj“ ostvaruje se kloniranje korisničkog artikla. Kloniranje

korisničkog artikla je dodavanje identičnog artikla u popis korisničkih artikala, uz unos

datuma isteka roka valjanosti te broja dana nakon kojih otvoreni artikl više nije valjan.

Page 26: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

22

Postupak kloniranja korisničkog artikla jednak je postupku dodavanja artikla u popis

korisničkih artikala opisanom u aktivnosti „Detalji artikla“. Vrši se provjera ispravnosti

unesenih podataka, pokreće se zadatak „Dodavanje artikla“ te se artikl dodaje u lokalnu

datoteku koja sadrži popis korisničkih artikala. Nakon uspješnog kloniranja artikla

korisniku se ponovo prikazuje aktivnost „Popis korisničkih artikala“ koji u sebi sadrži i

upravo dodani korisnički artikl.

2.1.7. Brisanje artikla s popisa korisničkih artikala

U aktivnosti „Popis korisničkih artikala“ dugim pritiskom na artikl s popisa nudi se

mogućnost brisanja artikla s popisa.

Slika 9 - Dijagram toka brisanja artikla s popisa korisničkih artikala

Odabirom opcije „Obriši artikl“ pokreće se zadatak „Obriši artikl“ koji priprema i šalje

zahtjev HTTP DELETE na resurs poslužitelja zadužen za brisanje korisničkih artikala. U

slučaju uspješnog brisanja korisničkog artikla korisniku se prikazuje poruka o uspjehu te se

artikl uklanja iz lokalne datoteke koja perzistira korisničke artikle, a popis korisničkih

artikala se osvježava s izmijenjenim popisom korisničkih artikala.

Page 27: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

23

Primjer uspješnog brisanja korisničkog artikla dan je u Kôdovima 11 i 12 koji prikazuju

promet ostvaren protokolom HTTPS između klijentske i poslužiteljske aplikacije.

DELETE /MyFridgeServer/userFood/262144 HTTP/1.1

Host: solaris.bot.nu:8081

Connection: Keep-Alive

Authorization: Basic dGVzdDoxMjM0NTY=

Kôd 11 - Zahtjev za brisanjem korisničkog artikla

HTTP/1.1 200 OK

Content-Length: 0

Server: Jetty(9.0.1.v20130408)

Kôd 12 - Odgovor na uspješno obrađeni zahtjev za brisanjem korisničkog artikla

2.1.8. Brisanje popisa korisničkih artikala

Kroz aktivnost „Glavni izbornik“ moguće je obrisati popis svih korisničkih artikala. Ovaj

postupak briše lokalnu datoteku s korisničkim artiklima i perzistenciju korisničkih artikala

u bazi podataka. Postupak je nepovratan, na što se korisnika upozori porukom kod pritiska

tipke „Obriši sve artikle“.

Slika 10 - Dijagram toka brisanja svih korisničkih artikala

Odabirom opcije „Obriši sve artikle“ i potvrdom odabira pokreće se zadatak „Obriši sve

artikle“ koji priprema i šalje zahtjev HTTP DELETE na resurs poslužitelja zadužen za

brisanje svih korisničkih artikala. Nakon izvršavanja zadatka „Obriši sve artikle“ korisniku

se ponovo prikazuje aktivnost „Glavni izbornik“. Primjer uspješnog brisanja svih

Page 28: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

24

korisničkih artikala dan je u Kôdovima 13 i 14 koji prikazuju promet ostvaren protokolom

HTTPS između klijentske i poslužiteljske aplikacije.

DELETE /MyFridgeServer/userFood/all HTTP/1.1

Host: solaris.bot.nu:8081

Connection: Keep-Alive

Authorization: Basic dGVzdDoxMjM0NTY=

Kôd 13 - Zahtjev za brisanjem svih korisničkih artikala

HTTP/1.1 200 OK

Content-Length: 0

Server: Jetty(9.0.1.v20130408)

Kôd 14 - Odgovor na uspješno obrađeni zahtjev za brisanjem svih korisničkih artikala

2.1.9. Dohvat popisa korisničkih artikala

Aktivnost „Glavni izbornik“ nudi i mogućnost dohvata svih korisničkih artikala iz baze

podataka. Odabirom tipke „Dohvati sve artikle“ pokreće se zadatak „Dohvati sve artikle“

koji dohvaća koji priprema i šalje zahtjev HTTP GET na resurs poslužitelja zadužen za

dohvat svih korisničkih artikala iz baze podataka. U slučaju uspješnog dohvata osvježava

se lokalna datoteka s korisničkim artiklima te se korisniku nudi pregled popisa svih

artikala. Pri odabiru pregleda popisa artikala korisniku se prikazuje aktivnost „Popis

korisničkih artikala“.

Page 29: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

25

Slika 11 - Dijagram toka dohvata svih korisničkih artikala

Primjer uspješnog dohvata svih korisničkih artikala dan je u Kôdovima 15 i 16 koji

prikazuju promet ostvaren protokolom HTTPS između klijentske i poslužiteljske

aplikacije.

GET /MyFridgeServer/userFood/all HTTP/1.1

Host: solaris.bot.nu:8081

Connection: Keep-Alive

Authorization: Basic dGVzdDoxMjM0NTY=

Kôd 15 - Zahtjev za dohvatom svih korisničkih artikala

HTTP/1.1 200 OK

Content-Type: application/xml

Transfer-Encoding: chunked

Server: Jetty(9.0.1.v20130408)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

Page 30: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

26

<userFoods>

<userFood>

<dateExpiry>2013-06-11T00:00:00+02:00</dateExpiry>

<food>

<barcode>3859889940153</barcode>

<description>Instant suhi pekarski kvasac...</description>

<id>1</id>

<imageLarge>R0lGODlhjwCPAPcAADswNUc4OVY7P...</imageLarge>

<imageSmall>R0lGODlhPAA8APcAAEY7PFpCPVNGR...</imageSmall>

<manufacturer>PODRAVKA d.d.</manufacturer>

<name>Suhi Digo kvasac 5x7 g Podravka</name>

</food>

<id>262145</id>

<validAfterOpening>3</validAfterOpening>

</userFood>

<userFood>

<dateExpiry>2013-06-11T00:00:00+02:00</dateExpiry>

<food>

<barcode>3850104073724</barcode>

<description>Pelati su olju..teni, cijeli...</description>

<id>32768</id>

<imageLarge>R0lGODlhjwCPAPcAABwZLhcYODMbK...</imageLarge>

<imageSmall>R0lGODlhPAA8APcAABobOxUWNi8cM...</imageSmall>

<manufacturer>PODRAVKA d.d.</manufacturer>

<name>Raj..ica pelat 400 g Podravka</name>

</food>

<id>262146</id>

<validAfterOpening>3</validAfterOpening>

</userFood>

<userFood>

<dateExpiry>2013-05-11T00:00:00+02:00</dateExpiry>

<food>

<barcode>5997381317672</barcode>

<description>Divno i ..okoladno ... takav...</description>

<id>32769</id>

<imageLarge>Ap90wp066DcMADL4ADMAQDL1wCEqA...</imageLarge>

Page 31: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

27

<imageSmall>R0lGODlhPAA8APcAAGs1N2w3OXQ5O...</imageSmall>

<manufacturer>DR. OETKER d.o.o. P.P. 51</manufacturer>

<name>Puding od ..okolada x3 147g Dr Oetker</name>

</food>

<id>262147</id>

<validAfterOpening>3</validAfterOpening>

</userFood>

</userFoods>

Kôd 16 - Odgovor na uspješno obrađeni zahtjev za dohvatom svih korisničkih artikala

2.1.10. Izmjena podataka korisničkog profila i brisanje

korisničkog profila

Posljednja opcija koju aktivnost „Glavni izbornik“ nudi je izmjena podataka korisničkog

profila. Pritiskom na tipku „Izmijeni korisničke podatke“ pokreće se aktivnost „Izmjena

korisničkih podataka“. Aktivnost „Izmjena korisničkih podataka“ nudi opcije izmjene i

brisanja korisničkog profila. Nakon unosa izmijenjenih korisničkih podataka korisnik

pritiskom na tipku „Izmjena korisničkog profila“ pokreće provjeru ispravnosti unosa.

Jednako kao i kod stvaranja novog korisničkog profila unos mora zadovoljiti zadana

ograničenja:

Duljina korisničkog imena je između 3 i 15 znakova

Korisničko ime sadrži jedino velika i mala slova, brojeve, crtice i donje crtice

(underscore)

Duljina korisničke lozinke je između 6 i 20 znakova

Lozinka unesena u polje za ponovni unos lozinke jednaka je prvoj lozinci

Unesena adresa elektroničke pošte zadovoljava opći format zapisa adresa

elektroničke pošte

U slučaju ispravnog unosa pokreće se zadatak „Izmjena profila“ koji priprema i šalje

zahtjev HTTP POST na resurs poslužitelja zadužen za izmjenu korisničkih podataka.

Page 32: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

28

Slika 12 - Dijagram toka izmjene podataka korisničkog profila i brisanja korisničkog profila

U slučaju uspješne izmjene korisnički podaci se osvježavaju u lokalnoj datoteci koja sadrži

podatke o korisniku i korisniku se prikazuje aktivnost „Glavni izbornik“. U slučaju

neuspješne izmjene korisničkih podataka korisniku se ponovo prikazuje aktivnost „Izmjena

korisničkih podataka“.

Primjer uspješne izmjene korisničkih podataka dan je u Kôdovima 17 i 18 koji prikazuju

promet ostvaren protokolom HTTPS između klijentske i poslužiteljske aplikacije.

POST /MyFridgeServer/user HTTP/1.1

Content-Length: 146

Content-Type: application/xml

Host: solaris.bot.nu:8081

Connection: Keep-Alive

Authorization: Basic dGVzdDoxMjM0NTY=

Page 33: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

29

<user>

<eMail>[email protected]</eMail>

<username>test</username>

<password>1234567</password>

<notifications>true</notifications>

</user>

Kôd 17 - Zahtjev za izmjenom korisničkih podataka

HTTP/1.1 200 OK

Content-Length: 0

Server: Jetty(9.0.1.v20130408)

Kôd 18 - Odgovor na uspješno obrađeni zahtjev za izmjenom korisničkih podataka

Korisnik u aktivnosti „Izmjena korisničkih podataka“ ima i mogućnost brisanja

korisničkog profila. Postupak brisanja profila je nepovratan, na što se korisnika upozori

porukom kod pritiska tipke „Brisanje korisničkog profila“. Nakon potvrde brisanja profila

izvršava se zadatak „Brisanje profila“ koji priprema i šalje zahtjev HTTP DELETE na

resurs poslužitelja zadužen za brisanje korisničkih profila. U slučaju uspješne obrade

zahtjeva brišu se lokalno perzistirani podaci o korisniku i korisničkim artiklima,

terminiraju se sve aktivnosti aplikacije te se korisniku prikazuje aktivnost „Prijava u

profil“. S poslužiteljske strane brisanje korisničkog profila uzrokuje kaskadu brisanja svih

korisničkih artiklala.

Primjer uspješnog brisanja korisničkog profila dan je u Kôdovima 19 i 20 koji prikazuju

promet ostvaren protokolom HTTPS između klijentske i poslužiteljske aplikacije.

DELETE /MyFridgeServer/user HTTP/1.1

Host: solaris.bot.nu:8081

Connection: Keep-Alive

Authorization: Basic dGVzdDoxMjM0NTY3

Kôd 19 - Zahtjev za brisanjem korisničkog profila

Page 34: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

30

HTTP/1.1 200 OK

Content-Length: 0

Server: Jetty(9.0.1.v20130408)

Kôd 20 - Odgovor na uspješno obrađeni zahtjev za brisanjem korisničkog profila

2.1.11. Uređivanje postavki za udaljenog poslužitelja

Pritiskom na tipku „Uredi postavke poslužitelja“ korisnik pokreće aktivnost „Postavke

poslužitelja“, gdje može promijeniti adresu i vrata udaljenog poslužitelja. Unos novih

vrijednost mora zadovoljiti zadana ograničenja:

Duljina adrese je između 3 i 255 znakova

Vrijednost vrata mora biti između 1 i 65535

S obzirom na to da postojeće programske biblioteke i regularni izrazi za provjeru

ispravnosti adrese poslužitelja ne omogućuju provjeru svih legitimnih adresa, moguće je

unijeti bilo koju adresu koja zadovoljava uvjete minimalne i maksimalne duljine.

Nakon ispravnog unosa podaci se zapisuju u internu datoteku klijenta te koriste za svaku

daljnju komunikaciju s poslužiteljem.

2.2. Poslužiteljska aplikacija

Poslužiteljska aplikacija temelji se na implementaciji REST arhitekture te korisnicima

omogućuje pristup resursima poslužitelja. Aplikacija ima troslojnu arhitekturu te se sastoji

od sloja za pristup bazi podataka, sloja za upravljanje resursima poslužitelja i samim

resursima poslužitelja.

2.2.1. Model baze podataka

Relacijska shema baze podataka sustava myFridge sastoji se od tablice user za pohranu

korisničkih podataka, tablice food za pohranu podataka o prehrambenim artiklima te

tablice userFood za pohranu podataka o korisničkim artiklima.

Svaki zapis u tablici userFood odgovara točno jednom zapisu u tablici food (relacija 1..1) i

točno jednom zapisu u tablici user (relacija 1..1). Zapisi u tablicama user i food odgovaraju

nula ili više zapisa u tablici userFood (relacija 0..N). Korisnici mogu imati nula ili više

korisničkih artikala, a prehrambeni artikli se mogu pojaviti nula ili više puta u tablici

Page 35: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

31

korisničkih artikala. Brisanje korisničkog profila uzrokuje kaskadu brisanja zapisa u tablici

userFood vezanih uz obrisani korisnički profil. Brisanje prehrambenog artikla iz tablice

food nije omogućeno pošto se ti zapisi trajno perzistiraju i koriste pri dodavanju novih

korisničkih artikala.

Tablica user sadrži korisničke podatke:

id - primarni ključ korisničkog profila, dodjeljuje se automatski pri stvaranju profila

email - adresa elektroničke pošte korisnika, mora biti jedinstvena (unique) te ne

smije biti null vrijednost

notifications - atribut koji označava želi li korisnik primati obavijesti o skorom

isteku roka valjanosti korisničkih artikala

username - korisničko ime profila, mora biti jedinstveno te ne smije biti null

vrijednost

password - korisnička lozinka koja je iz sigurnosnih razloga prije pohrane u tablicu

transformirana kriptografskim hash algoritmom SHA1, ne smije biti null vrijednost

Tablica food sadrži podatke o prehrambenim artiklima:

id - primarni ključ prehrambenog artikla, dodjeljuje se automatski pri pohrani

artikla u tablicu

barcode - linijski kôd prehrambenog artikla, mora biti jedinstven te ne smije biti

null vrijednost

name - ime prehrambenog artikla, ne smije biti null vrijednost

manufacturer - ime proizvođača prehrambenog artikla

description - opis prehrambenog artikla

imageLarge - slika prehrambenog artikla dimenzija 750x750 točki (pixels)

imageSmall - slika prehrambenog artikla dimenzija 60x60 točki

Page 36: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

32

Tablica userFood sadrži podatke o korisničkim prehrambenim artiklima:

id - primarni ključ korisničkog artikla, dodjeljuje se automatski pri pohrani artikla u

tablicu

date_expiry - datum isteka roka valjanosti korisničkog artikla, ne smije biti null

vrijednost

date_opened - datum otvaranja korisničkog artikla

is_notified - atribut koji označava je li korisniku poslana obavijest o skorom

istjecanju roka valjanosti

valid_after_opening - broj dana nakon otvaranja artikla tijekom kojih je artikl još

uvijek valjan, ne smije biti null vrijednost

food_id - jedinstveni identifikator prehrambenog artikla, strani ključ iz tablice food,

ne smije biti null vrijednost

user_id - jedinstveni identifikator korisničkog profila, strani ključ iz tablice users,

ne smije biti null vrijednost

Page 37: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

33

Slika 13 - Model baze podataka

2.2.2. Sloj DAO (Data Access Object layer)

Sloj DAO je sloj programske podrške koji omogućuje pristup podacima pohranjenim u

bazi podataka te služi razdvajanju sloja perzistencije od sloja poslovne logike. Na Slici 14

prikazan je dijagram razreda sloja DAO.

Page 38: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

34

Slika 14 - Dijagram razreda sloja DAO

Sloj DAO se sastoji od:

sučelja IGenericDAO koji sadrži prototipove generičkih metoda za ostvarivanje

funkcionalnosti CRUD (Create, Retrieve, Update, Delete) nad podacima

pohranjenim u bazi

Page 39: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

35

sučelja IFoodDAO, IUserDAO te IUserFoodDAO koja nasljeđuju generičko

sučelje IGenericDAO te dodatno sadrže prototipove metoda specifičnih za tipove

entiteta (food, user, userFood) pohranjene u bazi podataka

razreda GenericDAOImpl koji implementira sučelje IGenericDAO i njegove

generičke metode

razreda FoodDAOImpl, UserDAOImpl i UserFoodDAOImpl koji implementiraju

pripadajuća sučelja IFoodDAO, IUserDAO te IUserFoodDAO i njihove metode te

pružaju programsku podršku sloju upravitelja resursima

2.2.3. Upravitelji resursima poslužitelja

Upravitelji resursima poslužitelja služe kao posrednički sloj između sloja DAO te resursa

poslužitelja. Pozivaju metode razreda FoodDAOImpl, UserDAOImpl i UserFoodDAOImpl

te rezultate metoda predaju resursima poslužitelja.

2.2.4. Resursi poslužitelja

Resursi sustava myFridge zaprimaju zahtjeve klijenta te ih prosljeđuju upraviteljima

resursima. Resursi su podijeljeni prema entitetima u bazi podataka za koje primaju

zahtjeve:

/MyFridgeServer/user - put do resursa poslužitelja koji obrađuje zahtjeve za

stvaranjem, dohvatom, modifikacijom i brisanjem korisničkih profila

/MyFridgeServer/food - put do resursa poslužitelja koji obrađuje zahtjeve za

dohvatom prehrambenih artikala

/MyFridgeServer/userFood - put do resursa poslužitelja koji obrađuje zahtjeve za

stvaranjem, dohvatom, modifikacijom i brisanjem korisničkih prehrambenih

artikala

Svaki od resursa odgovara na jednu ili više metoda HTTP te može biti dodatno

parametriziran s podacima (parametri su prikazani vitičastim zagradama):

/MyFridgeServer/food/{barcode} - put do resursa poslužitelja koji obrađuje

zahtjeve HTTP GET za dohvatom podataka o prehrambenom artiklu iz baze

podataka. Ispravan zahtjev je parametriziran s linijskim kôdom prehrambenog

artikla za kojeg se šalje upit

Page 40: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

36

/MyFridgeServer/user/register - put do resursa poslužitelja koji obrađuje zahtjeve

HTTP PUT za registracijom novih korisničkih profila. Zahtjevi za registracijom se

šalju na zasebni put zato što se radi o jedinoj vrsti zahtjeva koji ne prolaze kroz

filter za autentikaciju korisnika te u tijelu zahtjeva HTTP sadrže korisničke podatke

nužne za uspješnu registraciju

/MyFridgeServer/user - put do resursa poslužitelja koji obrađuje zahtjeve HTTP

GET za dohvatom, zahtjeve HTTP POST za modifikacijom i zahtjeve HTTP

DELETE za brisanjem korisničkih profila

/MyFridgeServer/userFood/{barcode}/{expiryDate}/{validAfterOpening} - put

do resursa poslužitelja koji obrađuje zahtjeve HTTP PUT za stvaranjem novih

korisničkih prehrambenih artikala. Ispravan zahtjev je parametriziran s linijskim

kôdom prehrambenog artikla, datumom isteka valjanosti artikla te brojem dana

nakon otvaranja tijekom kojih je artikl još uvijek ispravan

/MyFridgeServer/userFood/{userFoodId}/{openedDate} - put do resursa

poslužitelja koji obrađuje zahtjeve HTTP POST za modifikacijom korisničkog

prehrambenog artikla, odnosno unosom datuma otvaranja artikla. Ispravan zahtjev

je parametriziran s jedinstvenim identifikatorom korisničkog artikla te datumom

otvaranja korisničkog artikla

/MyFridgeServer/userFood/{userFoodId} - put do resursa poslužitelja koji

obrađuje zahtjeve HTTP DELETE za brisanjem korisničkog prehrambenog artikla.

Ispravan zahtjev je parametriziran s jedinstvenim identifikatorom korisničkog

artikla

/MyFridgeServer/userFood/all - put do resursa poslužitelja koji obrađuje zahtjeve

HTTP GET za dohvatom svih korisničkih artikala te zahtjeve HTTP DELETE za

brisanjem svih korisničkih artikala

Page 41: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

37

Slika 15 - Primjer obrade zahtjeva klijenta

Na Slici 15 dan je općeniti primjer obrade zahtjeva klijenta. Klijentski zahtjev stiže na

resurs poslužitelja, resurs poziva odgovarajuću metodu upravitelja, koji poziva metodu

sloja DAO za dohvat podataka iz baze. Sloj DAO šalje upit prema bazi podataka i dohvaća

podatke koje prosljeđuje upravitelju. Upravitelj rezultat upita prosljeđuje resursu, koji

stvara i šalje odgovor na klijentski zahtjev. Iznimka od primjera danog na Slici 15 je

klijentski zahtjev za podacima o očitanom linijskom kôdu koji se ne nalazi u bazi

podataka. U tom slučaju upravitelj resursom poslužitelja zaduženom za dohvat podataka o

prehrambenim artiklima pretražuje Web sjedište Konzum internet prodavaonice

(http://online.konzum.hr) za podacima o traženom prehrambenom artiklu te u slučaju

uspješnog dohvata podatke zapisuje u bazu kako ne bi morao pretraživati Web sjedište za

svaki korisnički upit.

2.2.5. Slanje obavijesti korisnicima o skorom isteku roka

valjanosti artikla

Kako bi se omogućilo slanje obavijesti korisnicima o skorom isteku roka valjanosti artikala

otvoren je korisnički profil na servisu za elektroničku poštu Gmail s adresom

[email protected]. Poslužitelj svakih 30 minuta pokreće zadatak za slanje

obavijesti korisnicima koji iz baze podataka dohvaća listu korisničkih artikala za koje još

nije poslana obavijest, a čiji su korisnici u svom profilu naznačili da žele primati obavijesti.

Zadatak iterira kroz listu korisničkih artikala i pronalazi one artikle kojima uskoro istječe

rok trajanja pomoću algoritma opisanog dijagramom toka na Slici 16.

Page 42: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

38

Slika 16 - Dijagram toka algoritma za slanje obavijesti o isteku roka valjanosti korisničkog artikla

Algoritam iterira po listi korisničkih artikala te za svaki provjerava je li postavljen datum

otvaranja. Ako je datum postavljen zbraja se datum otvaranja s postavljenim brojem dana

nakon kojih je otvoreni artikl još uvijek valjan. Ako je zbroj tih vrijednosti manji od

datuma isteka, zbroj postaje novi datum isteka valjanosti artikla.

Posljednji korak algoritma je provjera je li datum isteka roka valjanosti za 3 dana ili manje

te ako je šalje se obavijest korisniku o skorom isteku roka valjanosti artikla. Obavijest se

šalje e-poštom s adrese [email protected] na adresu e-pošte navedenu pri

stvaranju korisničkog profila. Primjer obavijesti dan je na Slici 17.

Slika 17 - Primjer obavijesti poslane korisniku o skorom isteku roka trajanja korisničkog artikla

Page 43: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

39

2.2.6. Sigurnosne značajke poslužiteljske aplikacije

Poslužiteljska aplikacija implementira nekoliko sigurnosnih mehanizama kako bi osigurala

privatnost korisničkih podataka:

Protokol HTTPS

Sva komunikacija između klijenta i poslužitelja obavlja se putem protokola HTTPS

(Hypertext Transfer Protocol Secure). Protokol HTTPS je protokol HTTP nad slojem

SSL/TLS. Sloj SSL/TLS kriptira podatke sloja TCP te omogućava sigurnu komunikaciju

između klijenta i poslužitelja.

Pohrana hash vrijednosti lozinki u bazu podataka

Sve korisničke lozinke se prije pohrane u bazu podataka transformiraju kriptografskim

hash algoritmom SHA1, koji sažima ulazne podatke te ih transformira u heksadecimalni

zapis dugačak 20 okteta. Pri ovakvom sažimanju podataka originalni podaci se više ne

mogu rekonstruirati, čime je osigurana njihova tajnost u slučaju neovlaštenog pristupa bazi

podataka.

Autentikacijski filter

Svi korisnički zahtjevi prolaze kroz autentikacijski filter, koji iz zahtjeva dohvaća

autorizacijsko zaglavlje (Authorization Header) te analizira njegov sadržaj. Unutar

autorizacijskog zaglavlja zahtjeva nalazi se zaglavlje BASIC, koje sadrži korisničko ime i

lozinku u obliku „ime:lozinka“ kodiranom u Base64 zapis. Sadržaj zaglavlja BASIC se

autenticira naspram korisničkih podataka pohranjenih u bazi, čime se onemogućuje

neautorizirani pristup i modifikacija korisničkog profila i korisničkih artikala. Jedini

poslužiteljski resurs za kojeg nije potrebna autentikacija je resurs za stvaranje novih

korisničkih profila.

Page 44: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

40

Zaključak

Sustav myFridge uspješno implementira praćenje sadržaja hladnjaka pomoću uređaja s

operacijskim sustavom Android te putem jednostavnog aplikacijskog programskog sučelja

pruža mogućnost nadogradnje sustava s klijentskim aplikacijama za pametne telefone s

drugim operacijskim sustavima.

Integracija aplikacije za očitavanje linijskog kôda i klijentske aplikacije te postojanje

velikih baza podataka linijskih kôdova kao što je GEPIR omogućavaju izgradnju sustava

za praćenje bilo koje vrste proizvoda koja se označava linijskim kôdom. S pojavom

dvodimenzionalnih kôdova kao što je QR kôd pruža se i mogućnost pouzdanog zapisa

velike količine informacija u kôd i eliminacije potrebe za pretragom Web sjedišta

proizvođača ili baza podataka linijskih kôdova.

Sunčana Parać

_________________

Page 45: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

41

Literatura

[1] Top Five Smartphone Operating Systems, Shipments, and Market Share, 1Q, 2013.,

http://www.idc.com/getdoc.jsp?containerId=prUS24108913, 17.06.2013.

[2] Android Architecture, 2011., http://elinux.org/Android_Architecture, 16.06.2013.

[3] Tasks and Back Stack, (n.d.), http://developer.android.com/guide/components/tasks-

and-back-stack.html, 18.06.2013.

[4] Representational state transfer, 2013.,

http://en.wikipedia.org/wiki/Representational_state_transfer, 13.06.2013.

Page 46: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

42

Sažetak

Aplikacija za praćenje sadržaja hladnjaka na uređajima s operacijskim sustavom

Android

Sustav myFridge razvijen u sklopu ovog rada služi praćenju sadržaja hladnjaka te

obavještavanju korisnika o isteku valjanosti pojedinih artikala. Tijekom izrade rada

naglasak je bio na raspodijeljenosti sustava i fleksibilnoj arhitekturi temeljenoj na

suvremenim tehnologijama. Razvijeni sustav pruža mogućnost jednostavne nadogradnje s

novim funkcionalnostima i programskom podrškom za klijentske uređaje s drugim

operacijskim sustavima.

Rad kroz nekoliko poglavlja opisuje razvoj sustava, njegove karakteristike, primjenu te

način korištenja. U prvom poglavlju opisane su tehnologije korištene kod implementacije

sustava, u drugom poglavlju opisana je implementacija klijentske aplikacije za uređaje s

operacijskim sustavom Android, u trećem poglavlju opisana je implementacija udaljenog

poslužitelja, model baze podataka sustava te sigurnosne značajke sustava.

Ključne riječi: Android, praćenje sadržaja hladnjaka, REST, očitanje linijskog kôda,

myFridge

Page 47: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

43

Summary

Android client food tracking application

The system developed as part of this thesis enables users to keep track of food items and

notifies them of impending food expiration dates. MyFridge is a distributed system based

on a flexible architecture, which allows for simple system upgrade with new functionalities

and new client applications for devices running on different operating systems.

The thesis describes development of the myFridge system, its characteristics and its

purpose. The first chapter describes the technologies utilised in system development, the

second chapter describes the client application, and the third chapter describes the server

application, including the database model and the system's security aspects.

Keywords: Android, food tracking, REST, barcode scanning, myFridge

Page 48: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

44

Privitak

Upute za konfiguraciju baze podataka

Sustav myFridge zahtijeva instalaciju sustava MySQL, nakon čega je potrebno:

stvoriti nove konekciju na bazu podataka

odabrati naziv, korisničko ime i lozinku za konekciju

stvoriti novu shemu baze podataka s imenom „my_fridge“

Upute za instalaciju poslužiteljske aplikacije

Instalacija poslužiteljske aplikacije zahtijeva instalaciju Web poslužitelja koji implementira

Servlet API. U nastavku su dane upute za instalaciju aplikacije na poslužitelj Jetty:

otvaranje datoteke MyFridgeServer.war/WEB-INF/classes/hibernate.cfg.xml

postavljanje adrese i vrata protokola IP na kojima se nalazi baza podataka,

korisničkog imena te lozinke odabrane pri stvaranju konekcije na bazu podataka u

sljedećim retcima:

<property name="connection.url">jdbc:mysql://localhost:3306/my_fridge

</property>

<property name="connection.username">root</property>

<property name="connection.password">password</property>

prijenos datoteke MyFridgeServer.war u odgovarajući direktorij poslužitelja (za

poslužitelj Jetty to je direktorij webapps)

otvaranje datoteke start.ini unutar direktorija jetty te micanje znakova za komentar

(#) iz redaka sa sadržajem „etc/jetty-ssl.xml“ i „etc/jetty-https.xml“, čime se

omogućuje korištenje protokola HTTPS za komunikaciju između klijenta i

poslužitelja

otvaranje datoteke jetty-https.xml unutar direktorija jetty/etc te postavljanje vrata

na željenu vrijednost za komunikaciju protokolom HTTPS

Page 49: APLIKACIJA ZA PRAĆENJE SADRŽAJA HLADNJAKA NA …• Programske biblioteke (Libraries) • Sloj izvršavanja (Android Runtime) • Aplikacijsko okruženje (Application framework)

45

Upute za instalaciju klijentske aplikacije

Minimalni zahtjevi koje je nužno ispuniti za uspješnu instalaciju klijentske aplikacije su

pametni telefon s operacijskim sustavom Android 2.3.3 Gingerbread (API level 10) te

2MB slobodnog memorijskog prostora na telefonu. Koraci instalacije klijentske aplikacije

su:

prijenos izvršne datoteke myFridge.apk na pametni telefon

pokretanje datoteke

odobravanje pristupa Internetu

postavljanje adrese i vrata protokola IP udaljenog poslužitelja unutar aktivnosti

„Postavke“