From 57e9aa8015d0657cd0c8da4aac40454cf52179db Mon Sep 17 00:00:00 2001 From: Christian Gendreau Date: Mon, 23 Dec 2024 16:14:05 -0500 Subject: [PATCH] 35474 Add IdentifyType support WIP --- pom.xml | 4 +- .../api/entities/AgentIdentifierType.java | 60 +++++++++++++++++++ .../service/AgentIdentifierTypeService.java | 21 +++++++ .../AgentIdentifierTypeValidator.java | 18 ++++++ .../db/changelog/db.changelog-master.xml | 1 + .../22-Add_identifier_type_table.xml | 32 ++++++++++ .../aafc/agent/api/BaseIntegrationTest.java | 2 + .../service/AgentIdentifierTypeServiceIT.java | 20 +++++++ .../factories/AgentIdentifierTypeFactory.java | 18 ++++++ 9 files changed, 174 insertions(+), 2 deletions(-) create mode 100644 src/main/java/ca/gc/aafc/agent/api/entities/AgentIdentifierType.java create mode 100644 src/main/java/ca/gc/aafc/agent/api/service/AgentIdentifierTypeService.java create mode 100644 src/main/java/ca/gc/aafc/agent/api/validation/AgentIdentifierTypeValidator.java create mode 100644 src/main/resources/db/changelog/migrations/22-Add_identifier_type_table.xml create mode 100644 src/test/java/ca/gc/aafc/agent/api/service/AgentIdentifierTypeServiceIT.java create mode 100644 src/test/java/ca/gc/aafc/agent/api/testsupport/factories/AgentIdentifierTypeFactory.java diff --git a/pom.xml b/pom.xml index e9222fa..056955d 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ 2.1.0 2.0.2 - 0.133 + 0.134-SNAPSHOT 1.6 false @@ -39,7 +39,7 @@ 5.3.38 42.4.4 - + io.github.aafc-bicoe diff --git a/src/main/java/ca/gc/aafc/agent/api/entities/AgentIdentifierType.java b/src/main/java/ca/gc/aafc/agent/api/entities/AgentIdentifierType.java new file mode 100644 index 0000000..c807f9f --- /dev/null +++ b/src/main/java/ca/gc/aafc/agent/api/entities/AgentIdentifierType.java @@ -0,0 +1,60 @@ +package ca.gc.aafc.agent.api.entities; + +import java.time.OffsetDateTime; +import java.util.List; +import java.util.UUID; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.SuperBuilder; + +import org.hibernate.annotations.Generated; +import org.hibernate.annotations.GenerationTime; +import org.hibernate.annotations.NaturalId; +import org.hibernate.annotations.Type; + +import ca.gc.aafc.dina.entity.IdentifierType; +import ca.gc.aafc.dina.i18n.MultilingualTitle; + +@Entity(name = "identifier_type") +@Getter +@Setter +@SuperBuilder +public class AgentIdentifierType implements IdentifierType { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + @NaturalId + @NotNull + @Column(name = "uuid", unique = true) + private UUID uuid; + + @Column(name = "created_by") + private String createdBy; + + @Column(name = "created_on", insertable = false, updatable = false) + @Generated(value = GenerationTime.INSERT) + private OffsetDateTime createdOn; + + @Column(name = "key") + private String key; + + private String name; + + @Type(type = "list-array") + private List dinaComponents; + + private String uriTemplate; + + private String term; + + @Type(type = "jsonb") + private MultilingualTitle multilingualTitle; +} diff --git a/src/main/java/ca/gc/aafc/agent/api/service/AgentIdentifierTypeService.java b/src/main/java/ca/gc/aafc/agent/api/service/AgentIdentifierTypeService.java new file mode 100644 index 0000000..ce9aedb --- /dev/null +++ b/src/main/java/ca/gc/aafc/agent/api/service/AgentIdentifierTypeService.java @@ -0,0 +1,21 @@ +package ca.gc.aafc.agent.api.service; + +import lombok.NonNull; + +import org.springframework.stereotype.Service; +import org.springframework.validation.SmartValidator; + +import ca.gc.aafc.agent.api.entities.AgentIdentifierType; +import ca.gc.aafc.dina.jpa.BaseDAO; +import ca.gc.aafc.dina.service.IdentifierTypeService; +import ca.gc.aafc.dina.validation.IdentifierTypeValidator; + +@Service +public class AgentIdentifierTypeService extends IdentifierTypeService { + + public AgentIdentifierTypeService(@NonNull BaseDAO baseDAO, + @NonNull SmartValidator validator, + IdentifierTypeValidator identifierTypeValidator) { + super(baseDAO, validator, identifierTypeValidator); + } +} diff --git a/src/main/java/ca/gc/aafc/agent/api/validation/AgentIdentifierTypeValidator.java b/src/main/java/ca/gc/aafc/agent/api/validation/AgentIdentifierTypeValidator.java new file mode 100644 index 0000000..d7b77b4 --- /dev/null +++ b/src/main/java/ca/gc/aafc/agent/api/validation/AgentIdentifierTypeValidator.java @@ -0,0 +1,18 @@ +package ca.gc.aafc.agent.api.validation; + + +import javax.inject.Named; + +import org.springframework.context.MessageSource; +import org.springframework.stereotype.Component; + +import ca.gc.aafc.dina.validation.IdentifierTypeValidator; + +@Component +public class AgentIdentifierTypeValidator extends IdentifierTypeValidator { + public AgentIdentifierTypeValidator(@Named("validationMessageSource") MessageSource messageSource) { + super(messageSource); + } + + +} diff --git a/src/main/resources/db/changelog/db.changelog-master.xml b/src/main/resources/db/changelog/db.changelog-master.xml index 8a9d8cf..c90f29e 100755 --- a/src/main/resources/db/changelog/db.changelog-master.xml +++ b/src/main/resources/db/changelog/db.changelog-master.xml @@ -24,4 +24,5 @@ + diff --git a/src/main/resources/db/changelog/migrations/22-Add_identifier_type_table.xml b/src/main/resources/db/changelog/migrations/22-Add_identifier_type_table.xml new file mode 100644 index 0000000..ac8b0e6 --- /dev/null +++ b/src/main/resources/db/changelog/migrations/22-Add_identifier_type_table.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/java/ca/gc/aafc/agent/api/BaseIntegrationTest.java b/src/test/java/ca/gc/aafc/agent/api/BaseIntegrationTest.java index c3c6726..b0e8f63 100644 --- a/src/test/java/ca/gc/aafc/agent/api/BaseIntegrationTest.java +++ b/src/test/java/ca/gc/aafc/agent/api/BaseIntegrationTest.java @@ -6,6 +6,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; @@ -17,6 +18,7 @@ @TestPropertySource(properties = "spring.config.additional-location=classpath:application-test.yml") @Transactional @ContextConfiguration(initializers = { PostgresTestContainerInitializer.class }) +@Import(BaseIntegrationTest.CollectionModuleTestConfiguration.class) public abstract class BaseIntegrationTest { @TestConfiguration diff --git a/src/test/java/ca/gc/aafc/agent/api/service/AgentIdentifierTypeServiceIT.java b/src/test/java/ca/gc/aafc/agent/api/service/AgentIdentifierTypeServiceIT.java new file mode 100644 index 0000000..1933922 --- /dev/null +++ b/src/test/java/ca/gc/aafc/agent/api/service/AgentIdentifierTypeServiceIT.java @@ -0,0 +1,20 @@ +package ca.gc.aafc.agent.api.service; + +import org.junit.jupiter.api.Test; + +import ca.gc.aafc.agent.api.BaseIntegrationTest; +import ca.gc.aafc.agent.api.testsupport.factories.AgentIdentifierTypeFactory; + +import javax.inject.Inject; + +public class AgentIdentifierTypeServiceIT extends BaseIntegrationTest { + + @Inject + private AgentIdentifierTypeService agentIdentifierTypeService; + + @Test + public void createAgentIdentifierType() { + var identifierType = AgentIdentifierTypeFactory.newAgentIdentifierType(); + agentIdentifierTypeService.create(identifierType.build()); + } +} diff --git a/src/test/java/ca/gc/aafc/agent/api/testsupport/factories/AgentIdentifierTypeFactory.java b/src/test/java/ca/gc/aafc/agent/api/testsupport/factories/AgentIdentifierTypeFactory.java new file mode 100644 index 0000000..ebdbf35 --- /dev/null +++ b/src/test/java/ca/gc/aafc/agent/api/testsupport/factories/AgentIdentifierTypeFactory.java @@ -0,0 +1,18 @@ +package ca.gc.aafc.agent.api.testsupport.factories; + +import java.util.UUID; + +import org.apache.commons.lang3.RandomStringUtils; + +import ca.gc.aafc.agent.api.entities.AgentIdentifierType; + + +public class AgentIdentifierTypeFactory { + + public static AgentIdentifierType.AgentIdentifierTypeBuilder newAgentIdentifierType() { + return AgentIdentifierType + .builder() + .uuid(UUID.randomUUID()) + .name(RandomStringUtils.randomAlphabetic(10)); + } +}