Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
DIPLOMSKI RAD br. 814
GEOPROSTORNI SUSTAV OBJAVI-
PRETPLATI ZA WEB
Marko Ruškan
Zagreb, siječanj 2015
Sadržaj
Uvod ...................................................................................................................................... 1
1. Model objavi-pretplati ....................................................................................................... 2
1.1. Objave ......................................................................................................................... 3
1.2. Pretplate ...................................................................................................................... 3
1.3. Posrednik .................................................................................................................... 3
1.4. Geoprostorni sustav objavi-pretplati .......................................................................... 4
2. Geoprostorne baze podataka .............................................................................................. 5
2.1. Modeliranje geoprostornih podataka .......................................................................... 6
2.1.1. Točke, linije i poligoni ........................................................................................ 6
2.1.2. Ograda ................................................................................................................. 7
2.2. Tipovi podataka .......................................................................................................... 7
2.2.1. Geometry ............................................................................................................. 8
2.2.2. Geography ........................................................................................................... 9
2.3. PostGIS funkcije za manipulaciju nad geoprostornim podatcima.............................. 9
3. Web-aplikacija (GeoPubSub) .......................................................................................... 11
3.1. Arhitektura web-aplikacije ....................................................................................... 11
3.1.1. Java Bean ........................................................................................................... 11
3.1.2. JSF stranice ........................................................................................................ 13
3.1.3. Konfiguracija servleta........................................................................................ 14
3.1.4. Usluge okvira JSF .............................................................................................. 14
3.1.5. Životni vijek aplikacije koja koristi okvir JSF .................................................. 15
3.2. Korisničko sučelje .................................................................................................... 17
3.2.1. Prijava i registracija ........................................................................................... 18
3.2.2. Početna stranica ................................................................................................. 21
3.2.3. Obavijesti ........................................................................................................... 22
3.2.4. Korisnikove objave ............................................................................................ 22
3.2.5. Korisnikove pretplate ........................................................................................ 24
3.2.6. Korisničke postavke .......................................................................................... 27
4. Instalacija programske potpore ........................................................................................ 28
4.1. PostgreSQL i PostGIS .............................................................................................. 28
4.2. Glassfish ................................................................................................................... 37
4.3. JavaServer Faces i Primefaces .................................................................................. 42
Zaključak ............................................................................................................................. 44
Literatura ............................................................................................................................. 45
Sažetak ................................................................................................................................. 47
Summary .............................................................................................................................. 48
1
Uvod
Dobivanjem pravih informacija u pravo vrijeme moguće su velike uštede vremena. Npr.
izbjegavanje prometne gužve nastale zbog prometne nesreće, ili izbjegavanje obilaska
trgovačkih centara u potrazi za raznim akcijskim popustima. Ovo su samo dva primjera iz
svakodnevnog života u kojima bi se mogao primijeniti sustav objavi-pretplati koji bi
korisnicima omogućio uštedu vremena zbog izbjegavanja nepotrebnog čekanja. Razvojem
interneta uvelike je povećana mogućnost dobivanja pravovremenih informacija krajnjim
korisnicima.
Razvojem Interneta model objavi-pretplati je postao jedan od najraširenijih sustava za
oglašavanje. Na primjer ukoliko ste se registrirali na stranicu od neke trgovine, obično se
prilikom registracije može dodati korisnikova adresa elektroničke pošte na koju će se
prosljeđivati obavijesti o novim artiklima ili o akcijama. Iz navedenog primjera daju se
naslutit dva ograničenja većine dosadašnjih sustava objavi-pretplati. Prvo ograničenje je da
obavijest uvijek šalje „trgovina“ tj. ukoliko želimo čuti mišljenje od drugih korisnika
(kritike) obično bismo ih morali potražiti na raznim forumima što opet ponekad može biti
vremenski zahtjevno. Što ako na primjer želite obavijesti od nekoliko različitih trgovina
koje se nalaze relativno blizu jedna druge (npr. trgovine u Arena Centru)? U tome slučaju
morali biste se registrirati na stranicu od svake trgovine posebno i tu uviđamo drugo
ograničenje.
Geoprostorni sustav objavi-pretplati zadržava sve prednosti klasičnog sustava objavi-
pretplati, a uz to rješava probleme nastale zbog spomenutih ograničenja. O ovom radu je
razvijen i prikazan jedan geoprostorni sustav objavi-pretplati, objašnjeno je od kojih se
komponenti sastoji i na koji način funkcionira.
U prvom poglavlju je dan detaljniji opis samog modela objavi-pretplati. Drugo poglavlje se
bavi programskom podrškom koja je potrebna za pravilno funkcioniranje sustava i na
kojemu je sustav razvijan. Drugim riječima opisuje komponente sustava. U trećemu
poglavlju je opisana razvijena web-aplikacija GeoPubSub. Opisan je način na koji se
koristi i koje su joj mogućnosti. Četvrto poglavlje se odnosi općenito na geoprostorne baze
podataka jer je takva baza podataka ključni dio jednog ovakvog sustava.
2
1. Model objavi-pretplati
Kao što je u uvodu već napomenuto sustavi objavi-pretplati su već dugo u upotrebi i
najviše se koriste za dostavljanje obavijesti. Sustav objavi-pretplati omogućuje razmjenu
poruka između dvije vrste krajnjih korisnika koji se nazivaju objavljivači i pretplatnici. U
pravilu ova komunikacija je jednosmjerna i poruke se uvijek distribuiraju od objavljivača
prema pretplatnicima. Karakteristike koje još odlikuju ovaj sustav su perzistentnost,
asinkronost, vremenska neovisnost i transparentnost. Sustav je perzistentan što znači da će
poruke koje objave objavljivači biti dostavljene zainteresiranim pretplatnicima. Sustav je
asinkron što pak znači da objavljivač nakon što objavi poruku ne mora čekati na odgovor
od pretplatnika već dalje nastavlja sa radom. Sustav je vremenski neovisan u smislu da
objavljivači i pretplatnici ne moraju istovremeno biti spojeni da bi komunikacija bila
ostvarena jer je sustav posrednik u njihovoj komunikaciji i čuvat će poruke do ponovnog
spajanja. Transparentnost pak znači da objavljivači ne znaju tko su pretplatnici jer se o
isporuci brine sustav.
Sustav objavi-pretplati se sastoji od tri vrste sudionika. Objavljivači, pretplatnici i
posrednik. Što se tiče same arhitekture sustava ona može biti ili centralizirana ili
raspodijeljena. Kod centralizirane arhitekture postoji samo jedan posrednik i on sadrži
podatke o svim objavljivačima i pretplatnicima. Glavni nedostatak ovakve izvedbe je taj
što posrednik predstavlja usko grlo i jedinstvenu točku ispada. Zbog navedenih razloga
centralizirana izvedba je neskalabilna i performanse sustava opadaju s povećanjem broja
novih korisnika. Kod raspodijeljene arhitekture postoji mreža posrednika i svaki posrednik
je nadležan samo za dio pretplatnika odnosno objavljivača. Posrednici su u mogućnosti
prosljeđivati obavijesti drugim posrednicima koji imaju zainteresirane pretplatnike.
Posrednici usmjeravaju obavijesti koje objavljuju objavljivači prema zainteresiranim
pretplatnicima. Posrednik mora imati tablicu usmjeravanja da bi bio u mogućnosti
usmjeriti obavijest prema zainteresiranom. Održavanje tablice usmjeravanja se ostvaruje
izmjenom kontrolnih poruka između posrednika (koje nisu niti obavijesti niti pretplate) i na
ovaj način se generira dodatni promet unutar mreže. Raspodijeljena izvedba je skalabilna
što znači da se performanse bitno ne mijenjaju povećanjem broja novih korisnika u
sustavu. Ne postoji jedinstvena točka ispada sustava jer čak i ako se dogodi da neki
posrednik prestane sa radom ostatak sustava će i dalje funkcionirati i nakon nekog vremena
3
tablice usmjeravanja u ostalim posrednicima će se ažurirati. Jedino pretplatnici tj.
objavljivači za koje je ispali posrednik bio direktno nadležan neće biti u mogućnosti
primati željene obavijesti tj. objavljivati nove obavijesti. Raspodijeljena arhitektura je
složenija od centralizirane i više informacija o njenoj izvedbi može se naći u [1].
U radu je korištena centralizirana arhitektura.
1.1. Objave
Objave definiraju objavljivači, a namijenjene su pretplatnicima. Objave se sastoje od dvije
sadržaja i meta-podataka. Sadržaj objave može biti slika, tekst, internet poveznica ili pak
nešto drugo. Meta-podaci se koriste za filtriranje obavijesti i to su obično ključne riječi
preko kojih pretplatnici definiraju koje obavijesti žele primiti. U geoprostornom sustavu
objavi-pretplati meta-podacima pripadaju zemljopisna dužina i širina koje određuju
lokaciju obavijesti.
1.2. Pretplate
Pretplate definiraju pretplatnici i njima izražavaju zainteresiranost za određene obavijesti.
Pretplatnicima se ne prosljeđuju sve obavijesti, već samo one za koje je pretplatnik
zainteresiran. Da bi ovo bilo moguće neophodno je obavijesti filtrirati. Pretplatu možemo
promatrati kao filtar za obavijesti definiran od strane pretplatnika. Primjer jedne pretplate
bi bio da korisnik definira pretplatu kojom izražava zainteresiranost samo za obavijesti
vezane za Svjetsko rukometno prvenstvo. U geoprostornom sustavu objavi-pretplati
postoje tri vrste pretplata, a to su pretplata na točku, na liniju i na područje.
1.3. Posrednik
Posrednik vodi računa o tome da obavijesti koje objave objavljivači dospiju do
zainteresiranih pretplatnika. Kako je ranije navedeno postoje izvedbe sustava sa jednim
posrednikom tj. centralna arhitektura i izvedbe sa više posrednika koji tvore mrežu
posrednika tj. raspodijeljena arhitektura. U ovom radu posrednik je izveden kao poslužitelj
koji održava bazu podataka u koju sprema obavijesti (i meta podatke i sadržaj), pretplate i
4
podatke o korisnicima. Filtriranje se vrši definiranjem i izvršavanjem upita nad
geoprostornom bazom podataka i prikazom rezultata izvođenja upita korisnicima.
1.4. Geoprostorni sustav objavi-pretplati
U geoprostornom sustavu objavi-pretplati jedna od najvažnijih informacija lokacija, bilo da
se radi o objavi ili pretplati. Korištenje geoprostorne baze podataka je neophodno za
efikasno izvršavanje upita koji sadrže podatke o lokaciji. Geoprostorne baze podataka
sadrže mehanizme koji omogućuju pohranu geoprostornih objekata (točke, linije,
poligoni...), kao i određivanje njihovih međusobnih odnosa. Pod međusobnim odnosima se
najviše misli na pripadnost točke nekom poligonu ili na međusobnu udaljenost između dva
geoprostorna objekta. U radu je prezentiran sustav kod kojega su korisnici ujedno i
objavljivači i pretplatnici što pak znači da svaki korisnik može objavljivati obavijesti, ali i
definirati pretplate. Ostvarene su tri vrste pretplata. Pretplata na točku, na liniju i na
područje. Prilikom definiranja pretplata na točku i na liniju korisnik definira i udaljenost
izraženu u metrima unutar koje će primiti postojeće obavijesti.
5
2. Geoprostorne baze podataka
Konvencionalni sustavi baza podataka razvijaju se već jako dugo i uspješno se primjenjuju
uglavnom za upravljanje velikim skupovima podataka u poslovnim i administrativnim tzv.
standardnim aplikacijama. U zadnje vrijeme javlja se sve veća potreba za bazama podataka
koje se koriste u nestandardnim aplikacijama. Ove aplikacije obično rade sa tehničko-
znanstvenim podatcima. Dosadašnje metode i modeli ne zadovoljavaju potrebe ovih
nestandardnih aplikacija jer se domena podataka koje koriste ove aplikacije u potpunosti
razlikuje od domene podataka konvencionalnih baza podataka. Neke od domena su
računarski podržano projektiranje (CAD), geoinformacijski sustavi (GIS), uredski
informacijski sustavi, aplikacije iz kemije, medicine i biologije i slično. Iz navedenih
razloga postoji potreba za daljnjim razvojem novih tehnologija baza podataka tzv.
nestandardnih sustava baza podataka.
Kako se u ovom radu bavimo podacima vezanim za prostor potrebna nam je baza podataka
koja može upravljati geometrijskim i prostornim podatcima. Postoji nekoliko naziva za
nestandardne sustave baza podataka koji imaju podršku za ovakvu vrstu podataka, a to su
slikovni, rasterski, geoprostorni, geometrijski, geografski ili prostorni sustavi baza
podataka. U ovom poglavlju fokus će biti na geoprostornom sustavu premda se mnogi
njegovi aspekti mogu prenijeti i na geometrijske i prostorne sustave.
Geoprostorni sustav baze podataka je sustav baze podataka sa svim značajkama
standardnog sustava te dodatnim mogućnostima za reprezentaciju, analizu i manipulaciju
objekata u prostoru. Konvencionalni modeli podataka, upitni jezici i metode pristupa
podatcima projektirani su imajući na umu jednostavne tipove podataka koji se mogu
reprezentirati alfanumeričkim podatcima, kao što su cijeli brojevi, realni brojevi i nizovi
znakova. U nestandardnim aplikacijama javlja se i dodatna potreba za upravljanjem
podacima sa kompleksnom strukturom i semantikom. Rješenju ovih problema često se
pristupalo na način da se prošire već postojeći modeli podataka ili upitnih jezika.
Razvojem ovih sustava došlo se do zaključka da su za modeliranje geometrijskih podataka
i njihovu adekvatnu prezentaciju neophodni specijalizirani tipovi podataka koji se nazivaju
prostorni, geometrijski ili geoprostorni tipovi podataka.
6
Geoinformacijski sustav je informacijski sustav za upravljanje, analizu, predočavanje i
distribuciju geoprostornih informacija. Geoprostorne informacije su informacije o
objektima i pojavama čiji je referentni sustav definiran na površini Zemlje.
2.1. Modeliranje geoprostornih podataka
Za modeliranje geoprostornih objekata koriste se apstraktni tipovi podataka. Kao osnovne
apstrakcije se koriste točka, linija i poligon. Točka reprezentira geometrijski aspekt objekta
za koji je relevantan samo položaj u prostoru, ali ne i njegova veličina (npr. na kartama
velikog mjerila grad se modelira kao točka). Linija, odnosno niz povezanih linija temeljna
je apstrakcija za niz povezanih objekata u prostoru (npr. ceste i rijeke). Poligon je
apstrakcija za objekte koji se prostiru u dvodimenzionalnom prostoru (npr. granica države,
jezero, zemljišna čestica i slično.).
Temeljna svojstva geoprostornih objekata moguće je podijeliti na geometrijska (tj.
prostorna) i ne-geometrijska (tj. tematska). Tematska svojstva se odnose na alfanumeričke
podatke koji opisuju objekt (npr. naziv rijeke, ime grada i slično.). Među geometrijskim
svojstvima razlikujemo metrička i topološka. Metrička opisuju oblik, položaj i veličinu
prostornog objekta u referentnom sustavu, dok se topološke karakteristike odnose na
relacije među geoprostornim objektima. Za referentni sustav se obično uzima Kartezijev
koordinatni sustav. Oblik geoprostornog objekta opisuje apstrakciju strukture
geometrijskog objekta (točka, linija, poligon, trokut, pravokutnik, kružnica i slično.).
Položaj objekta označuje njegov položaj u odnosu prema izabranom referentnom
koordinatnom sustavu. Uvođenjem metrike omogućuje se računanje veličina, kao što je
udaljenost između dva objekta, površina poligona, duljina linije i sl. Relacije među
geoprostornim objektima se odnose na susjedstvo, uključenost, povezanost i slično.
2.1.1. Točke, linije i poligoni
Točka T u euklidskoj ravnini R2 definirana je kao par (x,y) dviju Kartezijevih koordinata.
Pravocrtni segment (linija) definiran je dvjema krajnjim točkama T1 i T2. Krivuljni segment
definiran je dvjema krajnjim točkama i matematičkom jednadžbom krivulje. Krivuljni
segment s, sa krajnjim točkama T1 i T2, može aproksimirati polilinijom, definiranom nizom
točaka Q1,...,Qn pri čemu vrijedi
7
Regija je zatvoren, povezan i pravilan podskup euklidskog prostora R2. Poligon P u R
2 je
dio prostora omeđen sa zatvorenim putem, sastavljen od konačnog niza pravolinijskih
segmenata. Može se opisati nizom točaka T0, T1, ... , Tn-2, Tn-1, Tn. Dužine T0T1, T1T2, ... ,Tn-
1Tn, TnT1 nazivaju se rubovima poligona. Točke T0, T1, ... , Tn-2, Tn-1, Tn nazivaju se
vrhovima poligona. Jednostavni poligon P = (T0, T1, ... , Tn-2, Tn-1, Tn) ima sljedeća
svojstva:
1) Svi vrhovi su različiti ⇒ .
2) Svako tjeme pripada samo jednom rubu na kojemu se nalazi.
3) Sastoji se samo od linijskih segmenata koji se ne presijecaju.
Definicija poligona je preuzeta iz izvora [22].
2.1.2. Ograda
Ograda geometrijskog objekta g, na udaljenosti d je poligon koji sadrži sve točke unutar
udaljenosti d od geometrijskog objekta g.
Slika 1. Geometrijski objekt (lijevo) i njegova ograda (desno)
2.2. Tipovi podataka
Prilikom izrade ove web-aplikacije korištena je baza podataka PostgreSQL sa dodatkom
PostGIS. U PostGIS-u postoje dva osnovna tipa geoprostornih podataka, Geometry i
Geography. Zbog ovoga postoje i dvije vrste objekata točka, linija i poligon, jedna je
8
tipa Geometry dok je druga tipa Geography. Moguće je pretvaranje jednog tipa u drugi
i obratno. Postoji nekoliko vrlo bitnih razlika između ova dva tipa. Jedna od najbitnijih
razlika je referentni sustav koji koriste. Na slici 2 su prikazani Kartezijev i Sferoidni
koordinatni sustav.
U Kartezijevom sustavu udaljenost između dvije točke je ujedno i najmanja udaljenost.
Drugim riječima obje točke se nalaze u istoj ravnini i spojene su dužinom. Dok u
Sferoidnom sustavu udaljenost između dvije točke prikazujemo krivuljom koja leži na
sferi. Ukoliko je udaljenost između dvije točke u Sferoidnom sustavu dovoljno mala ovaj
sustav možemo aproksimirati Kartezijevim sustavom.
Slika 2. Kartezijev (lijevo) i Sferoidni (desno) koordinatni sustav, preuzeto s [9]
2.2.1. Geometry
Geometry kao referentni sustav koristi Kartezijev koordinatni sustav i zbog toga je
vremenski manje zahtjevan. Trenutno podržava veći broj funkcija za manipulaciju nad
geoprostornim podatcima. Potrebno je manje vremena za izvršavanje upita tj. funkcije koje
koriste tip Geometry su manje procesorski zahtjevne. Preporuča se korištenje kada su
objekti u geografskom smislu blizu (npr. unutar države, općine, regije i sl.). Manje je
precizan od tipa Geography zbog činjenice da je zemlja sferoidnog oblika, međutim
9
daje dovoljno precizne podatke kada su objekti na manjem geografskom području zbog
toga što je aproksimacija Zemljine površine dovoljno dobra na manjim područjima.
Povećanjem udaljenosti između objekata preciznost se smanjuje (npr. definitivno se ne
preporuča računati udaljenost između točki tipa Geometry u New Yorku i Zagrebu).
2.2.2. Geography
Geography kao referentni sustav koristi sferoidni koordinatni sustav. Izračuni u
ovakvom sustavu su mnogo kompleksniji i zbog toga su zahtjevniji što se tiče vremena
procesiranja. To je ujedno i jedan od razloga zašto postoji puno manje funkcija koje koriste
ovaj tip podataka, drugi razlog je taj što je ovaj tip uveden relativno nedavno. Ovaj tip
podataka se koristi ukoliko su objekti relativno daleko jedan od drugoga i kada nam je
preciznost jako važna. Funkcije koje kao rezultat vraćaju brojčanu vrijednost (npr. funkcije
koje računaju udaljenost ili površinu), uvijek vraćaju rezultat izražen u metrima.
2.3. PostGIS funkcije za manipulaciju nad geoprostornim
podatcima
U ovom poglavlju bit će riječi o najvažnijim funkcijama koje koristi PostGIS za
manipulaciju nad geoprostornim podatcima. Više informacija se može pronaći u izvorima
[18], [19] i [20].
Funkcije možemo podijeliti u nekoliko skupina:
Funkcije za kreiranje geoprostornih objekata
Funkcije za ispis podataka
Funkcije za računanje metrike
Relacijske funkcije
ST_MakePoint(Longitude, Latitude) – prima vrijednosti zemljopisne dužine i
širine (tim redoslijedom), a vraća objekt tipa točka.
10
ST_GeomFromText(WellKnownText, srid) – prima geometrijski zapis u dobro
poznatom obliku koji je čitljiv za ljude, i identifikacijski broj referentnog sustava, a
vraća objekt tipa Geometry.
ST_SetSRID(geometry, srid) – prima objekt tipa Geometry i identifikacijski broj
referentnog sustava, a vraća primljeni objekt tipa Geometry sa postavljenim
identifikacijskim brojem referentnog sustava.
ST_AsText(geometry) – prima objekt tipa Geometry i vraća njegov zapis u obliku
koji ljudi mogu pročitati.
ST_AsGeoJSON(geometry) – prima objekt tipa Geometry i vraća zapis u standardnom
GeoJSON formatu.
ST_Area(geometry) – prima objekt tipa Geometry i vraća rezultat koji predstavlja
površinu objekta. Oblik rezultata ovisi o referentnom sustavu.
ST_Length(geometry) – prima objekt tipa Geometry i vraća duljinu tog objekta.
Oblik rezultata ovisi o referentnom sustavu.
ST_Distance(geometry, geometry) – prima dva objekta tipa Geometry i vraća
udaljenost između njih. Oblik rezultata ovisi o referentnom sustavu.
ST_DWithin(geometry, geometry, radius) – prima dva objekta tipa Geometry i
radius, a vraća tip boolean koji je istina ako se ova dva objekta nalaze na
međusobnoj udaljenosti koja je manja ili jednaka radiusu, dok u protivnom vraća laž.
ST_Contains(geometry, geometry) – prima dva objekta tipa Geometry i radius, a
vraća tip boolean koji je istina ako prvi objekt u potpunosti sadrži drugi objekt,
dok u protivnom vraća laž.
ST_Buffer(geography, radius) – prima objekt tipa Geography i radius, a vraća
tip Geography koji predstavlja sve točke koje se nalaze na udaljenosti manjoj od
radiusa od predanog objekta. Radius je izražen u metrima.
11
3. Web-aplikacija (GeoPubSub)
Sustav GeoPubSub implementira model geoprostornog sustava objavi-pretplati. Korisnici
mogu na jednostavan način upravljati objavama i pretplatama vezanim za neko
zemljopisno područje. Korisničko sučelje je jednostavno i vrlo intuitivno namijenjeno
širem broju korisnika. Korisnici ne moraju imati neka dodatna predznanja već je dovoljno
osnovno poznavanje interneta.
3.1. Arhitektura web-aplikacije
Većina web-aplikacija se može podijeliti na dva dijela, prezentacijski sloj i poslovnu
logiku. Prezentacijski sloj je odgovoran za izgled aplikacije. Iz konteksta aplikacije koja se
izvršava unutar internet preglednika izgled je definiran HTML oznakama, stilom teksta,
veličinom fonta i slično. Poslovna logika je implementirana unutar Java koda i ona
određuje način na koji se aplikacija ponaša. Dobar dizajn podrazumijeva da ova dva dijela
budu odvojena.
Za izradu web-aplikacije je korištena JavaServer Faces (JSF) tehnologija i u nastavku će
biti objašnjeno kako i na koji način funkcionira JSF. U JSF-u grafički izgled aplikacije je
definiran u web stranicama dok je poslovna logika implementirana unutar Javinih zrna
(Java Bean).
3.1.1. Java Bean
Javino zrno je klasa koja prenosi svojstva i događaje programskom okviru (framework), (u
ovom slučaju JSF-u). Svojstvo (property) je imenovana vrijednost određenog tipa koja
može biti pisana i/ili čitana. U ovu svrhu moraju postojati standardne metode set odnosno
get.
Na primjeru sa slike 3 vidimo da klasa UserBean ima svojstvo (u ovom slučaju varijablu)
ime koja je tipa String i deklarirana je kao private što pak znači da joj se ne može pristupiti
izvan klase. Izvan ove klase varijabla ime bi bila potpuno nevidljiva da ne postoje metode
setName i getName. Metoda setName prima jedan parametar, varijablu tipa String i
12
postavlja vrijednost varijable ime na vrijednost primljenog parametra i ne vraća nikakvu
vrijednost. Metoda getName ne prima nikakav parametar i vraća vrijednost varijable ime
tipa String.
Slika 3. Primjer set i get metode
U specifikaciji Javinog zrna dozvoljeno je postaviti samo metodu setter ili samo getter
(ovisno o željenoj razini sigurnosti). JSF ne podržava svojstva koja se mogu samo
zapisivati. Kod JSF ulaznih komponenti uvijek se koriste svojstva koja se mogu i čitati i
pisati, dok se kod izlaznih komponenti mogu koristiti svojstva koja se mogu samo čitati.
Managed bean je Javino zrno koje je vidljivo iz JSF stranice. Svaki managed bean mora
imati definirano ime i doseg.
Slika 4. Primjer deklaracije Managed bean-a
Iz slike 4 vidimo da je managed bean zove „user“ i da mu je doseg na području sesije što
pak znači da se varijabla ime može dohvatiti sa više različitih JSF stranica. Svaki korisnik
koji koristi web-aplikaciju dobiva svoju instancu bean objekta. Managed beans se koriste
na sljedeći način: kada se ime managed bean-a pojavi u JSF stranici, JSF pozove objekt
13
toga imena ili ga stvori ako još uvijek ne postoji. U bean se spremaju svi podatci koji se
pojavljuju u JSF stranici bilo da se radi o ulaznim ili izlaznim podatcima.
3.1.2. JSF stranice
Za svaki novi prikaz unutar internet preglednika potrebna je nova JSF stranica. Sve JSF
stranice imaju ekstenziju .xhtml. JSF stranica je HTML stranica koja je u isto vrijeme i
valjani XML dokument. Unutar oznake html potrebno je deklarirati sljedeće imenske
prostore (namespaces):
Slika 5. JSF namespaces
Umjesto standardnih HTML oznaka (head, body i form) koriste se JSF oznake
(h:head, h:body i h:form). Umjesto HTML oznake input koriste se
h:inputText, h:inputSecret i h:commandButton. Na slijedećem primjeru
koda prikazano je na koji način se povezuju podatci sa JSF stranice sa managed bean
svojstvima.
Slika 6. Povezivanje JSF stranice i managed bean-a
Unutar JSF stranice nalazi se oznaka prikazana na slici 6 koja označava da se radi o
ulaznom tekstu koji je spremljen u varijablu ime koja se nalazi unutar managed bean-a
korisnik. Unutar #{...} se nalazi kod (tj. izraz) koji se izvršava prilikom učitavanja
stranice. Prilikom prikaza stranice JSF locira bean korisnik i pozove metodu getName
14
kako bi dohvatio trenutnu vrijednost varijable ime. Kada korisnik ispuni obrazac JSF
pozove metodu setName i postavlja vrijednost varijable ime na vrijednost koju je
korisnik uveo preko obrasca. Komponenta h:commandButton ima atribut action koji
označava koja stranica će se prikazati sljedeća. Na ovaj način se ostvaruje navigacija
između stranica.
3.1.3. Konfiguracija servleta
Prilikom postavljanja JSF aplikacije na poslužitelj, potrebno je imati određene oznake
unutar datoteke web.xml. Putanja do web.xml datoteke je
imewebaplikacije/web/WEB-INF/web.xml.
Slika 7. Konfiguracija Faces servleta
3.1.4. Usluge okvira JSF
Okvir JSF je odgovoran za interakciju sa klijentima, pruža alate koji povezuju vizualnu
prezentaciju, aplikacijsku logiku i poslovnu logiku web-aplikacije.
Slika 8. Okvir JSF, preuzeto s [4]
15
3.1.5. Životni vijek aplikacije koja koristi okvir JSF
Pogledajmo što se u pozadini događa s ovakvom aplikacijom nakon što u pregledniku
Weba unesemo adresu JSF aplikacije koja predstavlja ulaznu točku. Nakon što unesemo
http://localhost:8080/GeoPubSub/faces/login.xhtml inicijalizira se JSF kod
i pročita se stranica login.xhtml. Stranica sadrži oznake, a svaka oznaka ima svog
rukovatelja (handler). Prilikom učitavanja stranice izvršava se kod rukovoditelja.
Rukovatelji izgrađuju stablo komponenata. Ovo stablo je struktura koja sadrži Java objekte
za svaki ulazno izlazni element sadržan unutar stranice. Primjer stabla je prikazan na slici
9.
Slika 9. Stablo komponenata, preuzeto s [4]
U sljedećem koraku dolazi do generiranja HTML koda. U ovom koraku sav tekst koji nije
dio JSF-ovskih oznaka postaje vidljiv unutar internet preglednika, a sve JSF-ovske oznake
su pretvorene u HTML. Ovaj proces se naziva kodiranje. Prilikom kodiranja svaka ulazno-
izlazna komponenta dobiva jedinstveni broj koji služi za identifikaciju te komponente i
pridružena joj je vrijednost iz odgovarajućeg managed bean-a. Ovako kodirana stranica
šalje se pregledniku u kojemu se prikazuje korisniku.
Slika 10. Kodiranje i dekodiranje JSF stranica, preuzeto s [4]
16
Nakon što je stranica prikazana korisniku, korisnik unosi podatke tj. ispunjava polja
obrasca. Klikom na dugme preglednik šalje obrazac s podacima koje je ispunio korisnik
nazad poslužitelju. Ovaj obrazac je formatiran kao zahtjev POST. Zahtjev POST je dio
protokola HTTP. Podaci iz obrasca se spremaju u tablicu s raspršenim adresiranjem (hash
table) na strani poslužitelja kojoj imaju pristup sve komponente. Komponente iz ove
tablice uzimaju podatke i interpretiraju ih. Ovaj proces se naziva dekodiranje. Kodiranje i
dekodiranje su dva najvažnija koraka u životnom ciklusu JSF-ovske aplikacije. Ove faze su
dosta poopćene i u nastavku je prikazana detaljnija podjela faza životnog ciklusa JSF-
ovske aplikacije.
Specifikacija okvira JSF definira 6 različitih faza kroz koje prolazi aplikacija:
1. Vraćanje prikaza (Restore View)
2. Primjena zahtijevanih vrijednosti (Apply Request Values)
3. Procesiranje validatora (Process Validations)
4. Ažuriranje varijabli modela (Update Model Values)
5. Pozivanje aplikacije (Invoke Application)
6. Prikaz odgovora (Render Response)
Faza vraćanja prikaza vraća stablo komponenti zatražene stranice ako postoji od prije a ako
ne (tj. ako se stranica poziva po prvi puta) onda se stablo kreira. Ako nisu zatraženi nikakvi
podatci za prikaz JSF preskače na fazu prikaza odgovora (ovo se događa prilikom prvog
poziva stranice), u protivnom aplikacija ulazi u fazu primjene zahtijevanih vrijednosti. U
ovoj fazi JSF prolazi kroz sve objekte sadržane u stablu komponenti i svaki objekt
provjerava koje vrijednosti su namijenjene njemu i sprema ih. Ove vrijednosti se nazivaju
lokalnim vrijednostima. Prilikom dizajniranja JSF-ovske stranice koriste se validatori koji
provjeravaju lokalne vrijednosti. Kod validatora se izvršava u fazi obrade validatora. U
koliko validatori ne izbace grešku aplikacija ulazi u fazu ažuriranja varijabli modela, dok u
protivnom sljedeća faza je prikaz odgovora. U fazi ažuriranja varijabli modela
pretpostavlja se da su uneseni ispravni podatci i ažuriraju se zrna povezana uz određene
komponente. U fazi pozivanja aplikacije izvršava se action metoda komponente dugme
ili poveznice i odabire se sljedeća stranica. Na kraju faza prikaza odgovora kodira odgovor
i šalje ga internet pregledniku. Nakon što korisnik priloži obrazac, klikne poveznicu ili na
neki drugi način pošalje novi zahtjev ciklus započinje ispočetka.
17
Slika 11. JSF životni ciklus, preuzeto s [4]
3.2. Korisničko sučelje
GeoPubSub se sastoji od deset JSF-ovskih stranica. Prije korištenja aplikacije korisnici se
moraju registrirati.
Slika 12. Navigacijski dijagram web-aplikacije GeoPubSub
18
3.2.1. Prijava i registracija
Slika 13. Prijava korisnika
Preduvjet za korištenje sustava je registracija korisnika. Registrirani korisnici nakon
prijave mogu u potpunosti koristiti sustav, dok novi korisnici prije korištenja moraju
obaviti postupak registracije. Prilikom prijave korisnika provjeravaju se podaci koje unese
korisnik s podacima o korisniku pohranjenima u bazi podataka. Autentifikacija je uspješna
u koliko su ti podaci isti. U protivnom se pojavljuje obavijest o pogrešci (slika 14).
Slika 14. Pogreška prilikom prijave korisnika
19
Slika 15. UML sekvencijski dijagram – uspješna prijava korisnika
Slika 16. Registracija novog korisnika
Prilikom registracije novog korisnika potrebno je unijeti podatke o novom korisniku.
Potrebno je ispuniti sva polja. U koliko neko polje nije ispunjeno javlja se poruka o
pogrešci. Na slici 16 prikazan je obrazac za registraciju novog korisnika. U ovom koraku
korisnika može nastaviti sa registracijom ili odustati. Prilikom registracije provjerava se
korisničko ime sa već postojećim korisničkim imenima registriranih korisnika i ako postoji
isto ime javlja se poruka o pogrešci (slika 17). U ovom slučaju novi korisnik treba odabrati
novo korisničko ime.
20
Slika 17. Poruka o pogrešci prilikom registracije korisnika
Slika 18. Potvrda registracije
21
Slika 19. UML sekvencijski dijagram postupka registracije novog korisnika
Prilikom potvrde registracije korisniku se još jednom prikazuju podaci (slika 18) iz obrasca
za registraciju. U ovom koraku korisnik može odustati od registracije, nastaviti sa
registracijom i u tom slučaju podatci će biti spremljeni u bazu podataka ili se mogu vratiti
na prethodni korak i promijeniti neki podatak koji su možda krivo unijeli. Nakon uspješne
registracije korisnik je preusmjeren na početnu stranicu.
3.2.2. Početna stranica
Slika 20. Početna stranica
22
Na slici 20 prikazana je početna stranica web-aplikacije GeoPubSub. Crvenom bojom su
prikazani gumbi za navigaciju, plavom mapa, a zelenom dozvola o dijeljenju lokacije.
Dijeljenje lokacije se pak odnosi na postavljanje središta mape. U kodu je definirano da
središte mape bude lokacija Fakulteta elektrotehnike i računarstva, međutim ukoliko
korisnik dozvoli dijeljenje lokacije u tom slučaju u središtu mape je trenutna lokacija
korisnika. Prilikom učitavanja početne stranice iz baze se dohvaćaju podaci o obavijestima
za koje je prijavljeni korisnik zainteresiran tj. za koje ima definirane pretplate i na mapi se
prikazuju najvažnije obavijesti.
3.2.3. Obavijesti
Ova stranica je gotovo ista kao i početna. Razlika je u tome što se ovdje prikazuju sve
obavijesti za koje korisnik ima definirane pretplate.
3.2.4. Korisnikove objave
Korisnik može dodavati nove obavijesti, ali može i brisati obavijesti koje je ranije objavio.
Klikom na gumb Nova objava učitava se stranica novaobjava.xhtml koja je vrlo
slična početnoj, ali na desnoj strani (prikazano crvenom bojom na slici 21) je obrazac za
dodavanje novih obavijesti. Postoje tri vrste obavijesti, obavijest na lokaciju (točka),
obavijest na liniju i obavijest na područje. Prilikom dodavanja nove obavijesti korisnik
prvo odabire vrstu obavijesti (točka, linija ili područje), zatim je potrebno ispuniti obrazac.
Nakon obrasca potrebno je klikom na mapu (prikazano plavom bojom na slici 21) odabrati
lokaciju. U koliko je riječ o objavi na točku preostaje još jedino kliknuti na gumb Dodaj
objavu. U koliko je riječ o objavi duž linije potrebno je dodati barem dvije točke prije
nego se obavijest objavi. Odabirom prve točke na stranici nema vidljive razlike, ali već
odabirom druge točke na mapi se iscrtava linija. Odabirom svake nove točke linija se
povećava spajanjem sa prethodnom točkom. Kada korisnik doda željene točke potrebno je
kliknuti na gumb Dodaj objavu. U slučaju da korisnik unese krivu točku može kliknuti
na gumb Nova objava i početi proces ispočetka. U koliko je riječ o objavi na nekom
području proces je gotovo isti kao i za liniju, jedina razlika je u tome da će se zadnja točka
spojiti s prvom kada korisnik klikne na gumb Dodaj objavu.
23
Slika 21. Obrazac za dodavanje nove obavijesti
Korisnik definira naslov obavijesti i sadržaj. Klikom na gumb Dodaj objavu podaci o
obavijesti se spremaju u bazu podataka i prikazuju se korisnicima koji imaju definiranu
pretplatu na lokaciji nove obavijesti, dok klikom na gumb Nova objava korisnik
odustaje od objavljivanja obavijesti i započinje s definiranjem nove objave, podaci se u
ovom slučaju ne spremaju u bazu podataka već se odbacuju (prikazano zelenom bojom na
slici 21).
Slika 22. UML sekvencijski dijagram – dodavanje nove objave
24
Klikom na gumb Briši objavu učitava se stranica brisiobjave.xhtml koja je
prikazana na slici 23.
Slika 23. Brisanje objava
Nakon što se učita stranica brisiobjave.xhtml na mapi su prikazane sve objave koje je
objavio prijavljeni korisnik (slika 23 označeno plavom bojom). Klikom na obavijest
pojavljuje se prozor sa sadržajem obavijesti. Sa desne strane se nalazi popis svih objava
koje je objavio korisnik (slika 23 označeno crvenom bojom). U koliko se želi obrisati neka
obavijest ili više njih potrebno ih je prvo selektirati i zatim kliknuti na gumb Obriši (na
slici 23 označeno zelenom bojom).
3.2.5. Korisnikove pretplate
Korisnik može definirati pretplate i može brisati već postojeće pretplate koje je prije
definirao na sličan način kao i objave. Klikom na gumb Nova pretplata učitava se
stranica novapretplata.xhtml i ovdje korisnik može definirati novu pretplatu.
Postoje tri vrste pretplata. Pretplata na točku, liniju i na područje. Prilikom definiranja
pretplate na točku i na liniju korisnik specificira i udaljenost, izraženu u metrima, unutar
koje će se prikazivati objave. Svaka od ove tri vrste pretplata može biti ili Boolean ili Top
k/w (na slici 24 prikazano žutom bojom). Ukoliko korisnik odabere tip Boolean onda će se
prikazati sve obavijesti na definiranoj lokaciji, a ako odabere tip Top k/w onda će se
25
prikazati najboljih k obavijesti od zadnjih w obavijesti. Više o ovim vrstama pretplata
možete naći u izvoru [24].
Slika 24. Dodavanje nove pretplate
Na slici 24 je prikazana stranica novapretplata.xhtml. Unutar crvene boje je
prikazan obrazac za dodavanje nove pretplate. Nova pretplata na točku se dodaje na način
da se odabere vrsta pretplate točka (unutar crvenog područja na slici 24), zatim se klikne na
mapu (unutar plavog područja na slici 24) na lokaciju na kojoj želimo pretplatu, zatim se
unesu ostali podatci u obrazac i klikne se na gumb Dodaj pretplatu (označeno
zelenom bojom na slici 24). Ukoliko želimo dodati pretplatu na liniju postupak je vrlo
sličan kao i za točku, ali razlika je ta što se nakon odabira vrste pretplate treba odabrati više
točaka unutar mape (barem dvije). Nakon što kliknemo na lokaciju početne točke linije, na
mapi se ne vidi nikakva primjena. Nakon odabira lokacije druge točke na karti se iscrtava
linija. Odabirom svake sljedeće točke stvara se linija između nje i prethodne točke. Jednom
kad korisnik doda sve željene točke, pretplata se stvara klikom na gumb Dodaj
pretplatu i biva pohranjena u bazu podataka. U slučaju da korisnik unese krivu točku u
bilo kojem trenutku može kliknuti na gumb Nova pretplata (označeno zelenom
bojom na slici 24) i započeti cijeli proces definiranja pretplate ispočetka. Dodavanje
26
pretplate na područje je veoma slično dodavanju pretplate na liniju. Razlika je u tome što
nije potrebno dodavati udaljenost već će se prikazati samo obavijesti koje se nalaze unutar
definiranog područja. Prilikom dodavanja točaka koje definiraju područje treba imati na
umu da će se zadnja linija poligona dodati sama.
Slika 25. Brisanje pretplate
Na slici 25 je prikazana stranica brisipretplate.xhtml. Vrlo je slična stranici za
brisanje objava. Sa desne strane su prikazani nazivi pretplata (označeno crvenom bojom na
slici 25). Postupak brisanja je isti kao i za brisanje objava. Na desnoj strani se selektiraju
pretplate koje se žele obrisati i klikne se na gumb Obriši. Klikom na pojedinu pretplatu,
korisniku se prikazuju podatci o toj pretplati (prikazano na slici 26).
27
Slika 26. Informacije o pretplati
3.2.6. Korisničke postavke
Slika 27. Postavke
Na slici 27 prikazana je stranica postavke.xhtml. Ovdje korisnik može promijeniti
podatke koje je definirao prilikom registracije. Još mu je omogućena primjena teme web-
aplikacije. Na ovaj način korisnik može promijeniti izgled cjelokupne web-aplikacije
prema vlastitom ukusu. Nakon izmjene podatci se spremaju u bazu podataka.
28
4. Instalacija programske potpore
4.1. PostgreSQL i PostGIS
PostgreSQL je objektno-relacijska baza podataka otvorenog koda. Nastala je 1995. godine
i razvija je otvorena zajednica programera. Postoje verzije za većinu današnjih operacijskih
sustava. Predstavlja jednu od najboljih nekomercijalnih baza podataka i postoje brojni
dodatci koji omogućuju razne funkcionalnosti. Jedan takav dodatak je i PostGIS i on
omogućuje rad sa geoprostornim i geometrijskim podatcima.
Priložena verzija baze podataka je postgresql 9.3.5, preuzeta sa internet stranice
http://www.enterprisedb.com/products-services-training/pgdownload#windows i
namijenjena je za 64-bitni operacijski sustav Windows 7. Nastavak PostGIS je preuzet sa
http://www.postgresql.org/ftp/postgis/pg9.3/v2.1.3/win64/.
U nastavku su prikazane upute za instalaciju PostgreSQL baze podataka i PostGIS
dodatka.
Slika 28. Instalacija PostgreSQL baze podataka
29
Slika 29. Odabir mape u koju će se instalirati PostgreSQL
Slika 30. Odabir mape u koju će biti spremljene korisničke baze podataka
30
Slika 31. Definiranje lozinke za pristup bazi podataka
Slika 32. Definiranje porta za pristup bazi podataka
31
Slika 33. Definiranje lokalnih postavki
Slika 34. Potvrda instalacije
32
Slika 35. Završetak instalacije PostgreSQL baze podataka
Slika 36. Prihvaćanje licenčnog ugovora za PostGIS dodatak
33
Slika 37. Odabir komponenti za instalaciju
Slika 38. Odabir mape u koju će se instalirati PostGIS
34
Slika 39. Postavljanje varijabli okoline
Slika 40. Omogućavanje korištenja drivera
35
Slika 41. Postavljanje varijabli okoline
Slika 42. Završetak instalacije PostGIS dodatka
36
Na slikama 28 – 35 je prikazan postupak instalacije PostgreSQL baze podataka, dok je na
slikama 36 – 42 prikazan postupak instalacije dodatka PostGIS.
Nakon što je instalirana baza podataka PostgreSQL i dodatak PostGIS potrebno je kreirati
određene tablice koje će biti korištene od strane web-aplikacije.
Slika 43. Stvaranje baze podataka
Slika 44. Stvaranje tablica
Na slikama 43 i 44 je prikazan postupak stvaranja baze podataka i tablica.
37
Slika 45. Entity-Relationship dijagram
Na slici 45 je prikazan ER dijagram baze podataka koju koristi web-aplikacija GeoPubSub.
Sa slike vidimo da jednu objavu može stvoriti samo jedan korisnik. Isto vrijedi i za
pretplatu, dok jedan korisnik može stvoriti više objava i više pretplata. Atributi idautor
iz tablica objave i pretplate su referenciraju atribut idkorisnika iz tablice
korisnici.
4.2. Glassfish
Web-aplikacija GeoPubSub se izvodi na poslužitelju GlassFish 4.1 preuzetom s [21]. U
nastavku je opisan postupak instalacije i konfiguracije poslužitelja GlassFish 4.1.
38
Potrebno je kopirati mapu glassfish4 na tvrdi diska računala (u ovom slučaju to je C:).
Kako bi omogućili komunikaciju između poslužitelja GlassFish i baze podataka potrebno
je kopirati JDBC drivere za bazu podataka PostgreSQL (koji se nalaze u mapi
...\GeoPubSub\postgresql-9.2-1002.jdbc4.jar) u mapu
C\\glassfish4\glassfish\domains\domain1\lib. Nakon toga potrebno je iz naredbenog retka
(start > cmd.exe > Run as administrator) pokrenuti poslužitelj na način da se pozicionira u
mapu C\\glassfish4\glassfish\bin i pokrene naredba asadmin start-domain.
Slika 46. Pokretanje poslužitelja GlassFish
Nakon ovoga potrebno je u preglednik upisati adresu localhost:8080 nakon čega se
pojavljuje strani prikazana na slici 47. Na ovoj stranici potrebno je kliknuti na poveznicu
(označeno crvenom bojom) kako bi se nastavilo sa podešavanjem poslužitelja.
Slika 47. Početna stranica poslužitelja GlassFish
39
Slika 48. Administrativno sučelje poslužitelja GlassFish
Klikom na poveznicu sa slike 47 prikazuje se administrativno sučelje poslužitelja
GlassFish (prikazano na slici 48). Kako bi web-aplikacija ispravno funkcionirala potrebno
je ostvariti komunikaciju između poslužitelja i baze podataka. Ovo se postiže definiranjem
resursa od strane poslužitelja.
Slika 49. Dodavanje resursa
40
Slika 50. Učitavanje konfiguracijske datoteke
Datoteka glassfish-resources.xml sadrži parametre potrebne za spajanje na bazu
podataka.
Slika 51. Definiranje parametara za spajanje na bazu podataka
41
Slika 52. Provjera povezanosti
Na slikama 49 – 52 prikazan je postupak definiranja resursa (tj. povezivanje sa poslužitelja
i baze podataka). Nakon ovoga potrebno je još dodati web-aplikaciju na poslužitelj.
Slika 53. Dodavanje web-aplikacije
42
Slika 54. Odabir web-aplikacije
Na slikama 53 i 54 prikazan je postupak dodavanja web-aplikacije GeoPubSub na
poslužitelj GlassFish. Nakon ovoga potrebno je u preglednik upisati adresu
localhost:8080/GeoPubSub kako bi se započelo sa korištenjem web-aplikacije.
4.3. JavaServer Faces i Primefaces
Izrada web-aplikacije zahtjeva programski okvir koji generira stranice u HTML, prima
podatke od korisnika i upravlja navigacijskim tokom. Podrška za Model-View-Controller
(MVC) pokazala se kao najbolji izbor za programski okvir. U MVC okviru upravljač
preuzima ulazne podatke od korisnika i odlučuje koji pogled prikazati kao sljedeći. Pogledi
su zaslužni za prikaz HTML stranice u internet preglednicima. Model učahurava podatke
iz obrazaca koji se nalaze unutar internet stranice i u koje korisnik unosi podatke.
JavaServer Faces (JSF) je standardni Java EE programski okvir. JSF je dobro dizajniran,
jednostavan za korištenje i orijentiran na ulazno-izlazne komponente. Tehnologija
Primefaces omogućava izradu korisničkog sučelja za web-aplikacije na jednostavan način
tj. dovoljno je osnovno predznanje o tehnologiji HTML. Predstavlja proširenje tehnologije
JavaServer Faces (JSF). Primeface je nastao 2009. godine i otvorenog je koda. Od samoga
početka ima veliku potporu od strane tvrtke Oracle. Trenutno zadnja verzija je 5.1 ali je za
43
izradu web-aplikacije GeoPubSub korištena verzija 5.0. Primefaces sadrži komponentu
gmap koja omogućuje izradu interaktivnih karti. Neka od obilježja JSF-a i Primeface-a su:
podržavaju događaje, koriste facelete, podržavaju tehnologiju ajax, omogućuju
jednostavnu navigaciju između stranica, podržavaju validaciju, upravljaju iznimkama...
Više informacija može se naći u izvorima [2] i [3].
44
Zaključak
U radu je razvijen i predstavljen geoprostorni sustav objavi-pretplati koji se sastoji od web-
aplikacije GeoPubSub i geoprostprne baze podataka PostGIS. Za pristup sustavu
neophodno je da korisnici imaju pristup Internetu zbog toga što web-aplikacija GeoPubSub
koristi uslugu Google maps. za prikaz geografske karte. Korištenjem usluge, korisnici na
vrlo jednostavan i intuitivan način mogu objavljivati obavijesti na željenim lokacijama.
Podržane su tri vrste geografskih lokacija: točka, linije i područje (tj. poligon). Jedna od
mogućih primjena ovog sustava je objavljivanje popunjenosti smještajnih mjesta u
turističkim središtima. Turisti bi na ovaj način vrlo jednostavno mogli doći do informacija
o smještaju u turističkom središtu u kojemu žele provesti odmor. Sustav bi se dodatno
mogao poboljšati na način da se korisnicima omogući detaljnije definiranje pretplata koje
bi obuhvaćalo i pretplate na sadržaj, a ne samo na geoprostorne objekte komponentu.
Dodatno bi se moglo korisnicima omogućiti i objavljivanje različitog višemedijskog
sadržaja kao što su slike ili audio zapisi i slično.
45
Literatura
[1] Ivana Podnar Žarko, Mario Kušek, Ignac Lovrek, Raspodijeljeni sustavi - radna
inačica udžbenika 2011.
[2] Çivici Çağatay, Primefaces user guide 5.0.
[3] Mert Çalışkan, Oleg Varaksin, PrimeFaces Cookbook, Packt Publishing 2013.
[4] David Geary, Cay Horstmann, Core JavaServer Faces – third edition, Prentice Hall
2010.
[5] Ed Burns, Chris Schalk, JavaServer Faces 2.0: The Complete Reference, McGraw-
Hill 2010.
[6] Zdravko Galić, Geoprostorne baze podataka, Golden marketing – Tehnička knjiga
2006.
[7] PRIMEFACES SHOWCASE, http://www.primefaces.org/showcase/, 27.1.2015
[8] POSTGIS WORKSHOP, http://workshops.boundlessgeo.com/postgis-
intro/index.html, 27.1.2015.
[9] POSTGIS WORKSHOP, http://workshops.boundlessgeo.com/postgis-
intro/geography.html, 27.1.2015.
[10] POSTGIS MANUAL, http://postgis.net/docs/index.html, 27.1.2015.
[11] VIVIDSOLUTIONS GEOMETRY JAVADOC,
http://www.vividsolutions.com/jts/javadoc/com/vividsolutions/jts/geom/Geometry.
html, 27.1.2015.
[12] GEOJSON SPECIFIKACIJA, http://geojson.org/geojson-spec.html, 27.1.2015.
[13] GEOTOOLS JAVADOCS, http://docs.geotools.org/latest/javadocs/, 27.1.2015.
[14] JAVA WEB TUTORIAL,
http://www.javaguicodexample.com/javawebmysqljspjstljsf5_1.html, 27.1.2015.
46
[15] POSTGRESQL JAVA TUTORIAL, http://zetcode.com/db/postgresqljavatutorial/,
27.1.2015.
[16] Bruce Eckel, Misliti na Javi, Mikro knjiga, 2002.
[17] Antun Sekulić, Geoprostorni sustav objavi-pretplati za uređaje s operacijskim
sustavom Android, Diplomski rad, Fakultet elektrotehnike i računarstva, Zavod za
telekomunikacije, 2014.
[18] POSTGIS 2.2.0 MANUAL, http://postgis.net/docs/manual-
dev/reference.html#Management_Functions, 27.1.2015.
[19] POSTGIS 2.2.0 MANUAL, http://postgis.net/docs/manual-
dev/PostGIS_Special_Functions_Index.html, 27.1.2015.
[20] POSTGIS WORKSHOP, http://workshops.boundlessgeo.com/postgis-intro/postgis-
functions.html, 27.1.2015.
[21] GLASSFISH, https://glassfish.java.net/download.html, 31.1.2015.
[22] Yuan Ye, Fan Guangrui, Ou Shiqi, An Algorithm for Judging Points Inside or
Outside A Polygon, School of Software Engineering, HuaZhong University of
Science & Technology Wuhan, China, 2013.
[23] CREATING A CONNECTION POOL,
http://www.hildeberto.com/2010/02/creating-a-connection-pool-to-postgresql-on-
glassfish-v3.html, 27.1.2015.
[24] Krešimir Pripužić, Model usporedbe „k najboljih“ u sustavima objavi-pretplati
temeljen na klizećem prozoru, Doktorska disertacija, Fakultet elektrotehnike i
računarstva, Zavod za telekomunikacije, 2010.
47
Sažetak
U radu je prikazan implementaciju geoprostornog sustava objavi pretplati. Sustav koristi
PostgreSQL bazu podataka sa dodatkom PostGIS za spremanje geoprostornih objekata. Pri
izradi sustava je korištena tehnologija JavaServer Faces (posebno biblioteka Primefaces
5.0). Sustav je prvenstveno namijenjen za korisnike stolnih računala sa pristupom na
internet. Sustav je razvijan u razvojnom okruženju NetBeans i pokretan je na poslužitelju
GlassFish.
48
Summary
This paper describes implementation geospatial publish-subscribe system. System use
PostgreSQL data base with PostGIS extension for storing geospatial objects. In systems
creation its used JavaServer Faces tehnology (especialy Primeface 5.0 library). System is
primarily intended for users that have computers with internet connection. System is
developed on NetBeans integrated development environment and it is executed on
GlassFish server.