73
SVEUČILIŠTE U SPLITU FAKULTET ELEKTROTEHNIKE, STROJARSTVA I BRODOGRADNJE DIPLOMSKI RAD MODELIRANJE I IZRADA APLIKACIJE ZA ANDROID TABLET I WEB SUČELJA ZA UPRAVLJANJE APLIKACIJOM NA DALJINU Marijana Mateljan Split, rujan 2014.

zadatak diplomskog rada

Embed Size (px)

Citation preview

Page 1: zadatak diplomskog rada

SVEUČILIŠTE U SPLITU

FAKULTET ELEKTROTEHNIKE, STROJARSTVA I BRODOGRADNJE

DIPLOMSKI RAD

MODELIRANJE I IZRADA APLIKACIJE

ZA ANDROID TABLET I WEB

SUČELJA ZA UPRAVLJANJE

APLIKACIJOM NA DALJINU

Marijana Mateljan

Split, rujan 2014.

Page 2: zadatak diplomskog rada

S V E U Č I L I Š T E U S P L I T U

FAKULTET ELEKTROTEHNIKE, STROJARSTVA I

BRODOGRADNJE

Diplomski studij: Računarstvo

Smjer/Usmjerenje:

Oznaka programa: 250

Akademska godina: 2013./2014.

Ime i prezime: MARIJANA MATELJAN

Broj indeksa: 852-2012

ZADATAK DIPLOMSKOG RADA

Naslov: MODELIRANJE I IZRADA APLIKACIJE ZA ANDROID TABLET I

WEB SUČELJA ZA UPRAVLJANJE APLIKACIJOM NA DALJINU

Zadatak: Opisati i modelirati aplikaciju koja sadrži kalendar, preglednik vremenske

prognoze, album slika, listu zadataka, listu termina. Aplikacija treba raditi na

android platformi za tablet. Aplikacijom se upravlja s udaljenog uređaja pomoću

web sučelja koje također treba modelirati i izraditi. Koristiti tehnologije

HTML/CSS, JavaScript/jQuery, mySQL, Groovy/Grails, Java.

Prijava rada: 28.02.2014.

Rok za predaju rada: 19.09.2014.

Rad predan: 16.09.2014.

Predsjednik

Odbora za diplomski rad: Mentor:

Prof. Dr. sc. Sven Gotovac Doc. dr. sc. Stipo Čelar

Page 3: zadatak diplomskog rada

1

SADRŽAJ

1 UVOD ................................................................................................................................. 3

2 OPIS KORIŠTENIH TEHNOLIGIJA ................................................................................ 4

2.1 Grails ........................................................................................................................... 4

2.1.1 Groovy .................................................................................................................. 6

2.1.2 MVC model .......................................................................................................... 8

2.2 MySQL ...................................................................................................................... 10

2.2.1 Relacijske baze podataka ................................................................................... 10

2.2.2 Entity ‐ Relationship (ER) dijagram ................................................................... 12 2.3 Groovy Server Pages (GSP) ...................................................................................... 15

2.4 Android platforma ..................................................................................................... 17

2.4.1 Arhitektura Android sustava .............................................................................. 17 2.4.2 Razvoj Android aplikacije .................................................................................. 20

3 WEB APLIKACIJA (WEB SUČELJE) ........................................................................... 21

3.1 Instalacija Groovy/Grails ........................................................................................... 21

3.2 Spajanje na MySQL i izrada baze podataka .............................................................. 25

3.3 Prijava korisnika ........................................................................................................ 29

3.3.1 Postavljanje ........................................................................................................ 29 3.3.2. Izgled procesa registracije ....................................................................................... 31

4 ANDROID APLIKACIJA ................................................................................................ 33

4.1 Izrada Android aplikacije .......................................................................................... 33

4.2 PhoneGap................................................................................................................... 37

4.2.1 Postavljanje okruženja ........................................................................................ 40 4.2.2 „Pakiranje“ u Android aplikaciju- „PhoneGap Build“ ....................................... 43

5 API .................................................................................................................................... 45

6 TESTIRANJE APLIKACIJE ............................................................................................ 49

6.1 Poruke ........................................................................................................................ 50

6.2 Kalendar i zadatci ...................................................................................................... 51

6.3 Tablete ....................................................................................................................... 52

6.4 Kontakti ..................................................................................................................... 54

6.5 Foto album ................................................................................................................. 55

6.6 Novine ....................................................................................................................... 58

6.7 Mogućnost prikaza .................................................................................................... 59

6.8 Vremenska prognoza ................................................................................................. 60

Page 4: zadatak diplomskog rada

2

7 ZAKLJUČAK ................................................................................................................... 61

8 LITERATURA ................................................................................................................. 62

9 PRILOZI ........................................................................................................................... 64

9.1 Kazalo slika i tablica .................................................................................................. 64

9.1.1 Kazalo slika ........................................................................................................ 64

9.1.2 Kazalo tablica ..................................................................................................... 66 9.1.3 Popis kodova ...................................................................................................... 66

9.2 Popis oznaka i kratica ................................................................................................ 66

9.3 Upravljanje verzijama ................................................................................................ 68

10 SAŽETAK/ABSTRACT I KLJUČNE RIJEČI/ KEYWORDS ....................................... 70

Page 5: zadatak diplomskog rada

3

1 UVOD

Ovaj rad pojašnjava postupak izrade Android aplikacije i web sučelja za upravljanje

aplikacijom na daljinu za čiju su izradu korišteni: Groovy/Grails, HyperText Markup

Language (HTML), Cascading Style Sheets (CSS), Groovy Server Pages (GSP), Phonegap,

MySQL.

Članovi Odbora za diplomski rad, dr.sc. Sven Gotovac i dr.sc. Vladan Papić omogućili su

studentima (koji su za to bili zainteresirani) da izrade diplomski u suradnji sa jednom od

sljedećih tvrtki: Simens, Manas i Trovicor. Izabrala sam tvrtku Manas i dobila par ponuđenih

tema od kojih sam izabrala „Tablet aplikacija za starije“. Ideja je bila izraditi aplikaciju za

pomoć starijim i nemoćnima kako bi uz njenu pomoć članovi obitelji iz daljine pomagali

svojim roditeljima, djedovima ili ostalim članovima obitelji. Na tabletu bi se trebalo nalaziti:

vremenska prognoza, uputa za uzimanje lijekova (kada i koji lijek uzeti), kalendar( posjet

doktoru, rođendan…), lista važnih telefonskih brojeva, albumi slika itd.

Diplomski rad „Modeliranje i izrada aplikacije za android tablet i web sučelja za upravljanje

aplikacijom na daljinu“ analizira proces izrade baze podataka za web aplikaciju te izradu

tablet aplikacije u Android operativnom sustavu. U svrhu ovog diplomskog rada napravljena

je (u suradnji s kolegicom Ursom Špikom i mentorstvo djelatnika tvrtke Manas: Iliju Veselicu

i Igora Roglića) web aplikacija „RemoteAssistance“ i tablet aplikacija „RAMobile“.

Rad je podijeljen na sedam cjelina. U drugom poglavlju su ukratko opisane sve korištene

tehnologije. Treće poglavlje objašnjava proces spajanja web aplikacije s bazom podataka i

funkcionalnost login sučelja, a četvrto poglavlje proces izrade Android aplikacije.

Komunikacije između tableta i web-a (API) razrađena je u petom poglavlju, a zatim kroz

testiranje aplikacije u šestom poglavlju su razrađene glavne funkcionalnosti koje te dvije

aplikacije imaju. Zaključne misli donesene su u istoimenom, završnom poglavlju.

Page 6: zadatak diplomskog rada

4

2 OPIS KORIŠTENIH TEHNOLIGIJA

Prilikom izrade korištene su sljedeće tehnologije: Groovy/Grails, HyperText Markup

Language (HTML), Cascading Style Sheets (CSS), Groovy Server Pages (GSP), Phonegap,

MySQL.

2.1 Grails

Grails je „open source okolina“(Slika 2.1), baziran na Java platformi, koji koristi Groovy

programski jezik i njegova dinamička svojstva. Inspiriran je razvojem dinamičkih jezika kao

Rails, Django i TurboGears… To je modularni okolina koji pokušava kroz jezgrene (eng.

core) tehnologije i pripadne module riješiti i ubrzati što više dijelova web razvoja. Grails

smanjuje složenost izgradnje Web aplikacija na Java platformi, gradnjom na već

uspostavljenim Java tehnologijama kao što su „Spring“ i „Hibernate“. Kroz temeljne

tehnologije i povezane dodatke, pokušava riješiti probleme izrade web aplikacija. Razvijen je

za rješavanje nekoliko ciljeva:

osigurava web okvir za Java platformu

ponovno koristi postojeće Java tehnologije kao što su Hibernate i Spring pod jednim

sučeljem

nudi okvir dosljedan razvoja

nudi dokumentaciju za ključne dijelove u okviru:

o „persistence okolina“

o predloške koji koriste GSP

o dinamičke oznake za stvaranje komponenti web stranice

o prilagodljiva i proširiva podrška za Ajax

osigurava potpuni način razvoja, uključujući i web-poslužitelja te automatsko ponovno

učitavanje resursa

Za razliku od tradicionalnih Java web okvira, Grails:

nema EXtensible Markup Language (XML) konfiguraciju

sadrži web server

ima dinamičke metode koje omogućuju obavljanje operacija bez potrebe za

implementacijom sučelja ili proširenja baze klasa. Daje dinamičke metode temeljene

na vrsti klase. [12]

Page 7: zadatak diplomskog rada

5

Slika 2.1 Grails okolina [11]

2010. godine ispitano je 1800 programera o izboru razvojnog okruženje za Java Virtual

Machine (JVM). Rezultati ispitivanja prikazani su na Slika 2.2. S obzirom da je pušten u

veljači 2008.godine i da je relativno mlado okruženje, njegove prednosti su prepoznate kod

nekih programera. Na Tablica 2.1 prikazane su ocjene korisnika iz 2014 godine pri čemu

vidimo značajan pomak u donosu na 2010. godinu.[21]

Slika 2.2 Popularnost razvojnih okruženja 2010.godine

Page 8: zadatak diplomskog rada

6

Tablica 2.1 Ocjene okolina JVM

Brzi razvoj

aplikacija

Kompleksnost

okruženja

Jednostavnost

korištenja

Dokumentacija Testiranje Sigurnost Ukupno

Spring

MVC

2,5 3,5 3 4 4 5 22

Grails 5 3 4,5 5 5 2,5 25

