diff --git a/docker-compose.yml b/docker-compose.yml index 13e076dbb3fc09ac23ab60998f36b863c52ad7e0..02ba641461872785da658c9161496eb23d6579ee 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -86,6 +86,8 @@ services: fda-userdb: fda-public: environment: + GATEWAY_ENDPOINT: http://fda-gateway-service:9095 + SEARCH_ENDPOINT: fda-search-service:9200 SPRING_PROFILES_ACTIVE: docker TZ: Europe/Vienna ports: @@ -111,6 +113,7 @@ services: networks: fda-public: environment: + GATEWAY_ENDPOINT: http://fda-gateway-service:9095 SPRING_PROFILES_ACTIVE: docker TZ: Europe/Vienna ports: @@ -132,8 +135,6 @@ services: networks: fda-public: environment: - TOKEN: ${INVENIO_TOKEN} - REFERER: https://dbrepo.ossdip.at DOCUMENT_ENDPOINT: https://test.researchdata.tuwien.ac.at GATEWAY_ENDPOINT: http://fda-gateway-service:9095 SPRING_PROFILES_ACTIVE: docker @@ -207,8 +208,9 @@ services: fda-public: fda-userdb: environment: + GATEWAY_ENDPOINT: http://fda-gateway-service:9095 + SEARCH_ENDPOINT: fda-search-service:9200 SPRING_PROFILES_ACTIVE: docker - SYSTEM_PASSWORD: ${ADMIN_PASSWORD:-admin} multipart.location: /tmp TZ: Europe/Vienna ports: @@ -235,6 +237,7 @@ services: networks: fda-public: environment: + GATEWAY_ENDPOINT: http://fda-gateway-service:9095 SPRING_PROFILES_ACTIVE: docker TZ: Europe/Vienna ports: diff --git a/fda-container-service/rest-service/src/main/resources/application-docker.yml b/fda-container-service/rest-service/src/main/resources/application-docker.yml index 9351dd0b182779d9e1f64f0a24936df408d33e28..00055336d04fec7e1cd750353c76c985d24c33d8 100644 --- a/fda-container-service/rest-service/src/main/resources/application-docker.yml +++ b/fda-container-service/rest-service/src/main/resources/application-docker.yml @@ -29,4 +29,4 @@ eureka: fda: mount.path: /tmp ready.path: /ready - gateway.endpoint: http://fda-gateway-service:9095 \ No newline at end of file + gateway.endpoint: "${GATEWAY_ENDPOINT}" \ No newline at end of file diff --git a/fda-container-service/rest-service/src/main/resources/application.yml b/fda-container-service/rest-service/src/main/resources/application.yml index 2a275b9f9146c414267a73d10e6b52debcaaaadd..7a9206456ae4bef396fac1ca83553e95ce23938d 100644 --- a/fda-container-service/rest-service/src/main/resources/application.yml +++ b/fda-container-service/rest-service/src/main/resources/application.yml @@ -30,4 +30,4 @@ eureka: fda: mount.path: /tmp ready.path: ./ready - gateway.endpoint: http://localhost:9095 \ No newline at end of file + gateway.endpoint: "${GATEWAY_ENDPOINT}" \ No newline at end of file diff --git a/fda-database-service/rest-service/src/main/resources/application-docker.yml b/fda-database-service/rest-service/src/main/resources/application-docker.yml index 0de2dfa1c50737f4bb1154cc993a6afa890fe20a..38bc2bd1a3f3f4b6bfacf1f366cc43055a224bb7 100644 --- a/fda-database-service/rest-service/src/main/resources/application-docker.yml +++ b/fda-database-service/rest-service/src/main/resources/application-docker.yml @@ -32,6 +32,6 @@ eureka: instance.hostname: fda-database-service client.serviceUrl.defaultZone: http://fda-discovery-service:9090/eureka/ fda: - elastic.endpoint: fda-search-service:9200 + elastic.endpoint: "${SEARCH_ENDPOINT}" ready.path: /ready - gateway.endpoint: http://fda-gateway-service:9095 \ No newline at end of file + gateway.endpoint: "${GATEWAY_ENDPOINT}" \ No newline at end of file diff --git a/fda-database-service/rest-service/src/main/resources/application.yml b/fda-database-service/rest-service/src/main/resources/application.yml index 54c186c0e6d9afcbd86832b26e47eab1cdfb4432..acbebc6a0f467988138f16892d22fdfd7961b97b 100644 --- a/fda-database-service/rest-service/src/main/resources/application.yml +++ b/fda-database-service/rest-service/src/main/resources/application.yml @@ -31,6 +31,6 @@ eureka: instance.hostname: fda-database-service client.serviceUrl.defaultZone: http://localhost:9090/eureka/ fda: - elastic.endpoint: localhost:9200 + elastic.endpoint: "${SEARCH_ENDPOINT}" ready.path: ./ready - gateway.endpoint: http://fda-gateway-service:9095 \ No newline at end of file + gateway.endpoint: "${GATEWAY_ENDPOINT}" \ No newline at end of file diff --git a/fda-document-service/.gitignore b/fda-document-service/.gitignore index d03463b4ce8652d30329b593571f78ce2a862261..20f73b09b5b205efe02659eb26ee4eeb41bdda93 100644 --- a/fda-document-service/.gitignore +++ b/fda-document-service/.gitignore @@ -7,7 +7,6 @@ target/ ### Generated ### ready -service_ready ### STS ### .apt_generated diff --git a/fda-document-service/rest-service/src/main/resources/application-docker.yml b/fda-document-service/rest-service/src/main/resources/application-docker.yml index 48e3ce2534cde313de64d6e77fa8088c282f6866..456ae32a0f17ff6b598cefa9d19eb590bf449f7b 100644 --- a/fda-document-service/rest-service/src/main/resources/application-docker.yml +++ b/fda-document-service/rest-service/src/main/resources/application-docker.yml @@ -35,4 +35,4 @@ fda: mount.path: /tmp ready.path: /ready gateway.endpoint: "${GATEWAY_ENDPOINT}" - document.endpoint: https://test.researchdata.tuwien.ac.at \ No newline at end of file + document.endpoint: "${DOCUMENT_ENDPOINT}" \ No newline at end of file diff --git a/fda-document-service/rest-service/src/main/resources/application.yml b/fda-document-service/rest-service/src/main/resources/application.yml index 90721b36c2fcd9ea73489f4fc6ac81172d0c25e6..923c1bd57b4e093648b39d20283f3b088665d028 100644 --- a/fda-document-service/rest-service/src/main/resources/application.yml +++ b/fda-document-service/rest-service/src/main/resources/application.yml @@ -35,4 +35,4 @@ fda: mount.path: /tmp ready.path: ./ready gateway.endpoint: "${GATEWAY_ENDPOINT}" - document.endpoint: https://test.researchdata.tuwien.ac.at \ No newline at end of file + document.endpoint: "${DOCUMENT_ENDPOINT}" \ No newline at end of file diff --git a/fda-identifier-service/rest-service/src/main/resources/application-docker.yml b/fda-identifier-service/rest-service/src/main/resources/application-docker.yml index 260aec339d1fb06bc4ccd1a0fa8c3d1c9ef85c7a..cb557b34cb978e73ccf8d27d60fc165144642a3e 100644 --- a/fda-identifier-service/rest-service/src/main/resources/application-docker.yml +++ b/fda-identifier-service/rest-service/src/main/resources/application-docker.yml @@ -29,4 +29,4 @@ eureka: client.serviceUrl.defaultZone: http://fda-discovery-service:9090/eureka/ fda: ready.path: /ready - gateway.endpoint: http://fda-gateway-service:9095 \ No newline at end of file + gateway.endpoint: "${GATEWAY_ENDPOINT}" \ No newline at end of file diff --git a/fda-identifier-service/rest-service/src/main/resources/application.yml b/fda-identifier-service/rest-service/src/main/resources/application.yml index e71ce69b3fe660d786ba6dab44a19407bd1b2b22..0eb698b9f3b97aaa8b58f37d045b3af696619216 100644 --- a/fda-identifier-service/rest-service/src/main/resources/application.yml +++ b/fda-identifier-service/rest-service/src/main/resources/application.yml @@ -29,4 +29,4 @@ eureka: client.serviceUrl.defaultZone: http://localhost:9090/eureka/ fda: ready.path: ~/ - gateway.endpoint: http://fda-gateway-service:9095 \ No newline at end of file + gateway.endpoint: "${GATEWAY_ENDPOINT}" \ No newline at end of file diff --git a/fda-identifier-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java b/fda-identifier-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java index 1b39da61cc95964eeb35335dfb8807f4d9abc622..a90e6ea31bf73be121ac6da665afb3269d8f1ed1 100644 --- a/fda-identifier-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java +++ b/fda-identifier-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java @@ -25,10 +25,14 @@ public abstract class BaseUnitTest { public final static String USER_1_USERNAME = "junit"; public final static String USER_1_PASSWORD = "junit"; + public final static String USER_1_EMAIL = "junit@example.com"; + public final static Boolean USER_1_EMAIL_VERIFIED = true; public final static User USER_1 = User.builder() .username(USER_1_USERNAME) .password(USER_1_PASSWORD) + .email(USER_1_EMAIL) + .emailVerified(USER_1_EMAIL_VERIFIED) .build(); public final static Long DATABASE_1_ID = 1L; @@ -56,20 +60,13 @@ public abstract class BaseUnitTest { public final static Instant CREATOR_1_CREATED = Instant.ofEpochSecond(1641588352); public final static Instant CREATOR_1_MODIFIED = Instant.ofEpochSecond(1541588352); - public final static Creator CREATOR_1 = Creator.builder() - .id(CREATOR_1_ID) - .orcid(CREATOR_1_ORCID) - .name(CREATOR_1_NAME) - .created(CREATOR_1_CREATED) - .lastModified(CREATOR_1_MODIFIED) - .build(); - - public final static Creator CREATOR_1_REQUEST = Creator.builder() - .orcid(CREATOR_1_ORCID) - .name(CREATOR_1_NAME) - .created(CREATOR_1_CREATED) - .lastModified(CREATOR_1_MODIFIED) - .build(); + public final static Long CREATOR_3_ID = 3L; + public final static Long CREATOR_3_QUERY_ID = 1L; + public final static String CREATOR_3_ORCID = "00000-00000-00000"; + public final static String CREATOR_3_AFFIL = "TU Graz"; + public final static String CREATOR_3_NAME = "Mustermann, Max"; + public final static Instant CREATOR_3_CREATED = Instant.ofEpochSecond(1641588352); + public final static Instant CREATOR_3_MODIFIED = Instant.ofEpochSecond(1541588352); public final static Long CREATOR_2_ID = 2L; public final static Long CREATOR_2_QUERY_ID = 1L; @@ -79,46 +76,13 @@ public abstract class BaseUnitTest { public final static Instant CREATOR_2_CREATED = Instant.ofEpochSecond(1641588352); public final static Instant CREATOR_2_MODIFIED = Instant.ofEpochSecond(1541588352); - public final static Creator CREATOR_2 = Creator.builder() - .id(CREATOR_2_ID) - .orcid(CREATOR_2_ORCID) - .name(CREATOR_2_NAME) - .created(CREATOR_2_CREATED) - .lastModified(CREATOR_2_MODIFIED) - .build(); - - public final static Creator CREATOR_2_REQUEST = Creator.builder() - .orcid(CREATOR_2_ORCID) - .name(CREATOR_2_NAME) - .created(CREATOR_2_CREATED) - .lastModified(CREATOR_2_MODIFIED) - .build(); - - public final static CreatorDto CREATOR_1_DTO = CreatorDto.builder() - .id(CREATOR_1_ID) - .affiliation(CREATOR_1_AFFIL) - .orcid(CREATOR_1_ORCID) - .name(CREATOR_1_NAME) - .build(); - - public final static CreatorCreateDto CREATOR_1_CREATE_DTO = CreatorCreateDto.builder() - .affiliation(CREATOR_1_AFFIL) - .orcid(CREATOR_1_ORCID) - .name(CREATOR_1_NAME) - .build(); - - public final static CreatorDto CREATOR_2_DTO = CreatorDto.builder() - .id(CREATOR_2_ID) - .affiliation(CREATOR_2_AFFIL) - .orcid(CREATOR_2_ORCID) - .name(CREATOR_2_NAME) - .build(); - - public final static CreatorCreateDto CREATOR_2_CREATE_DTO = CreatorCreateDto.builder() - .affiliation(CREATOR_2_AFFIL) - .orcid(CREATOR_2_ORCID) - .name(CREATOR_2_NAME) - .build(); + public final static Long CREATOR_4_ID = 4L; + public final static Long CREATOR_4_QUERY_ID = 1L; + public final static String CREATOR_4_ORCID = "00000-00000-00000"; + public final static String CREATOR_4_AFFIL = "TU Wien"; + public final static String CREATOR_4_NAME = "Mustermann, Martina"; + public final static Instant CREATOR_4_CREATED = Instant.ofEpochSecond(1641588352); + public final static Instant CREATOR_4_MODIFIED = Instant.ofEpochSecond(1541588352); public final static Long IMAGE_1_ID = 1L; public final static String IMAGE_1_REPOSITORY = "postgres"; @@ -225,9 +189,11 @@ public abstract class BaseUnitTest { public final static Long QUERY_1_CONTAINER_ID = CONTAINER_1_ID; public final static Long QUERY_1_DATABASE_ID = DATABASE_1_ID; public final static String QUERY_1_STATEMENT = "SELECT * FROM `weather`;"; + public final static String QUERY_1_HASH = "ff3f7cbe1b96d296957f6e39e55b8b1b577fa3d205d4795af99594cfd20cb80d"; public final static String QUERY_1_RESULT_HASH = "ff3f7cbe1b96d296957f6e39e55b8b1b577fa3d205d4795af99594cfd20cb80d"; public final static Long QUERY_1_RESULT_NUMBER = 9L; public final static Instant QUERY_1_CREATED = Instant.ofEpochSecond(1641588352); + public final static Instant QUERY_1_EXECUTED = Instant.ofEpochSecond(1641588352); public final static Instant QUERY_1_LAST_MODIFIED = Instant.ofEpochSecond(1541588352); public final static QueryDto QUERY_1_DTO = QueryDto.builder() @@ -240,15 +206,19 @@ public abstract class BaseUnitTest { .resultHash(QUERY_1_RESULT_HASH) .lastModified(QUERY_1_LAST_MODIFIED) .created(QUERY_1_CREATED) + .queryHash(QUERY_1_HASH) + .execution(QUERY_1_EXECUTED) .build(); public final static Long QUERY_2_ID = 2L; public final static Long QUERY_2_CONTAINER_ID = CONTAINER_2_ID; public final static Long QUERY_2_DATABASE_ID = DATABASE_2_ID; public final static String QUERY_2_STATEMENT = "SELECT * FROM `weather`;"; + public final static String QUERY_2_HASH = "ff3f7cbe1b96d296957f6e39e55b8b1b577fa3d205d4795af99594cfd20cb80d"; public final static String QUERY_2_RESULT_HASH = "ff3f7cbe1b96d296957f6e39e55b8b1b577fa3d205d4795af99594cfd20cb80d"; public final static Long QUERY_2_RESULT_NUMBER = 5L; public final static Instant QUERY_2_CREATED = Instant.ofEpochSecond(1641588352); + public final static Instant QUERY_2_EXECUTED = Instant.ofEpochSecond(1641588352); public final static Instant QUERY_2_LAST_MODIFIED = Instant.ofEpochSecond(1541588352); public final static QueryDto QUERY_2_DTO = QueryDto.builder() @@ -261,6 +231,8 @@ public abstract class BaseUnitTest { .resultHash(QUERY_2_RESULT_HASH) .lastModified(QUERY_2_LAST_MODIFIED) .created(QUERY_2_CREATED) + .queryHash(QUERY_2_HASH) + .execution(QUERY_2_EXECUTED) .build(); public final static Long IDENTIFIER_1_ID = 1L; @@ -269,10 +241,17 @@ public abstract class BaseUnitTest { public final static String IDENTIFIER_1_DESCRIPTION = "Selecting all from the weather Australia table"; public final static String IDENTIFIER_1_TITLE = "Australia weather data"; public final static String IDENTIFIER_1_DOI = "10.1000/182"; - public final static VisibilityType IDENTIFIER_1_VISIBILITY = VisibilityType.SELF; - public final static VisibilityTypeDto IDENTIFIER_1_VISIBILITY_DTO = VisibilityTypeDto.SELF; + public final static VisibilityType IDENTIFIER_1_VISIBILITY = VisibilityType.EVERYONE; + public final static VisibilityTypeDto IDENTIFIER_1_VISIBILITY_DTO = VisibilityTypeDto.EVERYONE; public final static Instant IDENTIFIER_1_CREATED = Instant.ofEpochSecond(1641588352); public final static Instant IDENTIFIER_1_MODIFIED = Instant.ofEpochSecond(1541588352); + public final static Instant IDENTIFIER_1_EXECUTION = Instant.ofEpochSecond(1541588352); + public final static Short IDENTIFIER_1_PUBLICATION_YEAR = 2022; + public final static String IDENTIFIER_1_QUERY_HASH = "abc"; + public final static String IDENTIFIER_1_RESULT_HASH = "def"; + public final static String IDENTIFIER_1_QUERY = "SELECT `id` FROM `foobar`"; + public final static String IDENTIFIER_1_NORMALIZED = "SELECT `id` FROM `foobar`"; + public final static Long IDENTIFIER_1_RESULT_NUMBER = 2L; public final static Long IDENTIFIER_2_ID = 2L; public final static Long IDENTIFIER_2_QUERY_ID = QUERY_2_ID; @@ -280,13 +259,22 @@ public abstract class BaseUnitTest { public final static String IDENTIFIER_2_DESCRIPTION = "Selecting all from the weather Austria table"; public final static String IDENTIFIER_2_TITLE = "Austria weather data"; public final static String IDENTIFIER_2_DOI = "10.1000/183"; - public final static VisibilityType IDENTIFIER_2_VISIBILITY = VisibilityType.SELF; - public final static VisibilityTypeDto IDENTIFIER_2_VISIBILITY_DTO = VisibilityTypeDto.SELF; + public final static VisibilityType IDENTIFIER_2_VISIBILITY = VisibilityType.EVERYONE; + public final static VisibilityTypeDto IDENTIFIER_2_VISIBILITY_DTO = VisibilityTypeDto.EVERYONE; public final static Instant IDENTIFIER_2_CREATED = Instant.ofEpochSecond(1641588352); public final static Instant IDENTIFIER_2_MODIFIED = Instant.ofEpochSecond(1541588352); + public final static Instant IDENTIFIER_2_EXECUTION = Instant.ofEpochSecond(1541588352); + public final static Short IDENTIFIER_2_PUBLICATION_YEAR = 2022; + public final static String IDENTIFIER_2_QUERY_HASH = "abc"; + public final static String IDENTIFIER_2_RESULT_HASH = "def"; + public final static String IDENTIFIER_2_QUERY = "SELECT `id` FROM `foobar`"; + public final static String IDENTIFIER_2_NORMALIZED = "SELECT `id` FROM `foobar`"; + public final static Long IDENTIFIER_2_RESULT_NUMBER = 2L; public final static Identifier IDENTIFIER_1 = Identifier.builder() .id(IDENTIFIER_1_ID) + .cid(CONTAINER_1_ID) + .dbid(DATABASE_1_ID) .qid(IDENTIFIER_1_QUERY_ID) .dbid(IDENTIFIER_1_DATABASE_ID) .description(IDENTIFIER_1_DESCRIPTION) @@ -295,10 +283,19 @@ public abstract class BaseUnitTest { .visibility(IDENTIFIER_1_VISIBILITY) .created(IDENTIFIER_1_CREATED) .lastModified(IDENTIFIER_1_MODIFIED) + .execution(IDENTIFIER_1_EXECUTION) + .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) + .queryHash(IDENTIFIER_1_QUERY_HASH) + .resultHash(IDENTIFIER_1_RESULT_HASH) + .query(IDENTIFIER_1_QUERY) + .queryNormalized(IDENTIFIER_1_NORMALIZED) + .resultNumber(IDENTIFIER_1_RESULT_NUMBER) .build(); public final static Identifier IDENTIFIER_2 = Identifier.builder() .id(IDENTIFIER_2_ID) + .cid(CONTAINER_2_ID) + .dbid(DATABASE_2_ID) .qid(IDENTIFIER_2_QUERY_ID) .dbid(IDENTIFIER_2_DATABASE_ID) .description(IDENTIFIER_2_DESCRIPTION) @@ -307,6 +304,73 @@ public abstract class BaseUnitTest { .visibility(IDENTIFIER_2_VISIBILITY) .created(IDENTIFIER_2_CREATED) .lastModified(IDENTIFIER_2_MODIFIED) + .execution(IDENTIFIER_2_EXECUTION) + .publicationYear(IDENTIFIER_2_PUBLICATION_YEAR) + .queryHash(IDENTIFIER_2_QUERY_HASH) + .resultHash(IDENTIFIER_2_RESULT_HASH) + .query(IDENTIFIER_2_QUERY) + .queryNormalized(IDENTIFIER_2_NORMALIZED) + .resultNumber(IDENTIFIER_2_RESULT_NUMBER) + .build(); + + public final static Creator CREATOR_1 = Creator.builder() + .id(CREATOR_1_ID) + .pid(IDENTIFIER_1_ID) + .orcid(CREATOR_1_ORCID) + .name(CREATOR_1_NAME) + .created(CREATOR_1_CREATED) + .lastModified(CREATOR_1_MODIFIED) + .build(); + + public final static Creator CREATOR_1_REQUEST = Creator.builder() + .pid(IDENTIFIER_1_ID) + .orcid(CREATOR_1_ORCID) + .name(CREATOR_1_NAME) + .created(CREATOR_1_CREATED) + .lastModified(CREATOR_1_MODIFIED) + .build(); + + public final static Creator CREATOR_2 = Creator.builder() + .id(CREATOR_2_ID) + .pid(IDENTIFIER_1_ID) + .orcid(CREATOR_2_ORCID) + .name(CREATOR_2_NAME) + .created(CREATOR_2_CREATED) + .lastModified(CREATOR_2_MODIFIED) + .build(); + + public final static Creator CREATOR_2_REQUEST = Creator.builder() + .pid(IDENTIFIER_1_ID) + .orcid(CREATOR_2_ORCID) + .name(CREATOR_2_NAME) + .created(CREATOR_2_CREATED) + .lastModified(CREATOR_2_MODIFIED) + .build(); + + public final static CreatorDto CREATOR_1_DTO = CreatorDto.builder() + .id(CREATOR_1_ID) + .affiliation(CREATOR_1_AFFIL) + .orcid(CREATOR_1_ORCID) + .name(CREATOR_1_NAME) + .build(); + + public final static CreatorCreateDto CREATOR_1_CREATE_DTO = CreatorCreateDto.builder() + .affiliation(CREATOR_1_AFFIL) + .orcid(CREATOR_1_ORCID) + .name(CREATOR_1_NAME) + .build(); + + public final static CreatorDto CREATOR_2_DTO = CreatorDto.builder() + .id(CREATOR_2_ID) + .affiliation(CREATOR_2_AFFIL) + .orcid(CREATOR_2_ORCID) + .name(CREATOR_2_NAME) + .build(); + + public final static CreatorCreateDto CREATOR_2_CREATE_DTO = CreatorCreateDto.builder() + .affiliation(CREATOR_2_AFFIL) + .orcid(CREATOR_2_ORCID) + .name(CREATOR_2_NAME) .build(); public final static Identifier IDENTIFIER_1_REQUEST = Identifier.builder() @@ -340,15 +404,28 @@ public abstract class BaseUnitTest { .title(IDENTIFIER_1_TITLE) .doi(IDENTIFIER_1_DOI) .visibility(IDENTIFIER_1_VISIBILITY_DTO) + .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) .creators(List.of(CREATOR_1_CREATE_DTO, CREATOR_2_CREATE_DTO)) .build(); + public final static String RELATED_IDENTIFIER_1_VALUE = "10.5281/zenodo.6637333"; + public final static RelatedTypeDto RELATED_IDENTIFIER_1_TYPE = RelatedTypeDto.DOI; + public final static RelationTypeDto RELATED_IDENTIFIER_1_RELATION = RelationTypeDto.CITES; + + public final static RelatedIdentifierCreateDto RELATED_IDENTIFIER_1_CREATE_DTO = RelatedIdentifierCreateDto.builder() + .value(RELATED_IDENTIFIER_1_VALUE) + .type(RELATED_IDENTIFIER_1_TYPE) + .relation(RELATED_IDENTIFIER_1_RELATION) + .build(); + public final static IdentifierCreateDto IDENTIFIER_2_DTO_REQUEST = IdentifierCreateDto.builder() .qid(IDENTIFIER_2_QUERY_ID) .description(IDENTIFIER_2_DESCRIPTION) .title(IDENTIFIER_2_TITLE) .doi(IDENTIFIER_2_DOI) .visibility(IDENTIFIER_2_VISIBILITY_DTO) + .relatedIdentifiers(List.of(RELATED_IDENTIFIER_1_CREATE_DTO)) + .publicationYear(IDENTIFIER_2_PUBLICATION_YEAR) .creators(List.of(CREATOR_1_CREATE_DTO, CREATOR_2_CREATE_DTO)) .build(); diff --git a/fda-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java b/fda-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java index b7eaa968c4d8376c3df877a362742bad8b0b6cfa..62032b642074fa85bbb52f95462e6c9e24f7ee71 100644 --- a/fda-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java +++ b/fda-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java @@ -6,10 +6,7 @@ import at.tuwien.api.identifier.VisibilityTypeDto; import at.tuwien.entities.identifier.Identifier; import at.tuwien.exception.*; import at.tuwien.gateway.QueryServiceGateway; -import at.tuwien.repository.jpa.ContainerRepository; -import at.tuwien.repository.jpa.CreatorRepository; -import at.tuwien.repository.jpa.DatabaseRepository; -import at.tuwien.repository.jpa.IdentifierRepository; +import at.tuwien.repository.jpa.*; import at.tuwien.service.impl.IdentifierServiceImpl; import lombok.extern.log4j.Log4j2; import org.apache.http.auth.BasicUserPrincipal; @@ -57,9 +54,13 @@ public class IdentifierServiceIntegrationTest extends BaseUnitTest { @MockBean private QueryServiceGateway queryServiceGateway; + @Autowired + private UserRepository userRepository; + @BeforeEach @Transactional public void beforeEach() { + userRepository.save(USER_1); containerRepository.save(CONTAINER_1); databaseRepository.save(DATABASE_1); identifierRepository.save(IDENTIFIER_1); @@ -122,6 +123,8 @@ public class IdentifierServiceIntegrationTest extends BaseUnitTest { assertEquals(IDENTIFIER_2_TITLE, response.getTitle()); assertEquals(IDENTIFIER_2_DESCRIPTION, response.getDescription()); assertEquals(2, response.getCreators().size()); + assertEquals(1, response.getRelatedIdentifiers().size()); + assertEquals(IDENTIFIER_2_ID, response.getRelatedIdentifiers().get(0).getIdentifier().getId()); } @Test diff --git a/fda-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java b/fda-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java index eeccddbfb4192d0f6d3bdea68ee5d2f1083600ae..6577195e2b7393a1ccdbe30afe9c37980f5c3d96 100644 --- a/fda-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java +++ b/fda-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java @@ -118,7 +118,7 @@ public class IdentifierServiceImpl implements IdentifierService { .stream() .map(r -> { final RelatedIdentifier id = identifierMapper.relatedIdentifierCreateDtoToRelatedIdentifier(r); - id.setIid(entity.getId()); + id.setIdentifier(entity); id.setCreator(creator); return id; }) diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java index 6624a95b03607051ed6c773bd4f3aa7db4ac81ef..54cd3db2f7951757838422e8aa308cc9f4ec0579 100644 --- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java +++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java @@ -84,10 +84,7 @@ public class Identifier { }) private Database database; - @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) - @JoinColumns({ - @JoinColumn(name = "iid", referencedColumnName = "id") - }) + @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "identifier") private List<RelatedIdentifier> relatedIdentifiers; @Column(nullable = false, columnDefinition = "enum('EVERYONE', 'TRUSTED', 'SELF')") diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java index 873b88fbaa7a1618ef82fe2476fe95b167bdeb30..90e22a1d1d922ae0dc6c8a415bed4eaf25b17a7a 100644 --- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java +++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java @@ -35,9 +35,6 @@ public class RelatedIdentifier { ) private Long id; - @Column(nullable = false) - private Long iid; - @Column(nullable = false) private String value; @@ -55,6 +52,13 @@ public class RelatedIdentifier { }) private User creator; + @ToString.Exclude + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) + @JoinColumns({ + @JoinColumn(name = "identifier_id", referencedColumnName = "id") + }) + private Identifier identifier; + @Column(nullable = false, updatable = false) @CreatedDate private Instant created; diff --git a/fda-metadata-db/setup-schema.sql b/fda-metadata-db/setup-schema.sql index c671067c78f490a973c169d7388404d45e5bd190..8bd8a1da2f7c1e4205deae396fa636ac17bdc5de 100644 --- a/fda-metadata-db/setup-schema.sql +++ b/fda-metadata-db/setup-schema.sql @@ -478,7 +478,7 @@ CREATE TABLE IF NOT EXISTS mdb_identifiers CREATE TABLE IF NOT EXISTS mdb_related_identifiers ( id bigint DEFAULT nextval('mdb_related_identifiers_seq'), - iid bigint NOT NULL, + identifier_id bigint NOT NULL, value text NOT NULL, type varchar(255), relation varchar(255), @@ -487,7 +487,7 @@ CREATE TABLE IF NOT EXISTS mdb_related_identifiers last_modified timestamp without time zone, deleted timestamp without time zone, PRIMARY KEY (id), /* must be a single id from persistent identifier concept */ - FOREIGN KEY (iid) REFERENCES mdb_identifiers (id), + FOREIGN KEY (identifier_id) REFERENCES mdb_identifiers (id), FOREIGN KEY (created_by) REFERENCES mdb_users (UserID) ); diff --git a/fda-table-service/rest-service/src/main/resources/application-docker.yml b/fda-table-service/rest-service/src/main/resources/application-docker.yml index 16150a4e382955ca0b9dd20cbbad3d7aed0fddf8..9660afad5d5126411399d90c4a293a7d495a4b75 100644 --- a/fda-table-service/rest-service/src/main/resources/application-docker.yml +++ b/fda-table-service/rest-service/src/main/resources/application-docker.yml @@ -35,8 +35,5 @@ eureka: client.serviceUrl.defaultZone: http://fda-discovery-service:9090/eureka/ fda: ready.path: /ready - system: - username: system - passwd: "${SYSTEM_PASSWORD}" - gateway.endpoint: http://fda-gateway-service:9095 - elastic.endpoint: fda-search-service:9200 \ No newline at end of file + gateway.endpoint: "${GATEWAY_ENDPOINT}" + elastic.endpoint: "${SEARCH_ENDPOINT}" \ No newline at end of file diff --git a/fda-table-service/rest-service/src/main/resources/application.yml b/fda-table-service/rest-service/src/main/resources/application.yml index ca33c5e80c9d63407b4d467e5fd15ac733377529..3cf6f3ee05981d30c04b20134f6d0abf98c3bb70 100644 --- a/fda-table-service/rest-service/src/main/resources/application.yml +++ b/fda-table-service/rest-service/src/main/resources/application.yml @@ -35,8 +35,5 @@ eureka: client.serviceUrl.defaultZone: http://localhost:9090/eureka/ fda: ready.path: ./ready - system: - username: system - passwd: "${SYSTEM_PASSWORD}" - gateway.endpoint: http://localhost:9095 - elastic.endpoint: fda-search-service:9200 \ No newline at end of file + gateway.endpoint: "${GATEWAY_ENDPOINT}" + elastic.endpoint: "${SEARCH_ENDPOINT}" \ No newline at end of file diff --git a/fda-table-service/services/src/main/java/at/tuwien/config/SecurityConfig.java b/fda-table-service/services/src/main/java/at/tuwien/config/SecurityConfig.java deleted file mode 100644 index 4d52763b1097fe804b7e3556a4dea722ec2ddde0..0000000000000000000000000000000000000000 --- a/fda-table-service/services/src/main/java/at/tuwien/config/SecurityConfig.java +++ /dev/null @@ -1,19 +0,0 @@ -package at.tuwien.config; - -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; - -@Slf4j -@Getter -@Configuration -public class SecurityConfig { - - @Value("${fda.system.username}") - private String systemUsername; - - @Value("${fda.system.passwd}") - private String systemPassword; - -} diff --git a/fda-ui/components/dialogs/CreateDB.vue b/fda-ui/components/dialogs/CreateDB.vue index 10c6a41210cddd39a67d223ab8b038fc1f3d4a2f..256257255a44a5bea540c7d4d9fe494f6369e185 100644 --- a/fda-ui/components/dialogs/CreateDB.vue +++ b/fda-ui/components/dialogs/CreateDB.vue @@ -47,11 +47,13 @@ <v-card-actions> <v-spacer /> <v-btn + class="mb-2" @click="cancel"> Cancel </v-btn> <v-btn id="createDB" + class="mb-2 mr-2 ml-4" :disabled="!valid || loading" color="primary" type="submit" diff --git a/fda-ui/components/dialogs/PersistQuery.vue b/fda-ui/components/dialogs/PersistQuery.vue index c3b4e318db04d477e8dcef3cd6111ba1f6fe291a..2153cb68f7531e43bb38e8ea1bcecc376d2932c1 100644 --- a/fda-ui/components/dialogs/PersistQuery.vue +++ b/fda-ui/components/dialogs/PersistQuery.vue @@ -56,8 +56,8 @@ required /> </v-col> </v-row> - <v-row v-for="(creator,i) in identifier.creators" :key="i" dense> - <v-col cols="3"> + <v-row v-for="(creator,i) in identifier.creators" :key="`c-${i}`" dense> + <v-col cols="4"> <v-text-field v-model="creator.name" name="name" @@ -65,7 +65,7 @@ :rules="[v => !!v || $t('Required')]" required /> </v-col> - <v-col cols="3"> + <v-col cols="4"> <v-text-field v-model="creator.affiliation" name="affiliation" @@ -92,8 +92,8 @@ </v-btn> </v-col> </v-row> - <v-row v-for="(related,j) in identifier.related_identifiers" :key="j" dense> - <v-col cols="3"> + <v-row v-for="(related,i) in identifier.related_identifiers" :key="`r-${i}`" dense> + <v-col cols="4"> <v-text-field v-model="related.value" name="related" @@ -101,24 +101,24 @@ :rules="[v => !!v || $t('Required')]" required /> </v-col> - <v-col cols="2"> + <v-col cols="3"> <v-select - v-model="related.identifier_type" + v-model="related.type" :items="relatedTypes" item-value="value" item-text="value" label="Type" /> </v-col> - <v-col cols="2"> + <v-col cols="3"> <v-select - v-model="related.relation_type" + v-model="related.relation" :items="relationTypes" item-value="value" item-text="value" label="Relation" /> </v-col> <v-col cols="1" class="mt-5"> - <v-btn color="error" icon x-small @click="deleteRelatedIdentifier(j)"> + <v-btn color="error" icon x-small @click="deleteRelatedIdentifier(i)"> <v-icon>mdi-delete</v-icon> </v-btn> </v-col> @@ -275,8 +275,8 @@ export default { addRelatedIdentifier () { this.identifier.related_identifiers.push({ value: null, - relation_type: 'Cites', - identifier_type: 'DOI' + relation: 'Cites', + type: 'DOI' }) }, async loadDatabase () { diff --git a/fda-ui/pages/container/_container_id/database/_database_id/table/_table_id/index.vue b/fda-ui/pages/container/_container_id/database/_database_id/table/_table_id/index.vue index 726b0d19bfba808197fe4c03d91c0da6dc00293f..b1544e766c45184118eab448ca9307f48c30efa6 100644 --- a/fda-ui/pages/container/_container_id/database/_database_id/table/_table_id/index.vue +++ b/fda-ui/pages/container/_container_id/database/_database_id/table/_table_id/index.vue @@ -3,7 +3,7 @@ <v-progress-linear v-if="loading" :color="loadingColor" :indeterminate="!error" /> <v-toolbar flat> <v-toolbar-title> - <v-btn id="back-btn" flat class="mr-2" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table`"> + <v-btn id="back-btn" class="mr-2" :to="`/container/${$route.params.container_id}/database/${$route.params.database_id}/table`"> <v-icon left>mdi-arrow-left</v-icon> </v-btn> </v-toolbar-title>