import java.util.Collection; import java.util.Optional; import java.util.SortedSet; interface SearchOperations { /** * Returnerar antalet unika artister *
* Exempel: * numberOfArtists() => 0 * numberOfArtists() => 100 * * @return antalet unika artister (long) */ long numberOfArtists(); /** * Returnerar antalet genrer *
* Exempel: * numberOfGenres() => 25 * * @return antalet genrer (long) */ long numberOfGenres(); /** * Returnerar antalet unika titlar *
* Exempel: * numberOfTitles => 500 * * @return antalet unika titlar (long) */ long numberOfTitles(); /** * Kontrollerar om det finns en artist med det sökta namnet. *
* Exempel: * doesArtistExist("Phoebe Bridgers") => false * doesArtistExist("Miles Davis") => true * * @param name Artistens namn * @return true om artisten finns, false om inte */ boolean doesArtistExist(String name); /** * Ger en omodifierbar samling med genrer. *
* Exempel:
* getGenres() => en samling med 19 genrer.
*
* @return en omodifierbar samling med genrer
*/
Collection
* Exempel:
* getRecordingByName("Punisher") => null
* getRecordingByName("Giant Steps") => referens till Recording-objekt gär getTitle().equals("Giant Steps")
*
* @param title Inspelningens titel
* @return ett Recodring-objekt med den sökta inspelningen om den hittades, null annars
*/
Recording getRecordingByName(String title);
/**
* Hämtar en omodifierbar samling med inspelningar från och med det angivna året.
*
* Exempel:
* getRecordingsAfter(2010) => samling med ett antal (kan vara 0) objekt
*
* @param year året som sökningen startar från (och inkluderar)
* @return en omodifierbar samling med inspelningar
*/
Collection
* Exempel:
* getRecordingsByArtistOrderedByYearAsc("John Coltrane") => samling med ett antal (kan vara 0) objekt
*
* @param artist den sökta artisten
* @return ett omodifierbar samling med inspelningar
*/
SortedSet
* Exempel:
* getRecordingsByGenre("Jazz") => samling med ett antal (kan vara 0) objekt
*
* @param genre den sökta genren
* @return ett omodifierbar samling med inspelningar
*/
Collection
* Exempel:
* getRecordingsByGenreAndYear("Jazz", 1950, 1960) => samling med ett antal (kan vara 0) objekt
*
* @param genre den efterfrågade genren
* @param yearFrom första året i intervallet
* @param yearTo sista året i intervallet
* @return en omodifierbar samling
*/
Collection
* Exempel:
* optionalGetRecordingsBefore(1960) => samling med ett antal (kan vara 0) objekt daterade < 1960
*
* @param year året som sökningen löper till (och exkluderar)
* @return ett omodifierbar samling med inspelningar
*/
default Collection
* Exempel:
* optionalGetRecordingsByArtistOrderedByTitleAsc(1960) => sorterad samling med ett antal (kan vara 0) objekt
*
* @param artist den sökta artisten
* @return ett omodifierbar samling med inspelningar sorterade på titel
*/
default SortedSet
* Exempel:
* optionalGetRecordingsFrom(1983) => samling med ett antal (kan vara 0) objekt
*
* @param year det sökta året
* @return en omodifierbar samling med inspelningar
*/
default Collection