Vaadin 4 4 4 5 3 4 24

GWT 4 4 4 4,5 2,5 1 20

Wicket 3,5 2,5 3 3 4 5 21

Play 5 2 3,5 4 5 4,5 24

Strust 2 4 3 2,5 4 2,5 18

JSF 3 3,5 4 4,5 2 2 19

2.1.1 Groovy

Groovy je agilni dinamični jezik za Java platformu čiji je tvorac James Strachan. Inspiriran je

jezicima poput Pythona, Ruby i Smalltalka. Napredne opcije tih jezika približene su Java

programerima kroz sintaksu jako sličnoj Java sintaksi. Na taj način Java programeri mogu

koristiti neke programske konstrukte o kojima se tek priča da će se dodati u Javu, npr.

„closures“. Groovy se često naziva i skriptnim jezikom, što ne znači da je dobar samo za

pisanje skripti.[10] Osnovne informacije o Groovy-u:

skripte/klase se obično nalaze u .groovy datotekama

skripte se mogu interpretirati ili se mogu kompajlirati u Java .class biblioteke

iz Groovy-a možemo zvati Java kod (i obrnuto)

većina Java ključnih riječi ima isto značenje i u Groovy-u

redoslijed package, import i class deklaracija je isti kao i u Javi

Groovy već unaprijed uvozi pakete groovy.lang, groovy.util, java.lang, java.util,

java.net i java.io

Page 9: zadatak diplomskog rada

7

u Groovy-u sve je objekt (nema primitivnih tipova)

Groovy ima ugrađenu podršku za kolekcije (def praznaLista = [])

Groovy olakšava rad sa stringovima, datumima…

dolazi s podrškom za rad s Java-based data access technology (JDBC), XML-om.

[22]

Valjane Java datoteke su također valjane Groovy datoteke. Iako su ta dva jezika slična,

Groovy kod može biti kompaktniji, jer ne zahtijeva sve elemente koje zahtijeva Java. To

omogućuje Java programerima da postupno nauče Groovy počevši s poznatom Java

sintaksom. [3]

Neke osnovne značajke Groovya:

1. Znak točka-zarez (;)

U C, C++, C#, Javi učestalo se koristi ; . Iako je Groovy-eva sintaksa 99% slična Javinoj,

znak ; može se izostaviti.

2. Ključna riječ „return“

U Groovy-u, posljednji izraz evaluiran u tijelu metode može se vratiti bez potrebe za "return"

ključnom riječi. To je bolje koristiti kod kratkih metoda.

3. „Def“ i „type“

Koristi se ili jedno ili drugo. Odnosno, umjesto def String name = "Marijana", koristi se

String name = ˝Marijana˝

Kada koristimo „def“ u Groovy-u stvarni nositelj tipa (eng.type) je objekt da bi se mogao

dodijeliti bilo koji objekt varijabli definiranoj u „def“ i vratiti bilo koja vrsta objekta.

4. Klase i metode „Public“

Po defaultu, Groovy smatra klasa i metode „Public“ pa to nije potrebno isticati u kodu.

5. Zagrade

Groovy, u nekim slučajevima, omogućuje izostavljanje zagrada.

6. „Get“ i „set“

Page 10: zadatak diplomskog rada

8

Kompajler dohvaća i postavlja vrijednosti. Umjesto :

class Person {

private String name

String getName() { return name }

void setName(String name) { this.name = name }

}

Može se napisati:

class Person {

String name

}

7. Imenovani parametri sa zadanim konstruktorom

Groovy koristi with() metodu koju dodaje na sve objekte bilo koje vrste kako bi izbjegli

ponavljanje prefiksa prilikom ažuriranja instanci

8. Groovy-ev switch

Groovy-ev switch može obraditi bilo koju switch vrijednost i mogu biti izvedene različite

vrste podudaranja.

9. Groovy istina

Svim objektima može se „prisvojiti“ boolean vrijednost, odnosno sve što je null, void ili

prazno je false ili u suprotnom slučaju true. Tako umjesto if (name != null && name.length >

0) {} može se napisati if (name) {}. [3]

2.1.2 MVC model

Model-View-Controller (MVC) model je softverska arhitektura koja potiče odvajanje

problema, tako da:

model rukuje zastupljenošću podataka i operacija

view upravlja kako se podaci promatraju od strane korisnika

Page 11: zadatak diplomskog rada

9

controller nositi kod koji povezuje korisnika sa sustavom. On prima zahtjev ili

događaj od korisnika, priprema podatke i poziva pravilnu poslovnu logiku, a zatim se

vraća view koji predstavlja rezultat akcije korisnika. [5]

Model se u Grails terminologiji naziva Domain i radi na Grails object relational mapping

(GORM) arhitekturi, što znači da okolina (eng.framework) vodi računa o komunikaciji sa

bazom i pretvara upite u potrebne query upite. Izbor baze (MySQL, PostgreSQL ili neka

druga) ovisi o samom korisniku i prilikom promjene baze ne vrše se nikakve promjene u

samoj aplikaciji već se promjeni „driver“ za komunikacijom sa bazom. Dovoljno je sastaviti

upite o željenim podacima iz baze ili pak prosljeđivanje podataka iz Controllera, a Model

vodi računa kako pretvoriti tu sintaksu u query upite ovisno o izabranoj bazi podataka.

Također, brine da li unos može ili ne smije biti null, jedinstveni unos, format e-maila, datuma,

broj itd. Ovim se ubrzava mogućnost izrade osnovnih funkcionalnosti aplikacije.

Grailsov MVC model građen je na Springovom MVC modelu. Koristi Uniform Resource

Locator (URL) za identifikaciju akcije i view-a i procesira CRUD (create, read, update i

delete) operacije korištenjem domene.

Grails Dispatcher Servlet proširuje Spring Dispatcher Servlet koji upravlja okruženjem

korištenjem Grails konfiguracijskih datoteka koje se nalaze u conf folderu aplikacije. Grails

Dispatcher Servlet primi zahtjev kao URL i prelazi na SimpleGrailsController klasu.

SimpleGrailsController radi kao primarni Controller koji upravlja zahtjevima te vraća

odgovor Dispatcheru. SimpleGrailsController delegati traže da

SimpleGrailsControllerHelper koji analizira zahtjev, identificira aktivnost. On izvršava

radnju i vraća ModelAndView koji je natrag u Grails Dispatcher.

Controller akcija poziva Domain za izvršavanje poslovnih funkcionalnost. GORM omogućuje

mapiranje mehanizma između domene i tablica baze podataka. View koristi SiteMesh

dekorativni okvir za dosljedan izgled aplikacije. (Slika 2.3) [6]

Page 12: zadatak diplomskog rada

10

Slika 2.3 MVC

2.2 MySQL

MySQL je besplatan, „open source“ sustav za upravljanje bazom podataka. Uz PostgreSQL

MySQL je čest izbor baze za projekte otvorenog koda, te se distribuira kao sastavni dio

serverskih Linux distribucija. Također postoje inačice i za ostale operacijske sustave poput

Mac OS-a, Windowse itd.

MySQL baza je optimizirana kako bi bila brza na štetu funkcionalnosti. Nasuprot tome, vrlo

je stabilna i ima dobro dokumentirane module i ekstenzije te podršku od brojnih programskih

jezika: PHP, Java , Perl, Python... Pripada bazama relacijskog tipa. [15]

2.2.1 Relacijske baze podataka

Relacijska baza podataka sastoji se od skupa povezanih tablica odnosno relacija. Definicija

jedne relacije naziva se relacijska shema i sastoji se od naziva relacije i popisa atributa

Page 13: zadatak diplomskog rada

11

(obilježja) koji su u sastavu te relacije. Definicija čitave baze podataka naziva se relacijska

shema baze podataka, a sastoji se od relacijskih shema svih relacija koje ulaze u sastav baze

podataka. Relacijska struktura u velikoj je mjeri podudarna s predodžbom događaja stvarnog

svijeta i podataka koje ti događaji generiraju. Zbog svoje jednostavnosti i prilagođenosti

ljudskom shvaćanju podataka i odnosa među njima relacijski model ima prednost pred ostalim

modelima podataka. Relacijska baza podataka danas je najčešće korišteni model baza

podataka. [13]

Upravljanje bazom podataka vrši Sustav za upravljanje bazom podataka (SUBP), eng.

Database Management System (DBMS), odnosno RDBMS za relacijske baze.

RDBMS je program, zapravo programski sustav, koji pohranjuje podatke u obliku međusobno

povezanih tablica, odnosno to je sustav za organiziranje baze podataka i rad s podatcima u

njoj. Ovaj sustav u osnovi obavlja dvije grupe poslova:

definiranje baze podataka(Database Definition)

rad s podatcima(Database Management).

U sklopu ovoga obuhvaćeno je uz ostalo:

definiranje tablica i relacija

unošenje, uređivanje, prikazivanje, pretraživanje, sortiranje i filtriranje podataka

dohvat podataka

zaštita integriteta podataka

kontrola istovremenog pristupa podatcima

zaštita od neovlaštenog korištenja

stvaranje izvještaja

kontrola baze podataka

obnova baze u slučaju "pada".

Tablica je osnovni objekt relacijske baze podataka i u njoj su pohranjeni podatci. Redak

tablice naziva se Relacija i pojmovno je podudaran sa slogom podataka i predstavlja

informaciju o jednom subjektu (učenik, zaposlenik, škola...), dakle relacije su pohranjene kao

tablice. Tablica (relacija) sastoji se od redaka (slogova) i stupaca koji se nazivaju atributi i

pojmovno odgovaraju polju podataka. Istovrsni objekti (recimo učenici) prikazani su u tablici

redcima koji su opisani stupcima ili poljima(Ime, Prezime...). Osnovne karakteristike tablice

(relacije) su:

Page 14: zadatak diplomskog rada

12

ne postoje dva jednaka retka

ne postoje dva stupca jednakih imena

redoslijed redaka nije bitan

redoslijed stupaca nije bitan.

Polje ili više polja (Atributa) kojima se može jednoznačno definirati redak (slog) tablice

naziva se primarni ključ. Primarni ključ upotrebljava se za povezivanje tablica i ima

dvostruku ulogu: jednoznačno definira retke tablice, a preko njega se ostvaruje i veza s

drugim tablicama. Primarni ključ mora zadovoljavati:

vrijednost primarnog ključa mora biti jednoznačna

primarni ključ ne može imati vrijednost NULL (ne može biti prazno polje)

primarni ključ mora postojati kod kreiranja i spremanja sloga.

