Erinevus lehekülje "ITI0011-2015:harjutus 10" redaktsioonide vahel
7. rida: | 7. rida: | ||
== Kirjeldus == | == Kirjeldus == | ||
− | Tuleb realiseerida klass <code>BookStore</code>, mis sõltub <code>BookShopApi</code> library'st, mille saab tõmmata [[Meedia:ITI0011- | + | Tuleb realiseerida klass <code>BookStore</code>, mis sõltub <code>BookShopApi</code> library'st, mille saab tõmmata [[Meedia:ITI0011-2014-BookStoreApiV01.zip]]. |
BookStoreApi library võimaldab pealkirjade (või pealkirja osa) järgi pärida infot raamatu(te) kohta. | BookStoreApi library võimaldab pealkirjade (või pealkirja osa) järgi pärida infot raamatu(te) kohta. | ||
Näiteks: | Näiteks: | ||
− | <code><BookStoreInstance>. | + | <code><BookStoreInstance>.getBookByTitle("Tõde ja Õigus") </code> |
tagastab xml dokumendi http://pastebin.com/dSfNCHH8 | tagastab xml dokumendi http://pastebin.com/dSfNCHH8 | ||
18. rida: | 18. rida: | ||
<code>BookStore</code> peab olema eraldi defineeritud klass, mille konstruktor võtab argumendina ette <code>BookShopApi</code> objekti. <code>BookShop</code> klassis peab olema | <code>BookStore</code> peab olema eraldi defineeritud klass, mille konstruktor võtab argumendina ette <code>BookShopApi</code> objekti. <code>BookShop</code> klassis peab olema | ||
− | defineeritud 5 meetodit: <code>getTotalRecordsInResponse</code>, <code> | + | defineeritud 5 meetodit: <code>getTotalRecordsInResponse</code>, <code>getPossibleBookTitles</code>, <code>getBookWithMostPagesTitle</code>, <code>getPossbileAuthors</code>, <code>query</code>. |
− | * '''getTotalRecordsInResponse''' tagastab XML tulemusest <code><totalItems>X</totalItems></code> X väärtuse. Kui tulemus puudub või | + | * '''getTotalRecordsInResponse''' tagastab XML tulemusest <code><totalItems>X</totalItems></code> X väärtuse. Kui tulemus puudub või getBookByTitle viskab erindi, siis tagastada 0. |
− | * getPossibleBookTitles tagastab kõik raamatute nimed (see tähendab kõik väärtused, mis on <title> tagide vahel). Duplikaadid lubatud. Kui tulemus puudub võib | + | * getPossibleBookTitles tagastab kõik raamatute nimed (see tähendab kõik väärtused, mis on <title> tagide vahel). Duplikaadid lubatud. Kui tulemus puudub võib getBookByTitle viskab erindi, siis tagatada tühi list. |
− | + | getBookWithMostPagesTitle, tagastab raamatu pealkirja(<title>), millel on antud XML korral kõige rohkem lehekülgi. Kui getBookByTitle viskab erindi, siis tagastada tühi string ("") | |
* getPossbileAuthors, tagastab kõik leitud raamatute autorid, seejuures tuleb arvestada, et ühte autorit ei tohi olla listis rohkem kui 1 kord. Raamatu autori leiab <authors> tagide vahelt. Tähelepanu <authors> tag sisaldab tegelikult ainulte ühte autorit, mitme autori puhul on lisatud <authors> tage mitu korda. Erindi korral tagastada tühi list. | * getPossbileAuthors, tagastab kõik leitud raamatute autorid, seejuures tuleb arvestada, et ühte autorit ei tohi olla listis rohkem kui 1 kord. Raamatu autori leiab <authors> tagide vahelt. Tähelepanu <authors> tag sisaldab tegelikult ainulte ühte autorit, mitme autori puhul on lisatud <authors> tage mitu korda. Erindi korral tagastada tühi list. | ||
* getBookWithLessThanNPagesTitles tagastab listi pealkirjadest, mille puhul on lehekülgi vähem kui n. Erindi puhul tagastada tühi list. | * getBookWithLessThanNPagesTitles tagastab listi pealkirjadest, mille puhul on lehekülgi vähem kui n. Erindi puhul tagastada tühi list. | ||
− | * query teeb päringu BookShopApi | + | * query teeb päringu BookShopApi abiga ja salvestab viimase tulemuse klassimuutujasse lastResult. Kui tekib erind, siis viimane tulemus on võrdne tühja stringiga (""). |
Kasulikke materjale: | Kasulikke materjale: | ||
32. rida: | 32. rida: | ||
* http://dom4j.sourceforge.net/dom4j-1.6.1/ - xml väljundi mugavamaks parsimiseks | * http://dom4j.sourceforge.net/dom4j-1.6.1/ - xml väljundi mugavamaks parsimiseks | ||
* http://en.wikipedia.org/wiki/Regular_expression - regulaaravalidstega on võimalik mugavalt matchida konkreetseid elemente | * http://en.wikipedia.org/wiki/Regular_expression - regulaaravalidstega on võimalik mugavalt matchida konkreetseid elemente | ||
+ | * http://www.freeformatter.com/xpath-tester.html - võimaldab kiiresti leida kõik otsitavad elem endid, näiteks //title leiab kohe kõik pealkirjad | ||
38. rida: | 39. rida: | ||
* public int getTotalRecordsInResponse() | * public int getTotalRecordsInResponse() | ||
* public ArrayList<String> getPossibleBookTitles() | * public ArrayList<String> getPossibleBookTitles() | ||
− | * public String | + | * public String getBookWithMostPagesTitle() |
* public ArrayList<String> getPossibleAuthors() | * public ArrayList<String> getPossibleAuthors() | ||
* public ArrayList<String> getBookWithLessThanNPagesTitles() | * public ArrayList<String> getBookWithLessThanNPagesTitles() | ||
47. rida: | 48. rida: | ||
http://pastebin.com/9DcpBHe7 | http://pastebin.com/9DcpBHe7 | ||
− | == Mall == | + | == Mall == |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Redaktsioon: 24. märts 2015, kell 16:28
Testid alates 25. märtsist (või kui see teade ära kaob :) )
Harjutuse tähtaeg on 26.-27. märts.
Üldine informatsioon harjutuste kohta: ITI0011:harjutused.
Kirjeldus
Tuleb realiseerida klass BookStore
, mis sõltub BookShopApi
library'st, mille saab tõmmata Meedia:ITI0011-2014-BookStoreApiV01.zip.
BookStoreApi library võimaldab pealkirjade (või pealkirja osa) järgi pärida infot raamatu(te) kohta.
Näiteks:
<BookStoreInstance>.getBookByTitle("Tõde ja Õigus")
tagastab xml dokumendi http://pastebin.com/dSfNCHH8
BookStore
peab laiendama SimpleBookStore
klassi, mis tuleb kaasa BookShopApi
teegiga.
BookStore
peab olema eraldi defineeritud klass, mille konstruktor võtab argumendina ette BookShopApi
objekti. BookShop
klassis peab olema
defineeritud 5 meetodit: getTotalRecordsInResponse
, getPossibleBookTitles
, getBookWithMostPagesTitle
, getPossbileAuthors
, query
.
- getTotalRecordsInResponse tagastab XML tulemusest
<totalItems>X</totalItems>
X väärtuse. Kui tulemus puudub või getBookByTitle viskab erindi, siis tagastada 0. - getPossibleBookTitles tagastab kõik raamatute nimed (see tähendab kõik väärtused, mis on <title> tagide vahel). Duplikaadid lubatud. Kui tulemus puudub võib getBookByTitle viskab erindi, siis tagatada tühi list.
getBookWithMostPagesTitle, tagastab raamatu pealkirja(<title>), millel on antud XML korral kõige rohkem lehekülgi. Kui getBookByTitle viskab erindi, siis tagastada tühi string ("")
- getPossbileAuthors, tagastab kõik leitud raamatute autorid, seejuures tuleb arvestada, et ühte autorit ei tohi olla listis rohkem kui 1 kord. Raamatu autori leiab <authors> tagide vahelt. Tähelepanu <authors> tag sisaldab tegelikult ainulte ühte autorit, mitme autori puhul on lisatud <authors> tage mitu korda. Erindi korral tagastada tühi list.
- getBookWithLessThanNPagesTitles tagastab listi pealkirjadest, mille puhul on lehekülgi vähem kui n. Erindi puhul tagastada tühi list.
- query teeb päringu BookShopApi abiga ja salvestab viimase tulemuse klassimuutujasse lastResult. Kui tekib erind, siis viimane tulemus on võrdne tühja stringiga ("").
Kasulikke materjale:
- http://www.freeformatter.com/xml-formatter.html - väljundi loetavamaks muutmiseks võib arenduse käigus kasutada järgnevat XML ilustajat.
- http://dom4j.sourceforge.net/dom4j-1.6.1/ - xml väljundi mugavamaks parsimiseks
- http://en.wikipedia.org/wiki/Regular_expression - regulaaravalidstega on võimalik mugavalt matchida konkreetseid elemente
- http://www.freeformatter.com/xpath-tester.html - võimaldab kiiresti leida kõik otsitavad elem endid, näiteks //title leiab kohe kõik pealkirjad
Loodavat funktsioonid
- public int getTotalRecordsInResponse()
- public ArrayList<String> getPossibleBookTitles()
- public String getBookWithMostPagesTitle()
- public ArrayList<String> getPossibleAuthors()
- public ArrayList<String> getBookWithLessThanNPagesTitles()
- public void query(String search)
Example BookShopApi call
http://pastebin.com/9DcpBHe7