From 42882765d321bdf926e9433d5e3c44c764eef895 Mon Sep 17 00:00:00 2001 From: Sergi Vila Monguia <47522460+Troter2@users.noreply.github.com> Date: Sat, 14 Dec 2024 17:56:09 +0100 Subject: [PATCH 1/8] Vreate default advertisemen status elements --- .../demo/config/DBInitialization.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/cat/udl/eps/softarch/demo/config/DBInitialization.java b/src/main/java/cat/udl/eps/softarch/demo/config/DBInitialization.java index b402d80..e2104b0 100644 --- a/src/main/java/cat/udl/eps/softarch/demo/config/DBInitialization.java +++ b/src/main/java/cat/udl/eps/softarch/demo/config/DBInitialization.java @@ -15,6 +15,7 @@ @Configuration public class DBInitialization { private final OwnerRepository ownerRepository; + private final AdvertisementStatusRepository advertisementStatusRepository; @Value("${default-password}") String defaultPassword; @Value("${spring.profiles.active:}") @@ -24,12 +25,13 @@ public class DBInitialization { private final ApartmentRepository apartmentRepository; private final AdvertisementRepository advertisementRepository; - public DBInitialization(UserRepository userRepository, OwnerRepository ownerRepository, AdminRepository adminRepository, AdvertisementRepository advertisementRepository, ApartmentRepository apartmentRepository) { + public DBInitialization(UserRepository userRepository, OwnerRepository ownerRepository, AdminRepository adminRepository, AdvertisementRepository advertisementRepository, ApartmentRepository apartmentRepository, AdvertisementStatusRepository advertisementStatusRepository) { this.userRepository = userRepository; this.ownerRepository = ownerRepository; this.apartmentRepository = apartmentRepository; this.adminRepository = adminRepository; this.advertisementRepository = advertisementRepository; + this.advertisementStatusRepository = advertisementStatusRepository; } @PostConstruct @@ -91,6 +93,24 @@ public void initializeDatabase() { apartment.setRegistrationDate(ZonedDateTime.now()); apartmentRepository.save(apartment); } + + if(advertisementStatusRepository.findByStatus("Available").isEmpty()){ + AdvertisementStatus advertisementStatus = new AdvertisementStatus(); + advertisementStatus.setStatus("Available"); + advertisementStatusRepository.save(advertisementStatus); + } + + if(advertisementStatusRepository.findByStatus("Reserved").isEmpty()){ + AdvertisementStatus advertisementStatus = new AdvertisementStatus(); + advertisementStatus.setStatus("Reserved"); + advertisementStatusRepository.save(advertisementStatus); + } + + if(advertisementStatusRepository.findByStatus("Sold").isEmpty()){ + AdvertisementStatus advertisementStatus = new AdvertisementStatus(); + advertisementStatus.setStatus("Sold"); + advertisementStatusRepository.save(advertisementStatus); + } if (Arrays.asList(activeProfiles.split(",")).contains("test")) { // Testing instances if (!userRepository.existsById("test")) { From 0dc2c1c8be7fc873aa56ab84f38d428a86e483e4 Mon Sep 17 00:00:00 2001 From: Sergi Vila Monguia <47522460+Troter2@users.noreply.github.com> Date: Sat, 14 Dec 2024 17:56:37 +0100 Subject: [PATCH 2/8] Add version parameter --- .../java/cat/udl/eps/softarch/demo/domain/Advertisement.java | 4 ++++ .../eps/softarch/demo/repository/AdvertisementRepository.java | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java b/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java index cc38f26..6415ba8 100644 --- a/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java +++ b/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java @@ -18,6 +18,9 @@ @Entity public class Advertisement extends UriEntity { + @Version + private Long version; + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @@ -60,5 +63,6 @@ public class Advertisement extends UriEntity { public Advertisement() { this.creationDate = ZonedDateTime.now(); + this.version = 1L; } } diff --git a/src/main/java/cat/udl/eps/softarch/demo/repository/AdvertisementRepository.java b/src/main/java/cat/udl/eps/softarch/demo/repository/AdvertisementRepository.java index 7b22b5b..93217e1 100644 --- a/src/main/java/cat/udl/eps/softarch/demo/repository/AdvertisementRepository.java +++ b/src/main/java/cat/udl/eps/softarch/demo/repository/AdvertisementRepository.java @@ -9,5 +9,4 @@ public interface AdvertisementRepository extends CrudRepository, PagingAndSortingRepository { List findByTitle(@Param("title") String title); - } From e4ba1024da8ee9722bb90087cb46465329293784 Mon Sep 17 00:00:00 2001 From: Sergi Vila Monguia <47522460+Troter2@users.noreply.github.com> Date: Sat, 14 Dec 2024 20:53:19 +0100 Subject: [PATCH 3/8] Revert "Vreate default advertisemen status elements" This reverts commit 42882765d321bdf926e9433d5e3c44c764eef895. --- .../demo/config/DBInitialization.java | 22 +------------------ 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/src/main/java/cat/udl/eps/softarch/demo/config/DBInitialization.java b/src/main/java/cat/udl/eps/softarch/demo/config/DBInitialization.java index e2104b0..b402d80 100644 --- a/src/main/java/cat/udl/eps/softarch/demo/config/DBInitialization.java +++ b/src/main/java/cat/udl/eps/softarch/demo/config/DBInitialization.java @@ -15,7 +15,6 @@ @Configuration public class DBInitialization { private final OwnerRepository ownerRepository; - private final AdvertisementStatusRepository advertisementStatusRepository; @Value("${default-password}") String defaultPassword; @Value("${spring.profiles.active:}") @@ -25,13 +24,12 @@ public class DBInitialization { private final ApartmentRepository apartmentRepository; private final AdvertisementRepository advertisementRepository; - public DBInitialization(UserRepository userRepository, OwnerRepository ownerRepository, AdminRepository adminRepository, AdvertisementRepository advertisementRepository, ApartmentRepository apartmentRepository, AdvertisementStatusRepository advertisementStatusRepository) { + public DBInitialization(UserRepository userRepository, OwnerRepository ownerRepository, AdminRepository adminRepository, AdvertisementRepository advertisementRepository, ApartmentRepository apartmentRepository) { this.userRepository = userRepository; this.ownerRepository = ownerRepository; this.apartmentRepository = apartmentRepository; this.adminRepository = adminRepository; this.advertisementRepository = advertisementRepository; - this.advertisementStatusRepository = advertisementStatusRepository; } @PostConstruct @@ -93,24 +91,6 @@ public void initializeDatabase() { apartment.setRegistrationDate(ZonedDateTime.now()); apartmentRepository.save(apartment); } - - if(advertisementStatusRepository.findByStatus("Available").isEmpty()){ - AdvertisementStatus advertisementStatus = new AdvertisementStatus(); - advertisementStatus.setStatus("Available"); - advertisementStatusRepository.save(advertisementStatus); - } - - if(advertisementStatusRepository.findByStatus("Reserved").isEmpty()){ - AdvertisementStatus advertisementStatus = new AdvertisementStatus(); - advertisementStatus.setStatus("Reserved"); - advertisementStatusRepository.save(advertisementStatus); - } - - if(advertisementStatusRepository.findByStatus("Sold").isEmpty()){ - AdvertisementStatus advertisementStatus = new AdvertisementStatus(); - advertisementStatus.setStatus("Sold"); - advertisementStatusRepository.save(advertisementStatus); - } if (Arrays.asList(activeProfiles.split(",")).contains("test")) { // Testing instances if (!userRepository.existsById("test")) { From 21e24a7890f73b1ca87430552c8348941e2b8fd7 Mon Sep 17 00:00:00 2001 From: Sergi Vila Monguia <47522460+Troter2@users.noreply.github.com> Date: Sat, 14 Dec 2024 20:55:18 +0100 Subject: [PATCH 4/8] remove uri entity to avvoid crash --- .../java/cat/udl/eps/softarch/demo/domain/Advertisement.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java b/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java index 6415ba8..23b9136 100644 --- a/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java +++ b/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java @@ -18,8 +18,6 @@ @Entity public class Advertisement extends UriEntity { - @Version - private Long version; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -63,6 +61,5 @@ public class Advertisement extends UriEntity { public Advertisement() { this.creationDate = ZonedDateTime.now(); - this.version = 1L; } } From 9c7ddf9097f841f87ef2d7d15de830646a332534 Mon Sep 17 00:00:00 2001 From: Sergi Vila Monguia <47522460+Troter2@users.noreply.github.com> Date: Sat, 14 Dec 2024 23:37:05 +0100 Subject: [PATCH 5/8] Add default AdStatus --- .../demo/config/DBInitialization.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/cat/udl/eps/softarch/demo/config/DBInitialization.java b/src/main/java/cat/udl/eps/softarch/demo/config/DBInitialization.java index b402d80..f2da834 100644 --- a/src/main/java/cat/udl/eps/softarch/demo/config/DBInitialization.java +++ b/src/main/java/cat/udl/eps/softarch/demo/config/DBInitialization.java @@ -15,6 +15,7 @@ @Configuration public class DBInitialization { private final OwnerRepository ownerRepository; + private final AdvertisementStatusRepository advertisementStatusRepository; @Value("${default-password}") String defaultPassword; @Value("${spring.profiles.active:}") @@ -24,12 +25,13 @@ public class DBInitialization { private final ApartmentRepository apartmentRepository; private final AdvertisementRepository advertisementRepository; - public DBInitialization(UserRepository userRepository, OwnerRepository ownerRepository, AdminRepository adminRepository, AdvertisementRepository advertisementRepository, ApartmentRepository apartmentRepository) { + public DBInitialization(UserRepository userRepository, OwnerRepository ownerRepository, AdminRepository adminRepository, AdvertisementRepository advertisementRepository, ApartmentRepository apartmentRepository, AdvertisementStatusRepository advertisementStatusRepository) { this.userRepository = userRepository; this.ownerRepository = ownerRepository; this.apartmentRepository = apartmentRepository; this.adminRepository = adminRepository; this.advertisementRepository = advertisementRepository; + this.advertisementStatusRepository = advertisementStatusRepository; } @PostConstruct @@ -53,7 +55,21 @@ public void initializeDatabase() { user.encodePassword(); adminRepository.save(user); } - + if(advertisementStatusRepository.findByStatus("Available").isEmpty()){ + AdvertisementStatus status = new AdvertisementStatus(); + status.setStatus("Available"); + advertisementStatusRepository.save(status); + } + if(advertisementStatusRepository.findByStatus("Reserved").isEmpty()){ + AdvertisementStatus status = new AdvertisementStatus(); + status.setStatus("Reserved"); + advertisementStatusRepository.save(status); + } + if(advertisementStatusRepository.findByStatus("Sold").isEmpty()){ + AdvertisementStatus status = new AdvertisementStatus(); + status.setStatus("Sold"); + advertisementStatusRepository.save(status); + } if (!ownerRepository.existsById("owner")) { mainOwner = new Owner(); mainOwner.setEmail("owner@sample.app"); From a8ed84198bd60e220983615298ab43a87baa43bf Mon Sep 17 00:00:00 2001 From: Sergi Vila Monguia <47522460+Troter2@users.noreply.github.com> Date: Sat, 14 Dec 2024 23:37:20 +0100 Subject: [PATCH 6/8] Create AdvertisementStatusRepositoryHolder.java --- .../AdvertisementStatusRepositoryHolder.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/java/cat/udl/eps/softarch/demo/handler/AdvertisementStatusRepositoryHolder.java diff --git a/src/main/java/cat/udl/eps/softarch/demo/handler/AdvertisementStatusRepositoryHolder.java b/src/main/java/cat/udl/eps/softarch/demo/handler/AdvertisementStatusRepositoryHolder.java new file mode 100644 index 0000000..45e385c --- /dev/null +++ b/src/main/java/cat/udl/eps/softarch/demo/handler/AdvertisementStatusRepositoryHolder.java @@ -0,0 +1,19 @@ +package cat.udl.eps.softarch.demo.handler; + +import cat.udl.eps.softarch.demo.repository.AdvertisementStatusRepository; +import lombok.Getter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class AdvertisementStatusRepositoryHolder { + + @Getter + private static AdvertisementStatusRepository repository; + + @Autowired + public AdvertisementStatusRepositoryHolder(AdvertisementStatusRepository advertisementStatusRepository) { + repository = advertisementStatusRepository; + } + +} From 561c300de2aa0584eb746d6ee7155eb3878e7d64 Mon Sep 17 00:00:00 2001 From: Sergi Vila Monguia <47522460+Troter2@users.noreply.github.com> Date: Sat, 14 Dec 2024 23:37:26 +0100 Subject: [PATCH 7/8] Update Advertisement.java --- .../eps/softarch/demo/domain/Advertisement.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java b/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java index 23b9136..1190a86 100644 --- a/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java +++ b/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java @@ -1,5 +1,7 @@ package cat.udl.eps.softarch.demo.domain; +import cat.udl.eps.softarch.demo.handler.AdvertisementStatusRepositoryHolder; +import cat.udl.eps.softarch.demo.repository.AdvertisementStatusRepository; import com.fasterxml.jackson.annotation.JsonIdentityReference; import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.persistence.*; @@ -9,16 +11,21 @@ import jakarta.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; +import org.springframework.beans.factory.annotation.Autowired; import java.math.BigDecimal; import java.time.ZonedDateTime; + + @Setter @Getter @Entity + public class Advertisement extends UriEntity { + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @@ -62,4 +69,14 @@ public class Advertisement extends UriEntity { public Advertisement() { this.creationDate = ZonedDateTime.now(); } + @PrePersist + private void initializeAdStatus() { + if (this.adStatus == null) { + this.adStatus = AdvertisementStatusRepositoryHolder.getRepository() + .findById(1L) + .orElseThrow(() -> new RuntimeException("Default AdvertisementStatus with ID 1 not found")); + } + } } + + From 1ed6ac3fda1e63c275e305431760d3b76856e3d3 Mon Sep 17 00:00:00 2001 From: Sergi Vila Monguia <47522460+Troter2@users.noreply.github.com> Date: Sun, 15 Dec 2024 23:18:55 +0100 Subject: [PATCH 8/8] Solved id dependency --- .../udl/eps/softarch/demo/domain/Advertisement.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java b/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java index 1190a86..90c05bc 100644 --- a/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java +++ b/src/main/java/cat/udl/eps/softarch/demo/domain/Advertisement.java @@ -15,7 +15,7 @@ import java.math.BigDecimal; import java.time.ZonedDateTime; - +import java.util.List; @Setter @@ -72,9 +72,12 @@ public Advertisement() { @PrePersist private void initializeAdStatus() { if (this.adStatus == null) { - this.adStatus = AdvertisementStatusRepositoryHolder.getRepository() - .findById(1L) - .orElseThrow(() -> new RuntimeException("Default AdvertisementStatus with ID 1 not found")); + List entities = AdvertisementStatusRepositoryHolder.getRepository().findByStatus("Available"); + + if (entities.isEmpty()) { + throw new EntityNotFoundException("No entities found with status: Available" ); + } + this.adStatus = entities.get(0); } } }