Njegova uloga je da onemogućavaju ponavljanje podataka u tim poljima i njima osiguravamo

jedinstvenost svih podataka u poljima na koja smo ih postavili. [14]

2.2.2 Entity ‐ Relationship (ER) dijagram

Izrada ER modela predstavlja stvaranje konceptualne sheme, koja predstavlja apstrakciju

realnog svijeta. Ne postoji formalni način pretvorbe korisničkih zahtjeva u ER model. [14]

Modeliranje entiteta i veza zahtijeva da se svijet promatra preko tri kategorije:

entiteti: objekti ili događaji koji su nam od interesa

veze: odnosi medu entitetima koji su nam od interesa

atributi: svojstva entiteta i veza koja su nam od interesa.

Entitet je svaki objekt koji se može razlikovati od svih ostalih objekata što znači da se može

jednoznačno identificirati. Entitet može biti čovjek, predmet/objekt, ali i događaj ili pojava

(nogometna utakmica, praznik, servisiranje auta i sl.). Grupa entiteta istog tipa naziva se skup

entiteta. Atributi su svojstva entiteta i njihovih skupova. Svaki skup entiteta je u potpunosti

opisan i određen skupom atributa. Za svaki atribut postoji skup dozvoljenih vrijednosti koji se

naziva domenom atributa.

Page 15: zadatak diplomskog rada

13

Veza (odnos) je neka vrsta asocijacije između dva ili više entiteta pri čemu entiteti ne moraju

pripadati različitim skupovima entiteta. Putem ER modela najlakše se izražavaju binarni

odnosi, dok se proizvoljni n-arni odnosi teže izražavaju. Kao i skupovi entiteta tako i skupovi

odnosa mogu imati svoje atribute.

Razlikujemo 3 osnovna tipa veza (odnosa) između entiteta:

jedan : jedan (1 : 1)

o jedan primjerak prvog tipa (skupa) entiteta može biti u vezi s najviše jednim

primjerkom drugog tipa entiteta, i obrnuto

jedan : mnogo (1 : n)

o jedan primjerak prvog tipa entiteta može biti u vezi s 0, 1 ili više primjeraka

drugog tipa entiteta, no jedan primjerak drugog tipa može biti u vezi s najviše

jednim primjerkom prvog tipa

mnogo : mnogo (m : n)

o jedan primjerak prvog tipa entiteta može biti u vezi s 0, 1 ili više primjeraka

drugog tipa entiteta, i obrnuto.

Kod nekih skupova atributa ne postoji dovoljan broj atributa koji bi mogli da sačinjavaju

primarni ključ. Takvi skupovi se nazivaju slabi skupovi entiteta. Za razliku od njih jaki

skupovi entiteta su oni koji imaju primarni ključ. Vrlo često se zbog toga u slabim skupovima

entiteta dodaju neki fiktivni atributi putem kojih će se jednoznačno odrediti entiteti u tom

slabom skupu. Skupovi odnosa također imaju svoje primarne ključeve. Po definiciji primarni

ključ skupa odnosa jeste unija primarnih ključeva svih skupova entiteta koji ulaze u taj odnos,

tj.:

PK(R) = PK(Ei), gdje je EiR. (1)

Page 16: zadatak diplomskog rada

14

Slika 2.4 ER dijagram aplikacije

Ovaj ER dijagram ima zvjezdastu strukturu. Tablica User je povezana sa tablicama Medicine,

Album, Message, News, Task, Contact, User_Role vezom 1:N što označava da svaki korisnik

može imati više albuma, lijekova, zadataka itd. Vezom 1:1 su povezane tablice User i Setting

što označava da svaki korisnik ima svoje postavke kojima može upravljati. Tablica Album je

povezana s tablicom Photo vezom 1:N jer u svakom albumu može biti više slika. Svaka

tablica ima svoj primarni ključ (ID) i određena je pripadajućim atributima (Slika 2.4).

Page 17: zadatak diplomskog rada

15

2.3 Groovy Server Pages (GSP)

GSP je prezentacijski jezik za web aplikacije koji dozvoljava miješanje statičkog i

dinamičkog sadržaja u istom dokumentu i kao rezultat dobiva se dinamički HTML, XML ili

drugi tip dokumenta. Taj Grailsov alat za generiranje View-a dizajniran je da bude sličan

tehnologijama poput Active Server Pages (ASP) i Java Server Pages (JSP), ali i da bude

intuitivniji i fleksibilniji. Smješteni su u View-u i obično su izvedeni automatski ili

pozivanjem metode : render (view: "index"). GSP uključuje predefinirane varijable kao što

su:

application - javax.servlet.ServletContext instanca

applicationContext - Spring ApplicationContext instanca

flash - flash objekt

grailsApplication - The GrailsApplication instanca

out – Odgovor za pisanje u nom toku

params - Params objekt za ponovno vraćanje zahtjeva parametara

request - HttpServletRequest instanca

response - HttpServletResponse instanca

session - HttpSession instanca

webRequest - GrailsWebRequest instanca. [16]

GSP je dosta sličan HTML jeziku. Razlika je u „g“ oznakama (eng.tags). Sve GSP oznake

počinju sa prefiksom „g:“. Mogu u sebi imati i tijelo (eng.body) i atribute čije vrijednosti

moraju sadržavat „$“. U Grailsu se oznake mogu same kreirati, a postoje i defaultni:

<g:set var> služi za definiranje varijabli unutar GSP. Varijable mogu biti smještene u

jedno od ponuđenih polja:

o page – Pristup trenutnoj stranici (default)

o request – Pristup trenutnom zahtjevu

o flash – Smješten unutar flash pristupa kako bi bio dostupan za sljedeći

zahtjev

o session – Pristup korisničkoj sesiji

o application – Pristup širom aplikacije

Pristup se može specificirati koristeći scope atribut: <g:set var="now" value="${new

Date()}" scope="request" />.

Page 18: zadatak diplomskog rada

16

<g:if>, <g:else> GSP podržava i logičke oznake koji se koriste za grananje

<g:each> i <g:while> oznake za iteraciju

<g:findAll> i <g:grep> koriste se za dohvat i sortiranje

<g:link> oznaka se koristi za pomoć pri povezivanju s kontrolerima i akcijama.

Omogućuje da se odabere Controller i akcija koja automatski radi link na temelju

URL mapiranja

<g:form> služi za rad sa HTML formama i poljima. Url atribut omogućuje da se

specificira koji Controler ili akciju mapirati

o <textField> za polje unosa tipa tekst

o <passwordField> za polje unosa tipa lozinka

o <checkBox> za unos okvira za izbor

o <radio> za polje unosa tipa radio

o <hiddenField> za skriveni unos

o <select> za HTML okvire za odabir

<g:actionSubmit> uz funkcionalnost klasičnog „submit“ botuna posjeduje

funkcionalnost izbora akcije za pohranu.

Glavna razlika između GSP i drugih tehnologija koji koriste okvire je u tome što GSP oznake

mogu biti pozvane kao redovne oznake ili kao metoda poziva od Controller-a, knjižnica

oznaka ili GSP view-a.

Grails iskorištava Sitemesh (alat za dekoriranje) za podršku „Layout-a View-a“. Layouts su

smješteni unutar View/Layouts datoteke. Postoji:

layoutTitle – je naslov glavne stranice

layoutHead – je sadržaj head oznake stranice

layoutBody – je sadržaj body oznake stranice.

Koriste se i „r“ oznake za uključivanje resursa. Tako prilikom upotrebe <r:require

module="jquery"/> uključujemo sve potrebne resurse za jQuery. Kada su postavljeni resursi

koje GSP stranica zahtijeva, okolina treba pružiti linkove na tim resursima u pravo vrijeme.

Da bi se to postiglo, potrebno je uključiti </r: layoutResources> oznaku dva puta na stranici i

to na kraju head i body oznaka.

Za dodavanje JavaScript-a koristi se <r:script> oznaka. [5]

Page 19: zadatak diplomskog rada

17

2.4 Android platforma

Android je nova platforma koja se na tržištu prvi put pojavila 21. listopada 2008. godine,

te je u samo dvije godine stekla veliku popularnost. Za takav rast zaslužni su Google i

„Open Handset Alliance“ (udruženje proizvođača koji nemaju svoj vlastiti operativni

sustav). Poznatiji proizvođači koji podržavaju Android su HTC, Samsung Electronics,

LG, Motorola i Sony Ericsson. Na Slika 2.5 prikazan je prvi uređaj na Androidu.

Slika 2.5 HTC Dreams- prvi uređaj na Android operativnom sustavu

Android se zasniva na Linux kernelu jer su se mogle iskoristi postojeće dobro testirane

komponente koje dokazano dobro obavljaju svoj posao. Zadnja inačica Androida, 2.2 koristi

kernel 2.6.32. [17]

2.4.1 Arhitektura Android sustava

Svaka Android aplikacija izvršava se u svom vlastitom procesu na vlastitoj instanci Dalvik

virtualnog stroja (eng. virtual machine). Dalvik je napisan tako da uređaj može učinkovito

izvodit više virtualnih strojeva u isto vrijeme. Dalvik virtualni stroj izvršava datoteke u Dalvik

Executable (.dex) formatu koji je optimiziran za minimalno zauzeće memorije. Zasnovan je

na spremničkom procesoru (eng. register machine) i izvodi klase prevedene pomoću Java

Page 20: zadatak diplomskog rada

18

prevoditelja. Prevedena java klase transformiraju se u .dex format pomoću ugrađenog “dx”

alata. Na Slika 2.6 prikazana je arhitektura Android sustava.

Slika 2.6 Arhitektura Android sustava

Sustav koristi Linux kernel za osnovne funkcionalnosti kao što su rad s navojima (eng.

threading), upravljanje memorijom na osnovnoj razini, sloj apstrakcije hardvera (eng.

hardware abstraction layer) i umrežavanje.

Biblioteke koje Android koristi su:

• surface manager – prikaz prozora za pojedine aplikacije

• Open Graphics Library (OpenGL) – biblioteka koja služi za grafički2D i 3D prikaz

• Scene GraphLlibrary (SGL) – biblioteka na vrhu OpenGL biblioteke koja služi za

2D i 3D prikaz

• Media Framework – odgovoran za reproduciranje i rad sa multimedijalnim

datotekama

• Free Type – fontovi

Page 21: zadatak diplomskog rada

19

•. Secure Socket Laye (SSL) – omogućuje sigurnosnu komunikaciju preko Interneta

• SQLite – implementira bazu podataka (eng. database engine)

