From 0a7bff0c2829a48cbab15ec4b237b6412eaeac80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B0=D1=82=D1=8C=D1=8F=D0=BD=D0=B0=20=D0=90=D1=80?= =?UTF-8?q?=D1=82=D0=B0=D0=BC=D0=BE=D0=BD=D0=BE=D0=B2=D0=B0?= Date: Tue, 30 May 2023 13:46:50 +0400 Subject: [PATCH] lab3 dop --- .../database/controllers/Controller.java | 43 ------------ .../ulstu/is/sbapp/database/model/Artist.java | 22 +++---- .../sbapp/database/service/AlbumService.java | 6 -- .../sbapp/database/service/ArtistService.java | 11 +--- .../database/service/FindByNameService.java | 45 +++++++++---- .../sbapp/database/service/SongService.java | 7 -- .../ulstu/is/sbapp/SbappApplicationTests.java | 65 +++++++------------ 7 files changed, 69 insertions(+), 130 deletions(-) delete mode 100644 src/main/java/ru/ulstu/is/sbapp/database/controllers/Controller.java diff --git a/src/main/java/ru/ulstu/is/sbapp/database/controllers/Controller.java b/src/main/java/ru/ulstu/is/sbapp/database/controllers/Controller.java deleted file mode 100644 index 7296a27..0000000 --- a/src/main/java/ru/ulstu/is/sbapp/database/controllers/Controller.java +++ /dev/null @@ -1,43 +0,0 @@ -package ru.ulstu.is.sbapp.database.controllers; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; -import ru.ulstu.is.sbapp.database.model.Album; -import ru.ulstu.is.sbapp.database.model.Artist; -import ru.ulstu.is.sbapp.database.model.Song; -import ru.ulstu.is.sbapp.database.service.AlbumService; -import ru.ulstu.is.sbapp.database.service.ArtistService; -import ru.ulstu.is.sbapp.database.service.SongService; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@RestController -public class Controller { - private final SongService songService; - private final AlbumService albumService; - private final ArtistService artistService; - @Autowired - public Controller(SongService songService, AlbumService albumService, ArtistService artistService) { - this.albumService = albumService; - this.artistService = artistService; - this.songService = songService; - } - -// @GetMapping("/find") -// public Map> GetResult (@RequestParam(value = "name") String value) { -// Map> resultMap = new HashMap<>(); -// -// List resultList = new ArrayList<>(); -// resultList.add(songService.findAllSongsByName(value)); -// resultList.add(albumService.findAllAlbumsByName(value)); -// resultList.add(artistService.findAllArtistsByName(value)); -// -// resultMap.put(value, resultList); -// return resultMap; -// } -} diff --git a/src/main/java/ru/ulstu/is/sbapp/database/model/Artist.java b/src/main/java/ru/ulstu/is/sbapp/database/model/Artist.java index df43984..ebe0dcd 100644 --- a/src/main/java/ru/ulstu/is/sbapp/database/model/Artist.java +++ b/src/main/java/ru/ulstu/is/sbapp/database/model/Artist.java @@ -15,7 +15,7 @@ public class Artist { @Column(name = "genre") private String genre; @ManyToMany(mappedBy = "artists", cascade = CascadeType.MERGE, fetch = FetchType.LAZY) - private List album; + private List albums; public Artist() { } @@ -44,25 +44,25 @@ public class Artist { this.genre = genre; } - public List getAlbum() { - return album; + public List getAlbums() { + return albums; } - public void setAlbum(List album) { - this.album = album; + public void setAlbums(List albums) { + this.albums = albums; } public void addAlbum(Album album) { - if (this.album == null) { - this.album = new ArrayList<>(); + if (this.albums == null) { + this.albums = new ArrayList<>(); } - if (!this.album.contains(album)) - this.album.add(album); + if (!this.albums.contains(album)) + this.albums.add(album); } public void removeAlbum(Album album) { - if (this.album.contains(album)) - this.album.remove(album); + if (this.albums.contains(album)) + this.albums.remove(album); } @Override diff --git a/src/main/java/ru/ulstu/is/sbapp/database/service/AlbumService.java b/src/main/java/ru/ulstu/is/sbapp/database/service/AlbumService.java index cb99890..c605a78 100644 --- a/src/main/java/ru/ulstu/is/sbapp/database/service/AlbumService.java +++ b/src/main/java/ru/ulstu/is/sbapp/database/service/AlbumService.java @@ -140,10 +140,4 @@ public class AlbumService { } return albumList; } -// @Transactional -// public List findAllAlbumsByName(String name){ -// -// return em.createQuery("select A from Album A where A.albumName = :name", Album.class) -// .setParameter("name", name).getResultList(); -// } } diff --git a/src/main/java/ru/ulstu/is/sbapp/database/service/ArtistService.java b/src/main/java/ru/ulstu/is/sbapp/database/service/ArtistService.java index dd11634..99730e6 100644 --- a/src/main/java/ru/ulstu/is/sbapp/database/service/ArtistService.java +++ b/src/main/java/ru/ulstu/is/sbapp/database/service/ArtistService.java @@ -71,9 +71,9 @@ public class ArtistService { @Transactional public Artist deleteArtist(Long id) { final Artist currentArtist = findArtist(id); - int size = currentArtist.getAlbum().size(); + int size = currentArtist.getAlbums().size(); for (int i = 0; i < size; i++) { - Album temp = currentArtist.getAlbum().get(i); + Album temp = currentArtist.getAlbums().get(i); temp.removeArtist(currentArtist); currentArtist.removeAlbum(temp); em.remove(temp); @@ -83,18 +83,13 @@ public class ArtistService { } @Transactional public List findAllSongsProducedArtist(Artist currentArtist){ - if(currentArtist.getAlbum().size() == 0){ + if(currentArtist.getAlbums().size() == 0){ throw new IllegalArgumentException("Artist doesn`t produced"); } List songList = em.createQuery("SELECT DISTINCT a.songs FROM Album a where :artistAlbum MEMBER OF a.artists") .setParameter("artistAlbum", currentArtist).getResultList(); return songList; } -// @Transactional -// public List findAllArtistsByName(String name){ -// return em.createQuery("select A from Artist A where A.artistName = :name", Artist.class) -// .setParameter("name", name).getResultList(); -// } @Transactional public void deleteAllArtists() { em.createQuery("delete from Artist").executeUpdate(); diff --git a/src/main/java/ru/ulstu/is/sbapp/database/service/FindByNameService.java b/src/main/java/ru/ulstu/is/sbapp/database/service/FindByNameService.java index 1ebdd4c..9e4f83c 100644 --- a/src/main/java/ru/ulstu/is/sbapp/database/service/FindByNameService.java +++ b/src/main/java/ru/ulstu/is/sbapp/database/service/FindByNameService.java @@ -19,22 +19,39 @@ public class FindByNameService { @Transactional public Map> GetResult(String name) { Map> resultMap = new HashMap<>(); - Album album = new Album(); - Artist artist = new Artist(); - Song song = new Song(); - List albumList = em.createQuery("select A from Album A where A.albumName = :name", Album.class) - .setParameter("name", name).getResultList(); - List artistList = em.createQuery("select A from Artist A where A.artistName = :name", Artist.class) - .setParameter("name", name).getResultList(); - List songList = em.createQuery("select S from Song S where S.songName = :name", Song.class) + // запрос для поиска песен по названию + List songs = em.createQuery("SELECT s FROM Song s WHERE s.songName = :name", Song.class) .setParameter("name", name).getResultList(); - resultMap.put(album.getAlbumName(), Collections.singletonList(albumList)); - resultMap.put(artist.getArtistName(), Collections.singletonList(artistList)); - resultMap.put(song.getSongName(), Collections.singletonList(songList)); + // запрос для поиска альбомов по названию + List albums = em.createQuery("SELECT a FROM Album a WHERE a.albumName = :name", Album.class) + .setParameter("name", name).getResultList(); + + // запрос для поиска артистов по имени + List artists = em.createQuery("SELECT a FROM Artist a WHERE a.artistName = :name", Artist.class) + .setParameter("name", name).getResultList(); + + // добавляем результаты поиска песен в resultMap + List songsResult = new ArrayList<>(); + for (Song song : songs) { + songsResult.add(song); + } + resultMap.put("songs", songsResult); + + // добавляем результаты поиска альбомов в resultMap + List albumsResult = new ArrayList<>(); + for (Album album : albums) { + albumsResult.add(album); + } + resultMap.put("albums", albumsResult); + + // добавляем результаты поиска артистов в resultMap + List artistsResult = new ArrayList<>(); + for (Artist artist : artists) { + artistsResult.add(artist); + } + resultMap.put("artists", artistsResult); return resultMap; } -} - - +} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/is/sbapp/database/service/SongService.java b/src/main/java/ru/ulstu/is/sbapp/database/service/SongService.java index 3f61ceb..c069082 100644 --- a/src/main/java/ru/ulstu/is/sbapp/database/service/SongService.java +++ b/src/main/java/ru/ulstu/is/sbapp/database/service/SongService.java @@ -88,11 +88,4 @@ public class SongService { public void deleteAllSongs() { em.createQuery("delete from Song").executeUpdate(); } - -// @Transactional -// public List findAllSongsByName(String name){ -// return em.createQuery("select S from Song S where S.songName = :name", Song.class) -// .setParameter("name", name).getResultList(); -// } - } diff --git a/src/test/java/ru/ulstu/is/sbapp/SbappApplicationTests.java b/src/test/java/ru/ulstu/is/sbapp/SbappApplicationTests.java index f90bef9..4cb4ba6 100644 --- a/src/test/java/ru/ulstu/is/sbapp/SbappApplicationTests.java +++ b/src/test/java/ru/ulstu/is/sbapp/SbappApplicationTests.java @@ -57,7 +57,6 @@ public class SbappApplicationTests { songService.deleteAllSongs(); final Artist artist1 = artistService.addArtist("Artist", "genre"); final Artist artist2 = artistService.addArtist("Artist", "genre"); - final Song song = songService.addSong("Song",3.27); final Album album1= albumService.addAlbum("Album"); final Album album2= albumService.addAlbum("Album"); album1.addArtist(artist1); @@ -183,50 +182,34 @@ public class SbappApplicationTests { } @Test void testDop() { -// var temp = findService.GetResult("a"); -// Assertions.assertEquals(findService.GetResult("a"), temp); + String nameToTest = "a"; + // создаем данные для тестирования + albumService.deleteAllAlbums(); + artistService.deleteAllArtists(); + songService.deleteAllSongs(); + final Artist artist1 = artistService.addArtist(nameToTest, "genre"); + final Album album1= albumService.addAlbum(nameToTest); + final Song song1 = songService.addSong(nameToTest, 3.29); + album1.addArtist(artist1); + artist1.addAlbum(album1); + album1.addSong(song1); - String name = "Test"; + Map> resultMap = findService.GetResult(nameToTest); - // создаем тестовые данные - final Artist artist = artistService.addArtist("Test Artist", "genre"); - Assertions.assertNotNull(artist.getId()); + List artistsList = resultMap.get("artists"); + assertEquals(1, artistsList.size()); + Object artistResult = artistsList.get(0); + assertEquals(nameToTest, ((Artist) artistResult).getArtistName()); - final Song song = songService.addSong("Test Song", 2.50); - Assertions.assertNotNull(song.getId()); - - final Album album = albumService.addAlbum("Test Album"); - //album = albumService.addArtist(album.getId(), artist.getId()); - Assertions.assertNotNull(album.getId()); - - - - // вызываем тестируемый метод - Map> result = findService.GetResult(name); - - // проверяем результаты - assertEquals(result.size(), 3); - assertTrue(result.containsKey(album.getAlbumName())); - assertTrue(result.containsKey(artist.getArtistName())); - assertTrue(result.containsKey(song.getSongName())); - - List albums = result.get("Test Album"); - List artists = result.get("Test Artist"); - List songs = result.get("Test Song"); - - assertTrue(albums.size() == 1 && albums.get(0) instanceof Album); - assertTrue(artists.size() == 1 && artists.get(0) instanceof Artist); - assertTrue(songs.size() == 1 && songs.get(0) instanceof Song); - - Album albumResult = (Album) albums.get(0); - Artist artistResult = (Artist) artists.get(0); - Song songResult = (Song) songs.get(0); - - assertEquals(albumResult.getAlbumName(), "Test Album"); - assertEquals(artistResult.getArtistName(), "Test Artist"); - assertEquals(songResult.getSongName(), "Test Song"); + List albumsList = resultMap.get("albums"); + assertEquals(1, albumsList.size()); + Object albumResult = albumsList.get(0); + assertEquals(nameToTest, ((Album) albumResult).getAlbumName()); + List songsList = resultMap.get("songs"); + assertEquals(1, songsList.size()); + Object songResult = songsList.get(0); + assertEquals(nameToTest, ((Song) songResult).getSongName()); } - } \ No newline at end of file