eské vysoké u£ení technické v Praze Fakulta elektrotechnická Katedra po£íta£·
Bakalá°ská práce
Sociální sí´ pro knihomoly
Marek Horák
Vedoucí práce:
Ing. Ond°ej Macek
Studijní program: Softwarové technologie a management, Bakalá°ský
Obor: Softwarové inºenýrství
25. kv¥tna 2010
iv
v
Pod¥kování Zde bych cht¥l pod¥kovat panu Ing. Od°eji Mackovi za velmi dobré p°ípomínky k bakalá°ské práci, rodi£·m a p°ítelkyni za podporu p°i psaní této práce.
vi
vii
Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon).
V Praze dne 25. 5. 2010
.............................................................
viii
Abstract This bachelor work deals with a layout of web social network. The work is concerned about requirements for the application of this type and describes briey chosen social networks accessible on the Internet. Futhermore, there is released the analysis including of the layout.
Abstrakt Tato bakalá°ská práce se zabývá analýzou a návrhem webové sociální sít¥. Práce pojednává o poºadavcích na takovouto webovou aplikaci a stru£n¥ popisuje vybrané sociální sít¥ dostupné na internetu. Mimoto je zde uvedena také analýza v£etn¥ návrhu aplikace.
ix
x
Obsah 1 Úvod
1
2 Sociální sít¥
3
2.1
Stru£ná historie sociálních sítí . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.2
Sou£asné populární sít¥
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
Twitter
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2.3
Písmák
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2.4
esko-slovenská lmová databáze . . . . . . . . . . . . . . . . . . . . .
5
2.2.5
Librarything.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2.1
Facebook
2.2.2
3 Analýza poºadavk·
7
3.1
Cíle bakalá°ské práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2
Poºadavky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.2.1
Správa £tená°ského deníku . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.2.2
Správa díla
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.2.3
Správa prolu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.2.4
Správa komentá°·
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.2.5
Správa aktualit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.2.6
Správa literárního klubu . . . . . . . . . . . . . . . . . . . . . . . . . .
8
4 Analýza 4.1
4.2
7
9
Analytický model t°íd
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
4.1.1
Uºivatel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
4.1.2
P°e£tená kniha
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
4.1.3
Hodnocení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
4.1.4
Komentá° . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
4.1.5
Literární klub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
4.1.6
Dílo
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
4.1.7
Kapitola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
Model p°ípad· uºití
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Technologie 5.1
IDE
5.2
JAVA
5.3
Pouºité frameworky
10
13
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xi
14
xii
OBSAH
5.3.1
Spring framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
5.3.1.1
Core Container . . . . . . . . . . . . . . . . . . . . . . . . . .
15
5.3.1.2
Data Access/Intgration
15
5.3.1.3
Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
5.3.1.4
Spring Web MVC
. . . . . . . . . . . . . . . . . . . . . . . .
15
5.3.1.5
Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
. . . . . . . . . . . . . . . . . . . . .
5.3.2
Spring security
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.3
JPA a Hibernate
5.3.4
FreeMarker
5.3.5
CSS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
5.3.6
Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
5.4
PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
5.5
Apache Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
6 Návrh 6.1
6.2
16
21
Návrhový model
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
6.1.1
Model
6.1.2
Controllers
6.1.3
Dao
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
6.1.4
Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
6.1.5
Forms
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
6.1.6
Validators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
Postup zpracovávání poºadavku . . . . . . . . . . . . . . . . . . . . . . . . . .
23
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 Realizace
22
25
7.1
Iterace £. 1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
7.2
Iterace £. 2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
7.3
Iterace £. 3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
7.4
Iterace £.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
7.5
Iterace £.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
7.6
Iterace £. 6
27
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8 Záv¥r
29
8.1
Zhodnocení
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
8.2
Budoucí práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
8.3
Shrnutí
29
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Literatura
31
A Seznam pouºitých zkratek
33
B UML diagramy
35
C Use casy
45
D Instala£ní p°íru£ka
51
D.1
Instalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
OBSAH
E Obsah p°iloºeného DVD
xiii
53
xiv
OBSAH
Seznam obrázk· 3.1
Skupiny funk£ních poºadavk· . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1
Analytický model £tená°ského deníku a díla
. . . . . . . . . . . . . . . . . . .
10
4.2
P°ípady uºití registrovaného uºivatele pro £tená°ský deník . . . . . . . . . . .
12
5.1
Diagram J2EE, JVM a OS s hardwarem . . . . . . . . . . . . . . . . . . . . .
14
5.2
Postup zpracování ºádosti ve Spring Web MVC . . . . . . . . . . . . . . . . .
16
5.3
Fungování FreeMarkeru, zdroj: www.freemarker.org . . . . . . . . . . . . . . .
17
6.1
Diagram balí£k· projektu
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
6.2
Sekven£ní diagram pro p°idání nové knihy . . . . . . . . . . . . . . . . . . . .
24
B.1
Skupina funk£ních poºadavk· pro správu £tená°ského deníku
35
B.2
Skupina funk£ních poºadavk· pro správu díla
B.3
Skupina funk£ních poºadavk· pro správu prolu
. . . . . . . . . . . . . . . .
36
B.4
Skupina funk£ních poºadavk· správu komentá°·
. . . . . . . . . . . . . . . .
37
B.5
Správa aktualit
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
B.6
Správa literárního klubu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
B.7
P°ípady uºití pro uºivatele s právy admina . . . . . . . . . . . . . . . . . . . .
39
B.8
P°ípady uºití registrovaného uºivatele pro b¥ºné akce . . . . . . . . . . . . . .
39
B.9
P°ípady uºití registrovaného uºivatele pro literární klub
. . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
B.10 P°ípady uºití registrovaného uºivatele pro literární tvorbu
7
36
40
. . . . . . . . . . .
40
. . . . . . . . . . . . . . . . . . . . .
41
B.12 Diagram t°íd v balí£ku Model . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
B.13 Diagram t°íd v balí£ku Controllers
. . . . . . . . . . . . . . . . . . . . . . . .
42
. . . . . . . . . . . . . . . . . . . . . . . . . .
42
B.11 P°ípady uºití neregistrovaného uºivatele
B.14 Diagram t°íd v balí£ku Service
B.15 Diagram t°íd v balí£ku Controllers
. . . . . . . . . . . . . . . . . . . . . . . .
xv
43
xvi
SEZNAM OBRÁZK
Seznam tabulek 7.1
P°ípady uºití implementované v 1. iteraci
. . . . . . . . . . . . . . . . . . . .
25
7.2
P°ípady uºití implementované v 2. iteraci
. . . . . . . . . . . . . . . . . . . .
26
7.3
P°ípady uºití implementované v 3. iteraci
. . . . . . . . . . . . . . . . . . . .
26
7.4
P°ípady uºití implementované v 3. iteraci
. . . . . . . . . . . . . . . . . . . .
27
7.5
P°ípady uºití implementované v 5. iteraci
. . . . . . . . . . . . . . . . . . . .
27
7.6
P°ípady uºití implementované v 6. iteraci
. . . . . . . . . . . . . . . . . . . .
28
xvii
xviii
SEZNAM TABULEK
Kapitola 1
Úvod V poslední dob¥ se sociální sít¥ na internetu staly velmi populárními. Mnozí mladí lidé, a nejen oni, si na sociálních sítích zakládají proly, aby z·stali v kontaktu se svými kamarády, nebo na²li nové p°átele s podobnými zájmy, t°eba i kdyº je z druhého konce sv¥ta. M¥ tento fenomén zaujal ze dvou d·vod·. Jeden z nich je práv¥ podhled uºivatele, který sí´ vyhledává. A práv¥ v tomto sm¥ru jsou je²t¥ na internetu mezery, protoºe ºádná sí´ nem·ºe pokrýt v²echny lidem dostupné moºnosti £i jim je v²echny nabízet. Druhý d·vod je pak pohled studenta jako programátora, jelikoº naprogramovat svou vlastní sí´ je pro n¥j výzva, která mu p°iná²í dal²í nové zku²enosti. Mnoho lidí v sou£asné dob¥ propadlo vá²ní £tení knih. N¥kte°í z nich za£ali psát i svá vlastní díla. S nástupem internetu vznikly weby, které umoºnily jednodu²²í publikaci d¥l ²iroké ve°ejnosti. P°íkladem m·ºe být web pismak.cz, který jiº má desetiletou tradici. Rovn¥º na internetu jsou i weby zam¥°ené na katalogizaci knih, tedy vytvá°ení vlastní knihovny. Otázkou z·stává, zda existuje na internetu sociální sí´, která by kombinovala vytvá°ení vlastních d¥l se £tená°ským deníkem? Po hledání a procházení r·zných web·, jsem nenarazil na ºádnou takovou sociální sí´. Proto jsem se pokusil takovouto sí´ vytvo°it.
1
2
KAPITOLA 1.
ÚVOD
Kapitola 2
Sociální sít¥ Sociální sí´ je propojená skupina lidí, která se navzájem ovliv¬uje. Na internetu jsou sociální sít¥ kombinací webhostingové sluºby a speciálního vyhledáva£e. Tyto sluºby nabízí r·zné zp·soby komunikace mezi uºivateli: chaty, zprávy, e-maily [17]. V tomto textu je budu ozna£ovat pod názvem systémy. Systémy tohoto typu pak umoº¬ují uºivatel·m spolu navzájem komunikovat, vyhledávat nové p°átele a hlavn¥ vytvá°et si sv·j vlastní strukturovaný prol. Systém m·ºe být zam¥°en v²eobecné zájmy, nebo na ur£itou oblast zájmu, nap°. hudba, literatura a podobn¥. Sociální sít¥ organizují obsah, které mohou speciální vyhledáva£e velmi snadno prohledat. I kdyº se sít¥ navzájem li²í, mají p°esto tyto spole£né vlastnosti: [1]
•
vytvá°ení vzájemných vztah· mezi jednotlivými kontakty
•
mechanismus postupného odkrývání sít¥
•
zp·sob roz²i°ování mého prolu tím, ºe poºádám své známe o p°edání kontaktu k jejích známým
Sociální sít¥ lákají nové uºivatele svými výhody, které jiné systémy poskytnout nedokáºí:
•
jsou dostupné z jakéhokoli po£íta£e, protoºe není nutnost n¥co instalovat, nap°. komunika£ní nástroje.
•
jednodu²²í zp·sob získávaní nových p°átel a ºádost o navázání kontaktu neº nap°íklad v ICQ, de se ºádá o autorizaci
•
mnohem v¥t²í moºnosti sdílení status·, neº jen online £i o-line. N¥které sít¥ nabízejí samy n¥které vtipné hlá²ky
•
komunitní servery ºijí vlastním ºivotem tím, ºe uºivatelé nejsou nuceni £ekat na odpov¥¤, naopak mohou nahrávat fotky, videa, nebo komentovat
Sociální sít¥ nabízejí rmám moºnosti, jak oslovit nové potenciální zákazníky. Zp·sob· jak toho dosáhnout je hned n¥kolik. Toho m·ºe být dosaºeno chytlavými hrami, p°i níº uºivatelé absolvují psychologické testy zpracované zábavnou formou, £i sledováním chování
3
4
KAPITOLA 2.
SOCIÁLNÍ SÍT
cílové skupiny. Dal²ím zp·sobem je vybudování speciální komunity kolem ur£ité zna£ky. Spole£nost tak vyuºije server k organizaci r·zných akcí nebo sdílení perli£ek ze ºivota rmy. Sociální sít¥ jsou rovn¥º vhodné pro tzv. guerilla marketing. P°i tomto typu marketingu je mít v¥rné kamarády, kte°í s roz²í°ením pom·ºou. Za minimální náklady se dá dosáhnout pom¥rn¥ velkého úsp¥chu, pokud se poda°í nadchnout i ostatní uºivatele. [17] Socální sít¥ mohou slouºit i jako informa£ní médium. P°íkladem mohou být leto²ní povodn¥, které se v pr·b¥hu kv¥tna odehrály na Morav¥ a ve Slezsku. Na Facebooku nebo Twitteru vznikly skupiny, které informovaly o d¥ní b¥hem záplav. Díky uºivatel·m bylo moºné si zjistit stav vody ve svém okolí. Na Facebooku fungovala globální skupina Voda aktuáln¥-Zprávy!, která m¥la k 18.5.2010 tém¥° 30 000 £len·.
2.1
Stru£ná historie sociálních sítí
První sít¥ za£aly formou v²eobecných online komunit, které byly zam¥°eny na interakci uºivatel· pomocí chatovacích místností. Uºivatelé sdíleli osobní informace a své idee s ostatními skrz publika£ní nástroje, které byly p°edch·dcem dne²ních blog·, na svých domovských stránkách. Jiné sít¥ up°ednost¬ovaly spojení s jinými uºivateli pomocí e-mailu. Koncem 90. let 20. století byly vyvinuty nové metody sociálních sítí, které zm¥nily jejich model, jenº jednodu²e doporu£oval p°idávání uºivatel· jednotlivc·m, které mohli spravovat sami. Rovn¥º se objevil nový systém nazývaný The Web of Trust, který umoºnil uºivatel·m vytvá°et sociální sít¥ zaloºené na tom komu d·v¥°uje. Velký nárust popularity sociálních sítí p°i²el aº mezi lety 2002 aº 2005. V této dob¥ se objevilo n¥kolik sítí, které se staly sv¥tov¥ uºívané. První z nich byly Friendster.com v roce 2002, poté MySpace.com a LinkedIn.com a o rok pozd¥ji Bebo.com. V této dob¥ taky vznikal Facebook. [16]
2.2
Sou£asné populární sít¥
Na wikipedii na adrese je k dispozici seznam hlavních sociálních sítí na sv¥t¥, které jsou momentáln¥ aktivní. Já zde popí²i jen n¥kolik sítí, jak v²eobecného zájmu tak i zam¥°ené na ur£itou oblast.
2.2.1 Facebook Zakladatelem Facebook.com je Mark Zuckerberg, který 28. °íjna 2003 zaloºil Facemash, zatímco studoval v druhé ro£níku na Harwardské Univerzit¥. V následujícím semestru za£al pracovat na Thefacebook.com, který spustil 4. února 2004. Systém byl p°ístupný pouze pro studenty na jeho alma mater. O n¥co pozd¥ji se roz²í°il i na dal²í ²koly v USA a Kanad¥, aº kone£n¥ 26. zá°í 2006 se stal p°ístupný ve°ejnosti star²í 13-ti let. Hlavní funkcí Facebooku je Publisher, který umoº¬uje uºivateli p°idat novou zprávu, která m·ºe být délky aº 420 znak·, na vlastní Ze¤. Ze¤ je sou£ást prolu, na které se zobrazují zprávy ostatním uºivatel·m. Po p°ihlá²ení se uºivateli zobrazí Nejnov¥j²í zprávy, které p°idali na svou ze¤ ostatní uºivatelé. Uºivatel m·ºe sdílet fotograe, nebo p°idávat videa, která jsou taktéº sou£ástí prolu a které mohou jeho p°átelé komentovat.
2.2.
SOUASNÉ POPULÁRNÍ SÍT
5
Dal²í funkcí je darování virtuálních dárk·, p°i£emº dárek má hodnotu 1 dolaru. Na Facebooku je k dispozici spousta aplikací t°etích stran. Jsou to nap°íklad hry, p°ání k Vánoc·m a také bazar, který slouºí k vkládání inzerátu, vým¥n¥ a prodeji v¥cí. Uºivatel m·ºe své p°átele ²touchnout. Tato funkce nemá moc zjevného uºitku, v¥t²inou se v²ak interpretuje jako upozorn¥ní na sebe. Toto ²touchnutí m·ºe být libovolnou akcí, nap°. obejmutí, zlechtání atd. Facebook podporuje t°i stupn¥ soukromí: Pro p°átele, pro p°átele p°átel a nebo pro v²echny uºivatele facebooku. [5]
2.2.2 Twitter Twitter je dal²í z nejoblíben¥j²ích sociálních sítí na sv¥t¥. Snahou Twitteru je skoubit do sebe r·zné formy komunika£ních nástroj·, jakoje ICQ, Skype a dal²í. Sám sebe popisuje jako sluºbu pro p°átele, rodinu a spolupraconíky, aby mohli z·stat v kontaktu pomocí rychlých, frekventovaných odpov¥dí na otázku: What are you doing? [22]. Twiter umoº¬uje mikroblogovaní, coº je sdílení krátkých zpráv mezi uºivateli. Tato krátká zpráva tzn. Tweet je dlouhá maximáln¥ 140 znak·. Uºivatel si m·ºe krátkou zprávu na prol uloºit skrze web, SMS, nebo pomocí aplikací t°etích stran. Krátké zprávy se více rozvinuly do kaºdodenních záºitk· a nabývají tvaru sdílení odkaz· na r·zný zajímavý obsah na internetu, konverzaci na nejºhav¥j²í témata, fotky, hudba, lmy £i krize a tak dále. Twitter je jiº vyuºíván v n¥kolika odv¥tvích: vzd¥lání, politice, kampaních a také jako propaga£ní nástroj rem [20].
2.2.3 Písmák Písmák je £eská sociální sí´ zam¥°ena na amatérskou literární tvorbu. Mezi základní funkce pat°í vytvá°ení d¥l a sbírek. Uºivatel má moºnost si k dílu a sbírce nastavit, zda-li stojí o hlub²í kritiku £i nikoli. Uºivatel rovn¥º m·ºe psát kritiku na díla ostatních uºivatel· nebo si jiné uºivatele p°idat mezi své oblíbené autory. Dále písmák umoº¬uje uºivatel·m se seskupovat do klub·, ve kterých je moºné diskutovat, nebo také publikovat díla. Uºivatelé mohou je²t¥ vyuºít diskuzních fór nebo e-mailovou schránku, která je bezplatn¥ k dispozici po úsp¥²né registraci.
2.2.4 esko-slovenská lmová databáze esko-slovenská lmová databáze je server zam¥°ený na lmovou a televizní tvorbu. Uºivatelé mohou lmy hodnotit a psát k nim jednotlivé komentá°e. Kaºdý uºivatel si m·ºe vytvo°it svoji lmotéku, p°idávat si oblíbené lmy, seriály, herce a reºiséry. Krom¥ t¥chto vlastností nabízí je²t¥ pro uºivatele vyhledávání titul·, nebo programy kin, televize a také diskutovat na jednotlivá témata z oblastí lmu. Server nabízí burzu DVD, ve které uºivatel m·ºe nabídnout DVD k prodeji £i jej shán¥t.
6
KAPITOLA 2.
SOCIÁLNÍ SÍT
2.2.5 Librarything.com Librarything.com je podobná sociální sí´ jako esko-slovenská lmová databáze zam¥°ená na £tená°ský deník. Umoº¬uje katalogizovat knihy, které uºivatel jiº p°e£etl, které si chce p°e£íst, knihy, které vlastní, £i jakoukoli jinou kombinaci katalogizování [11]. Rovn¥º uºivatel m·ºe psát recenze ke knihám, £íst recenze ostatních uºivatel· nebo doporu£it knihu, kterou má rád. Krom¥ základních funkcí, jako jsou vyhledávaní knih, chatovaní, komentování nebo editování prolu, nabízí rovn¥º vyhledání knihoven, obchodu s knihami podle místa, nebo importování knih z r·zných zdroj· - webové stránky nebo ze souboru v podporovaných formátech. Dále m·ºe uºivatel vyhledávat p°átele podle e-mailové adresy, p°idávat se ke skupinám a diskutovat. Librarything.com má sv·j vlastní vyhledáva£, pomocí kterého je moºné prohledat obsah na celém serveru. Uºivatelé si mohou m¥nit styl pomocí jednoduchého editoru, nebo si mohou prohlídnout statistiku vlastní knihovny. Nevýhodou je ,ºe Librarything je zadarmo do po£tu 200-ti kníºek v deníku. P°i v¥t²ím po£tu knih je nutné platit £lenství, které £iní 10 dolar· za rok, nebo 25 dolar· na celoºivotní £lenství [11].
Kapitola 3
Analýza poºadavk· 3.1
Cíle bakalá°ské práce
Mým cílem je podle popsaných poznatk· analyzovat, navrhnout a implementovat systém sociální sít¥, který bude zam¥°ený na katalogizaci p°e£tených knih a vytvá°ení vlastní tvorby. Velkou inspirací pro vytvo°ení takového systému jsou pismak.cz a librarything.com.
3.2
Poºadavky
Poºadavky jsou rozd¥leny do skupin podle toho, jakou funk£nost systému mají vymezovat.
•
Správa £tená°ského deníku
•
Správa díla
•
Správa prolu
•
Správa komentá°·
•
Správa aktualit
•
Správa literárního klubu
Obrázek 3.1: Skupiny funk£ních poºadavk·
7
8
KAPITOLA 3.
ANALÝZA POADAVK
3.2.1 Správa £tená°ského deníku Systém umoºní p°idání knih do £tená°ského deníku. Uºivatel bude moci také ohodnotit knihy, p°i£emº danou knihu m·ºe hodnotit pouze jedenkrát. Své hodnocení uºivatel nem·ºe dále upravovat nebo mazat. Taktéº m·ºe uºivatel knihu ze svého £tená°ského deníku odebrat, p°i£emº ve²keré komentá°e a hodnocení, které uºivatel vytvo°il, z·stanou ke knize p°idruºené. Systém uºivateli umoºní p°idávat komentá°e. Pro jednu knihu m·ºe uºivatel p°idat i více komentá°·. Komentá° nem·ºe být pak editovatelný a smazatelný.
3.2.2 Správa díla Systém umoºní jednoduché vytvo°ení, editování a i publikování díla. V rámci správy díla je moºné upravovat kapitoly nebo je vytvá°et. Uºivatel musí kapitolu publikovat,aby byla dostupná k p°e£tení. Zde bude také p°ehled d¥l a kapitol, které nejsou za°azené v ºádném díle. Proto uºivatel bude moci také p°idávat kapitolu do knihy. Publikovaná díla a kapitoly není moºné editovat nebo mazat.
3.2.3 Správa prolu Systém zde umoºní zm¥nu nastavení, které uºivatel zadal p°i registraci. Umoºní nap°íklad zm¥nu hesla, e-mailové adresy, nebo zm¥nit dal²í nastavení pro zobrazení r·zným uºivatel·m.
3.2.4 Správa komentá°· Správa komentá°· obsahuje p°idání komentá°e. Komentá° se m·ºe vztahovat k dílu £i k p°e£tené knize. Uºivatelé nemají moºnost smazat komentá°.
3.2.5 Správa aktualit Systém umoºní ur£itému kruhu uºivatel· vystavovat aktuality, které jsou zobrazovány na úvodní stránce systému.
3.2.6 Správa literárního klubu Systém umoºní vytvá°ení literárních klub· (dále jen klub), p°idávání a odebírání uºivatel· a vytvá°ení diskuzních témat.
Kapitola 4
Analýza 4.1
Analytický model t°íd
Analytický model t°íd modeluje obchodní doménu, typy objekt· a vztahy mezi nimi. Snaºí se být co nejvíce jednoduchý a p°ehledný bez implementa£ních detail·.
4.1.1 Uºivatel Uºivatel je osoba, která bude systém vyuºívat. Proto je nutné uºivatele v rámci systému unikátn¥ identikovat. D·leºité informace, které systém bude vyºadovat jsou p°ezdívka, heslo a e-mail. P°ezdívkou bude uºivatel identikován v systému unikátn¥.
4.1.2 P°e£tená kniha P°e£tená kniha v systému reprezentuje knihu, kterou uºivatel p°e£etl. T°ída udrºuje základní informace o knize, jako jsou název, autor, popis. Seznam knih pak reprezentuje £tená°ský deník.
4.1.3 Hodnocení Tato t°ída reprezentuje hodnocení. Proto t°ída udrºuje informace o tom, který uºivatel hodnotil, která kniha byla hodnocena, datum hodnocení a známku, p°i£emº ta je v rozsahu A-F.
4.1.4 Komentá° Kniha m·ºe být okomentovaná uºivateli. Proto tato t°ída udrºuje informaci o tom, co daný uºivatel na tuto knihu napsal. Uºivatel m·ºe pro jednu knihu napsat více komentá°·. V obdobné form¥ existují komentá°e pro literární kluby, pro díla a kapitoly.
9
10
KAPITOLA 4.
ANALÝZA
Obrázek 4.1: Analytický model £tená°ského deníku a díla
4.1.5 Literární klub Literární klub je uskupení uºivatel· aplikace s podobným zájmem o literaturu. Literární klub má název, se kterým se prezentuje a popis, který udává p°esn¥j²í zam¥°ení klubu. Kaºdý klub má seznam uºivatel·, kte°í jsou jeho £leny.
4.1.6 Dílo U kaºdého díla o£ekává název, který je povinný, stru£ný popis o £em dílo pojednává, seznam kapitol a datum vytvo°ení díla. Pro kritiku díla slouºí komentá°e.
4.1.7 Kapitola Kapitola je £ást díla, která má název a text. Dále se vede datum vytvo°ení, stav kapitoly a seznam komentá°·.
4.2
Model p°ípad· uºití
V této kapitole jsou popsány p°ípady uºití, které systém realizuje. Modely uºití souvisejí s uºivatelskými rolemi. Pro zkrácení jsem zde uvedl pouze £ást scéná°· k p°ípad·m pouºití. Ostatní jsou uvedeny v p°íloze C.
UC-D1 p°idání knihy do £tená°ského deníku 1. uºivatel klikne na P°idat p°e£tenou knihu 2. vykoná se use case UC-D2 3. uºivatel klikne na P°idat
4.2.
MODEL PÍPAD UITÍ
11
UC-D2 vyhledat knihu 1. systém zobrazí se formulá° pro nalezení knihy v databázi 2. uºivatel vyplní pole Název 3. uºivatel klikne na Hledat 4. systém zobrazí seznam nalezených knih
UC-D3 Vytvo°ení nové knihy P°edpoklad je, ºe uºivatel má zobrazen seznam knih pro p°idání knihy do £tená°ského deníku.
1 uºivatel klikne na Vytvo°it novou knihu 2 systém zobrazí formulá° pro novou knihu do £tená°ského deníku 3 uºivatel vyplní jednotlivá pole a ode²le formulá° 4 systém zkontroluje formulá° 5 jestli byla kontrola úsp¥²ná, je formulá° uloºen, jinak viz bod 2 s chybovým hlá²ením
UC-D4 odebrat knihu deníku P°edpokladem je, ºe uºivatel má zobrazený £tená°ský deník
1. uºivatel klikne na akci smazat pro danou knihu 2. p°i úsp¥²ném smazání systém zobrazí seznam kníºek v deníku s hlá²ením o úsp¥²ném smazání
UC-D5 okomentovat knihu 1. uºivatel klikne na odkaz P°idat komentá° 2. systém zobrazí formulá° s názvem knihy a textovým polem pro komentá° 3. uºivatel vyplní komentá° 4. uºivatel klikne na odeslat 5. systém zkontroluje data ve formulá°i, jestli není formulá° prázdný 6. pokud je prázdný uºivatel je op¥t vyzván k vypln¥ní
12
KAPITOLA 4.
ANALÝZA
UC-D6 ohodnotit knihy Uºivatel jiº má zobrazenou knihu. 1. uºivatel klikne na odkaz Ohodnotit 2. systém zobrazí formulá° 3. uºivatel vybere hodnocení podle stupnice a ode²le ohodnocení 4. systém zkontroluje formulá° a uloºí hodnocení
UC-D7 zobrazení £tená°ského deníku 1. uºivatel klikne na tla£ítko tená°ský deník 2. systém zobrazí seznam kníºek, které má uºivatel ve svém £tená°ském deníku
Obrázek 4.2: P°ípady uºití registrovaného uºivatele pro £tená°ský deník
Kapitola 5
Technologie Tato kapitola popisuje frameworky, které jsem se rozhodl pouºít. Stru£n¥ nastíním daný framework a na záv¥r jeho popisu uvedu, jaké d·vody m¥ vedly k pouºití.
5.1
IDE
Pro vývoj aplikace jsem pouºil vývojové prost°edí Springsource Tool Suite 2.3.0, které je roz²í°ením prost°edí Eclipse o integrovaný Spring framework. Do tohoto IDE jsem je²t¥ integroval plugin pro podporu FreeMarkeru a Subclipse pro ukládání jednotlivých verzí kódu do SVN(Subversion).
5.2
JAVA
Java je univerzální programovací jazyk, který není závislý na konkrétní platform¥. Proto je moºné Javu pouºít v oblasti internetu, kde m·ºe být spu²t¥na jak na stran¥ webového prohlíºe£e tak i na stran¥ serveru. Java je modulární, snadno se nasazuje a obsahuje obrovské mnoºství knihoven a rozhraní, která jsou pro v²echny platformy stejné. Java se ov²em nehodí v projektech, ve kterých je pot°eba p°ímo pracovat s hardwarem, nebo v projektech, které vyºadují p°ístup v reálném £ase [2]. Java je rozd¥lena do n¥kolika edicí:
•
Standard edition - p°edev²ím ur£eno pro desktopy
•
Enterprise Edition - pro aplika£ní servery
•
Micro edition - pro malé p°ístroje s podporou Javy, která je pro tyto p°ístroje optimalizována
Javu pouºiji, protoºe framework pouºitý pro vývoj je práv¥ psán v jazyku Java. K pouºití p°ispívá i fakt, ºe nemám takové zku²enosti s PHP jako Javou pro webové aplikace.
13
14
KAPITOLA 5.
TECHNOLOGIE
Obrázek 5.1: Diagram J2EE, JVM a OS s hardwarem
5.3
Pouºité frameworky
5.3.1 Spring framework Spring framework je open-source framework pro tvorbu aplikací v programovacím jazyku Java. Je modulární, coº mi dovoluje pouºít jenom tu £ást, kterou pot°ebujeme, snaºí se podporovat správné programátorské návyky a co moºná nejvíc se snaºí o nezávislost na²eho kódu na frameworku. JAVA platform poskytuje velkou funkcionalitu pro vývojá°e, ale postrádá organizovanost základních blok· do celistvého celku. Práv¥ proto komponenta Inversion of Control(IoC) se zam¥°uje na skládání neslu£itelných komponent do pln¥ funk£ní aplikace. Spring se snaºí usnadnit vývoji aplikace následující kroky:[18]
•
odstran¥ní vazeb POJO objekt· a vrstev pomocí návrhového vzoru Inversion of Control. To znamená, ºe zodpov¥dnost za vytvo°ení a správu objekt· je p°esunuta z aplikace do frameworku.
•
moºnost volby implementace bussines vrstvy a ne naopak
•
podpora implementace pro p°ístup k dat·m bu¤ p°es JDBC nebo ORM. Umoº¬uje vyuºít r·zné implementace, nap°. Hibernate, Toplink nebo OpenJPA.
•
odstran¥ní závislostí na roztrou²ených konguracích. Nep°episuje o co uº bylo jednou napsané, ale snaºí se to pouºít.
•
usnadn¥ní psaní a pouºívání unit test·
•
správa a kongura£ní management bussines komponent
Spring je rozd¥len do 20 modul·, které jsou seskupeny do skupin: Core Container, Data Access/Integration, Web, AOP (Aspect Oriented Programming), Instrumentation, a Test [9].
5.3.
POUITÉ FRAMEWORKY
15
5.3.1.1 Core Container V této skupin¥ se nacházejí základní moduly Springu. T¥mi jsou moduly Core a Beans, které obsahují IoC a Dependency Injection. Modul Context je postaven na p°edchozích modulech. D¥dí vlastnosti z modulu Beans a sám p°idává nové vlastnosti, nap°íklad internacionalizaci. Poslední modulem je ExpressLaguage, který poskytuje jazyk pro dotazování a manipulaci. Je to roz²í°ení jazyku, který je specikován v JSP 2.1.
5.3.1.2 Data Access/Intgration Tato skupina se skládá z JDBC, ORM(Object-Relation Mapping), JMS, OXM a Transaction modul·. ORM modul, který v aplikaci pouºívám, poskytuje integraci vrstev pro API objektov¥-rela£ního mapování, v£etn¥ JPA(Java Persistance API), Hibernate nebo iBATIS. Rovn¥º nabízí správu transakcí.
5.3.1.3 Web Skládá se z modulu Web, který poskytuje základní vlastnosti pro za£len¥ní webu a inicializaci Inversion of Control kontejneru za pouºití servlet listener· a webov¥ orientovaných aplika£ních kontext·. Dále zde je modul Web-servlet, který obsahuje implementaci MVC(ModelView-Controller) vzor·, který odd¥luje doménový model a webové formulá°e. Do této skupiny je²t¥ pat°í Web-Struct(podpora pro framework Struct) a Web-portlet.
5.3.1.4 Spring Web MVC Je to framework navrºený okolo DispacherServlet, který deleguje ºádosti kontroler·m. Rovn¥º nabízí dal²í funkcionalitu, která usnad¬uje vývoj webových aplikací ve Spring Framework. Tento framework v sob¥ implementuje IoC kontejner, takºe dovoluje vyuºít jakoukoli vlastnost Springu. Kaºdý kontroler je zaloºen na anotacích @Controller a @RequestMappings. Spring Web MVC nenutí implementovat interfacesy nebo základní t°ídy. Spring Web MVC Framework podporuje tyto vlastnosti:[21]
•
jasné rozd¥lení rolí - kaºdá role, nap°. kontroler, validátor, atd., m·ºe být uspokojen specializovaným objektem
•
rychlá a p°ímo£ará kongurace frameworku a java t°íd jako JavaBeans
•
p°izp·sobivost a exibilita
Obrázek 5.2 ukazuje, jak funguje zpracovaní ºádostí ve Spring Web MVC. Front Controller je práv¥ DispatcherServlet. Contoller je t°ída, kterou musíme implementovat a View template je ²ablona pro html stránku psaná v JSP, FreeMarker £i Velocity.
5.3.1.5 Test Poskytuje testování komponent bu¤ s JUnit nebo TestNG. Rovn¥º si na£ítá a udrºuje v pam¥ti tyto kontexty, ale také umoº¬uje testovaní komponent izolovan¥ pomocí Mock Objects.
16
KAPITOLA 5.
TECHNOLOGIE
Obrázek 5.2: Postup zpracování ºádosti ve Spring Web MVC
5.3.2 Spring security Spring security poskytuje ucelené bezpe£nostní sluºby pro aplikace zaloºené na J2EE. D·vod, pro£ jsem se rozhodl pouºít tento framework, je jednodu²²í nastavení p°ístupových práv k jednotlivým stránkám, tedy není nutné nastavovat server. [19]
Spring framework je velmi rozsáhlý open-source projekt. D·kladn¥j²í popis celého frameworku je ur£it¥ nad rámec této práce. Více na www.springsource.org v sekci Reference. Pro£ jsem si vybral tento framework? Spring Framework mi zjednodu²í konguraci aplikace, protoºe pouºívá jiº ov¥°ené implementace knihoven, snaºí se o co nejmen²í závislost na frameworku pouºitím anotací.
5.3.3 JPA a Hibernate JPA je framework pro jazyk Java, který umoº¬uje objektové rela£ní mapovaní objekt· do databáze a naopak. JPA pouºívá entity. Entita je objekt, který je uloºen v databázi. Entita je kaºdá t°ída, která je anotována anotací javax.persistance.Entity. Dále musí tato t°ída mít konstruktor bez parametr·. K jednotlivým atribut·m se p°istupuje pomocí getter· a settr·. Hibernate je implementací JPA a pln¥ podporuje JPA anotace. Hibernate se snaºí udrºovat stav objekt· persistentní. Dosahuje toho pomocí ORM, coº znamená, ºe mapuje Java t°ídy na entity v rela£ní databázi. Mapování v Hibernate se provádí 2 zp·soby: [8]
•
mapovací soubory - je v nich popsáno, jak se mají mapovat data z objektu do databáze a naopak
•
pomocí anotací - mohou být jak u atribut· tak i u getter·
5.3.4 FreeMarker FreeMarker je nástroj pro generování textového výstupu. Není to aplika£ní framework, ale pouze komponenta [7]. Je navrºen hlavn¥ pro generování HTML stránek, ale m·ºe být pouºit
5.3.
POUITÉ FRAMEWORKY
17
rovn¥º pro generování CSS nebo XML soubor·. Freemarker nezná HTTP poºadavky a ani se pomocí n¥j nelze p°ipojit do databáze jako v PHP. Proto bývá vyuºíván v projektech implementující MVC vzor nebo servletech. Pro£ jsem si vybral zrovna FreeMarker? Má podporu pro JSP tagy, umoº¬uje vytvá°ení maker, ke kterým není t°eba vytvá°et java t°ídy.
Obrázek 5.3: Fungování FreeMarkeru, zdroj: www.freemarker.org
5.3.5 CSS Cascading Style Sheets, zkrácen¥ CSS, je jednoduchý mechanismus pro p°idávaní styl· HTML stránkám. Kaskádové styly se snaºí odd¥lit vzhled stránky od jeho struktury. Výhodami CSS jsou jednoduchá údrºba vzhledu stránky a mnohem rozsáhlej²í moºnosti formátovaní stránek. Jedinou nevýhodou je nedostate£ná podpora ve v²ech majoritních prohlíºe£ích, i kdyº i toto se v poslední dob¥ zlep²uje[10]. Pro pot°ebu bakalá°ské práce jsem vyuºil CSS od Davida Herremana, která je k dispozici na [4] a ²i°itelná pod licencí Creative Commons License a GNU/GPL. Detaily na [12].
5.3.6 Maven Maven je softwarový nástroj pro správu projektu a vytvá°ení build· aplikace. Maven pouºívá konceptu POM (Project Object Model) k popisu vytvá°ení build· aplikace, externích závislostí na jiných projektech, modulech a komponentách a po°adí jednotlivých build·. V kaºdém souboru POM se nastaví název projektu, super POM, pokud projekt n¥jaký má, Java knihovny, moºnosti buildu a úloºi²t¥ Java knihoven. Maven projekt je kongurován v souboru pom.xml, který obsahuje ve²keré informace o projektu a kongurací plagin·, které budou pouºity p°i buildu aplikace. Klí£ové vlastnosti Mavenu jsou:[6](pro zkrácení vyjmenováno je pár)
•
jednoduché zaloºení projektu b¥hem pár sekund
•
konsistentní pouºití skrze v²echny projekty
•
schopnost pracovat s mnoha projekty sou£asn¥
18
KAPITOLA 5.
TECHNOLOGIE
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0 \\
... <artifactId>...
... <packaging>... <dependencies>... <parent>... <dependencyManagement>... <modules>... <properties>... \\
... ... \\
... <description>...
... ... ... ... <developers>...
... \\
... ... <mailingLists>... <scm>... <prerequisites>...
... ... ... <profiles>...
Vý²e uvedené schéma zobrazuje strukturu souboru pom.xml[13]. Minimáln¥ musí být v souboru uvedeny tyto tagy: groupId, artefactId, version, které jednozna£n¥ identikují pro-
5.4.
POSTGRESQL
19
jekt. Maven mi zjednodu²í správu knihoven nejen t¥ch, které pot°ebuji ve svém projektu, ale i t¥ch knihoven, na kterých závisí moje knihovny. Nemusím je dokopírovávat do sloºky lib v projektu a sloºit¥ vyhledávat závislosti.
•
groupId unikátní identikátor mezi organizacemi nebo projekty.
•
artifactId obvykle to je jméno projektu. S groupId jednozna£n¥ ur£uje projekt
•
version ur£uje jednotlivé verze projektu
Mnohdy bývá i uveden element packaging. Ten ur£uje, jakého typu je zabalí£kování souboru. Pokud není uveden je zvolen typ jar.
5.4
PostgreSQL
PostgreSQL je objektov¥ rela£ní systém pro správu, který je zaloºen na POSTRES vyvíjený v University of California at Berkeley Computer Science Department. Nativn¥ b¥ºí na v²ech roz²í°ených opera£ních systémech Linuxu, Unixu nebo Windows. Stoprocentn¥ podporuje podmínky ACID a obsahuje drtivou v¥t²inu standardu SQL92 a SQL99 [14], rovn¥º nabízí mnoho moderních vlastností:
•
cizí klí£e
•
transak£ní integrita
•
triggery, pohledy a mnoho dal²ích
Jelikoº je to open-source nástroj, tak kaºdý jej m·ºe uºívat, upravovat a to v²e zadarmo i v p°ípad¥ komer£ního vyuºití. Více na [15]
5.5
Apache Tomcat
Je to aplika£ní server, který je vyvíjen jako open-source softwarová implementace technologií Java Server Pages (JSP) a Java Servlet. V·£i komer£ním produkt·m, které jsou robustn¥j²í, vyniká svoji jednoduchostí a men²ím výpo£etním výkonem [3].
20
KAPITOLA 5.
TECHNOLOGIE
Kapitola 6
Návrh 6.1
Návrhový model
Pro organizaci t°íd projektu jsem zvolil balí£kování projektu, které je zobrazeno na obrázku 6.1. Diagramy jednotlivých balí£k· jsou uvedeny v p°íloze.
Obrázek 6.1: Diagram balí£k· projektu
6.1.1 Model Balí£ek obsahuje t°ídy, které tvo°í data, se kterými bude aplikace pracovat. Tyto t°ídy jsou mapovány do databáze p°es Hibernate. Aby Hibernate na²el tyto t°ídy, jsou v²echny an-
21
22
KAPITOLA 6.
otovány anotaci
NÁVRH
@Entity . Databáze vyºaduje rovn¥º unikátní identikátor. Standardn¥ to
budou hodnoty typu Integer, jedin¥ entita (t°ída) uºivatel bude mít za id p°ezdívku uºivatele.
6.1.2 Controllers V balí£ku Controllers jsou t°ídy, které budou realizovat logiku aplikace a prezentovat je ve výsledné stránce. Základem je abstraktní t°ída AController, která obsahuje metodu pro zachytávání výjimky a modelové atributy do ²ablon. Ostatní t°ídy jsou odvozené od AController. Aby mohl Spring Web MVC zaregistrovat kontroler, musí kaºdá t°ída být anotována anotací
@Controller a u metod budou anotace @RequestMapping, které ur£ují relativní url
p°i, které se zavolá daná metoda. V balí£ku je t°ída ControllerException, která roz²i°uje t°ídu Exception a p°idává eld messageCode, ve kterém je kód zprávy, která se zobrazí uºivateli, dojde-li k chyb¥.
•
AController
- abstraktní t°ída, která má implementovanou metodu pro zachycení
výjimky. Ostatní kontrolery tuto t°ídu roz²i°ují.
• •
IndexController - kontroler pro zobrazení uvítací stránky RateController
- kontroler, který zobrazí formulá° pro hodnocení p°e£tené knihy a
uloºí hodnocení
•
LoginCotroller - zobrazí stránku pro p°ihlá²ení
•
RegistrationController - zobrazí formulá° pro registraci a uloºí jej
•
SearchCtenaKnihaController - vyhledává knihu pro p°idání do deníku podle názvu
•
SearchFormController - vyhledává p°e£tené knihy podle kriterií a umoº¬uje stránkování tabulky
•
UserProleController - zobrazí prol uºivatele
•
DiaryController
- umoº¬uje p°idání knihy do deníku, vylistování seznamu knih v
deníku, smazání a zobrazení detailu knihy
•
CreateBookToDiaryController - umoº¬uje p°idání knihy do databáze
•
AddCommentToDiaryController - umoº¬uje p°idání komentá°e
•
UserBookController - realizuje akce s tvorbou s dílem a kapitolami
•
LiteratureClubController - realizuje akce s literárním klubem
6.1.3 Dao V balí£ku jsou realizovány t°ídy pro vybírání dat z databáze. Aby byla v¥t²í p°ehlednost, jak v metodách tak v datech, rozhodl jsem se implementovat interfacy, které denují metody. Je²t¥ jsem je rozd¥lil podle toho s £ím jsou daná data spojena. Proto na obrázku jsou t°ídy BookDao - vrací data, která jsou spojená s knihami, a UserDao - pracuje s daty uºivatele.
6.2.
23
POSTUP ZPRACOVÁVÁNÍ POADAVKU
6.1.4 Service Balí£ek obsahuje t°ídu LoginService, která realizuje p°ihlá²ení uºivatele do systému. LoginService musí implementovat interface UserService, který je sou£ástí Spring Security.
6.1.5 Forms V balí£ku jsou realizovány t°ídy pro formulá°e, se kterými bude Spring pracovat. Rovn¥º zde je t°ída PaginationDTO, do které jsou generovány data pot°ebná pro stránkování obsahu tabulky.
•
CtenaKnihaForm - reprezentuje formulá° p°e£tené knihy.
•
RateForm - reprezentuje formulá° pro hodnocení knihy.
•
ReadBookCommentForm - reprezentuje formulá° komentá°e p°e£tené knihy.
•
RegistrationForm - reprezentuje formulá° pro registraci uºivatele.
•
SearchBookForm - reprezentuje formulá° pro vyhledání p°e£tené knihy p°i p°idávání p°e£tené knihy do deníku.
•
SearchCriteriaForm - reprezentuje formulá° pro vyhledání p°e£tené knihy v databázi podle kriterií: p°íjmení autora, ºánr, název.
•
PasswordForm - reprezentuje formulá° pro zm¥nu hesla
6.1.6 Validators Balí£ek obsahuje t°ídy, které implementují logiku pro validování formulá°·. Kaºdá t°ída implementuje rozhraní Validator, které je sou£ástí Spring Framework. Toto rozhraní má dv¥ metody:
supports() a validate(). V metod¥ validate() se provádí validovaní objektu fomulá°e,
který je poskytnut parametrem metody. Validace lze rovnou denovat v t°ídách formulá°· pomocí anotací.
6.2
Postup zpracovávání poºadavku
Sekven£ní diagram zobrazuje posloupnost zpráv, které si objekty navzájem posílají. Pro ilustraci jsem na sekven£ním diagramu zobrazil use case UC-D3. Uºivatel posílá ºádosti na dispatcherServlet. V tomto p°ípad¥ jde o vytvo°ení nové knihy. DispatcherServlet zavolá na objektu CreateBookToDiaryKontroller metodu
bookForm(), která
vytvo°í objekt pro formulá° a nakonec vrátí zp¥t dispatcherServletu, který pak vygeneruje HTML stránku. Po vypln¥ní formulá°e a odeslání dispatcherServlet zavolá metodu
create(),
která vytvo°í nový objekt a p°ekopíruje data z formulá°e do objektu t°ídy CtenaKniha. Kontroler poté zavolá na objektu BookDao metodu nové p°e£tené knize do databázi.
saveBookToDiary(), která uloºí informace o
24
KAPITOLA 6.
Obrázek 6.2: Sekven£ní diagram pro p°idání nové knihy
NÁVRH
Kapitola 7
Realizace Jako postup realizace systému jsem zvolil realizaci pomocí iterací. Následující podkapitoly popisují, co by se m¥lo v pr·b¥hu jednotlivých iterací naprogramovat. U kaºdé iteraci je napsáno, jestli se poda°ila splnit £i nikoliv.
7.1
Iterace £. 1
V první iteraci jde o úsp¥²né zaloºení projektu aplikace v£etn¥ nastavení Spring Framework, Spring Security a datového p°ístupu k databázi. V iteraci se bude °e²it p°ihlá²ení uºivatele do aplikace a odhlá²ení. Sou£ástí je i zobrazení úvodní stránky a prolové stránky. Nejprve se v²ak implementoval balí£ek Model, jenº byl navrºen v p°edchozí kapitole. Seznam realizovaných use casu je v tabulce 7.1. Ve Freemarkeru se potom vytvo°í ²ablony pro webové stránky: úvodní stránka aplikace, prolová stránka, p°ihla²ovací stránka, registra£ní stránka, stránka s p°ípadnými chybami. Tuto iteraci se poda°ilo úsp¥²n¥ realizovat.
Use case Popis UC-C1
P°ihlá²ení uºivatele realizace LoginService + UserDao metoda loadUserByUsername
UC-C2
Odhlá²ení uºivatele - realizováno pomocí Spring security
UC-C3
Registrace kontroler pro registraci, v UserDao metoda pro uloºení nového uºivatele, validátor pro fromulá°
Tabulka 7.1: P°ípady uºití implementované v 1. iteraci
25
26
KAPITOLA 7.
REALIZACE
Use case Popis UC-D1
P°idat knihu do deníku
UC-D2
Vyhledat knihu
UC-D3
Vytvo°it knihu
UC-D4
Odebrat knihu z deníku
UC-D5
Okomentovat knihu
UC-D6
Ohodnotit knihu
UC-D7
Zobrazit £tená°ský deník
Tabulka 7.2: P°ípady uºití implementované v 2. iteraci
Use case Popis UC-NU3
Vyhledat knihu
UC-NU4
Prohlédnutí knihy
Tabulka 7.3: P°ípady uºití implementované v 3. iteraci
7.2
Iterace £. 2
V druhé iteraci se implementuje £tená°ský deník. Budou se realizovat use casy, které jsou uvedené v tabulce 7.2. Pro spln¥ní iterace bylo pot°eba vytvo°it 3 kontrolery: CtenarskyDenikController, CeateBookToDiaryController a AddCommentToDiaryCotroller. Do t¥chto kontroler· bylo pot°eba napsat metody, které realizují use casy v tabulce 7.2. Samoz°ejm¥ jako v kaºdé iteraci je t°eba vytvo°it freemarkrové ²ablony pro dané stránky. Rovn¥º se realizují formulá°e a validátory. Tato iterace byla spln¥na.
7.3
Iterace £. 3
V t°etí iteraci se bude implementovat vyhledávání knihy podle ur£itých kritérií - podle £ásti p°íjmení autora, £áste£ného názvu knihy, a ºánru. Této iteraci odpovídají use casy v tabulce 7.3. Pro spln¥ní iterace bylo pot°eba naprogramovat:
•
kontroler s p°íslu²nými metodami
•
vytvo°it formulá°e a stránku
•
metodu pro vyhledání v BookDao podle zadaných kriterií
Po implementování use cas· jsem zjistil, ºe stránka bude p°i v¥t²ím mnoºství dat p°íli² dlouhá. Proto jsem v rámci této iterace je²t¥ naprogramoval stránkování tabulky a uºivateli je nabídnuta moºnost, kolik °ádk· tabulky si chce nechat zobrazit. Tímto krokem byla 3. iterace spln¥na.
7.4.
27
ITERACE . 4
Use case Popis UC-UT1
Vytvo°ení komentá°e
UC-UT2
Vytvo°ení díla
UC-UT3
Vytvo°ení kapitoly
UC-UT4
Ohodnocení kapitoly
UC-UT5
Editovat kapitolu
UC-UT6
Zobrazení seznamu d¥l
Tabulka 7.4: P°ípady uºití implementované v 3. iteraci
Use case Popis UC-LC1
Vytvo°ení klubu
UC-LC2
P°idání uºivatele
UC-LC3
Vytvo°ení komentá°e
UC-LC5
P°idání díla
Tabulka 7.5: P°ípady uºití implementované v 5. iteraci
7.4
Iterace £. 4
V této iteraci budu programovat funk£nost psaní díla. Z analýzy budou realizovány use casy, které jsou v tabulce 7.4 Iterace se poda°ila realizovat krom¥ p°ípadu uºití UC-UT1.
7.5
Iterace £. 5
V 5. jsem programoval p°ípady uºití pro literární klub, které jsou uvedené v tabulce 7.5. Pro spln¥ní jsem vytvo°il pot°ebné ²ablony ve FreeMarkeru, napsal metody pro práci s daty a vytvo°il
LiteratureClubController, který pokrývá v¥t²inu p°ípad· uºití. Tuto iteraci
jsem úsp¥²n¥ ukon£il.
7.6
Iterace £. 6
V této iteraci budu realizovat zbytek use cas·. Jsou to p°ípadu uºití pro registrovaného uºivatele, který má práva administrátora. Use casy jsou zrekapitulovány v tabulce 7.6. Pro spln¥ní iterace jsem vytvo°il
AdminController, ve kterém jsem implementoval pot°ebné
metody. Tuto iteraci jsem také úsp¥²n¥ ukon£il.
28
KAPITOLA 7.
Use case Popis UC-A1
Smazání aktuality
UC-A2
Vytvo°ení aktuality
Tabulka 7.6: P°ípady uºití implementované v 6. iteraci
REALIZACE
Kapitola 8
Záv¥r 8.1
Zhodnocení
Záv¥rem bych rád zhodnotil celou práci. V ociálním zadání práce je k dispozici n¥kolik bod·, které mohu zhodnotit. Pro zkrácení jsem je p°eformuloval tak, aby neztratila p·vodní smysl.
•
Seznámení se základními trendy oblasti sociálních sítí: V 2. kapitole jsem na£rtnul rysy nejznám¥j²ích sociálních sítí jako je Facebook £i Twitter. Také jsem se zam¥°il na mén¥ známé sít¥, které nejsou v²eobecného charakteru.
•
Analýza poºadavk· systému pro komunitu £tená°· a autor·. V 3. kapitole jsou uvedeny poºadavky na mnou navrhovaný systém. Poºadavky vznikly na základ¥ provedených re²er²í sociálních sítí.
•
Podle poºadavk· navrhnout a implementovat aplikaci. Model aplikace, který vznikl z poºadavk·, jsem popsal ve 4. kapitole. Implementaci jsem rozvrhl do iterací, podle kterých jsem potom implementoval systém.
8.2
Budoucí práce
V dal²ím stupni vývoje aplikace bych rád implementoval funk£nost skupinového psaní literárního díla. Proto bude nutné provést analýzu, a poté tuto vlastnost do aplikace implementovat. V pr·b¥hu implementace se je²t¥ objevily dal²í prvky, které zahrnu v pokra£ování práce.
8.3
Shrnutí
V této práci jsem se zabýval analýzou dosavadních nejznám¥j²ích sociálních sítí na internetu. Na základ¥ t¥chto poznatk· jsem se snaºil správn¥ identikovat poºadavky pro sociální sí´ £tená°·. Poºadavky jsem roz²í°il o návrh modelu a implementaci systému.
29
30
KAPITOLA 8.
ZÁV
R
Literatura [1] J. Donát. Sociální sít¥ cesta ke strukturovan¥j²ímu internetu?
http://www.lupa.cz/clanky/socialni-site-cesta-ke-strukturovanejsimuinternetu/, stav z 20. 4. 2010. [2] F. Hawlitzek.
JAVA 2 p°íru£ka programátora. Grada, 2002.
[3] Apache tomcat.
http://cs.wikipedia.org/wiki/Apache_Tomcat,
stav z 21. 4. 2010.
[4] Css template.
http://www.free-css.com/free-css-templates/page6/manuscript.php,
stav
z
15. 5. 2010. [5] Facebook.
http://en.wikipedia.org/wiki/Facebook,
stav z 23. 5. 2010.
[6] Feature summary.
http://maven.apache.org/maven-features.html,
stav z 29. 4. 2010.
[7] Freemarker home page.
http://freemarker.org/,
stav z 29. 4. 2010.
[8] Hibernate.
http://cs.wikipedia.org/wiki/Hibernate,
stav z 15. 5. 2010.
[9] Introduction to spring framework.
http://static.springsource.org/spring/docs/3.0.x/ spring-framework-reference/html/overview.html, stav
z 29. 4. 2010.
[10] Kaskádové styly.
http://cs.wikipedia.org/wiki/Kask\%C3\%A1dov\%C3\%A9_styly,
stav
z
stav
z
21. 4. 2010. [11] Librarything home page.
http://www.scls.info/program/software/LibraryThing-MID.pdf, 28. 4. 2010. [12] License.
http://creativecommons.org/licenses/by-nc-sa/3.0/cz/,
31
stav z 15. 5. 2010.
32
LITERATURA
[13] Pom reference.
http://maven.apache.org/pom.html,
stav z 29. 4. 2010.
[14] Postgresql.
http://www.pgsql.cz/index.php/PostgreSQL,
stav z 15. 5. 2010.
[15] Postgresql.
http://www.postgresql.org/docs/8.3/static/index.html,
stav z 15. 5. 2010.
[16] Social network service.
http://en.wikipedia.org/wiki/Social_network_service,
stav z 23. 5. 2010.
[17] Social networking (sociální sít¥).
http://www.symbio.cz/slovnik/social-networking-socialni-site.html, 28. 4. 2010. [18] Spring framework.
http://cs.wikipedia.org/wiki/Spring_Framework,
stav z 29. 4. 2010.
[19] Spring security.
http://static.springsource.org/spring-security/ site/docs/3.0.x/reference/introduction.html, stav
z 23. 5. 2010.
[20] Twitter.
http://en.wikipedia.org/wiki/Twitter,
stav z 28. 4. 2010.
[21] Web mvc framework.
http://static.springsource.org/spring/docs/3.0.x/ spring-framework-reference/html/mvc.html, stav z 29. 4. 2010. [22] What is twitter?
http://mashable.com/what-is-twitter/,
stav z 28. 4. 2010.
stav
z
P°íloha A
Seznam pouºitých zkratek CSS
Cascading Style Sheet
HTML IoC
Hypertext Markup Language
Inversion of Control
IDE
Integrated development environment
J2EE
Java 2 Enterprise Edition
JDBC
Java Database Connectivity
JMS
Java Message Services
JPA
Java Persistance API
JSP
Java Server Pages
MVC
Model View Controller
ORM
Object Realtion Mapping
OXM
Object/XML Mapping
PHP
HypertextPreprocessor
POJO SVN SQL XML
Plain Old Java Object
Subversion Structured Query Language Extensible Markup Language
33
34
PÍLOHA A.
SEZNAM POUITÝCH ZKRATEK
P°íloha B
UML diagramy
Obrázek B.1: Skupina funk£ních poºadavk· pro správu £tená°ského deníku
35
36
PÍLOHA B.
UML DIAGRAMY
Obrázek B.2: Skupina funk£ních poºadavk· pro správu díla
Obrázek B.3: Skupina funk£ních poºadavk· pro správu prolu
37
Obrázek B.4: Skupina funk£ních poºadavk· správu komentá°·
Obrázek B.5: Správa aktualit
38
PÍLOHA B.
Obrázek B.6: Správa literárního klubu
UML DIAGRAMY
39
Obrázek B.7: P°ípady uºití pro uºivatele s právy admina
Obrázek B.8: P°ípady uºití registrovaného uºivatele pro b¥ºné akce
40
PÍLOHA B.
UML DIAGRAMY
Obrázek B.9: P°ípady uºití registrovaného uºivatele pro literární klub
Obrázek B.10: P°ípady uºití registrovaného uºivatele pro literární tvorbu
41
Obrázek B.11: P°ípady uºití neregistrovaného uºivatele
42
PÍLOHA B.
Obrázek B.12: Diagram t°íd v balí£ku Model
UML DIAGRAMY
43
Obrázek B.13: Diagram t°íd v balí£ku Controllers
44
PÍLOHA B.
Obrázek B.14: Diagram t°íd v balí£ku Service
Obrázek B.15: Diagram t°íd v balí£ku Controllers
UML DIAGRAMY
P°íloha C
Use casy P°íloha obsahuje seznam scéná°·, které aplikace realizuje a váºou se k p°edchozí kapitole.
UC-A1 Smazání aktuality 1. systém zobrazí seznam aktualit
2. administrátor vybere aktualitu/aktuality a klikne na Smazat
UC-A2 Vytvo°ení aktuality 1. administrátor klikne na P°idat aktualitu
2. systém zobrazí formulá° pro novou aktualitu
3. administrátor vyplní formulá° a ode²le
4. systém zkontroluje vloºená data
5. pokud je formulá° správn¥ vypln¥ný uloºí data, jinak viz bod 2
UC-C1 Odhlá²ení P°edpokladem je, ºe uºivatel je jiº p°ihlá²ený.
1. uºivatel klikne na tla£ítko odhlásit
2. systém odhlásí uºivatele
45
46
PÍLOHA C.
USE CASY
UC-C2 P°ihlá²ení Uºivatel se p°ihlásí do systému a je mu zobrazen jeho prol.
1. na hlavní stránce uºivatel klikne na P°ihlásit 2. objeví se formulá° pro p°ihlá²ení 3. ve formulá°i uºivatel vyplní p°ezdívku a heslo 4. uºivatel klikne na P°ihlásit 5. systém zkontroluje vloºená data 6. pokud vypln¥né údaje nesouhlasí, viz bod 2, jinak viz bod 7 7. systém zobrazí prol uºivatele
UC-C3 Zm¥na hesla 1. uºivatel klikne na Zm¥nit heslo 2. systém zobrazí formulá° pro zm¥nu hesla 3. uºivatel vyplní formulá° a ode²le 4. systém zkontroluje data, pokud jsou v po°ádku, sytém zm¥ní heslo, jinak viz bod 2
UC-UT2 vytvo°ení díla 1. systém zobrazí formulá° pro vytvo°ení nového díla 2. uºivatel vyplní formulá° a ode²le jej 3. systém zkontroluje data 4. pokud jsou data nekorektní viz bod 2, jinak viz bod 6 5. systém uloºí data 6. systém zobrazí dotaz pro vytvo°ení kapitoly 7. pokud uºivatel klikne na Ano viz UC-T3, jinak tento use case ukon£en
UC-UT3 vytvo°ení kapitoly 1. systém zobrazí formulá° pro vytvo°ení kapitoly 2. uºivatel vyplní formulá° a ode²le 3. systém zkontroluje data ve formulá°i 4. pokud data jsou korektní, systém vytvo°í kapitolu, jinak viz bod 1.
47
UC-UT4 editovat kapitolu 1. systém zobrazí formulá° s vybranou kapitolou 2. uºivatel zedituje kapitolu 3. systém zkontroluje data 4. pokud jsou data korektní, editovaná kapitola je uloºena, jinak viz bod 1
UC-UT5 smazání kapitoly Systém jiº uºivateli zobrazil kapitoly. 1. uºivatel vybere kapitolu k smazání a potvrdí 2. systém zobrazí potvrzující otázku o smazání vybrané kapitoly 3. kdyº uºivatel klikne na Ano, systém smaºe kapitolu, jinak zru²í mazání kapitoly
UC-UT6 smazání díla Systém jiº zobrazil seznam knih. 1. uºivatel vybere dílo k smazání a potvrdí 2. systém zobrazí kontrolní otázku 3. kdyº uºivatel odsouhlasí, systém smaºe knihu v£etn¥ kapitol
UC-LC1 vytvo°ení klubu 1. systém zobrazí formulá° pro zaloºení klubu 2. uºivatel vyplní formulá° a ode²le 3. systém zvaliduje vloºená data 4. pokud data nejsou správná pokra£uje se bodem 1, jinak viz bod 5 5. systém vytvo°í nový literární klub
UC-LC2 p°idání uºivatele 1. systém zobrazí seznam literárních klub· 2. uºivatel klikne na P°idat se 3. systém uºivatele p°idá do klubu 4. systém zobrazí zprávu o úsp¥²ném p°idání
48
PÍLOHA C.
USE CASY
UC-LC3 vytvo°ení komentá°e Tento use case má stejný scéná° jako UC-D5
UC-LC5 p°idání díla 1. uºivatel si zobrazí vlastní díla 2. vybere moºnost P°idat do klubu 3. systém zobrazí kluby, ve kterých je uºivatel £lenem 4. uºivatel vybere klub a potvrdí 5. systém vloºí dílo do klubu
Model p°ípad· uºití pro neregistrovaného uºivatele
UC-NU1 registrace 1. uºivatel klikne na odkaz Registrace 2. systém zobrazí registra£ní formulá° 3. uºivatel vyplní formulá° a po té jej ode²le 4. systém zkontroluje formulá° 5. systém vytvo°í nového uºivatele, pokud validace byla úsp¥²ná
UC-NU2 p°ihlá²ení P°ihlá²ení uºivatele probíhá stejným zp·sobem jako pro registrovaného uºivatele.
UC-NU3 vyhledání knihy 1. uºivatel klikne na Hledat 2. zobrazí se formulá° pro vyhledávaní knihy podle názvu, autora a ºánru 3. uºivatel vyplní pole podle kterých chce knihy vyhledat. 4. uºivatel ode²le formulá° 5. systém zkontroluje data ve formulá°i. Pokud jsou v²echna pole prázdná viz bod 2 s chybovým hlá²ením 5. pokud je validace úsp¥²ná, systém vyhledá a zobrazí seznam knih
49
UC-NU4 Prohlednutí knihy P°edpokladem je, ºe uºivatel pro²el p°edchozím use casem, má tedy zobrazenou knihu 1. v tabulce klikne uºivatel na Detail 2. zobrazí se detail knihy
UC-NU5 vyhledání díla 1. systém zobrazí formulá° pro vyhledání díla 2. uºivatel formulá° vyplní a ode²le 3. systém zkontroluje korektnost formulá°e 4. pokud jsou ve formulá°i chyby, viz bod 1 jinak bod 5 5. systém vyhledá díla 6. sytém zobrazí vyhledaná díla
Use case validace registra£ního formulá°e 1. systém ov¥°í, ºe p°ezdívka obsahuje alespo¬ jedno písmeno 2. systém ov¥°í, ºe p°ezdívka v databázi neexistuje 3. systém ov¥°í, ºe p°ezdívka v databázi neexistuje 4. systém ov¥°í, ºe hesla jsou totoºná v£etn¥ kontroly, zda-li jsou zadány n¥jaké znaky
Use case validace formulá°e pro novou knihu 1. systém ov¥°í, ºe název není prázdný text 2. systém ov¥°í, ºe jméno autora není prázdný text 3. systém ov¥°í, ºe popis není prázdný text
Use case validace komentá°e 1. systém ov¥°í, zda-li text komentá°e není prázdný
50
PÍLOHA C.
USE CASY
P°íloha D
Instala£ní p°íru£ka D.1
Instalace
Následující návod je pro Oracle VM VirtualBox, který má £eskou lokalizaci. 1. Nainstalovat Oracle VM VirtualBox 2. P°iloºené DVD vloºit do mechaniky 3. Spustit Oracle VM VirtualBox 4. Kliknout na nový 5. Je pot°eba vzplnit název a zvolit typ OS, v mém p°ípad¥: opera£ní systém=Linux, verze=Ubuntu; pak kliknou na Next 6. Zvolíme velikost pam¥ti, p°ednastavena je 512 MB a tak taky necháme, klikneme na Next 7. V tomto okn¥ zvolíme Pouºít existující pevný disk a klikneme na tla£ítko vpravo od seznamu. Zobrazí se dal²í okno Správce virtuálních médií, ve kterém klikneme na P°idat. V novém okn¥ vybereme soubor disku, který je na DVD ve sloºce
VirtualBox-
hdd a potvrdíme. V okn¥ Správce virtuálních médií p°ibyl ná² vybraný soubor, který kliknutím ozna£íme a klikneme na tla£ítko Vybrat. Po té sta£í znovu kliknout na tla£ítko Next. 8. Zobrazí se poslední obrazovka Shrnutí. Pro dokon£ení kliknemena Finish 9. VirtualBox vytvo°í v levém boxu poloºku s na²im názvem. Kliknutím na ni ji ozna£íme a klikneme na tla£ítko Spustit v horním panelu 10. Po nastartování systému se p°ihlásit pod uºivatlem marek heslem marek 11. Otev°ít terminál 12. Napsat ./bakalarka.sh a stisknout Enter
51
52
PÍLOHA D.
INSTALANÍ PÍRUKA
13. Nastartuje se Apache Tomcat s aplikací Po tomto postupu máme aplikaci spu²t¥nou. Otev°eme prohlíºe£, v na²em p°ípad¥ Firefox kliknutím na ikonu v horní li²t¥, a do adresy zadáme: localhost:8080/bak/ a zobrazí se uvítací stránka aplikace.
P°íloha E
Obsah p°iloºeného DVD P°iloºené DVD obsahuje bakalá°skou práci v£etn¥ p°edp°ipraveného VirtualBoxu. Pro snaº²í orientaci uvádím adresá°ovou strukturu DVD.
- src obsahuje zdrojové kódy projekt - test obsahuje elektronickou podobu bakalá°ské práce - VirtualBox-hdd Obsahuje p°edp°ipravený virtuální pevný disk s p°ipraveným prost°edím pro aplikací. OS Ubuntu 10.04. - Virtualbox-windows-installer P°iloºený instala£ní program Oracle VM VirtualBox pro platformu Windows.
53