• WebKit – jezgra web preglednika koji podržava Javascript i ostale standarde na

mobilnom uređaju

• System C library (Libc) – implementacija standardne C-ove sistemske biblioteke

(libc) izvedene iz operativnog sustava Berkeley Software Distribution (BSD).

Idući sloj u arhitekturi Android operativnog sustava je radno okruženje (eng.Android runtime)

kojeg čine virtualni stroj Dalvik i jezgrene biblioteke (eng. corelibraries). Jezgrene biblioteke

pisane su u programskom jeziku Java i predstavljaju sve osnovne klase poput klasa za

manipulaciju kolekcijama, klasa za komunikaciju s okolinom i sl. Androidove jezgrene

biblioteke razlikuju se od standardnih biblioteka u Java Standard Edition (J2SE) i Java 2

Micro Edition (J2ME). Sloj aplikacijskog okvira (eng. Application Framwork) napisan je u

Java programskom jeziku i sadrži programske komponente koje koriste sve aplikacije

uređaja. Neki od važnijih elemenata ovog sloja su:

• activitiy manager – upravljanje životnim ciklusom aplikacije

• package manager – drži informacije o aplikacijama koje su instalirane na sustav

• window manager – upravljanje aplikacijskim prozorima

• telephony manager – application programming interface (API) koji se koristi pri

izradi aplikacija za upravljanje pozivima

• content provider – odgovoran za zajedničko korištenje podataka od strane više

aplikacija

• resource manager – služi za pohranu dijelova aplikacije koji nisu kod (npr. slike)

• view system – sadrži bazu gotovih grafičkih prikaza i alata (eng. widget)

• location manager – upravljanje lokacijski temeljenim uslugama

• notification manager – upravljanje obavijestima i događanjima (npr. dospijeće

poruke, nadolazeći sastanak).

Aplikacijski sloj je zadnji sloj u arhitekturi sustava Android i čine ga korisničke

aplikacije. Ovaj sloj je jedini koji je vidljiv krajnjem korisniku. U tom sloju standardno su

uključene neke od osnovnih aplikacija poput web preglednika, liste kontakata, telefonskog

imenika, sustava za nabavku Android aplikacija (Android Market), itd. [18]

Page 22: zadatak diplomskog rada

20

2.4.2 Razvoj Android aplikacije

Za razvoj aplikacija na Android sustavu potrebno je imati Android Software Development Kit

(SDK). Android SDK obuhvaća osnovnu kolekcija razvojnih alata. Osobina tih alata je da ih

je moguće koristiti na velikom broju različitih operativnih sustava, točnije na svim

operativnim sustavima koji imaju mogućnost rada s Java aplikacijama. Pored razvojnih alata

SDK sadrži emulator koji omogućuje testiranje izvođenja Android aplikacija tijekom razvoja,

emulator, sustav za otkrivanje grešaka u programskom kodu (eng. Dalvik Debug Monitor

Server – DDMS) i Android virtualni stroj koji omogućuje izvođenje aplikacija.[17]

Eclipse je dobro razvojno okruženje koje se može iskoristiti za razvoj Android aplikacija.

Okruženje se može koristiti na većini platforma na kojima se mogu izvesti Java aplikacije.

Kako bi se olakšao razvoj aplikacija postoji dodatak za Eclipse razvojno okruženje (eng. ADT

Eclipse plugin) u koje je integriran sustav za otkrivanje grešaka te prikaz gotovih aplikacija.

Glavna prednost Androida u odnosu na konkurentske operativne sustave je otvorenost koja uz

kvalitetan SDK i Javu programski jezik omogućuje vrlo brzo učenje i razvoj aplikacija. Za

procesorski i vremenski zahtjevne aplikacije postoji mogućnost korištenja Native

Development Kit (NDK). Na taj način imamo mogućnost zaobići Android virtualni stroj i

izvršavati aplikacije izravno na platformi određenog mobilnog uređaja. Na takav način se

izvođenje aplikacija višestruko povećava, ali se gubi na prenosivosti aplikacije između

različitih uređaja. Android aplikacije omogućuju komunikaciju korisnika pomoću stvarne

tipkovnice, virtualne tipkovnice ili direktnom manipulacijom ikonama na ekranu. Osnovni

problem Android platforme je taj što je još uvijek relativno nova. Nove verzije okruženja e

velikom brzinom (od nekoliko verzija do nekoliko desetaka verzija godišnje) tako da je

razvojnim timovima ponekad teško pratiti taj užurbani razvoj.[18]

Page 23: zadatak diplomskog rada

21

3 WEB APLIKACIJA (WEB SUČELJE)

Za aplikaciju je bilo potrebno instalirati Grails 2.2.x, MySql, Java Development Kit (JDK)

(minimalno 1.6 verzija). Sve potrebne aplikacije su dohvaćene sa službenih stranica i

instalirane po defaultnim postavkama. Grails je samo mapa sa bibliotekama pa je bilo

potrebno dohvatiti i „Groovy/Grails Tool Suite“ (GGTS) za razvoj aplikacije.

3.1 Instalacija Groovy/Grails

Zbog funkcionalnosti, trebalo je postaviti i naredbeno okruženje (eng. command line

environment). Potrebno je odabrati stavku Properties desnim klikom miša na My Computer u

Start izborniku (Slika 3.1).

Slika 3.1 Properties

Nakon toga se otvori prozor „System“ u kojem biramo opciju „Advanced System Settings“ pa

„Environment Variables“ (Slika 3.2).

Page 24: zadatak diplomskog rada

22

Slika 3.2 Environment Variables

Koristeći naredbu „new“ potrebno je dodati nove varijable JAVA_HOME i GRAILS_HOME

koje će sadržavati putanju do odredišnih datoteka JDK i Grailsa. Te varijable je potrebno

dodati uz naredbu „Edit“ u već postojeći Path upisujući : %JAVA_HOME%\bin\;

%GRAILS_HOME%\bin\; (Slika 3.3).

Slika 3.3 Namještanje varijabli

Page 25: zadatak diplomskog rada

23

Kako bi izbjegli izradu aplikacije korištenjem „Command Prompt“ prozora, instalira se GGTS

koji je građen na „Eclipse“ platformi koja je izvorno namijenjena za Java programere. Eclipse

je „open source“ platforma pa dozvoljava drugim programerima da koriste dodatke i za druge

jezike među kojima je i Groovy/Grails. Dohvatom GGTS-a dohvaćamo zapravo Eclipse sa

dodatcima za Groovy/Grails. GGTS (Slika 3.4) može se pronaći na službenoj stranici Grailsa

u kartici „Products & Services“.

Slika 3.4 Izgled GGTS-a

Odabirom File New Grails Project ili preko konzole upisivanjem naredbe: grails

create-app name kreira se projekt koji sadrži strukturu koja je prikazana na Slici 3.5. Domain

je Model u MVC strukturi i sadrži lokaciju domain klasa. Controllers i Views sadrže

controllere, odnosno view-ove. U config-u su smješteni konfiguracijski file-ovi. On sadrži i

dva opcionalna file-a: spring i hibernate. Svaki konfiguracijski file ima svoju svrhu:

ApplicationResources.groovy – jezgra Grailsovih resursa, mjesto gdje se definiraju

statički resursi (css, js…) kako bi Grails definirao njihov poredak učitavanja

BootStrap.groovy - groovy klasa koja sadrži metode init() i destroy() koje će se

izvoditi svaki put kad aplikacija se pokreće ili se zaustavlja

BuildConfig.groovy – konfiguracija izgradnje projekta

Config.groovy – za postavljanje Grailsovih unutarnjih opcija koje nisu potrebne za

gradnju. Često se koristi za mijenjanje defaultnih postavki za dodatke

Page 26: zadatak diplomskog rada

24

DataSource.groovy – za konfiguraciju baze podataka

UrlMappings.groovy - Omogućuje mapiranje URL obrazaca Controllerima i akcijama.

U test se generiraju testne klase, a web-app sadrži sve datoteke koje su potrebne za view kao

npr. css file, slike, skriptni file-ovi itd. Sadržaj Grails projekta prikazan je na Slika 3.5

Slika 3.5 Sadržaj Grails projekta

Page 27: zadatak diplomskog rada

25

3.2 Spajanje na MySQL i izrada baze podataka

Prvo je potrebno kreirati bazu na MySQL Workbench-u (Slika 3.6 i Slika 3.7.)

Slika 3.6 MySQL Workbench Slika 3.7 Kreiranje baze

Potom ju je potrebno konfigurirati u GGTS. Izaberemo DataSource u Config folderu i tu

nadopunjujemo kod svojim podatcima:

dataSource {

pooled = true

driverClassName = "com.mysql.jdbc.Driver"

dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"

username = "root"

password = "root"

}

Ispis koda 3.1Konfiguracija DataSource.groovy

pri čemu je:

driverClassName-ime MySQL drivera

dialect- vrsta Structured Query Language (SQL) dijalekta (InnoDBD bolji zbog

stranih ključeva)

username i password – korisničko ime i lozinka postavljeni u MySQL bazi prilikom

instalacije.

Na mjesto url dodajemo poveznicu s MySQL bazom

jdbc:mysql://localhost/dipl?useUnicode=yes&characterEncoding=UTF-8 gdje je dipl ime

baze napravljene u MySQL-u. dbCreate može se postaviti na :

Page 28: zadatak diplomskog rada

26

create - ruši postojeću bazu i stvara novu bazu na početku, ispuštajući postojeće

tablice

update - stvara one tablice koje su nanovo kreirane, i ažurira trenutnu bazu, bez

rušenja tablice ili podataka

create-drop – isto kao i „create“ samo što ruši tablice prilikom gašenja aplikacije

validate – ne radi nikakve promjene na bazi.

Koristeći entitete i veze ER dijagrama, u Grails-u kreiramo bazu podataka. Kreiramo Domain

klase (Slika 3.8 i Slika 3.9.) po entitetima ER dijagrama. Entiteti su nazivi tablica.

Slika 3.8 Kreiranje Domain klase Slika 3.9 Domain klase

Potom se unose atributi i veze. Atributi su svojstva i odgovaraju retku tablice. Primjer tablice

setting:

class Setting {

Boolean message

Boolean task

Boolean album

Boolean medicine

Page 29: zadatak diplomskog rada

27

Boolean number

Boolean news

Boolean weather

}

Ispis koda 3.2 Domain klasa Setting

Kreiranjem Domain klase Setting, kreira se tablica Setting u MySQL koja sadrži retke:

message, task, album, medicine, number, news, weather.

