diff --git a/.gradle/7.3.3/checksums/checksums.lock b/.gradle/7.3.3/checksums/checksums.lock index 8bae2e3..fc3b2b4 100644 Binary files a/.gradle/7.3.3/checksums/checksums.lock and b/.gradle/7.3.3/checksums/checksums.lock differ diff --git a/.gradle/7.3.3/checksums/md5-checksums.bin b/.gradle/7.3.3/checksums/md5-checksums.bin deleted file mode 100644 index 1d2d681..0000000 Binary files a/.gradle/7.3.3/checksums/md5-checksums.bin and /dev/null differ diff --git a/.gradle/7.3.3/checksums/sha1-checksums.bin b/.gradle/7.3.3/checksums/sha1-checksums.bin index 5611eb1..2282741 100644 Binary files a/.gradle/7.3.3/checksums/sha1-checksums.bin and b/.gradle/7.3.3/checksums/sha1-checksums.bin differ diff --git a/.gradle/7.3.3/dependencies-accessors/dependencies-accessors.lock b/.gradle/7.3.3/dependencies-accessors/dependencies-accessors.lock index e574ad9..bb67d78 100644 Binary files a/.gradle/7.3.3/dependencies-accessors/dependencies-accessors.lock and b/.gradle/7.3.3/dependencies-accessors/dependencies-accessors.lock differ diff --git a/.gradle/7.3.3/executionHistory/executionHistory.bin b/.gradle/7.3.3/executionHistory/executionHistory.bin index ebb1a9f..174669f 100644 Binary files a/.gradle/7.3.3/executionHistory/executionHistory.bin and b/.gradle/7.3.3/executionHistory/executionHistory.bin differ diff --git a/.gradle/7.3.3/executionHistory/executionHistory.lock b/.gradle/7.3.3/executionHistory/executionHistory.lock index 660b846..fe8c25a 100644 Binary files a/.gradle/7.3.3/executionHistory/executionHistory.lock and b/.gradle/7.3.3/executionHistory/executionHistory.lock differ diff --git a/.gradle/7.3.3/fileHashes/fileHashes.bin b/.gradle/7.3.3/fileHashes/fileHashes.bin index f8b4371..d9a41c6 100644 Binary files a/.gradle/7.3.3/fileHashes/fileHashes.bin and b/.gradle/7.3.3/fileHashes/fileHashes.bin differ diff --git a/.gradle/7.3.3/fileHashes/fileHashes.lock b/.gradle/7.3.3/fileHashes/fileHashes.lock index a48066d..1b81e78 100644 Binary files a/.gradle/7.3.3/fileHashes/fileHashes.lock and b/.gradle/7.3.3/fileHashes/fileHashes.lock differ diff --git a/.gradle/7.3.3/fileHashes/resourceHashesCache.bin b/.gradle/7.3.3/fileHashes/resourceHashesCache.bin index 8741a06..2360625 100644 Binary files a/.gradle/7.3.3/fileHashes/resourceHashesCache.bin and b/.gradle/7.3.3/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 210296c..1480fc9 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties index e708784..0df4f57 100644 --- a/.gradle/buildOutputCleanup/cache.properties +++ b/.gradle/buildOutputCleanup/cache.properties @@ -1,2 +1,2 @@ -#Thu Feb 10 13:21:42 GMT+04:00 2022 +#Tue Mar 21 10:03:06 GMT+04:00 2023 gradle.version=7.3.3 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin index 161d6b8..9327391 100644 Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 130b60f..f8eb43b 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d3352..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..30f592b --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +sbapp \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml index b589d56..fb7f4a8 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index e258bdc..cbfe0de 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,8 +1,5 @@ - - - + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/data.mv.db b/data.mv.db index 8dd6ecb..d421cb1 100644 Binary files a/data.mv.db and b/data.mv.db differ diff --git a/src/main/java/ru/ulstu/is/sbapp/Models/Customer.java b/src/main/java/ru/ulstu/is/sbapp/Models/Customer.java index 81af58e..276fb83 100644 --- a/src/main/java/ru/ulstu/is/sbapp/Models/Customer.java +++ b/src/main/java/ru/ulstu/is/sbapp/Models/Customer.java @@ -19,7 +19,7 @@ public class Customer @Column() private String middle_name; - @ManyToMany + @OneToMany(fetch = FetchType.EAGER) private List movies; @@ -49,9 +49,10 @@ public class Customer return first_name; } - public void setFirst_name(String first_name) + public void setFirst_name(String fullName) { - this.first_name = first_name; + String[] partsName = fullName.split(" "); + this.first_name = partsName[0]; } public String getLast_name() @@ -59,9 +60,10 @@ public class Customer return last_name; } - public void setLast_name(String last_name) + public void setLast_name(String fullName) { - this.last_name = last_name; + String[] partsName = fullName.split(" "); + this.last_name = partsName[1]; } public String getMiddle_name() @@ -70,11 +72,12 @@ public class Customer return middle_name.isBlank() ? null : middle_name; } - public void setMiddle_name(String middle_name) + public void setMiddle_name(String fullName) { - if(!middle_name.isBlank()) + String[] partsName = fullName.split(" "); + if(partsName.length == 3) { - this.middle_name = middle_name; + this.middle_name = partsName[2]; } } diff --git a/src/main/java/ru/ulstu/is/sbapp/Models/Movie.java b/src/main/java/ru/ulstu/is/sbapp/Models/Movie.java index 66601bd..1e84e98 100644 --- a/src/main/java/ru/ulstu/is/sbapp/Models/Movie.java +++ b/src/main/java/ru/ulstu/is/sbapp/Models/Movie.java @@ -21,8 +21,6 @@ public class Movie @JoinColumn(name = "genre_fk") private Genre genre; - @ManyToMany(mappedBy = "movies") - private List customers; public Movie() { @@ -34,7 +32,6 @@ public class Movie this.length = length; this.score = score; this.genre = genre; - this.customers = new ArrayList<>(); } public Long getId() @@ -82,10 +79,6 @@ public class Movie this.genre = genre; } - public List getCustomers() - { - return customers; - } public boolean equals(Object o) { if (this == o) return true; diff --git a/src/main/java/ru/ulstu/is/sbapp/Services/CustomerService.java b/src/main/java/ru/ulstu/is/sbapp/Services/CustomerService.java index b3f75b6..01d3156 100644 --- a/src/main/java/ru/ulstu/is/sbapp/Services/CustomerService.java +++ b/src/main/java/ru/ulstu/is/sbapp/Services/CustomerService.java @@ -46,16 +46,16 @@ public class CustomerService } @Transactional - public Customer updateCustomer(Long id, String firstName, String lastName, String middleName) + public Customer updateCustomer(Long id, String fullName) { - if(!StringUtils.hasText(firstName) || !StringUtils.hasText(lastName)) + if(!StringUtils.hasText(fullName)) { throw new IllegalArgumentException("Customer's name or surname is missing"); } final Customer specificCustomer = findCustomer(id); - specificCustomer.setFirst_name(firstName); - specificCustomer.setLast_name(lastName); - specificCustomer.setMiddle_name(middleName); + specificCustomer.setFirst_name(fullName); + specificCustomer.setLast_name(fullName); + specificCustomer.setMiddle_name(fullName); return em.merge(specificCustomer); } diff --git a/src/main/java/ru/ulstu/is/sbapp/Services/GenreService.java b/src/main/java/ru/ulstu/is/sbapp/Services/GenreService.java index 9ae9618..cae11a2 100644 --- a/src/main/java/ru/ulstu/is/sbapp/Services/GenreService.java +++ b/src/main/java/ru/ulstu/is/sbapp/Services/GenreService.java @@ -48,7 +48,7 @@ public class GenreService @Transactional public Genre updateGenre(Long id, String name) { - if(StringUtils.hasText(name)) + if(!StringUtils.hasText(name)) { throw new IllegalArgumentException("Genre's name is missing"); } diff --git a/src/main/java/ru/ulstu/is/sbapp/Services/MovieService.java b/src/main/java/ru/ulstu/is/sbapp/Services/MovieService.java index ddf18bb..8524bd2 100644 --- a/src/main/java/ru/ulstu/is/sbapp/Services/MovieService.java +++ b/src/main/java/ru/ulstu/is/sbapp/Services/MovieService.java @@ -11,8 +11,6 @@ import javax.persistence.EntityManager; import javax.persistence.EntityNotFoundException; import javax.persistence.PersistenceContext; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; @Service public class MovieService @@ -77,6 +75,12 @@ public class MovieService return specificMovie; } + @Transactional + public List findAllSpecificMovies(Genre specGenre) + { + return em.createQuery("SELECT m FROM Movie m WHERE m.genre = :genre",Movie.class).setParameter("genre",specGenre).getResultList(); + } + @Transactional public void deleteAllMovies() { diff --git a/src/test/java/ru/ulstu/is/sbapp/JpaCustomerTests.java b/src/test/java/ru/ulstu/is/sbapp/JpaCustomerTests.java index d90f859..a09ddaf 100644 --- a/src/test/java/ru/ulstu/is/sbapp/JpaCustomerTests.java +++ b/src/test/java/ru/ulstu/is/sbapp/JpaCustomerTests.java @@ -67,4 +67,27 @@ public class JpaCustomerTests log.info(customers.toString()); Assertions.assertEquals(customers.size(), 0); } + + @Test + void testCustomerChanges() + { + customerService.deleteAllCustomers(); + final Customer customer = customerService.addCustomer("Nikita Lisov"); + log.info(customer.toString()); + final Customer changedCustomer = customerService.updateCustomer(customer.getId(),"Evelina Potter"); + log.info(changedCustomer.toString()); + Assertions.assertEquals("Evelina",changedCustomer.getFirst_name()); + } + + @Test + void testDeleteSpecificCustomer() + { + customerService.deleteAllCustomers(); + + final Customer customer1 = customerService.addCustomer("Nikita Lisov"); + final Customer customer2 = customerService.addCustomer("Evelina Potter"); + customerService.deleteCustomer(customer1.getId()); + Assertions.assertThrows(EntityNotFoundException.class, () -> customerService.findCustomer(customer1.getId())); + + } } diff --git a/src/test/java/ru/ulstu/is/sbapp/JpaGenreTests.java b/src/test/java/ru/ulstu/is/sbapp/JpaGenreTests.java index 6413122..66ba21e 100644 --- a/src/test/java/ru/ulstu/is/sbapp/JpaGenreTests.java +++ b/src/test/java/ru/ulstu/is/sbapp/JpaGenreTests.java @@ -6,6 +6,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import ru.ulstu.is.sbapp.Models.Customer; import ru.ulstu.is.sbapp.Models.Genre; import ru.ulstu.is.sbapp.Services.GenreService; @@ -66,4 +67,27 @@ public class JpaGenreTests log.info(customers.toString()); Assertions.assertEquals(customers.size(), 0); } + + @Test + void testGenreChanges() + { + genreService.deleteAllGenres(); + final Genre genre = genreService.addGenre("Fantasy"); + log.info(genre.toString()); + final Genre changedGenre = genreService.updateGenre(genre.getId(),"Sci-Fi"); + log.info(changedGenre.toString()); + Assertions.assertEquals("Sci-Fi",changedGenre.getName()); + } + + @Test + void testDeleteSpecificGenre() + { + genreService.deleteAllGenres(); + + final Genre genre1 = genreService.addGenre("Nikita Lisov"); + final Genre genre2 = genreService.addGenre("Evelina Potter"); + genreService.deleteGenre(genre1.getId()); + Assertions.assertThrows(EntityNotFoundException.class, () -> genreService.findGenre(genre1.getId())); + + } } diff --git a/src/test/java/ru/ulstu/is/sbapp/JpaMovieTests.java b/src/test/java/ru/ulstu/is/sbapp/JpaMovieTests.java index 62b8a9c..5789bce 100644 --- a/src/test/java/ru/ulstu/is/sbapp/JpaMovieTests.java +++ b/src/test/java/ru/ulstu/is/sbapp/JpaMovieTests.java @@ -14,6 +14,7 @@ import ru.ulstu.is.sbapp.Models.Genre; import ru.ulstu.is.sbapp.Services.GenreService; import javax.persistence.EntityNotFoundException; +import java.util.ArrayList; import java.util.List; @SpringBootTest @@ -45,6 +46,7 @@ public class JpaMovieTests log.info(movie.toString()); Assertions.assertNotNull(movie.getId()); + Assertions.assertTrue(customer.getMovies().contains(movie)); } @Test @@ -164,4 +166,39 @@ public class JpaMovieTests Assertions.assertEquals(movies.size(),0); } + + @Test + void testGetAllGenreMovies() + { + movieService.deleteAllMovies(); + customerService.deleteAllCustomers(); + genreService.deleteAllGenres(); + + final Genre genre1 = genreService.addGenre("Fantasy"); + log.info(genre1.toString()); + + final Genre genre2 = genreService.addGenre("Sci-Fi"); + log.info(genre2.toString()); + + final Customer customer = customerService.addCustomer("Nikita Lisov"); + log.info(customer.toString()); + + final Movie movie1 = movieService.addMovie("Arcane",36,4.5, genre1, customer); + log.info(movie1.toString()); + + final Movie movie2 = movieService.addMovie("Harry Potter",128,10.0, genre1, customer); + log.info(movie2.toString()); + + final Movie movie3 = movieService.addMovie("Interstellar",2,9.5, genre2, customer); + log.info(movie3.toString()); + + List movies = new ArrayList<>(){}; + movies.add(movie1); + movies.add(movie2); + + List expectedMovies = movieService.findAllSpecificMovies(genre1); + log.info(expectedMovies.toString()); + + Assertions.assertArrayEquals(movies.toArray(),expectedMovies.toArray()); + } }