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());
+ }
}