static constraints = {

message nullable: true

task nullable: true

album nullable: true

medicine nullable: true

number nullable: true

news nullable: true

weather nullable: true

}

Ispis koda 3.3 Omogućavanje NULL vrijednosti

Dodavanjem Ispis koda 3.3 omogućujemo da te vrijednosti mogu biti NULL, odnosno da ih

korisnik može i ne mora označiti u aplikaciji. Nakon što se kreiraju sve Domain klase u

Grails-u (Slika 4.9.), automatski se sve to generira u MySQL (Slika 3.10).

Page 30: zadatak diplomskog rada

28

Slika 3.10 Generirana baza u MySQL-u

Nakon postavljanja entiteta (tablica) i atributa (redaka tablice) još je potrebno kreirati veze,

odnosno odnose među tablicama. U ovoj aplikaciji koriste se veza 1:1 i 1:N. 1:1 veže tablicu

Setting sa tablicom User pa je potrebno u Domain klasama User i Setting dodati : static

belongsTo = [ user: User ] odnosno static belongsTo = [ setting: Setting ]. Kod veze 1:N

potrebno je dodati, uz onu tablicu koja ima N, static hasMany, a uz tablicu koja ima 1 static

belongsTo. Tako u tablici User : static hasMany = [albums: Album, contacts: Contact,

medicines: Medicine, messages: Message, news: News, tasks: Task] i npr. u tablici Message:

static belongsTo = [user: User]. Slika 3.11 prikazuje tablicu u MySQL-u.

Page 31: zadatak diplomskog rada

29

Slika 3.11 MySQL tablica

Svaka promjena u Domain klasama zahtjeva postavljanje DataSources na create. Nakon

kreiranja izmjena, vraća se na update.

3.3 Prijava korisnika

Za prijavu i registraciju korisnika koristio se Spring Security Core dodatak. To je moćna

biblioteka koja osigurava aplikaciju i sadrži mnogo opcija. Temelji se na Spring-u pa se lako

može integrirat u Grails projekt. On pruža osnove potrebne za kontrolu pristupa u paketu koji

je jednostavan za korištenje na temelju korisnika (User) i uloga (Role).

3.3.1 Postavljanje

U konzoli (Ctrl + Shift + G) upiše se sljedeća naredba: install-plugin spring-security-core

(Slika 3.12) kojom se dohvaća i instalira dodatak.

Slika 3.12 Instaliranje Spring Security Core dodatka

Page 32: zadatak diplomskog rada

30

Nakon toga se upisuje nova naredba u konzolu s2-quickstart test101111 User Role pri čemu

je test101111 ime projekta, a User i Role nazivi Domain klasa. Ova naredba generira User i

Role Domain klase te Login i Logout Controllere.[1] Ovo služi samo prijavu i odjavu

korisnika. Spring Security sadrži i druge dodatke, među kojima je Spring Security User

Interface (Spring Security UI) koji se nadovezuje na Spring Security Core i osigurava CRUD

funkcije i ostale korisničke tijekove rada. Uz Spring Security UI, dodaje i mail, jquery, jquery

UI i famfamfam dodatke. Zbog mogućnosti registracije novih korisnika dodan je i taj dodatak

naredbom u konzoli: install-plugin spring-security-UI. Sve akcije su defaultno zabranjene i

potrebno ih je dozvoliti ili omogućiti u config.groovy: [4]

grails.plugin.springsecurity.ui.forgotPassword.postResetUrl = false

grails.plugin.springsecurity.logout.postOnly = false

grails.plugin.springsecurity.userLookup.userDomainClassName = 'test101111.User'

grails.plugin.springsecurity.userLookup.authorityJoinClassName =

'test101111.UserRole'

grails.plugin.springsecurity.authority.className = 'test101111.Role'

grails.plugin.springsecurity.controllerAnnotations.staticRules = [

'/': ['permitAll'],

'/**/favicon.ico': ['permitAll'],

'/register/index': ['permitAll'],

'/register/forgotPassword': ['permitAll'],

'/register/register': ['permitAll'],

'/register/verifyRegistration': ['permitAll'],

'/register/resetPassword': ['permitAll'],

]

Ispis koda 3.4 Omogućavanje akcija za Login i Logout

Za registraciju napravljen je korisnički račun na gmail-u i dodane sljedeće postavke u

config.groovy:

grails {

mail {

Page 33: zadatak diplomskog rada

31

host = "smtp.gmail.com"

port = 465

username = "[email protected]"

password = "manas1234"

props = ["mail.smtp.auth":"true",

"mail.smtp.socketFactory.port":"465",

"mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",

"mail.smtp.socketFactory.fallback":"false"]

}}

Ispis koda 3.5 Registracija

3.3.2. Izgled procesa registracije

Izgled i proces registracije opisan je kroz slike:Slika 3.13, Slika 3.14, Slika 3.15.

Slika 3.13 Prijava i registracija korisnika

Slika 3.14 Unos korisničkih podataka potrebnih za registraciju

Page 34: zadatak diplomskog rada

32

Slika 3.15 Uspješno kreiran korisnik i poslana potvrda na mail

Dodatci se spremaju u datoteci „plugins“ i svako dodatak ima svoje Controllere, Domain,

config itd. (Slika 3.16) u kojima se vrše promjene i generira funkcionalan kod.

Slika 3.16 Plugins

Page 35: zadatak diplomskog rada

33

4 ANDROID APLIKACIJA

Za izradu Android aplikacije odlučeno je korištenje Phonegap-a zbog brojnih prednosti koje

ima i zbog jednostavnijeg korištenja. S obzirom da je Android aplikacija zamišljena da bude

samo za čitanje te ne zahtjeva pristup kameri, Global Position Sytem-u (GPS) itd. može se

koristiti PhoneGap.

4.1 Izrada Android aplikacije

Zbog korištenja PhoneGap-a bilo je potrebno kreirati HTML, CSS i JavaScript datoteke sa

funkcionalnostima koje bi aplikacija trebala imati. JavaScript je korišten za Ajax pozive

kojima se, uz pomoć API-ja, dohvaćaju podatci. HTML i CSS su korišteni za sami izgled

aplikacije. Izgled aplikacije prikazan je na slikama: Slika 4.1, Slika 4.2 i Slika 4.3.

Slika 4.1Početna stranica

Page 36: zadatak diplomskog rada

34

Slika 4.2 Kontakti

Slika 4.3 Vremenska prognoza

Za dohvat podataka potrebno je kreirati Ajax pozive sa URL-ovima od API funkcija. Prikaz

pojedinih poziva prikazan je na: Ispis koda 4.1 i Ispis koda 4.2.

Page 37: zadatak diplomskog rada

35

$(document).ready(function(){

$.ajax({

url: "

http://cloud7.extensionengine.com:8080/remoteAssistance/API/getContactsList?userId

=2",

success: function(data){

$.each(data.contacts, function(index, value){

$(".contact_text").append("<div>" + value.name + "<hr>" +

"</div>");

$(".contact_text1").append("<div>"+ value.number + "<hr>"+

"<div>");

});

}

});

});

Ispis koda 4.1 Dohvat liste kontakata

function getUrlParameter(sParam)

{

var sPageURL = window.location.search.substring(1);

var sURLVariables = sPageURL.split('&');

for (var i = 0; i < sURLVariables.length; i++)

{

var sParameterName = sURLVariables[i].split('=');

Page 38: zadatak diplomskog rada

36

if (sParameterName[0] == sParam)

{

return sParameterName[1];

}

}

}

var albumId = getUrlParameter('albumId');

//var albumId = 5;

$(document).ready(function(){

$.ajax({

url: "

http://cloud7.extensionengine.com:8080/remoteAssistance/API/getAlbumPhotosList?u

serId=2&albumId="+albumId,

success: function(data){

$.each(data.photos, function(index, value){

var img = '<img

src="http://localhost:8080/test101111/static/' + value + '" height="100"/>';

$(".photo").append(img);

});

}

});

});

Ispis koda 4.2 Dohvat slika za pojedini album

Page 39: zadatak diplomskog rada

37

4.2 PhoneGap

PhoneGap je mobilna razvojna okolina koju je proizveo Nobit, a kupio Adobe Systems

2011.godine. On omogućuje softverskim programerima izradu aplikacija za mobilne uređaje

koristeći JavaScript, HTML5 i CSS3, umjesto na uređajima specifičnim jezicima, kao što su

objektivni C, C# ili Java. On pakira HTML, CSS i JavaScript kod u kod koji zahtjeva

platforma na kojoj se gradi aplikacija (Slika 4.4). To je glavna prednost PhoneGap-a. [7]

Slika 4.4 Način rada PhoneGap-a

PhoneGap proteže značajke HTML i JavaScript za rad s uređajem. Nastale aplikacije su

hibridne, što znači da nisu ni mobilne izvorne aplikacije (jer se renderiranje izgleda vrši

putem web pregleda, umjesto na platformi izvornog korisničkog okvira), niti isključivo

bazirane na web-u (jer nisu samo web aplikacije, ali su pakirani kao aplikacija za distribuciju,

te imaju pristup izvornim API-uređajima) (Slika 4.5).

Page 40: zadatak diplomskog rada

38

Slika 4.5 Razlika između hibridne i izvorne aplikacije

Softverska podloga PhoneGap-u je Apache Cordova. PhoneGap podržava razne platforme:

Androd, iPhone Operating System (iOS), BlackBerry, Google Android, LG webOS,

Microsoft Windows Phone (7 i 8), Nokia Symbian OS, Tizen (SDK 2.x), Bada, Firefox OS i

Ubuntu Touch. Tablica 4.1 prikazuje koje značajke i u kojem OS-u podržava. [19]

Na Slika 4.6 prikazana je struktura PhoneGap arhitekture. Na desnoj slici je prikazana

slojevita struktura.

Slika 4.6 Arhitektura PhoneGap aplikacije

Page 41: zadatak diplomskog rada

39

Tablica 4.1 Značajke koje PhoneGap podržava

iPhone iPhone 3G

i noviji

Android Blackberry

OS 60+

Blackberry

10

Windows

Phone

Ubunt Firefox OS

Brzinomjer

Kamera

Kompas

Kontakti

Datoteke

Lokacija

Mediji

Mreža

Dojava

Zvuk

Vibracija

Pohrana

Za izgradnju (Slika 4.7) Android aplikacije potrebno je:

izgraditi aplikaciju s web standardima (HTML, CSS, JavaScript)

zapakirati je uz pomoć PhoneGap-a kako bi dobili pristup izvornom API-ju

rasporediti aplikaciju na više platformi. [8]

Page 42: zadatak diplomskog rada

40

Slika 4.7 Izgradnja aplikacije pomoću PhoneGap-a

4.2.1 Postavljanje okruženja

Prvo je potrebno instalirati Node.js. Zatim uz pomoće Node.js Command Prompt izvršava se

ostala instalacija. Upisivanjem npm install –g cordova (Slika 4.8) dohvaća se softwerska

podrška Apache Cordova. Zatim je potrebno dohvatiti JDK i postaviti u Path u Environment

Variables. S obzirom da je JDK bio potreban za Groovy/Grails, ovaj korak se preskače. Na

Android SDK stranici potrebno je dohvatiti pripadajući izgradnju za OS koji se koristi.

Dohvaćena datoteka u sebi sadrže Eclipse koji je potrebno pokrenuti. Također, platform-tools

i tools koji se nalaze u sdk folderu treba dodati u Environment Variables. U Eclipse-u je

potrebno kliknuti na Help Install New Software ADD i dodati ADT dodatak (Slika 4.9).

Zatim je potrebno dohvatiti Apache Ant kako bi Cordova mogla kompajlirat aplikaciju.

Također treba dodati bin folder u Path Environment Variable-a.

Slika 4.8 Instaliranje Cordove

Page 43: zadatak diplomskog rada

41

Slika 4.9 ADT dodatak

Preko node.js kreira se projekt koristeći naredbu : cordova create hello com.example.hello

HelloWorld (Slika 4.10) u Eclipse radnom okruženju. Postavi se u taj projekt (cd hello) i

dodaje Android platforma uz pomoć naredbe: cordova platform add android (Slika 4.11)

Slika 4.10 Kreiranje novog projekta

Slika 4.11 Dodana Android platforma na Hello projekt

Page 44: zadatak diplomskog rada

42

Na kraju je potrebno izgradit projekt koristeći naredbu: cordova build.

Nakon dodavanja Hello projekta u Eclipse, može se graditi aplikacija u „www“ datoteci

(Slika 4.12). [9]

Slika 4.12 Projekt u Eclipsu

Page 45: zadatak diplomskog rada

43

4.2.2 „Pakiranje“ u Android aplikaciju- „PhoneGap Build“

PhoneGap Build omogućava kreiranje mobilnih aplikacija korištenjem Web alata HTML,

CSS i JavaScript koje lako kompajlira za različite platforme. Cilj je bio dobiti .apk datoteku,

odnosno Android datoteku. Ukoliko se želi stvoriti aplikaciju koja se distribuira kao Android

APK datoteka, mora se sastaviti pomoću Android SDK. PhoneGap ima dva načina za

pakiranje u Android aplikaciju: PhoneGapBuild i PhoneGap CLI. Zbog jednostavnije uporabe

i lakšeg korištenja, koristio se PhoneGap Build.

Prvo se potrebno logirati na Adobe stranici. Zatim se učita projekt u zip formatu (Slika 4.13).

Slika 4.13 PhoneGap Build

Nakon učitavanja počinje proces pakiranja. RemoteAssistanceMobile.zip je pakirana u

Android (.apk) i WindowsPhone7 (.xap) aplikaciju (Slika 4.14).

Page 46: zadatak diplomskog rada

44

Slika 4.14 Dobivene mobilne aplikacije

Ostali OS-ovi imaju pogreške u izradi. PhoneGap Build sadrži određene zahtjeve za pakiranje

u pojedini operativni sustav. Jedan od njih je da paket sadrži index datoteku. Svaka greška je

objašnjena i sadrži link na rješenje (Slika 4.15).

Slika 4.15 Opis grešaka

Nakon dohvata aplikacije potrebno ju je dodati na uređaj i instalirati (Slika 4.16).

Slika 4.16 Dodana i instalirana aplikacija na tablet

Page 47: zadatak diplomskog rada

45

5 API

API specificira softverske komponente u smislu svojih operacija, njihovih ulaza i izlaza.

Njegova glavna svrha je definirati skup funkcionalnosti koji su neovisni o svojoj provedbi,

dopušta i definiciju i provedbu mijenjati bez međusobnog narušavanja. [20] Na Slika 5.1 je

prikazan pregled arhitekture API-ja.

Slika 5.1 Pregled arhitekture API-ja

API je podatkovni sloj koji se spaja na bazu podataka od weba aplikacije i ispisuje podatke u

JavaScript Object Notation (JSON) formatu. JSON format je danas standard jer ga podržava

svaka tehnologija (iOS, .NET, PHP, Java...). Kako bi dohvatili na tablet aplikaciji podatke iz

baze podataka, koristi se API. Napravljen je kao skup funkcija koje omogućavaju pristup

podatcima koje treba Android aplikacija. U API Controlleru su napravljene sljedeće API

funkcije:

getLastMessage (int userId) – izlaz je jedan string, na tabletu se prikazuje samo zadnja

poruka

getSettings (int userId) – izlaz su boolean polja, koriste se za prikaz pojedinih stavki

Page 48: zadatak diplomskog rada

46

getTasksList (int userId) – izlaz je lista zadataka

getNewsList (int userId) – izlaz je lista svih vijesti

getContactsList (int userId) – izlaz je lista svih kontakata

getMedicinesList (int userId) – izlaz je lista svih lijekova

getAlbumsList (int userId) – izlaz je lista svih albuma i url zadnje slike iz svakog

albuma

getAlbumPhotosList (int userId, int albumId)- izlaz je lista url-ova svih slika iz

albuma.

Svaka funkcija, osim GetAlbumPhotosList, prima po jedan parametar. Svi pozivi primaju http

GET zahtjev i vraćaju JSON u navedenoj strukturi za pojedini poziv (Ispis koda 5.1). Url za

svaku funkciju je:

http://cloud7.extensionengine.com:8080/remoteAssistance/API/<ime_funkcije>

Ispis koda 5.1 JSON za poziv GetContactsList

def getContactsList(){ def resultJSON = [:] try{

Page 49: zadatak diplomskog rada

47

int userId try{ userId = params.int('userId') } catch(Exception e){} def conn = sessionFactory.currentSession.connection() def sql = new Sql(conn) resultJSON = [msg: 1, contacts: sql.rows("SELECT * FROM contact WHERE user_id = ?", userId) ] sql.close() } catch(Exception e){ resultJSON = [msg: 0, ex: e.getMessage() + " " + e.getCause() ] } render resultJSON as JSON }

Ispis koda 5.2 API za dohvat liste kontakata

Ispis koda 5.2 prikazuje API za poziv GetContactsList. Svi pozivi su slični ovome, osim

poziva GetAlbumList i GetAlbumPhotosList koji su prikazani na Ispis koda 5.3 i Ispis koda

5.4.

def getAlbumsList(){ def resultJSON = [:] try{ int userId def user try{ userId = params.int('userId') user = User.get(userId) } catch(Exception e){} def albumList = user.albums def albums = [] for(a in albumList){ def lastPhoto = a.photos ? a.photos.last() : null def lastPhotoUrl = lastPhoto ? "album/" + user?.username + "/" + lastPhoto?.p_name + ".jpg" : null albums << [id: a.id, albumName: a.a_name, lastPhoto: lastPhotoUrl] } resultJSON = [msg: 1, albums: albums] } catch(Exception e){

Page 50: zadatak diplomskog rada

48

resultJSON = [msg: 0, ex: e.getMessage() + " " + e?.getCause() ] } render resultJSON as JSON

}

Ispis koda 5.3 API za dohvat liste albuma

def getAlbumPhotosList(){ def resultJSON try{ int userId int albumId def user def album try{ userId = params.int('userId') albumId = params.int('albumId') println albumId user = User.get(userId) album = Album.get(albumId) } catch(Exception e){} def conn = sessionFactory.currentSession.connection() def sql = new Sql(conn) def photosList = sql.rows("SELECT p.p_name FROM album ab INNER JOIN photo p ON ab.id = p.album_id WHERE ab.user_id = ? AND p.album_id = ?", [userId, albumId]) def photos = [] for(photo in photosList){ photos << "album/" + user.username + "/" + photo?.p_name + ".jpg" } resultJSON = [msg: 1, photos: photos] sql.close() } catch(Exception e){ resultJSON = [msg: 0, ex: e.getMessage() + " " + e.getCause() ] } render resultJSON as JSON } }

Ispis koda 5.4 API za dohvat liste fotografija iz pojedinog albuma

Page 51: zadatak diplomskog rada

49

6 TESTIRANJE APLIKACIJE

U ovom poglavlju prikazano je testiranje podataka odnosno njihov prikaz na obje aplikacije.

Prilikom dodavanja podataka u bazu podataka oni se trebaju prikazati na web aplikaciji i na

Android tabletu. Slika 6.1 prikazuje cjelokupni koncept i sadržaj pojedine aplikacije.

Slika 6.1 Koncept aplikacije

Page 52: zadatak diplomskog rada

50

6.1 Poruke

Korisnik unosi poruku na web sučelje. Ta poruka se sprema u bazu podataka i ispisuje na web

aplikaciji. Poruke se mogu brisati. Na tabletu se prikazuje zadnja poruka. Ona je animirana i

vrti se ukrug u traci za poruke. Slika 6.2 prikazuje prikaz poruke na web aplikaciji, Slika 6.3

zadnju poruku na Android aplikaciji, a Slika 6.4 spremljene poruke u bazi podataka.

Slika 6.2 Poruke na web aplikaciji

Slika 6.3 Poruka na Android aplikaciji

Page 53: zadatak diplomskog rada

51

Slika 6.4 Poruke u bazi podataka

6.2 Kalendar i zadatci

Korisnik unosi zadatke ili nekakve obveze i datum izvršavanja na web aplikaciji. Ti podatci se

spremaju u bazu podataka i ispisuju u android i web aplikaciji. Zadatci se mogu brisati. Na

tabletu se, uz popis zadataka i datume, u traci poruka vrti zadnja poruka. Izgled je prikazan na

slikama: Slika 6.5, Slika 6.6 i Slika 6.7.

Slika 6.5 Zadatci na web aplikaciji

Page 54: zadatak diplomskog rada

52

Slika 6.6 Zadatci na Android aplikaciji

Slika 6.7 Zadatci u bazi podataka

6.3 Tablete

Korisnik unosi naziv tablete, opis (može i ne mora), trajanje, frekvenciju trajanja, količinu te

je li tableta obvezna za piti. Ti podatci se spremaju u bazu podataka i prikazuju korisniku

Android aplikacije. To je prikazano na slikama: Slika 6.8, Slika 6.9, Slika 6.10.

Page 55: zadatak diplomskog rada

53

Slika 6.8 Tablete na web aplikaciji

Slika 6.9 Tablete na Android aplikaciji

Page 56: zadatak diplomskog rada

54

Slika 6.10 Tablete u bazi podataka

6.4 Kontakti

Korisnik web aplikacije unosi ime i broj telefona ili mobitela osobe za koje želi da budu

prikazane korisniku Android aplikacije. Ti podatci se spremaju u bazu podataka i prikazuju na

tabletu. To se vidi na slikama: Slika 6.11, Slika 6.12, Slika 6.13.

Slika 6.11 Kontakti na web aplikaciji

Page 57: zadatak diplomskog rada

55

Slika 6.12 Kontakti na Android aplikaciji

Slika 6.13 Kontakti u bazi podataka

6.5 Foto album

Korisnik kreira album koji se sprema u bazu podataka. Nakon toga učitava slike u album

kojem te slike pripadaju. Albumi se prikazuju na web-u i klikom na njega se prikazuju

fotografije. Na tabletu se prikazuje lista albuma sa zadnjom učitanom fotografijom kao

naslovnom stranom. Dodirom željenog albuma otvaraju se slike koje mu pripadaju. Prikaz

fotografija i albuma predstavljen je na slikama: Slika 6.14, Slika 6.15, Slika 6.16, Slika 6.17 i

Slika 6.18.

Page 58: zadatak diplomskog rada

56

Slika 6.14 Foto album na web aplikaciji

Slika 6.15 Fotografije na web aplikaciji

Page 59: zadatak diplomskog rada

57

Slika 6.16 Foto album na Android aplikaciji

Slika 6.17 Foto album u bazi podataka

Page 60: zadatak diplomskog rada

58

Slika 6.18 Fotografije u bazi podataka

6.6 Novine

Korisnik web aplikacije unosi novosti koje bi mogle zanimati korisnika Android aplikacije.

Unosi mu naslov i opis novosti. Podatci se spremaju u bazu podataka i mogu se brisati. Na

slikama: Slika 6.19, Slika 6.20 i Slika 6.21 je prikazan izgled novosti na obje aplikacije i

pohrana u bazi podataka.

Slika 6.19 Novine na web aplikaciji

Page 61: zadatak diplomskog rada

59

Slika 6.20 Novine na Android aplikaciji

Slika 6.21 Novine u bazi podataka

6.7 Mogućnost prikaza

Izvorno je bilo zamišljeno da postoji tzv. mogućnost prikaza na web aplikaciji koja

manipulira prikazom kartica na Android aplikaciji. Odnosno, korisnik web aplikacije

označava što želi i gdje da mu se prikažu željene kartice. Mogućnost prikaza je napravljena na

web aplikaciji, napravljen je API ali nije napravljen dohvat i ne radi na Android aplikaciji.

Izgled kartice mogućnost prikaza prikazana je na Slika 6.22.

Page 62: zadatak diplomskog rada

60

Slika 6.22 Mogućnost prikaza

6.8 Vremenska prognoza

Vremenska prognoza postoji samo na Android aplikaciji. Ona kupi podatke s interneta o

vremenu za sljedećih sedam dana. Ispis koda 6.1 prikazuje kod za vremensku prognozu. Slika

4.3 prikazuje izgled vremenske prognoze na Android aplikaciji.

<iframe id="forecast_embed" type="text/html" frameborder="0" height="245"

width="100%"

src="http://forecast.io/embed/#lat=43.508132&lon=16.440193&name=Split&color=#00a

aff&font=Georgia&units=uk""> </iframe>

Ispis koda 6.1 Vremenska prognoza

Page 63: zadatak diplomskog rada

61

7 ZAKLJUČAK

Aplikacije su postale neizostavan dio poslovnog i privatnog života i koriste se svakodnevno.

Tržište mobilnih aplikacija trenutno vrijedi preko 3 milijarde dolara, a godišnje ima rast od

preko 50% te su najviše pridonijele popularnosti pametnih uređaja i otvorile nove kanale

komunikacije i dobivanja informacija u bilo kojem trenutku.

Aplikacija RemoteAssistance omogućuje korisniku da pomogne starijim članovima svoje

obitelji. Pomoć je zamišljena u smislu podsjetnika na nekakve obveze (posjet liječniku,

rođendani…), organizacije vremena konzumiranja lijekova, popis najvažnijih brojeva,

novosti, fotografija itd. Korisnik unosi preko weba promjene koje se ažuriraju na tablet

aplikaciji RAMobile. Tamo se ispisuje sve što korisnik unese na web aplikaciji. Tablet

aplikacija je samo za čitanje, dakle ne mogu se vršiti nikakve promjene.

Za doradu aplikacije otvorene su brojne mogućnosti. U sljedećim verzijama aplikacije

RAMobile može se dodati mogućnost ostavljanja nekakvih povratnih informacija u vidu

popijene tablete ili odlaska u doktora koji će se prikazati korisniku web aplikacije

RemoteAssistance. Također, može se izraditi i tablet aplikacija za druge OS. Može se dodati

alarm koji obavještava o promjenama na tabletu ili o terminu nekakvog događaja. Obje

aplikacije bi trebale imati takozvani Responsive dizajn odnosno da se prilagode platformi,

veličini te orijentaciji korisničkog zaslona u svrhu boljeg korisničkog iskustva.

RemoteAssistance i RAMobile aplikacije rezultirali su uspješnim učenjem novih tehnologija.

PhoneGap je zanimljiv alat za izradu mobilnih aplikacija jer ima mogućnost da HTML, CSS i

JavaScript kod zapakira u bilo koji mobilni OS. Grails je okolina koja je jednostavna za rad, a

Groovy jezik temeljen na Javi te je prilagođen programerima.

Poznavanje programske okoline je jedan od bitnijih čimbenika koji utječe na razvoj jer

omogućava: lakše snalaženje, brže rješavanje problema i brži razvoj sustava.

Page 64: zadatak diplomskog rada

62

8 LITERATURA

[1] Peter Ledbrook (2010). s interneta Simplified Spring Security with Grails,

http://spring.io/blog/2010/08/11/simplified-spring-security-with-grails/, 21.08.2014.

[2] Rajeshkumar I.P, Grails web framework, s interneta

http://www.sapient.com/content/dam/sapient/sapientglobalmarkets/pdf/thought-

leadership/MarProg_Grails_WP_Web.pdf, 25.08.2014.

[3] Glen Smith, Peter Ledbrook (2013) Grails in Action, Second Edition, 9781617290961

[4] Burt Beckwith, s interneta, Spring Security UI Plugin - Reference Documentation,

http://grails-plugins.github.io/grails-spring-security-ui/, 24.08.2014

[5] Scott Davis, Jason Rudolph (2010) Getting started with Grails Second Edition, 978-0-

557-18321-0, USA

[6] Jeff Scott Brown, Graeme Rocher Definite Guide to Grails 2, apress

[7] Phonegap, s interneta http://en.wikipedia.org/wiki/PhoneGap, 01.09.2014.

[8] PhoneGapDocumentation, s interneta, http://docs.phonegap.com/en/3.5.0/index.html,

27.08.2014.

[9] (2012), How to install phonegap for Android, s interneta: http://cleancodedevelopment-

qualityseal.blogspot.nl/2012/11/how-to-install-phonegap-for-android.html, 10.09.2014.

[10] Groovy (programming language), s interneta:

http://en.wikipedia.org/wiki/Groovy_%28programming_language%29, 05.09.2014.

[11] (2013), Grails, s interneta: https://grails.org/, 03.09.2014.

[12] Grails, s interneta http://en.wikipedia.org/wiki/Grails_%28framework%29,

03.09.2014.

[13] Margaret Rouse, Relational Database, s interneta

http://searchsqlserver.techtarget.com/definition/relational-database, 20.08.2014.

[14] Cory Janssen, Relational Database (RDB), s interneta

http://www.techopedia.com/definition/1234/relational-database-rdb, 22.08.2014.

[15] MySQL, s interneta http://hr.wikipedia.org/wiki/MySQL, 08.09.2014.

[16] Groovy Server Pages, s interneta

http://grails.org/doc/latest/guide/theWebLayer.html#gsp, 30.08.2014.

[17] Android operating system, s interneta

http://en.wikipedia.org/wiki/Android_%28operating_system%29, 09.09.2014.

Page 65: zadatak diplomskog rada

63

[18] Matt Smith, The Complete Android Guide for Everyone, s interneta

http://www.makeuseof.com/pages/download-these-are-the-droids-youre-looking-for-an-

android-guide, 10.09.2014.

[19] Victor Kotov (2013) Appcelerator Titanium Review: No-Hassle Cross-Platform

Mobile Development, s interneta http://blog.azoft.com/titanium-appcelerator-review/,

10.09.2014.

[20] Aplication programming interface, s interneta

http://en.wikipedia.org/wiki/Application_programming_interface, 11.09.2014.

[21] Simon Maple (2013) The 2004 decision Marker's Guide to Java Web Frameworks, s

interneta, http://zeroturnaround.com/rebellabs/the-2014-decision-makers-guide-to-java-

web-frameworks/, 11.09.2014.

[22] Sebastien (2013) Top 5 reasons why you should consider Groovy and Grails for your

enterprise software architecture right now, s interneta,

http://www.epseelon.com/2013/02/14/top-5-reasons-why-you-should-consider-groovy-

and-grails-for-your-enterprise-software-architecture-right-now/, 12.09.2014.

Page 66: zadatak diplomskog rada

64

9 PRILOZI

9.1 Kazalo slika i tablica

9.1.1 Kazalo slika

Slika 2.1 Grails okolina [11] ...................................................................................................... 5

Slika 2.2 Popularnost razvojnih okruženja 2010.godine ............................................................ 5

Slika 2.3 MVC .......................................................................................................................... 10

Slika 2.4 ER dijagram aplikacije .............................................................................................. 14

Slika 2.5 HTC Dreams- prvi uređaj na Android operativnom sustavu .................................... 17

Slika 2.6 Arhitektura Android sustava ..................................................................................... 18

Slika 3.1 Properties .................................................................................................................. 21

Slika 3.2 Environment Variables ............................................................................................. 22

Slika 3.3 Namještanje varijabli ................................................................................................ 22

Slika 3.4 Izgled GGTS-a .......................................................................................................... 23

Slika 3.5 Sadržaj Grails projekta .............................................................................................. 24

Slika 3.6 MySQL Workbench Slika 3.7 Kreiranje baze ...................................................... 25

Slika 3.8 Kreiranje Domain klase Slika 3.9 Domain klase ................................................. 26

Slika 3.10 Generirana baza u MySQL-u .................................................................................. 28

Slika 3.11 MySQL tablica ........................................................................................................ 29

Slika 3.12 Instaliranje Spring Security Core dodatka .............................................................. 29

Slika 3.13 Prijava i registracija korisnika ................................................................................. 31

Slika 3.14 Unos korisničkih podataka potrebnih za registraciju .............................................. 31

Slika 3.15 Uspješno kreiran korisnik i poslana potvrda na mail .............................................. 32

Slika 3.16 Plugins ..................................................................................................................... 32

Slika 4.1Početna stranica .......................................................................................................... 33

Slika 4.2 Kontakti ..................................................................................................................... 34

Slika 4.3 Vremenska prognoza ................................................................................................. 34

Slika 4.4 Način rada PhoneGap-a ............................................................................................ 37

Slika 4.5 Razlika između hibridne i izvorne aplikacije ............................................................ 38

Slika 4.6 Arhitektura PhoneGap aplikacije .............................................................................. 38

Slika 4.7 Izgradnja aplikacije pomoću PhoneGap-a ................................................................ 40

Slika 4.8 Instaliranje Cordove .................................................................................................. 40

Page 67: zadatak diplomskog rada

65

Slika 4.9 ADT dodatak ............................................................................................................. 41

Slika 4.10 Kreiranje novog projekta ........................................................................................ 41

Slika 4.11 Dodana Android platforma na Hello projekt .......................................................... 41

Slika 4.12 Projekt u Eclipsu ..................................................................................................... 42

Slika 4.13 PhoneGap Build ...................................................................................................... 43

Slika 4.14 Dobivene mobilne aplikacije .................................................................................. 44

Slika 4.15 Opis grešaka ............................................................................................................ 44

Slika 4.16 Dodana i instalirana aplikacija na tablet ................................................................. 44

Slika 5.1 Pregled arhitekture API-ja ........................................................................................ 45

Slika 6.1 Koncept aplikacije ..................................................................................................... 49

Slika 6.2 Poruke na web aplikaciji ........................................................................................... 50

Slika 6.3 Poruka na Android aplikaciji .................................................................................... 50

Slika 6.4 Poruke u bazi podataka ............................................................................................. 51

Slika 6.5 Zadatci na web aplikaciji .......................................................................................... 51

Slika 6.6 Zadatci na Android aplikaciji .................................................................................... 52

Slika 6.7 Zadatci u bazi podataka ............................................................................................. 52

Slika 6.8 Tablete na web aplikaciji .......................................................................................... 53

Slika 6.9 Tablete na Android aplikaciji .................................................................................... 53

Slika 6.10 Tablete u bazi podataka ........................................................................................... 54

Slika 6.11 Kontakti na web aplikaciji ...................................................................................... 54

Slika 6.12 Kontakti na Android aplikaciji ................................................................................ 55

Slika 6.13 Kontakti u bazi podataka ......................................................................................... 55

Slika 6.14 Foto album na web aplikaciji .................................................................................. 56

Slika 6.15 Fotografije na web aplikaciji ................................................................................... 56

Slika 6.16 Foto album na Android aplikaciji ........................................................................... 57

Slika 6.17 Foto album u bazi podataka .................................................................................... 57

Slika 6.18 Fotografije u bazi podataka ..................................................................................... 58

Slika 6.19 Novine na web aplikaciji ......................................................................................... 58

Slika 6.20 Novine na Android aplikaciji .................................................................................. 59

Slika 6.21 Novine u bazi podataka ........................................................................................... 59

Slika 6.22 Mogućnost prikaza .................................................................................................. 60

Page 68: zadatak diplomskog rada

66

9.1.2 Kazalo tablica

Tablica 2.1 Ocjene okolina JVM ................................................................................................ 6

Tablica 4.1 Značajke koje PhoneGap podržava ....................................................................... 39

9.1.3 Popis kodova

Ispis koda 3.1Konfiguracija DataSource.groovy ..................................................................... 25

Ispis koda 3.2 Domain klasa Setting ........................................................................................ 27

Ispis koda 3.3 Omogućavanje NULL vrijednosti ..................................................................... 27

Ispis koda 3.4 Omogućavanje akcija za Login i Logout .......................................................... 30

Ispis koda 3.5 Registracija ....................................................................................................... 31

Ispis koda 4.1 Dohvat liste kontakata ....................................................................................... 35

Ispis koda 4.2 Dohvat slika za pojedini album ......................................................................... 36

Ispis koda 5.1 JSON za poziv GetContactsList ........................................................................ 46

Ispis koda 5.2 API za dohvat liste kontakata ........................................................................... 47

Ispis koda 5.3 API za dohvat liste albuma ............................................................................... 48

Ispis koda 5.4 API za dohvat liste fotografija iz pojedinog albuma ........................................ 48

Ispis koda 6.1 Vremenska prognoza ........................................................................................ 60

9.2 Popis oznaka i kratica

API Application Programming Interface

ASP Active Server Pages

BSD Berkeley Software Distribution

CRUD Create, Read, Update, Delete

CSS Cascading Style Sheets

DBMS Database Management System

DDMS Dalvik Debug Monitor Server

ER Entity Relationship

Page 69: zadatak diplomskog rada

67

GGTS Groovy Grails Tool Suite

GORM Grails Object-Relational Mapping

GPS Global Positioning System

GSP Groovy Server Page

HTML HyperText Markup Language

iOS iPhone Operating System

JDBC Java-based data access technology

JDK Java Developer Kit

J2ME Java 2 Micro Edition

J2SE Java 2 Server Edition

JSON JavaScript Object Notation

JVM Java Virtual Machine

MVC Model-View-Controller

NDK Native Development Kit

Open GL Open Graphics Library

OS Operativni Sustav

RDBMS Relation Database Management System

SDK Software Development Kit

SGL Scene graph library

SQL Structured Query Language

SSL Secure Socket Laye

Page 70: zadatak diplomskog rada

68

URL Uniform Resource Locator

XML EXtensible Markup Language

9.3 Upravljanje verzijama

OZNAKA

VERZIJE

DATUM PRIPREMIO ODOBRIO

KRATKI OPIS IZMJENA

1. 07.05.2014 Marijana Mateljan Početak pisanja

2. 05.08.2014 Marijana Mateljan Dopuna 3.1, dovršeno 3.1

3. 06.08.2014 Marijana Mateljan Dovršeno 3.2

4. 10.08.2014 Marijana Mateljan Napisano 3.3 i 3.4

5. 11.08.2014 Marijana Mateljan Dodano 3.4.2 i izmijenjen

3.1.2

6. 13.08.2014 Marijana Mateljan Pisanje 4-og poglavlja

7. 15.08.2014 Marijana Mateljan Izmjena 4.1

8. 16.08.2014 Marijana Mateljan Dovršeno 4. poglavlje

9. 20.08.2014 Marijana Mateljan Dodano 4.2.1

10. 21.08.2014 Marijana Mateljan Sređivanje dokumenta

11. 22.08.2014 Marijana Mateljan Pisanje 5-og poglavlja

12. 23.08.2014 Marijana Mateljan Ispisane kratice

13. 24.08.2014 Marijana Mateljan Dodan Uvod

14. 27.08.2014 Marijana Mateljan Ispravljene pogreške

Page 71: zadatak diplomskog rada

69

15. 28.08.2014 Marijana Mateljan Sređena literatura i

reference

16. 29.08.2014 Marijana Mateljan API

17. 30.08.2014 Marijana Mateljan Promjena 3.1

18. 31.08.2014 Marijana Mateljan Izmijenjen API i napisan

zaključak

19. 03.09.2014 Marijana Mateljan Sažetak i ključne riječi

20. 05.09.2014 Marijana Mateljan Abstract and key words

21. 09.09.2014 Marijana Mateljan Pakiranje

22. 10.09.2014 Marijana Mateljan Sažetak (ispravak) i

testiranje

23. 11.09.2014 Marijana Mateljan Izmjena 6-og poglavlja i

izgled tablice upravljanja

verzijama

24. 12.09.2014 Marijana Mateljan Ispravak po mentorovim

sugestijama

25. 12.09.2014 Marijana Mateljan Dodana slika 6.1 i u

literature datum zadnjeg

pregleda

26. 15.09.2014 Marijana Mateljan Mentor:

Stipe Čelar

Izmijenjen sažetak

Page 72: zadatak diplomskog rada

70

10 SAŽETAK/ABSTRACT I KLJUČNE RIJEČI/ KEYWORDS

Sažetak

U ovom radu je objašnjen proces izrade Android aplikacije i web sučelja za upravljanje tom

aplikacijom na daljinu. Izrađene su dvije aplikacije: RemoteAssistance i RAMobile i njihova

međusobna komunikacija uz pomoć API-ja. RemoteAssistance je web sučelje izrađeno uz

pomoć Groovy/Grails, GSP i MySql-a, a RAMobile je tablet aplikacija za Android OS za koju

je korišten PhoneGap koji konvertira HTML, CSS i JavaScript u željeno okruženje za mobilne

aplikacije. RemoteAssistance omogućuje unos i ažuriranje podataka o prognozi, zadatke,

novine, fotografije i sl. dok RAMobile tablet aplikacija služi isključivo za pregled tako

unesenih podataka. U radnji su opisane korištene tehnologije: Groovy/Grails, MySql, GSP,

PhoneGap, Android. Predložene su i moguće dorade za sljedeće verzije.

Ključne riječi

Groovy/Grails, Android, API, JSON, MVC arhitektura, PhoneGap.

Page 73: zadatak diplomskog rada

71

Abstract

This work explains the process of developing Android applications and web interfaces for

managing this application remotely. There are two applications: RemoteAssistance and

RAMobile and their mutual communication with the help of the API. RemoteAssistance is a

website created by Groovy / Grails, GSP and MySql, and RAMobile is a tablet application for

Android OS. It is used PhoneGap which converts HTML, CSS and JavaScript in the desired

environment for mobile applications. RemoteAssistance allows user to enter and update

information about prognosis, assignments, papers, photos and so on. RAMobile tablet

application is for the overview of the entered data. In this work are used these technologies:

Groovy / Grails, MySQL, GSP, PhoneGap, Android. The possible revisions are proposed for

the next versions.

Key words

Groovy/Grails, Android, API, JSON, MVC architecture, PhoneGap