From c65150f0dcbb3c60426629ce681d6ba43481aede Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 10 May 2023 23:14:36 +0200 Subject: [PATCH] Various fixes - Removed HTTPS again - Fixed some frontend merge bugs - Fixed antpath matcher for spring security --- .dev/.gitignore | 2 - .dev/auth.keystore | Bin 4696 -> 0 bytes .dev/chain.jks | Bin 2198 -> 0 bytes .dev/gateway-service.crt | 20 --- .dev/generate-jks.sh | 128 ------------------ .dev/server.keystore | Bin 41120 -> 0 bytes .env.unix.example | 4 +- dbrepo-authentication-service/Dockerfile | 2 - dbrepo-authentication-service/auth.keystore | Bin 4696 -> 0 bytes .../dbrepo-realm.json | 2 +- dbrepo-authentication-service/server.keystore | Bin 41120 -> 0 bytes dbrepo-container-service/Dockerfile | 5 +- .../src/main/resources/application-local.yml | 4 +- .../src/main/resources/application.yml | 2 +- .../src/test/resources/application.properties | 3 +- dbrepo-container-service/server.keystore | Bin 41120 -> 0 bytes .../at/tuwien/config/WebSecurityConfig.java | 26 ++-- dbrepo-database-service/Dockerfile | 5 +- .../src/main/resources/application-local.yml | 4 +- .../tuwien/service/AccessServiceUnitTest.java | 2 + .../src/test/resources/application.properties | 3 +- dbrepo-database-service/server.keystore | Bin 41120 -> 0 bytes .../at/tuwien/config/WebSecurityConfig.java | 24 ++-- dbrepo-gateway-service/Dockerfile | 2 + dbrepo-gateway-service/dbrepo.conf | 13 +- dbrepo-gateway-service/server.key | 28 ---- dbrepo-gateway-service/server.keystore | Bin 41120 -> 0 bytes dbrepo-gateway-service/server.pem | 20 --- dbrepo-identifier-service/Dockerfile | 5 +- .../src/main/resources/application-local.yml | 6 +- .../src/test/resources/application.properties | 3 +- dbrepo-identifier-service/server.keystore | Bin 41120 -> 0 bytes .../at/tuwien/config/IndexInitializer.java | 2 + .../at/tuwien/config/WebSecurityConfig.java | 26 ++-- .../api/amqp/ChannelDetailsDto.java | 6 +- .../{oaipmh => }/api/amqp/ConsumerDto.java | 6 +- .../api/amqp/CreateExchangeDto.java | 6 +- .../{oaipmh => }/api/amqp/CreateUserDto.java | 6 +- .../api/amqp/CreateVirtualHostDto.java | 6 +- .../{oaipmh => }/api/amqp/ExchangeDto.java | 6 +- .../amqp/GrantVirtualHostPermissionsDto.java | 6 +- .../{oaipmh => }/api/amqp/QueueBriefDto.java | 7 +- .../{oaipmh => }/api/amqp/QueueDto.java | 6 +- .../{oaipmh => }/api/amqp/TupleDto.java | 6 +- .../{oaipmh => }/api/amqp/UserDetailsDto.java | 6 +- .../{oaipmh => }/api/auth/CreateUserDto.java | 7 +- .../{oaipmh => }/api/auth/CredentialDto.java | 6 +- .../{oaipmh => }/api/auth/JwtResponseDto.java | 7 +- .../api/auth/LoginRequestDto.java | 6 +- .../{oaipmh => }/api/auth/RealmAccessDto.java | 6 +- .../api/auth/SignupRequestDto.java | 6 +- .../api/auth/TokenIntrospectDto.java | 6 +- .../api/container/ContainerActionTypeDto.java | 0 .../api/container/ContainerBriefDto.java | 7 +- .../api/container/ContainerChangeDto.java | 4 +- .../container/ContainerCreateRequestDto.java | 2 + .../api/container/ContainerDto.java | 7 +- .../api/container/ContainerStateDto.java | 0 .../api/container/image/ImageBriefDto.java | 6 +- .../api/container/image/ImageChangeDto.java | 7 +- .../api/container/image/ImageCreateDto.java | 7 +- .../api/container/image/ImageDateDto.java | 7 +- .../api/container/image/ImageDto.java | 7 +- .../api/container/image/ImageEnvItemDto.java | 6 +- .../container/image/ImageEnvItemTypeDto.java | 0 .../api/database/AccessTypeDto.java | 0 .../api/database/DatabaseAccessDto.java | 7 +- .../api/database/DatabaseBriefDto.java | 7 +- .../api/database/DatabaseCreateDto.java | 6 +- .../api/database/DatabaseDto.java | 6 +- .../api/database/DatabaseGiveAccessDto.java | 6 +- .../api/database/DatabaseModifyAccessDto.java | 6 +- .../database/DatabaseModifyVisibilityDto.java | 6 +- .../api/database/DatabaseTransferDto.java | 6 +- .../api/database/LanguageTypeDto.java | 0 .../{oaipmh => }/api/database/LicenseDto.java | 6 +- .../api/database/SubjectModifyDto.java | 6 +- .../api/database/ViewBriefDto.java | 7 +- .../api/database/ViewCreateDto.java | 6 +- .../{oaipmh => }/api/database/ViewDto.java | 6 +- .../query/ExecuteInternalQueryDto.java | 5 +- .../database/query/ExecuteStatementDto.java | 6 +- .../api/database/query/ExportDto.java | 5 +- .../api/database/query/ImportDto.java | 5 +- .../api/database/query/QueryBriefDto.java | 6 +- .../api/database/query/QueryDto.java | 6 +- .../api/database/query/QueryResultDto.java | 6 +- .../api/database/query/QueryTypeDto.java | 0 .../api/database/query/SaveStatementDto.java | 5 +- .../api/database/table/TableBriefDto.java | 7 +- .../api/database/table/TableCreateDto.java | 7 +- .../database/table/TableCreateRawQuery.java | 6 +- .../api/database/table/TableCsvDeleteDto.java | 7 +- .../api/database/table/TableCsvDto.java | 7 +- .../table/TableCsvInformationDto.java | 8 +- .../api/database/table/TableCsvUpdateDto.java | 7 +- .../api/database/table/TableDto.java | 6 +- .../api/database/table/TableHistoryDto.java | 7 +- .../database/table/TableInsertRawQuery.java | 6 +- .../table/columns/ColumnBriefDto.java | 6 +- .../table/columns/ColumnCreateDto.java | 6 +- .../api/database/table/columns/ColumnDto.java | 6 +- .../database/table/columns/ColumnTypeDto.java | 0 .../api/database/table/columns/SiUnitDto.java | 0 .../concepts/ColumnSemanticsUpdateDto.java | 6 +- .../table/columns/concepts/ConceptDto.java | 7 +- .../table/columns/concepts/UnitDto.java | 7 +- .../constraints/ConstraintsCreateDto.java | 6 +- .../table/constraints/ConstraintsDto.java | 6 +- .../foreignKey/ForeignKeyCreateDto.java | 6 +- .../constraints/foreignKey/ForeignKeyDto.java | 6 +- .../foreignKey/ReferenceTypeDto.java | 0 .../api/datacite/DataCiteBody.java | 7 +- .../api/datacite/DataCiteData.java | 7 +- .../api/datacite/DataCiteError.java | 6 +- .../api/datacite/doi/DataCiteCreateDoi.java | 8 +- .../api/datacite/doi/DataCiteDoi.java | 7 +- .../api/datacite/doi/DataCiteDoiCreator.java | 8 +- .../doi/DataCiteDoiCreatorAffiliation.java | 7 +- .../doi/DataCiteDoiCreatorNameIdentifier.java | 7 +- .../api/datacite/doi/DataCiteDoiEvent.java | 0 .../doi/DataCiteDoiRelatedIdentifier.java | 7 +- .../api/datacite/doi/DataCiteDoiRights.java | 7 +- .../api/datacite/doi/DataCiteDoiTitle.java | 8 +- .../api/datacite/doi/DataCiteDoiTypes.java | 8 +- .../{oaipmh => }/api/error/ApiErrorDto.java | 6 +- .../api/identifier/BibliographyTypeDto.java | 2 + .../api/identifier/CreatorBriefDto.java | 13 +- .../api/identifier/CreatorCreateDto.java | 11 +- .../api/identifier/CreatorDto.java | 7 +- .../api/identifier/IdentifierBriefDto.java | 12 +- .../api/identifier/IdentifierCreateDto.java | 12 +- .../api/identifier/IdentifierDto.java | 6 +- .../api/identifier/IdentifierTypeDto.java | 2 + .../api/identifier/IdentifierUpdateDto.java | 12 +- .../RelatedIdentifierCreateDto.java | 4 +- .../api/identifier/RelatedIdentifierDto.java | 7 +- .../api/identifier/RelatedTypeDto.java | 2 + .../api/identifier/RelationTypeDto.java | 2 + .../api/identifier/VisibilityTypeDto.java | 0 .../user/ExchangeUpdatePermissionsDto.java | 6 +- .../api/user/GrantedAuthorityDto.java | 9 +- .../{oaipmh => }/api/user/RoleTypeDto.java | 2 + .../api/user/UserAttributeDto.java | 7 +- .../{oaipmh => }/api/user/UserBriefDto.java | 7 +- .../{oaipmh => }/api/user/UserDetailsDto.java | 6 +- .../tuwien/{oaipmh => }/api/user/UserDto.java | 8 +- .../{oaipmh => }/api/user/UserEmailDto.java | 6 +- .../{oaipmh => }/api/user/UserForgotDto.java | 6 +- .../api/user/UserModifyPasswordDto.java | 6 +- .../api/user/UserPasswordDto.java | 6 +- .../{oaipmh => }/api/user/UserResetDto.java | 6 +- .../{oaipmh => }/api/user/UserRolesDto.java | 7 +- .../api/user/UserThemeSetDto.java | 6 +- .../{oaipmh => }/api/user/UserUpdateDto.java | 6 +- .../api/user/UserUpdatePermissionsDto.java | 6 +- .../entities/container/Container.java | 3 + .../container/image/ContainerImage.java | 0 .../container/image/ContainerImageDate.java | 0 .../image/ContainerImageDateKey.java | 0 .../image/ContainerImageEnvironmentItem.java | 0 .../ContainerImageEnvironmentItemKey.java | 0 .../ContainerImageEnvironmentItemType.java | 0 .../entities/database/AccessType.java | 0 .../entities/database/Database.java | 3 + .../entities/database/DatabaseAccess.java | 2 + .../entities/database/DatabaseAccessKey.java | 0 .../entities/database/LanguageType.java | 0 .../entities/database/License.java | 0 .../{oaipmh => }/entities/database/View.java | 2 + .../entities/database/ViewKey.java | 0 .../entities/database/table/Table.java | 0 .../entities/database/table/TableKey.java | 0 .../database/table/columns/TableColumn.java | 0 .../table/columns/TableColumnConcept.java | 2 +- .../table/columns/TableColumnKey.java | 0 .../table/columns/TableColumnType.java | 0 .../table/columns/TableColumnUnit.java | 0 .../table/constraints/Constraints.java | 0 .../constraints/foreignKey/ForeignKey.java | 0 .../foreignKey/ForeignKeyReference.java | 0 .../constraints/foreignKey/ReferenceType.java | 0 .../table/constraints/unique/Unique.java | 0 .../entities/identifier/Creator.java | 0 .../entities/identifier/CreatorKey.java | 0 .../entities/identifier/Identifier.java | 0 .../entities/identifier/IdentifierType.java | 0 .../identifier/RelatedIdentifier.java | 0 .../identifier/RelatedIdentifierKey.java | 0 .../entities/identifier/RelatedType.java | 0 .../entities/identifier/RelationType.java | 0 .../entities/identifier/VisibilityType.java | 0 .../entities/user/Credential.java | 3 + .../{oaipmh => }/entities/user/Realm.java | 7 +- .../{oaipmh => }/entities/user/Role.java | 3 + .../entities/user/RoleMapping.java | 3 + .../entities/user/RoleMappingKey.java | 0 .../{oaipmh => }/entities/user/User.java | 3 + .../entities/user/UserAttribute.java | 3 + .../tuwien/{oaipmh => }/querystore/Query.java | 0 .../{oaipmh => }/config/DockerConfig.java | 0 .../tuwien/{oaipmh => }/config/H2Utils.java | 0 .../{oaipmh => }/config/MariaDbConfig.java | 0 .../{oaipmh => }/config/RabbitMqConfig.java | 0 .../at/tuwien/{oaipmh => }/test/BaseTest.java | 0 .../tuwien/{oaipmh => }/utils/AmqpUtils.java | 0 .../tuwien/{oaipmh => }/utils/ArrayUtil.java | 0 dbrepo-metadata-service/Dockerfile | 3 +- .../src/main/resources/application-local.yml | 2 +- .../src/test/resources/application.properties | 3 +- dbrepo-metadata-service/server.keystore | Bin 41120 -> 0 bytes .../at/tuwien/config/WebSecurityConfig.java | 24 ++-- dbrepo-query-service/Dockerfile | 5 +- .../src/main/resources/application-local.yml | 4 +- .../at/tuwien/mapper/StoreMapperTest.java | 4 +- .../src/test/resources/application.properties | 3 +- dbrepo-query-service/server.keystore | Bin 41120 -> 0 bytes .../at/tuwien/config/WebSecurityConfig.java | 38 ++++-- .../java/at/tuwien/mapper/StoreMapper.java | 2 +- dbrepo-search-service/Dockerfile | 9 -- dbrepo-search-service/README.md | 88 ------------ dbrepo-semantics-service/Dockerfile | 2 +- dbrepo-table-service/Dockerfile | 5 +- .../src/main/resources/application-local.yml | 4 +- .../src/main/resources/application.yml | 2 +- .../src/test/resources/application.properties | 3 +- dbrepo-table-service/server.keystore | Bin 41120 -> 0 bytes .../at/tuwien/config/WebSecurityConfig.java | 24 ++-- dbrepo-ui/api/table.service.js | 1 + dbrepo-ui/components/DatabaseList.vue | 31 ++--- dbrepo-ui/components/query/Builder.vue | 1 + .../database/_database_id/table/import.vue | 42 +++++- dbrepo-user-service/Dockerfile | 5 +- .../src/main/resources/application-local.yml | 4 +- .../src/test/resources/application.properties | 3 +- dbrepo-user-service/server.keystore | Bin 41120 -> 0 bytes .../at/tuwien/config/WebSecurityConfig.java | 26 ++-- docker-compose.yml | 15 +- 238 files changed, 748 insertions(+), 691 deletions(-) delete mode 100644 .dev/.gitignore delete mode 100644 .dev/auth.keystore delete mode 100644 .dev/chain.jks delete mode 100644 .dev/gateway-service.crt delete mode 100644 .dev/generate-jks.sh delete mode 100644 .dev/server.keystore delete mode 100644 dbrepo-authentication-service/auth.keystore delete mode 100644 dbrepo-authentication-service/server.keystore delete mode 100644 dbrepo-container-service/server.keystore delete mode 100644 dbrepo-database-service/server.keystore delete mode 100644 dbrepo-gateway-service/server.key delete mode 100644 dbrepo-gateway-service/server.keystore delete mode 100644 dbrepo-gateway-service/server.pem delete mode 100644 dbrepo-identifier-service/server.keystore rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/amqp/ChannelDetailsDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/amqp/ConsumerDto.java (93%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/amqp/CreateExchangeDto.java (91%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/amqp/CreateUserDto.java (87%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/amqp/CreateVirtualHostDto.java (87%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/amqp/ExchangeDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/amqp/GrantVirtualHostPermissionsDto.java (89%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/amqp/QueueBriefDto.java (87%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/amqp/QueueDto.java (91%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/amqp/TupleDto.java (87%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/amqp/UserDetailsDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/auth/CreateUserDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/auth/CredentialDto.java (90%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/auth/JwtResponseDto.java (90%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/auth/LoginRequestDto.java (87%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/auth/RealmAccessDto.java (88%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/auth/SignupRequestDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/auth/TokenIntrospectDto.java (97%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/container/ContainerActionTypeDto.java (100%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/container/ContainerBriefDto.java (95%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/container/ContainerChangeDto.java (86%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/container/ContainerCreateRequestDto.java (90%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/container/ContainerDto.java (96%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/container/ContainerStateDto.java (100%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/container/image/ImageBriefDto.java (89%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/container/image/ImageChangeDto.java (94%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/container/image/ImageCreateDto.java (95%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/container/image/ImageDateDto.java (95%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/container/image/ImageDto.java (97%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/container/image/ImageEnvItemDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/container/image/ImageEnvItemTypeDto.java (100%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/AccessTypeDto.java (100%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/DatabaseAccessDto.java (93%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/DatabaseBriefDto.java (96%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/DatabaseCreateDto.java (91%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/DatabaseDto.java (97%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/DatabaseGiveAccessDto.java (88%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/DatabaseModifyAccessDto.java (84%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/DatabaseModifyVisibilityDto.java (88%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/DatabaseTransferDto.java (82%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/LanguageTypeDto.java (100%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/LicenseDto.java (89%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/SubjectModifyDto.java (86%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/ViewBriefDto.java (96%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/ViewCreateDto.java (93%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/ViewDto.java (97%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/query/ExecuteInternalQueryDto.java (85%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/query/ExecuteStatementDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/query/ExportDto.java (87%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/query/ImportDto.java (94%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/query/QueryBriefDto.java (97%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/query/QueryDto.java (97%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/query/QueryResultDto.java (91%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/query/QueryTypeDto.java (100%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/query/SaveStatementDto.java (87%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/TableBriefDto.java (95%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/TableCreateDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/TableCreateRawQuery.java (87%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/TableCsvDeleteDto.java (85%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/TableCsvDto.java (84%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/TableCsvInformationDto.java (91%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/TableCsvUpdateDto.java (88%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/TableDto.java (97%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/TableHistoryDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/TableInsertRawQuery.java (84%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/columns/ColumnBriefDto.java (93%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/columns/ColumnCreateDto.java (95%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/columns/ColumnDto.java (97%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/columns/ColumnTypeDto.java (100%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/columns/SiUnitDto.java (100%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/columns/concepts/ColumnSemanticsUpdateDto.java (86%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/columns/concepts/ConceptDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/columns/concepts/UnitDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/constraints/ConstraintsCreateDto.java (90%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/constraints/ConstraintsDto.java (90%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/constraints/foreignKey/ForeignKeyCreateDto.java (91%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/constraints/foreignKey/ForeignKeyDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/database/table/constraints/foreignKey/ReferenceTypeDto.java (100%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/datacite/DataCiteBody.java (75%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/datacite/DataCiteData.java (83%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/datacite/DataCiteError.java (82%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/datacite/doi/DataCiteCreateDoi.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/datacite/doi/DataCiteDoi.java (81%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/datacite/doi/DataCiteDoiCreator.java (87%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/datacite/doi/DataCiteDoiCreatorAffiliation.java (82%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/datacite/doi/DataCiteDoiCreatorNameIdentifier.java (81%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/datacite/doi/DataCiteDoiEvent.java (100%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/datacite/doi/DataCiteDoiRelatedIdentifier.java (83%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/datacite/doi/DataCiteDoiRights.java (79%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/datacite/doi/DataCiteDoiTitle.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/datacite/doi/DataCiteDoiTypes.java (88%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/error/ApiErrorDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/BibliographyTypeDto.java (93%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/CreatorBriefDto.java (77%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/CreatorCreateDto.java (85%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/CreatorDto.java (91%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/IdentifierBriefDto.java (93%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/IdentifierCreateDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/IdentifierDto.java (98%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/IdentifierTypeDto.java (93%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/IdentifierUpdateDto.java (92%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/RelatedIdentifierCreateDto.java (91%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/RelatedIdentifierDto.java (91%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/RelatedTypeDto.java (97%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/RelationTypeDto.java (98%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/identifier/VisibilityTypeDto.java (100%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/ExchangeUpdatePermissionsDto.java (89%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/GrantedAuthorityDto.java (83%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/RoleTypeDto.java (94%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/UserAttributeDto.java (91%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/UserBriefDto.java (94%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/UserDetailsDto.java (94%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/UserDto.java (96%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/UserEmailDto.java (87%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/UserForgotDto.java (87%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/UserModifyPasswordDto.java (87%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/UserPasswordDto.java (81%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/UserResetDto.java (83%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/UserRolesDto.java (83%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/UserThemeSetDto.java (88%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/UserUpdateDto.java (89%) rename dbrepo-metadata-db/api/src/main/java/at/tuwien/{oaipmh => }/api/user/UserUpdatePermissionsDto.java (86%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/container/Container.java (95%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/container/image/ContainerImage.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/container/image/ContainerImageDate.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/container/image/ContainerImageDateKey.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/container/image/ContainerImageEnvironmentItem.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/container/image/ContainerImageEnvironmentItemKey.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/container/image/ContainerImageEnvironmentItemType.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/AccessType.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/Database.java (97%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/DatabaseAccess.java (94%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/DatabaseAccessKey.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/LanguageType.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/License.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/View.java (98%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/ViewKey.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/table/Table.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/table/TableKey.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/table/columns/TableColumn.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/table/columns/TableColumnConcept.java (95%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/table/columns/TableColumnKey.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/table/columns/TableColumnType.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/table/columns/TableColumnUnit.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/table/constraints/Constraints.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/table/constraints/foreignKey/ForeignKey.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/table/constraints/foreignKey/ForeignKeyReference.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/table/constraints/foreignKey/ReferenceType.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/database/table/constraints/unique/Unique.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/identifier/Creator.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/identifier/CreatorKey.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/identifier/Identifier.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/identifier/IdentifierType.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/identifier/RelatedIdentifier.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/identifier/RelatedIdentifierKey.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/identifier/RelatedType.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/identifier/RelationType.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/identifier/VisibilityType.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/user/Credential.java (90%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/user/Realm.java (82%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/user/Role.java (87%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/user/RoleMapping.java (86%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/user/RoleMappingKey.java (100%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/user/User.java (97%) rename dbrepo-metadata-db/entities/src/main/java/at/tuwien/{oaipmh => }/entities/user/UserAttribute.java (88%) rename dbrepo-metadata-db/querystore/src/main/java/at/tuwien/{oaipmh => }/querystore/Query.java (100%) rename dbrepo-metadata-db/test/src/main/java/at/tuwien/{oaipmh => }/config/DockerConfig.java (100%) rename dbrepo-metadata-db/test/src/main/java/at/tuwien/{oaipmh => }/config/H2Utils.java (100%) rename dbrepo-metadata-db/test/src/main/java/at/tuwien/{oaipmh => }/config/MariaDbConfig.java (100%) rename dbrepo-metadata-db/test/src/main/java/at/tuwien/{oaipmh => }/config/RabbitMqConfig.java (100%) rename dbrepo-metadata-db/test/src/main/java/at/tuwien/{oaipmh => }/test/BaseTest.java (100%) rename dbrepo-metadata-db/test/src/main/java/at/tuwien/{oaipmh => }/utils/AmqpUtils.java (100%) rename dbrepo-metadata-db/test/src/main/java/at/tuwien/{oaipmh => }/utils/ArrayUtil.java (100%) delete mode 100644 dbrepo-metadata-service/server.keystore delete mode 100644 dbrepo-query-service/server.keystore delete mode 100644 dbrepo-search-service/Dockerfile delete mode 100644 dbrepo-search-service/README.md delete mode 100644 dbrepo-table-service/server.keystore delete mode 100644 dbrepo-user-service/server.keystore diff --git a/.dev/.gitignore b/.dev/.gitignore deleted file mode 100644 index c783037e3f..0000000000 --- a/.dev/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -server.key -tmp.p12 \ No newline at end of file diff --git a/.dev/auth.keystore b/.dev/auth.keystore deleted file mode 100644 index 1a2ed8ce767c27bb690fc2470e465ffc2fad04aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4696 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 X?S`Pv`Rm@#Pl$b8YhWn~>LLID3mLl5 diff --git a/.dev/chain.jks b/.dev/chain.jks deleted file mode 100644 index 6ca1a6122dd8bb63b7cc68de708b7c45cee97c2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2198 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 diff --git a/.dev/gateway-service.crt b/.dev/gateway-service.crt deleted file mode 100644 index f9e6f58464..0000000000 --- a/.dev/gateway-service.crt +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDUzCCAjugAwIBAgIECRFhYDANBgkqhkiG9w0BAQsFADBJMQswCQYDVQQGEwJB -VDEQMA4GA1UEChMHVFUgV2llbjEPMA0GA1UECxMGRFMtSUZTMRcwFQYDVQQDEw5J -bnRlcm1lZGlhdGVDQTAeFw0yMzA1MDkwNzEyMTZaFw0yMzA4MDcwNzEyMTZaMEox -CzAJBgNVBAYTAkFUMRAwDgYDVQQKEwdUVSBXaWVuMQ8wDQYDVQQLEwZEUy1JRlMx -GDAWBgNVBAMTD2dhdGV3YXktc2VydmljZTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBANggN8zp4TwEh6S2dsBgxu/eHoAMKapJiP5yQZ3XD2/+EN4e5yVM -kth95MsMM4NufnBsq4sfOWmD+0R9Ig0eN7Qo6IiW8IhWmcGTFfdHEx8lhbzDr0Mm -WVSULsA2WS2UOilErmlANRRJfq0VnoSDxbvdXsm4FWglTcsNTnRcaKm3okQgq89N -e1sGa8b38OsONOVjTh/cAo6t0O60cyBL3FffJKifRi6xJv82jkCI3px3ZCk5o/zF -eYT6eBRWTqhaVLuuWqhpCc4Wi5XjF9/imUAMtxU9zMl6H4U1dRS1eeGYZm++iQv3 -lnwTx6lxerfQx07cE1TVAWUUgod6L9cQIHsCAwEAAaNCMEAwHQYDVR0OBBYEFNpe -d5r17TPn+9Gm3bBgZv6FJMHnMB8GA1UdIwQYMBaAFF5md9arqKs42p+WjhWXGwgV -MmDKMA0GCSqGSIb3DQEBCwUAA4IBAQBVeWc0Fmy+T87FfagMyR2Xtl+43eOS33bl -RJ5pSFt9do3fPjLeegwpLUDfkXwpyRVIRCH5qob5cPB8GFPqxmATaiXOvTUhw5Om -Z3EXRlGZslEKrKVx1nWW+PMTOLWZcLg8WTJaLqbHSRD9dPlL3rWrc5vHu9vNrqN3 -A2aOCaZ8kXb8Mp+dLnsajCDgoAwd/TuchPphkuxE3uQ+4Le4VXpSIVGEVydR+dnV -3wocWiq5PiIg8IEs+2DlwKah7AKdiL66oDaSiv6JZjMvdKE0g7aocWGBvesoqaFw -zABZTzWo2TdkNjN2db+N9L3jtvWwhiwLvNh81wF2Lt1baT9Zk1in ------END CERTIFICATE----- diff --git a/.dev/generate-jks.sh b/.dev/generate-jks.sh deleted file mode 100644 index d40eb7b0bc..0000000000 --- a/.dev/generate-jks.sh +++ /dev/null @@ -1,128 +0,0 @@ -#!/bin/bash -# ---------------- -# https://blogs.oracle.com/blogbypuneeth/post/create-an-internal-certification-authority-ca-using-keytool-and-sign-your-server-certificate -# ---------------- -STORE_PASS=password -KEY_PASS=password - -declare -A services -services[443]=gateway -services[8443]=authentication -services[9091]=container -services[9092]=database -services[9093]=query -services[9094]=table -services[9096]=identifier -services[9098]=user -services[9099]=metadata - -function generate () { - if [ -z "$2" ]; then - CN="$1" - else - CN="$1-$2" - fi - echo "... generate $CN certificate" - keytool -genkeypair -storepass ${STORE_PASS} -keypass ${KEY_PASS} -storetype PKCS12 -keyalg RSA -keysize 2048 \ - -dname "CN=$CN, OU=DS-IFS, O=TU Wien, C=AT" -alias "$CN" -ext "SAN:c=DNS:localhost,IP:127.0.0.1" \ - -keystore ./server.keystore -} - -function sign () { - if [ -z "$2" ]; then - CN="$1" - else - CN="$1-$2" - fi - echo "... sign $CN certificate" - keytool -alias "$CN" -certreq -storepass ${STORE_PASS} -keyalg RSA \ - -keystore ./server.keystore | keytool -alias intermediate -gencert -storepass ${STORE_PASS} \ - -keyalg RSA | keytool -alias "$CN" -importcert -storepass ${STORE_PASS} -keyalg RSA \ - -keystore ./server.keystore -noprompt -trustcacerts -} - -function crt () { - echo "... export $1 certificate" - keytool -exportcert -alias "$1" -rfc -storepass ${STORE_PASS} -keystore "$2" > "$3" -} - -function key () { - echo "... export $1 key" - rm -f ./tmp.12 && keytool -importkeystore -srckeystore "$2" -destkeystore ./tmp.p12 -deststoretype PKCS12 \ - -srcalias "$1" -srcstorepass ${STORE_PASS} -deststorepass ${STORE_PASS} -destkeypass ${STORE_PASS} - openssl pkcs12 -in ./tmp.p12 -nodes -nocerts -out server.key -password pass:${STORE_PASS} -} - -function move () { - if [ -z "$2" ]; then - CN="$1" - else - CN="$1-$2" - fi - echo "... move jks to the $CN" - cp ./server.keystore "../dbrepo-$CN/server.keystore" -} - -echo "Remove old JKS(s)" -rm -f ./server.keystore ./auth.keystore ./chain.jks ./*.crt - -echo "Generate root certificate" -keytool -alias root -dname "CN=RootCA, OU=DS-IFS, O=TU Wien, C=AT" -genkeypair -ext KeyUsage="keyCertSign" \ - -ext BasicConstraints:"critical=ca:true" -validity 3600 -storepass ${STORE_PASS} -keyalg RSA - -echo "Generate intermediate certificate" -keytool -alias intermediate -dname "CN=IntermediateCA, OU=DS-IFS, O=TU Wien, C=AT" -genkeypair \ - -ext KeyUsage="keyCertSign" -ext BasicConstraints:"critical=ca:true" -validity 1800 -storepass ${STORE_PASS} \ - -keyalg RSA - -echo "Sign the intermediate certificate" -keytool -alias intermediate -certreq -storepass ${STORE_PASS} -keyalg RSA | keytool -alias root -gencert \ - -ext KeyUsage="keyCertSign" -ext BasicConstraints:"critical=ca:true" -storepass ${STORE_PASS} \ - -keyalg RSA | keytool -alias intermediate -importcert -storepass ${STORE_PASS} -keyalg RSA - -echo "Import the root certificate to the JKS" -keytool -export -alias root -storepass ${STORE_PASS} | keytool -import -alias root -keystore ./server.keystore \ - -storepass ${STORE_PASS} -noprompt -trustcacerts - -echo "Import the intermediate certificate to the JKS" -keytool -export -alias intermediate -storepass ${STORE_PASS} | keytool -import -alias intermediate -keystore ./server.keystore \ - -storepass ${STORE_PASS} -noprompt -trustcacerts - -echo "Generating the certificate key pairs" -for key in "${!services[@]}"; do - generate "${services[$key]}" "service" -done - -echo "Sign the certificates with intermediate certificate" -for key in "${!services[@]}"; do - sign "${services[$key]}" "service" -done - -echo "Export the trusted keystore" -keytool -export -alias intermediate -storepass ${STORE_PASS} | keytool -import -alias intermediate \ - -keystore ./chain.jks -storepass ${STORE_PASS} -trustcacerts -noprompt -keytool -export -alias root -storepass ${STORE_PASS} | keytool -import -alias root -keystore ./chain.jks \ - -storepass ${STORE_PASS} -trustcacerts -noprompt - -echo "Export CRTs" -crt root ./chain.jks ./root.crt -crt intermediate ./chain.jks ./intermediate.crt -crt gateway-service ./server.keystore ./gateway-service.crt -cp ./gateway-service.crt ../dbrepo-gateway-service/server.crt -cat ./root.crt ./intermediate.crt ./gateway-service.crt > ../dbrepo-gateway-service/fullchain.crt - -echo "Export private key" -key gateway-service ./server.keystore -cp ./server.key ../dbrepo-gateway-service/server.key - -echo "Copy the JKS(s)" -for key in "${!services[@]}"; do - move "${services[$key]}" "service" -done - -echo "Create the authentication service JKS" -echo "... import private key into the key store" -keytool -importkeystore -srckeystore ./server.keystore -srcstorepass ${STORE_PASS} -srcalias "authentication-service" \ - -destkeystore ./auth.keystore -deststorepass ${STORE_PASS} -deststoretype PKCS12 -destalias "server" -trustcacerts \ - -noprompt -rm -f ../dbrepo-authentication-service/auth.keystore && cp ./auth.keystore ../dbrepo-authentication-service/auth.keystore diff --git a/.dev/server.keystore b/.dev/server.keystore deleted file mode 100644 index 6f43470deca0b65a2aec9bf124ce944a502113fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41120 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 C>$}7N diff --git a/.env.unix.example b/.env.unix.example index 2e3275ab79..4e388f9292 100644 --- a/.env.unix.example +++ b/.env.unix.example @@ -1,6 +1,6 @@ DBREPO_CLIENT_SECRET=MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG RABBITMQ_CLIENT_SECRET=JEC2FexxrX4N65fLeDGukAl6R3Lc9y0u -JWT_ISSUER=https://localhost/realms/dbrepo +JWT_ISSUER=http://localhost/realms/dbrepo JWT_PUBKEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB JWT_CERT=MIICmzCCAYMCBgGG3GWyBTANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZkYnJlcG8wHhcNMjMwMzEzMTkxMzE3WhcNMzMwMzEzMTkxNDU3WjARMQ8wDQYDVQQDDAZkYnJlcG8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqqcdDYFZZb28M0tEJzEP77FmD/Xqioyj9zWX6VwUSOMAgmMmn8eqs9hT9T0a+q4YTo9tUW1PNbUpwprA5b4Uk04DcIajxDVMUR/PjcHytmkqwVskq9AZW/Vngdoo+8tSbuIybwe/3Vwt266hbHpDcM97a+DXcYooRl7tQWCEX7RP27wQrMD9epDQ6IgKayZg9vC9/03dsIqwH9jXQRiZlFvwiEKhX2aY7lPGBaCK414JO00K/Z49iov9TRa/IYVbSt5qwgrx6DcqsBSPwOnI6A85UGfeUEZ/7coVJiL7RvBlsllapsL9eWTbQajVh94k9Ei3sibEPbtH+U2OAM78zAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAASnN1Cuif1sdfEK2kWAURSXGJCohCROLWdKFjaeHPRaEfpbFJsgxW0Yj3nwX5O3bUlOWoTyENwnXSsXMQsqnNi+At32CKaKO8+AkhAbgQL9F0B+KeJwmYv3cUj5N/LYkJjBvZBzUZ4Ugu5dcxH0k7AktLAIwimkyEnxTNolOA3UyrGGpREr8MCKWVr10RFuOpF/0CsJNNwbHXzalO9D756EUcRWZ9VSg6QVNso0YYRKTnILWDn9hcTRnqGy3SHo3anFTqQZ+BB57YbgFWy6udC0LYRB3zdp6zNti87eu/VEymiDY/mmo1AB8Tm0b6vxFz4AKcL3ax5qS6YnZ9efSzk= SHARED_FILESYSTEM=/tmp @@ -15,7 +15,7 @@ KEYCLOAK_ADMIN=fda KEYCLOAK_ADMIN_PASSWORD=fda BROKER_CONSUMERS=2 WEBSITE=http://localhost -GATEWAY_ENDPOINT=https://gateway-service +GATEWAY_ENDPOINT=http://gateway-service TOKEN_MAX=5 LOG_LEVEL=trace # error, warning, info, debug, trace DOI_URL="https://doi.org" diff --git a/dbrepo-authentication-service/Dockerfile b/dbrepo-authentication-service/Dockerfile index 9355947d1a..d5aae51744 100644 --- a/dbrepo-authentication-service/Dockerfile +++ b/dbrepo-authentication-service/Dockerfile @@ -12,8 +12,6 @@ ENV KC_DB=mariadb WORKDIR /opt/keycloak -COPY ./auth.keystore ./conf/server.keystore - RUN /opt/keycloak/bin/kc.sh build ###### SECOND STAGE ###### diff --git a/dbrepo-authentication-service/auth.keystore b/dbrepo-authentication-service/auth.keystore deleted file mode 100644 index 1a2ed8ce767c27bb690fc2470e465ffc2fad04aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4696 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 X?S`Pv`Rm@#Pl$b8YhWn~>LLID3mLl5 diff --git a/dbrepo-authentication-service/dbrepo-realm.json b/dbrepo-authentication-service/dbrepo-realm.json index 4e65cc8efe..e2fc0ac590 100644 --- a/dbrepo-authentication-service/dbrepo-realm.json +++ b/dbrepo-authentication-service/dbrepo-realm.json @@ -26,7 +26,7 @@ "oauth2DeviceCodeLifespan" : 600, "oauth2DevicePollingInterval" : 5, "enabled" : true, - "sslRequired" : "external", + "sslRequired" : "none", "registrationAllowed" : false, "registrationEmailAsUsername" : false, "rememberMe" : false, diff --git a/dbrepo-authentication-service/server.keystore b/dbrepo-authentication-service/server.keystore deleted file mode 100644 index 6f43470deca0b65a2aec9bf124ce944a502113fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41120 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 C>$}7N diff --git a/dbrepo-container-service/Dockerfile b/dbrepo-container-service/Dockerfile index bfef8f03d2..2ddbfd3f85 100644 --- a/dbrepo-container-service/Dockerfile +++ b/dbrepo-container-service/Dockerfile @@ -35,7 +35,7 @@ ENV USER_NETWORK=userdb ENV LOG_LEVEL=debug ENV DBREPO_CLIENT_SECRET=client-secret ENV CLIENT_ID=dbrepo-client -ENV JWT_ISSUER=https://localhost/realms/dbrepo +ENV JWT_ISSUER=http://localhost/realms/dbrepo ENV JWT_PUBKEY=public-key WORKDIR /app @@ -45,9 +45,8 @@ RUN chmod +x /usr/bin/service_ready HEALTHCHECK --interval=10s --timeout=5s --retries=12 CMD service_ready -COPY ./server.keystore ./server.keystore COPY --from=build ./rest-service/target/rest-service-*.jar ./container-service.jar EXPOSE 9091 -ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-Djavax.net.ssl.trustStore=/app/server.keystore", "-Djavax.net.ssl.trustStorePassword=password", "-jar", "./container-service.jar"] +ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-jar", "./container-service.jar"] diff --git a/dbrepo-container-service/rest-service/src/main/resources/application-local.yml b/dbrepo-container-service/rest-service/src/main/resources/application-local.yml index 31bcf8d466..1614716178 100644 --- a/dbrepo-container-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-container-service/rest-service/src/main/resources/application-local.yml @@ -42,8 +42,8 @@ fda: mount.path: /tmp ready.path: ./ready jwt: - issuer: https://localhost/realms/dbrepo + issuer: http://localhost/realms/dbrepo public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB client_secret: client-secret client_id: dbrepo-client - gateway.endpoint: https://localhost \ No newline at end of file + gateway.endpoint: http://localhost \ No newline at end of file diff --git a/dbrepo-container-service/rest-service/src/main/resources/application.yml b/dbrepo-container-service/rest-service/src/main/resources/application.yml index 53ca0a9f14..51a7582839 100644 --- a/dbrepo-container-service/rest-service/src/main/resources/application.yml +++ b/dbrepo-container-service/rest-service/src/main/resources/application.yml @@ -46,4 +46,4 @@ fda: public_key: "${JWT_PUBKEY}" client_secret: "${DBREPO_CLIENT_SECRET}" client_id: "${CLIENT_ID}" - gateway.endpoint: https://gateway-service \ No newline at end of file + gateway.endpoint: http://gateway-service \ No newline at end of file diff --git a/dbrepo-container-service/rest-service/src/test/resources/application.properties b/dbrepo-container-service/rest-service/src/test/resources/application.properties index 6fffd501c9..864c870f6e 100644 --- a/dbrepo-container-service/rest-service/src/test/resources/application.properties +++ b/dbrepo-container-service/rest-service/src/test/resources/application.properties @@ -9,7 +9,8 @@ spring.cloud.config.discovery.enabled = false spring.cloud.config.enabled = false # disable datasource -spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS FDA +# spring 6 fix https://github.com/h2database/h2database/issues/3363 +spring.datasource.url=jdbc:h2:mem:testdb;NON_KEYWORDS=VALUE;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS FDA spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password diff --git a/dbrepo-container-service/server.keystore b/dbrepo-container-service/server.keystore deleted file mode 100644 index 6f43470deca0b65a2aec9bf124ce944a502113fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41120 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 C>$}7N diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java b/dbrepo-container-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java index 061bd0cd72..c12c18252c 100644 --- a/dbrepo-container-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java +++ b/dbrepo-container-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java @@ -12,6 +12,8 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.security.web.util.matcher.OrRequestMatcher; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @@ -36,6 +38,17 @@ public class WebSecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + final OrRequestMatcher internalEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/actuator/prometheus/**", "GET") + ); + final OrRequestMatcher publicEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/api/container/**", "GET"), + new AntPathRequestMatcher("/api/image/**", "GET"), + new AntPathRequestMatcher("/v3/api-docs.yaml"), + new AntPathRequestMatcher("/v3/api-docs/**"), + new AntPathRequestMatcher("/swagger-ui/**"), + new AntPathRequestMatcher("/swagger-ui.html") + ); /* enable CORS and disable CSRF */ http = http.cors().and().csrf().disable(); /* set session management to stateless */ @@ -54,16 +67,11 @@ public class WebSecurityConfig { } ).and(); /* set permissions on endpoints */ - http.authorizeRequests() + http.authorizeHttpRequests() /* our internal endpoints */ - .requestMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll() + .requestMatchers(internalEndpoints).permitAll() /* our public endpoints */ - .requestMatchers(HttpMethod.GET, "/api/container/**").permitAll() - .requestMatchers(HttpMethod.GET, "/api/image/**").permitAll() - .requestMatchers("/v3/api-docs.yaml", - "/v3/api-docs/**", - "/swagger-ui/**", - "/swagger-ui.html").permitAll() + .requestMatchers(publicEndpoints).permitAll() /* our private endpoints */ .anyRequest().authenticated(); /* add JWT token filter */ @@ -78,7 +86,7 @@ public class WebSecurityConfig { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); - config.addAllowedOrigin("*"); + config.addAllowedOriginPattern("*"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); diff --git a/dbrepo-database-service/Dockerfile b/dbrepo-database-service/Dockerfile index 052654fbb8..0b19effac9 100644 --- a/dbrepo-database-service/Dockerfile +++ b/dbrepo-database-service/Dockerfile @@ -37,7 +37,7 @@ ENV GATEWAY_ENDPOINT=http://gateway-service ENV LOG_LEVEL=debug ENV DBREPO_CLIENT_SECRET=client-secret ENV CLIENT_ID=dbrepo-client -ENV JWT_ISSUER=https://localhost/realms/dbrepo +ENV JWT_ISSUER=http://localhost/realms/dbrepo ENV JWT_PUBKEY=public-key WORKDIR /app @@ -47,9 +47,8 @@ RUN chmod +x /usr/bin/service_ready HEALTHCHECK --interval=10s --timeout=5s --retries=12 CMD service_ready -COPY ./server.keystore ./server.keystore COPY --from=build ./rest-service/target/rest-service-*.jar ./database-service.jar EXPOSE 9092 -ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-Djavax.net.ssl.trustStore=/app/server.keystore", "-Djavax.net.ssl.trustStorePassword=password", "-jar", "./database-service.jar"] +ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-jar", "./database-service.jar"] diff --git a/dbrepo-database-service/rest-service/src/main/resources/application-local.yml b/dbrepo-database-service/rest-service/src/main/resources/application-local.yml index 7820b6a062..1d647d4d6f 100644 --- a/dbrepo-database-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-database-service/rest-service/src/main/resources/application-local.yml @@ -43,8 +43,8 @@ logging: fda: ready.path: ./ready jwt: - issuer: https://localhost/realms/dbrepo + issuer: http://localhost/realms/dbrepo public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB client_secret: client-secret client_id: dbrepo-client - gateway.endpoint: https://localhost \ No newline at end of file + gateway.endpoint: http://localhost \ No newline at end of file diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java index 1d08e45ee8..a530ea55f1 100644 --- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java +++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java @@ -3,6 +3,7 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; import at.tuwien.api.database.AccessTypeDto; import at.tuwien.api.database.DatabaseModifyAccessDto; +import at.tuwien.config.H2Utils; import at.tuwien.config.IndexConfig; import at.tuwien.config.ReadyConfig; import at.tuwien.entities.database.AccessType; @@ -12,6 +13,7 @@ import at.tuwien.exception.NotAllowedException; import at.tuwien.repository.jpa.*; import com.rabbitmq.client.Channel; import lombok.extern.log4j.Log4j2; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; diff --git a/dbrepo-database-service/rest-service/src/test/resources/application.properties b/dbrepo-database-service/rest-service/src/test/resources/application.properties index 18e287a06c..857d45f763 100644 --- a/dbrepo-database-service/rest-service/src/test/resources/application.properties +++ b/dbrepo-database-service/rest-service/src/test/resources/application.properties @@ -9,7 +9,8 @@ spring.cloud.config.discovery.enabled=false spring.cloud.config.enabled=false # disable datasource -spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS FDA +# spring 6 fix https://github.com/h2database/h2database/issues/3363 +spring.datasource.url=jdbc:h2:mem:testdb;NON_KEYWORDS=VALUE;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS FDA spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password diff --git a/dbrepo-database-service/server.keystore b/dbrepo-database-service/server.keystore deleted file mode 100644 index 6f43470deca0b65a2aec9bf124ce944a502113fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41120 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 C>$}7N diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java b/dbrepo-database-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java index 02dfbbb34d..7ee0e81e22 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java @@ -12,6 +12,8 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.security.web.util.matcher.OrRequestMatcher; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @@ -36,6 +38,16 @@ public class WebSecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + final OrRequestMatcher internalEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/actuator/prometheus/**", "GET") + ); + final OrRequestMatcher publicEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/api/container/**/database/**", "GET"), + new AntPathRequestMatcher("/v3/api-docs.yaml"), + new AntPathRequestMatcher("/v3/api-docs/**"), + new AntPathRequestMatcher("/swagger-ui/**"), + new AntPathRequestMatcher("/swagger-ui.html") + ); /* enable CORS and disable CSRF */ http = http.cors().and().csrf().disable(); /* set session management to stateless */ @@ -54,15 +66,11 @@ public class WebSecurityConfig { } ).and(); /* set permissions on endpoints */ - http.authorizeRequests() + http.authorizeHttpRequests() /* our internal endpoints */ - .requestMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll() + .requestMatchers(internalEndpoints).permitAll() /* our public endpoints */ - .requestMatchers(HttpMethod.GET, "/api/container/**/database/**").permitAll() - .requestMatchers("/v3/api-docs.yaml", - "/v3/api-docs/**", - "/swagger-ui/**", - "/swagger-ui.html").permitAll() + .requestMatchers(publicEndpoints).permitAll() /* our private endpoints */ .anyRequest().authenticated(); /* add JWT token filter */ @@ -77,7 +85,7 @@ public class WebSecurityConfig { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); - config.addAllowedOrigin("*"); + config.addAllowedOriginPattern("*"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); diff --git a/dbrepo-gateway-service/Dockerfile b/dbrepo-gateway-service/Dockerfile index 9dd86e4545..0633838bd4 100644 --- a/dbrepo-gateway-service/Dockerfile +++ b/dbrepo-gateway-service/Dockerfile @@ -1,5 +1,7 @@ FROM nginx:alpine AS runtime MAINTAINER Martin Weise <martin.weise@tuwien.ac.at +COPY ./dbrepo.conf /etc/nginx/conf.d/default.conf + EXPOSE 443 EXPOSE 80 \ No newline at end of file diff --git a/dbrepo-gateway-service/dbrepo.conf b/dbrepo-gateway-service/dbrepo.conf index 5ac8a28eb1..e972bfcd58 100644 --- a/dbrepo-gateway-service/dbrepo.conf +++ b/dbrepo-gateway-service/dbrepo.conf @@ -3,7 +3,7 @@ client_max_body_size 2G; resolver 127.0.0.11 valid=30s; # docker dns upstream authentication { - server authentication-service:8443; + server authentication-service:8080; } upstream user { @@ -57,15 +57,6 @@ upstream ui { server { listen 80 default_server; server_name _; - return 301 https://$host$request_uri; -} - -server { - listen 443 ssl; - server_name _; - - ssl_certificate /server.pem; - ssl_certificate_key /server.key; location /api/auth { rewrite /api/auth/(.*) /$1 break; @@ -73,7 +64,7 @@ server { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; - proxy_pass https://authentication; + proxy_pass http://authentication; proxy_read_timeout 90; } diff --git a/dbrepo-gateway-service/server.key b/dbrepo-gateway-service/server.key deleted file mode 100644 index e4f6cc51cf..0000000000 --- a/dbrepo-gateway-service/server.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDYIDfM6eE8BIek -tnbAYMbv3h6ADCmqSYj+ckGd1w9v/hDeHuclTJLYfeTLDDODbn5wbKuLHzlpg/tE -fSINHje0KOiIlvCIVpnBkxX3RxMfJYW8w69DJllUlC7ANlktlDopRK5pQDUUSX6t -FZ6Eg8W73V7JuBVoJU3LDU50XGipt6JEIKvPTXtbBmvG9/DrDjTlY04f3AKOrdDu -tHMgS9xX3ySon0YusSb/No5AiN6cd2QpOaP8xXmE+ngUVk6oWlS7rlqoaQnOFouV -4xff4plADLcVPczJeh+FNXUUtXnhmGZvvokL95Z8E8epcXq30MdO3BNU1QFlFIKH -ei/XECB7AgMBAAECggEBAJ3XUclm2ecSS9pApBO12jRenRnZSCikkdd6rG9RHGYn -QDxoh1mXRfu0Xf7ox0pqzQ7gXpw5Tp3AFScc2FyKQBZkdgcjbUG1NY/JExbIIq/x -oG2O4JYDEOSTYF1ik9iU07FGBra5fMp3LnvMOTwAXM3qS4q41XF9JQZxjmWvA4VG -TsIeAJuU4DIyz27xMIVSpKkAe433yFOzVx6OLReqK0CxONDF4V9t4v7Fd/rS7tpS -RBqIPt0vK3V9KK4ASSUt3zAEansgfTJLzzeaYPXjf2n31qmdikCQvbZ6GqubA7Hf -C4W+rJG4rAre80Y3CclunZS1N2fqbAh5zGSA497pMKECgYEA98gmEbQIqb7jHfvk -naG3P0jHPc8AWXU+0M0RRlmJQdTjbVFADhJ/XZygUdGQCKVaBWHu0uxLLLfU5rIQ -43w/69dikm40gMiO+ehoK91EvuGo2Sq15BEtrA0LXfmMSVOoysUuzoq+Hrc+S0TY -a/rb5WP8///3bMDCoYOtLD2dDXECgYEA30tJWzFzxR19B1JKQ4ABwEAso4SAl/3w -L6o6dOG4l2ek36Sc2a3QZaguK3HcWHWEfSuZF16RLYkHbtjcSSnUdXNtOWlZEd3d -RFRQ2ie5BbNYjRtpIOrF/brBZV+q3WZ/Laxmenw7oqKPZae5+mqQiY/uJFQiOuzO -EZxQi3iPhqsCgYA2uSN/QW2wX5I1aw5gqfiYp3ApfHAtUbGf18p66QdhXK0l1Y36 -DafHevIFX+0Zm7s3+RsPxlQL+kWw9Z65PxW29oi0olZCIwlAtE1dcq7eIWRzIfWt -+wVFPFRIWvbasvlSXx4pS4cVrY66fOf3YR3zmZOkzllM0X2qwjQa0zi+YQKBgAaD -s8gtUStXCObFx9TgTyzEsoiyvO2yQuehF8OBMll4dJ7xtoHDSGku1un9kGgkRZFB -TF4aLDIf5U+elA6uYbxreaxLHoYe6u2raBB1SDiaWuMDAbYsI0qbwDis6dc7vkoe -1X6NUVAVXgmhMxPTOBRLVq9IpRcDAaAR52eqRMWxAoGBAJm1HwVa3oyNr+LC1Ebd -wcOvQRjL3qUQwMVqvXELjz8vAGG+l+53qs5EADaFLd5X8saAiAfpkC1bfFKb8Jye -1jGUuMFRu5fCRKHHtDUTNHoVJ0PvfLJdnz1d0bt88FTDW1ryd+MW8xny+vAc1u+f -HxwgWcOhoe32bS1CvUdAE2Yc ------END PRIVATE KEY----- diff --git a/dbrepo-gateway-service/server.keystore b/dbrepo-gateway-service/server.keystore deleted file mode 100644 index 6f43470deca0b65a2aec9bf124ce944a502113fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41120 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 C>$}7N diff --git a/dbrepo-gateway-service/server.pem b/dbrepo-gateway-service/server.pem deleted file mode 100644 index e058e1fa34..0000000000 --- a/dbrepo-gateway-service/server.pem +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDUzCCAjugAwIBAgIECRFhYDANBgkqhkiG9w0BAQsFADBJMQswCQYDVQQGEwJB -VDEQMA4GA1UEChMHVFUgV2llbjEPMA0GA1UECxMGRFMtSUZTMRcwFQYDVQQDEw5J -bnRlcm1lZGlhdGVDQTAeFw0yMzA1MDkwNzEyMTZaFw0yMzA4MDcwNzEyMTZaMEox -CzAJBgNVBAYTAkFUMRAwDgYDVQQKEwdUVSBXaWVuMQ8wDQYDVQQLEwZEUy1JRlMx -GDAWBgNVBAMTD2dhdGV3YXktc2VydmljZTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBANggN8zp4TwEh6S2dsBgxu/eHoAMKapJiP5yQZ3XD2/+EN4e5yVM -kth95MsMM4NufnBsq4sfOWmD+0R9Ig0eN7Qo6IiW8IhWmcGTFfdHEx8lhbzDr0Mm -WVSULsA2WS2UOilErmlANRRJfq0VnoSDxbvdXsm4FWglTcsNTnRcaKm3okQgq89N -e1sGa8b38OsONOVjTh/cAo6t0O60cyBL3FffJKifRi6xJv82jkCI3px3ZCk5o/zF -eYT6eBRWTqhaVLuuWqhpCc4Wi5XjF9/imUAMtxU9zMl6H4U1dRS1eeGYZm++iQv3 -lnwTx6lxerfQx07cE1TVAWUUgod6L9cQIHsCAwEAAaNCMEAwHQYDVR0OBBYEFNpe -d5r17TPn+9Gm3bBgZv6FJMHnMB8GA1UdIwQYMBaAFF5md9arqKs42p+WjhWXGwgV -MmDKMA0GCSqGSIb3DQEBCwUAA4IBAQBVeWc0Fmy+T87FfagMyR2Xtl+43eOS33bl -RJ5pSFt9do3fPjLeegwpLUDfkXwpyRVIRCH5qob5cPB8GFPqxmATaiXOvTUhw5Om -Z3EXRlGZslEKrKVx1nWW+PMTOLWZcLg8WTJaLqbHSRD9dPlL3rWrc5vHu9vNrqN3 -A2aOCaZ8kXb8Mp+dLnsajCDgoAwd/TuchPphkuxE3uQ+4Le4VXpSIVGEVydR+dnV -3wocWiq5PiIg8IEs+2DlwKah7AKdiL66oDaSiv6JZjMvdKE0g7aocWGBvesoqaFw -zABZTzWo2TdkNjN2db+N9L3jtvWwhiwLvNh81wF2Lt1baT9Zk1in ------END CERTIFICATE----- diff --git a/dbrepo-identifier-service/Dockerfile b/dbrepo-identifier-service/Dockerfile index 9269801f90..e4f562d63e 100644 --- a/dbrepo-identifier-service/Dockerfile +++ b/dbrepo-identifier-service/Dockerfile @@ -34,7 +34,7 @@ ENV WEBSITE=http://localhost ENV LOG_LEVEL=debug ENV DBREPO_CLIENT_SECRET=client-secret ENV CLIENT_ID=dbrepo-client -ENV JWT_ISSUER=https://localhost/realms/dbrepo +ENV JWT_ISSUER=http://localhost/realms/dbrepo ENV JWT_PUBKEY=public-key WORKDIR /app @@ -44,9 +44,8 @@ RUN chmod +x /usr/bin/service_ready HEALTHCHECK --interval=10s --timeout=5s --retries=12 CMD service_ready -COPY ./server.keystore ./server.keystore COPY --from=build ./rest-service/target/rest-service-*.jar ./identifier-service.jar EXPOSE 9096 -ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-Djavax.net.ssl.trustStore=/app/server.keystore", "-Djavax.net.ssl.trustStorePassword=password", "-jar", "./identifier-service.jar"] +ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-jar", "./identifier-service.jar"] diff --git a/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml b/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml index c6d40af941..6800891595 100644 --- a/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml @@ -44,9 +44,9 @@ logging: fda: ready.path: ./ready jwt: - issuer: https://localhost/realms/dbrepo + issuer: http://localhost/realms/dbrepo public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB client_secret: client-secret client_id: dbrepo-client - gateway.endpoint: https://localhost - website: https://localhost \ No newline at end of file + gateway.endpoint: http://localhost + website: http://localhost \ No newline at end of file diff --git a/dbrepo-identifier-service/rest-service/src/test/resources/application.properties b/dbrepo-identifier-service/rest-service/src/test/resources/application.properties index 507921d77d..f56b5e38f3 100644 --- a/dbrepo-identifier-service/rest-service/src/test/resources/application.properties +++ b/dbrepo-identifier-service/rest-service/src/test/resources/application.properties @@ -9,7 +9,8 @@ spring.cloud.config.discovery.enabled = false spring.cloud.config.enabled = false # disable datasource -spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS FDA +# spring 6 fix https://github.com/h2database/h2database/issues/3363 +spring.datasource.url=jdbc:h2:mem:testdb;NON_KEYWORDS=VALUE;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS FDA spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password diff --git a/dbrepo-identifier-service/server.keystore b/dbrepo-identifier-service/server.keystore deleted file mode 100644 index 6f43470deca0b65a2aec9bf124ce944a502113fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41120 zcmXqLS}=!+k=dYWfg2mAR+~rLcV0$z#sy6a%vqWi7#lP#&^Kr@7DJITW@l+KW;SRt z`ft$0x}1$0s*8t<k!e8_tAjxktBpY#Tn8(!L8O5Ng3Du|%_8EiKf^UiwnXvj-?`Uy zEu{Tc8oyu4#H233#He7v!^QzIk%^O)!9bRcGoj6cF_oExQHw=jPHnxw!96~SyDgfZ z?hqHe#?r)c;hggBO-ToTFA#J#Nc*g?)u-1@jZ^lM#!GhH?HVpo*G`Mb`)n^e-E}Kk zJ7!%`q_%ij;@hPc4KseT#&sDhNQJ(UHB@?WIy_;bo+q!aN$s9D8orO6;<#j+Tvew{ z;z>GgUo7&LW7a2Gb>6EoR?#AAIer0`c$wn^UnejmiEG~0_>gpe_twML?=!S{3M-sn zaD43)S*Zgn6%R9|W(yoL^qL&5u{!$T&7KIJoEPtNE-Y`&UK3omPGsk#N%LnO`=k~z zrTd=eq^DcC_pYrt!*E#PbDrEIk(7v*?=tn4d*6ocO?o$LZ${{+_!-NT50~8Lzbn!3 zDrqC1-a|XHm7E-howb%<uhm)b{{1cY;@-N7g>iQp&g{CRG_h`BNSGnVooky_>H;U} z|NFU2?}=ZY_3^4zl0x!Ey*rXB>*cHsUTGbhcsJXns(Yp4#|XCFGw+`6Hks#G#{EP; z*-J6=Su9(Bm)Xr@w*QUZJ@@v1Shd}88dG7t*MvXjNd>}Yar*Mpgxw4t-O~3pVDvF~ zn#{wt*8YD@`YEL#hL5uXV|f3}Z&Q;FiNCX>a#F2@Pu8Q*j{cfyYxQSZ3*0SxFBlTx zb8Tm85s%_8?k(GG8s5kL_c(X(W?|6g$tySh3|hf$`^Q-@tozCwwZ@-OQ#T*KqLZh} zwbWIGQ6g~HBk|baMiDa&x4Y5?>XT*jqy(fNuBnrKu*c;3yM<b>A2%@zDT#+lG2S-q zyOtBpzpY}McIVeORj*5KKX{ee>DqhS?Z>ytBF-xxc;xgu$1fLOn}4-G#Olv0vD(B> z*OipTii=%ky|)*ahuJBIdX_j%{CR=9^iL^2^RJ^S-_&pSo5b3P*}OTwd!j;F3gg;Y z5&wK^axZ!-7$$v)3w$(vzRkp{;GHuCpU<{F@m$U0aX?eBl4Ogq`rX^pRM$6gJ1Nwe zM4o@~rQp|&>R(HqROI*mI6HTb$AMcBrjc_^R_v%0+BxOJi4%5}@(0DvgmS+NP?+bq z;#e`~2?_77Ql~v)TV5F3zW$SQ{pz{ypK}Zu?~5qM)(6(C`@(&CRe{`#uUhfn!&+^- z!WfKpO7dlY5^#SW=V@Azv@R`6zP3r`|7@Oy+dPaLmHvEldOw3__0RoHXA6QpZaiG8 zb5T)gdGqxR@)PpU=j&MRN#No%S{w1(IyiI=SA5>FL$5e9k9}QJxIp&zb%}jd8gW;m zxtP~Xt(q0dbX0tEL~QH7Z=NnE<}UNwy1!4<?D?Pfw{--!r6#ZVaoy;K@sF%^vZ|Ml zitG|lRX+NZ_r~SB>@FS(zbczfO*-*JQquD7&O67ZhzsfDHm_|IlPlk!67l;$&f#jE z$_a}3^)I7Lk2zQtU3<qiZ}klE2{{pcyY?9tycZ~XdO`L%Yg$!>P=!hN^0_xJp6R>j z_=dT3uk7a<i5E7Pw%gVSO)U*ulGE*;sHxESbCzkaxah=`CN?ht-fFv(K3AF~&oHf6 z^<w6O7d$o#Qfd~Z1hA}WxLR$k?IC#0)~|`};7_Uf8Z#DJM2MQ4yX@TT^|ILJ<s3`* z!|W$dJ-Gf@=<p}o4YLmYnmFmv2aoO*d>`DmHpX#2%kpH%+{yYhd~#8d&)G9~pX{ow zx)y!vEoahX-c+mN<xD4z@rM2jR`tBF!~0ESn(MOgpJltMkFqK5le~3u$vmcw8P41f zRH}OoLk#rc#U-bRp^}^eLoP!qLkUA7LkdG8nAT+|W=LfyVkl$CWJqR6HBdxo5H%EG z5emu7O;s>7voJO@G&44`G&8m^XkwjDR#APsXYxTK&y>v%yHBQYU7S<m;Fl^*Oi^7~ zp<SPU`_^-f*zKG<^NZJjit6)OuT!g9te$Q9{%p(kcMNyT#BOi|RUMa9m|%07k?)`F zYw?Fa%TK00te;o?ru@w|&RJ?Q<%f2v)je6$$h7O+qlsJV|Gs5unXmOd<kuD<t4jh7 zHLE5(sPwpbcwWF^oy6vsTzbCcGW^!Ik$$FMv`h2WHqK@*u6uk^XR5fRVqwERlaj8e zf{OF^MP7-j?UvQDxmED+2UlLk|FeA8Q#@n*^qSk&Y%;o-y`s|Q_ucJPrx$wi#r~Tt zx?DZ+J;&v@pLY2!C=6CR>r-U=oLMr)Nbulc$q8vXhc0{!_B=hi%&o-w@H5Huhbtl~ z@3GGRy7T(h7wNv-%k(}le*F^iu-op>kqKA#Idv{+iGCw;oO9}e9w9jmd)5ST=2xk+ zJu(-lhw^_?xnkhy)2n|g_K?Q;PrHIY{WM?l`jq<ve+QLTt}>Ywd%ntiJHxstU%Btx zj^F8fc?5Y<^fxRoQTv&3=dm8^L5>f1r2cLC|NBW(-2O84PxCUCOCI)~pJ;4gl>4iE z`a8?@^Vk2+Hr-p2wrHA!_u3CV@uue!j;{E_vg_(vKC?{wo4GGIZBE_mK6ZZg<{wUN zg-p8K6Fc%=_x`%tdU{D$MFqcn$dp=#XYQ}w_|GW1wR82{6AkOO|4qIy>3@iKRmq_{ z7bf>Fipk=eqvdt)-~7z8d_mRU+BB!J=I6;N88jHG@7p-n@bSfm=@v1!bSKP7KA;lz zRzWt*UYtK(OYu%tO~B+vHnH!Ay-Z&-u6mjKt8`zV$<vo7AFirel-1AG^hxWef?wi| zsRhrMi`<GU-eq|Dmu~bvyQAWNax&QW=wG@l?%1~S(}b9+x#2ZQtmn<y>@_`|1y80K z+FHN;BYE<KGQ-|U-YZY3|K56wLFhPZw~1w3UR2Bf&wqJ+wbUz4m~u4y-}H6s{ETg% zPs=Q5Sv_yz%}-8GFX#PrepEJPp4pG9etTB6v@-Xf<J)li+}w$wSGR|oO+Iqs&KsFi zOCOwGWOlcCXVh=yH&6EG9Qfb9O*lo>r6X1``Ni{%e4ppCFaCGMIji7D`2LJt4wvT0 zSq4jAUc2*nwVXJQho{FZ-rzOaE9Lxar9?zuc&q(it8I7H@8g#*El)0aEv>3a7Ch`& zcIpG)43!LL#+KO<Yn!*qh<y%p{{Lf9-oIxv|15d%Cgnmv;W>ljQb&XD@ZSq~@ZY@P z-nP;y@uyG71>T#$bn(dg5cc0TM?7-+jZSrcKf2ddKtT1aM99jX-+UMSl;ftxuQbsN z7H?dtClSr>{c!r;xnaSPs!H|W*5-U>$hr6Z*4NUIioeAIGFfZ>c`jVb^3m1j-Rg|O z=|yQG{d*TIxR`x9V_rvyWbf0~39{#JhLzgSc3!*ZhGk&h9><g26Yhrl|NirK-VZMR zeVnc3$uZ8GI-YF(UUGU>(6Wzbc3nOGgH<!+p?0v?MGNh~Tq8GwO`ly)uXS}y*K^}3 ziM#VaB8JzeGStyIJJ<G{@r(5Q_N6Y3IeTA-rl$m~WUgJC`SeR%;Dd7y#r@o7yogVE zYqu`nML+JEp}XR<hPeqZ>TBEX6gM+<h~}-5ca$tRP-`AP&o;)-Pfc>u<qDf!GfG~> zUpvnr;{KrWw!>1RvXsfb{}VHeoA%mqB*!*Pn9NwH=5sP|@3Rl#ljJt|oPS@UVauNX z|47%gl9K-x5feW4u<l~@TxjTHppGbcMGU3nBp6DeMKei7w6TGSnVCTo>q4@M=p&KI zyTgK885=p6x5<3T3^e-^Bu`8c{dgPikFRTkH=j$n+N8ebR|!iK%Y{wd@&zv192f5& zJKb>S%5(qso2q7uD=u7gDD#ZL@q_2enSX126L@}6)o~-s++EukW|W)i9FSZ-abD!b z=H}x&SzdI`?*A>uUNB|OiKSUJRq6RL>mAkZHQuZH`}0iQdQn-CihnGjd>>WZRvx`S zv9*z_N89bdvRnUG@9NxiN>f)V{x!4ovlSdod;2qNvsrJ~HnW)@nX)(NQq}L*datCT zZF-A2rmQK-Ij$i+z2t?%(S~UkL~jP_1!^5Wk*R-&Yl_vC-Osi2)epX$#cRx;;30nR zRF$(`i)`WwNrmYbj<!dCIawyEvvkr)0lD~lr&Cng<F-BDWcMiMcG-?U;k?};$CX?j zCBMD-Tu|=B+y{LJ9LtjLDQwx^eZ%;e@`>Y0-|Nj|r`4zWU0EU~5wCaKOZ0)<k<V<J zGCVPRALlew8Er0Kx7ulEcXal-OUGYN&lE~X;EMMAGyC02{Wr0bQhyW+1_`~?3SFY` zL2tRzIoZ}jp=u%Tf?p&)d?&O~ZEE1ORMpe>41XElwVSla_rdpAOAVG65?=&=rq5ov zz1UD=qM5XY(9zx%cQ!bDpQ(5(xp8vY#^c+&PN@Yw?7UFk-fefsvddvk_r^AJt`kbJ zoAukCdY*Q>JvUCAb4I%LnUHxKBxSUo&Un53%POa|wkxX~)Fy9#w9_TV<>SL#-Spex zite2v8>b(iapCRq69U)yvp6{A6YlFLoL(y0ez56W6qm-<^;@KvR`@SFuy^sirBMx@ zwdXIDyEFbh)Gl|uO;yNo74QDtYg~{2>TR6Jd0^$w>LaDxvS~}EWg7VGIg=v)XJ?Wg zWBksFx)1rQmmD=Zesr#^jco<nvEZ=6X1|w@_vx!OGS@{iS=4E#@0tJQ(Q&^Q3KFs6 zn&&nj7Y^?2zqa+Bph~7g_H@_9ygKLXmOM(E{<(OS&I!({rwn0xcH5qQs=Ph@y@`!L zoyqwmOT(AqvxS)Tmu=*$E%n}K8nX1{_1{5X*Pg455iUvP*!57~+ME57b!LV-Z{>pf zSGVoaxyj#ZELrmP^Fi0L5a(n2d$U;OYgHfgNQa!>BKI@1@|EV3nRzm$MdlxQC4Oe@ zyTkuM%<D+A(bKNEoJ)7b-*995f4I|9_1csvm#+6;;kfzzmED>oUg4=1!~TDHZLRb1 za*~hKLgNtSU-N3V2(+y1zHZu8b#&4?u31{kLsv^*H)D+O*meJ~>-sBPm7k7gg?)_F z-@2XcS}xOrO%b`=z1y4WZe2bf<?8gprG~}CW73K@j`M3icxpad{qMNT!w+F8q7jW% zz5!P}!yer`*c|-iVDpR_T#ZfD-fwo~AGMGExNI4xiSDkN?NemM7d&u_%Hga3-(Hh+ z=+d+sulFsAP&c@lTr6{ViywP!P^47WrJ2br4<20KyH#_Y`s&wvj(A@Ru-GQwx^}VZ zfhD&uWLj4F&bc|~Ou6%xZhw<Ni(MI49{y~*^oaG|!TH^0vX%Tdr!>xHVEka1JZqE9 z(LG_2Q@PpPgf?wWbDQf@xs<_6YjuU<l-;Y7Qw83y&O4%I6%skk<AGE_baCRU#eEFw zcUJsT{pVErx$)^#%b(lUSM7G2e!|)6_nIyH4wZB0XzpWGjws05no*aVsobWs;mXRZ zlir@yxw3BV>VvoME>fCq^l@rie46{|6)O*%+PHATI>(MX?4_%!x37*i^fS;zE}~`R zq`)ocB!(P@R0h%tX+vWJV}mBv)npaYJb|qh|K#p8{1b7}+h1=Z@wGrrikL$BlYU)) zy)s|jaWRKoqL-#@2Nlw8w_X%P%(;;JRP?_!OVIiA=6j>e#H4vHWbq1BJSpbv*f60< zvot3<BEas#wl%5un!6Ka>UuRYdY^Y4eizxLEqwot&dRNivL`%p%I>>Y@`QVtbf;nI zYSr|{omc&T_`O;<Iko(Ln9P=Jk0Y9U>k4K_iAP3H^!0o8LPWR5Z8D>}z{N<F=9{jO zr_#IX9p~!5&hEYN{MRHcX})D)J8o=D=<wed_Cc8aZcgv#FZy{w>sh($-d~r}Q)yU| z5h%G_qaz_-c}6(DP~^|ws{(oUad}+4=-M5lX(m?B<mq#WjrrGqkyRhvUWplo^hE?s zopaMD>D4k<yLh>R*!^cuCkh<WO69%o8uXQOe?~i3nV0f&t=^qc%sYRbJl*^z!=}hz zu;u#ISBuVFDZ6+|*V^Xwo9&!09FJ<9)SBZa_4>LA_my00meZC@%QyQ!b9P?od?{Uj zh4hk}BF|F~oqk&zuxr;#{hiY!<ezGnYKX5qk+!m0>%wyOMSmxBT-fQdU-es!_Py(I zzvFjYX?3W2*gaF>wx)Wz@w25~FT?LO?Ap_{lP5Jqy~V*Yy=8x2o3PT3a=)35Dd9)U zn!ol*xEU16Zk!&Ox}Z4u<(*x3IW%K=i_O0at2a)ZA=2&dYRmic9Iu*v=bP<z9tXb~ zNl4zUYS5|i>iTnISz%wX)3IkyHy1v>v5V1aLaB|xg0K7>_d493ZWH7+S28%0?5%E> ztX0=ibZejN`b}(gk9~AIOg5~zeIYr&byJ%9RKwUu+K$h%5~s+Yi(wIZb~Gtvjl{vm zH6hjyUwJKE*ZB45kG-51G&H?$ylPMWTxk6{Y5jh)XT~2xI#u2+s@%oew1G*jR)O*4 zWoFS=+A~dNPJOqkwrF8e!y6S(e^DOi<zc-ocYkc#7k%Pfbgz}>YK>(cKd<t330}I? zoYUF&@O_E*f=olUKdDEpKQ8>TB{|XTu!8wT!<gfVy*i@bH(yNhd6RsyCG?=4hE9vv z?x4xhB~PB@KY9JlyI|t9zV(i&ew;N`yR0W27MOKIa$ZY-&$|_#ZeQ~YP88luC}Gyx z^q;@5JoLbdmYIJ~*>kj?y}BV=!?9<^exZ{uW*dC}TK+Slt5M{rq<?SGB3Gq%>ogB< zyz*Kyyy#f?Ro2IwX7hJu9Qm(vd}rN^T%K!Lnc{}487C^|F-};>WBevn`k#!P>M!jz zRjOHU-F1|dKHdu|zOc@uWK)y+MUBU2g^e?h<Z860v)h;kiAc;z)B2SvnRjQ+g?XQg z_PWhB-|{)k^7X`o)h-E#xGQaBY%iW+vYT#l$9QcE>ob8?n}&0(Z^Gr*RSN%VTX^`~ zbY0$#uh;D>`+`*7@9(IM;wsF(q{MRQU#nVQmdd@99*>1u3=g{frmoL8t9R}3Ll500 z^#{YM%iGUQU-mtXFZJ>CsP)|e6HcF1pBJB1T5l*d^XY_}f`&=!ZBv3D6li+sdt{4k zxjyZb%G5_uOXCta-FL@JuYA$jw|`}?)P+S3>C0!TmaVn?y>tEKIVug}RyWV&#_c&d z>BM|yG1(?Xt2c)_K0EKPw!bglyt6A!P(vWXZ9&zvEjMS2Uw?P^OEUY-phgR&#y%-# z#pKB=<UJlg7Jpf?|7U&VV{ymwQ&T>b?tNZsJKJ`<kTnN?NpRPp^>)g_p&!lmR~~rH zJHb2mwqLBCjbVg=F>)cTCa1!X$&kX3%8<uU!jQ?3#*hgf?jWtWHZn9bFlb_3Nmg-P z*URDf<zn=c2eGlsxLuDuQGRv&5i!MeY`R2B%M*`c=~kzLnYO-cpyE37{E}O3axW*j zuVrIV5q@2@E5=4ixxcR6Xd0t#AkW>s?w|PXUXj?+CY6`?LVKg!jWmw_4#pUkigOch zH23r}re@?kt$cWy|La#L7PbwEv)x&$(j>K}b5<*!-Tuj~`OC@A-hE*~D=$YMs(PIg z5H#a7kIvKP6I(m$_MS2k^o!7Eo3Q=Nn<tA!7k9H2{au=<b#Km6o2m^5cYXWD@=9Gp zLXungdlK)dzEY({R!$;(-tEenhw4KXmH)mF?a%q_XyaRb4>rf1fKFj1`NhgxqpE)B z{#lZAgv;rHEBBmqt#zs&&nwhznP;byRLeF0)rBjc-nW|_lU&;I?X;=Y%;yEkg4)TQ zocXc=F2DHi7j0Wwb(>3DW}|7hWBJ6uj4ivP_TKEdzoxrEY|72EA2f>#gOBO+zlq2e zdpz-ggH8xvjN{e^Ih#(qa|IPk3f298k;qq4v$olN8fS}3<cuGW&)aT%%u(iW`Q;g| zg3WfC|052RONVbRo8Df!`pRTEnO)Pk#V!=;T;|?vkg&SqScB1vn%D=A<QX38FZbP9 z@<D)Y_v;lJ&+kt%7kF1zd|+aCwSoAi0vWyT-QFw?>56=Y!F#8!2$}c5JJ(Vq{>qe{ z5uf!>Dfw{+{=F|0aN+S$tyrZ9&9iK~*9Y<LXR7SA4z-<kLD$SdIa%cVDuH*i^_Q>g zo|B+|Rx^5S_M-ip>>X{ytfw&-9m~?1!mKC29KYyS9j{Wr`Z=Ei0)D+MTU{1^^i;~6 z&dhCg#rIRc1gJl)mpStN?Mby|mt}l-e)eqhd>t^&)$!7i)n5F`xtkxAT)5b#?0LD} zeyT|AqLoU9kvD=S{+!nC##|R{DD!qr`@u!aep;Mx+P=-UL;Q9AHRDA`Z224h%{Z5s zpE1Yr-8Litoqy~?+Z7s0FIzjru77^8wJMD>;M5G$Lcx=3eLC*dMa^d6*4)if_S|=7 z-RldFJ2*q;Y0bJWxWckk^*6J+tGVvQY}GaPYh&0BX)a`&r6accG=E`lt^JQh3Jj~0 ze0=Zbw1l!1?7CC7Yw2>$J&qHu-02mZXju}r-r0Q1ll&crm8~C%K1#~$?_r%X<<?@Z zwxc=P$^G(^6ZdVOzAa1h!<O!cjJ?)BYwDQ1Kg?m0d_D0<z-+hES+nQKbEd~CuMawP z+OHvgf#-Z~+ker2_<AC3lkUa}^QlapU+MHAUGCO1dtI5E(Tvh-6Z$vpTzpt)Cc`56 zfA$kO=l-j($+u18?JtU{NsU@`Y1W^K{wenr92<6o)qJ#NJ)B}PmHmD2G1GmU-z@9> zJVSBn0+&sJrDc^W<qelsrU#U39gr!r&0k^U7_lp``1b2h4WfxW$F?e*jbq)|y@=gi zXv>dXpIas`zh=MvpyurPR_h*q4oQyvcr!9{ZHX19=Yf=uk{7r9Wcb1%T~T20p)2ph zggt74C)r<oV?0%z&ivzVSZQANd4(RfTeq)A^sueJK40LY<;z#DrO#!b#>}ohc=TS7 zOjn!0lG^;)MyGr--|n7KGrOsL(S_qI`QJ}BY<&LSb6!v3=ULZuGSWoPylwdT+dC^p zX2IIYUtdjkVUK^Hz3Wv%w3h1AE8=#|UK3Jx-jw|rT~`~L&a~a<R77f~y7u$iOB_p1 z%)71sE#J`RMq2B_)&2TC+PM;<ymPc8WtrB0k(j=FMOCZ(nNx;g28PJRwThe)Lo!1? zxUf!S$YjVPr?9rPFd};ZWF4o8ka>&4z0D@ys|CKSK2XL{Qb|l<eOmO-2HpHs_A1r_ zC&X?qdkHG6b1z=bzx1=pK_+DWhu1=N57ut+TGW1B%ip%^vZg8D#7Rw4gM96-zclch z(4HsjFPqQ7pmQqqoJ-K}U$O!G%THJ6p0nBf^3B}2w;%Y-70O;;Uzm1ov$DBL&g>5i zHQ(=g9o9LOTCDEA#3?X2IVAK^x!+0|7S*V48@1<`TyHp6;2OxXsZ!^^>8=IS%6F^_ zJCXQNev#l6-8B*yUmSPk=@y^X^uV#y*TwH!)3(+62h(=S2y^axn#FBzH~%n?Vv6GR zx`PE(jFMM(us!r-?!EDAeXqPK*WviaW&DX2+2*`c@2|CdX7uk`A={abRXNktWXlUe z<G7Bj+xI`}c0t|kuNSX9cb$Laq=$_~*cX1+Q}TOHhksyVa^7mB^VYjPS?H+SwdBI| zxJSE|P7+&UQ1DJF*`Brh<cGDVS3YDd{5avU6!QXxW9s@p+jwRubj;j&#OO`kf!jIx zzgGKSThFo5chcO%c`vpoPdNYQ7lX{~61g&lm&X4$CH+lykFw~Wa;N5o)w`=abN6`P z6nmI*WzCA5%X!N-I$T#<e%bg~o%-DJlYy%*w>>-+tt!xAU~;o8rptf2!h(J4xL3W* z<oUB9wv1<P@WcI16Y3l?V$R#W+GE1Tb&NORf^f5b`&7@U7n65gbhgo1ond_b+vIay z+V3t|)tc;_yV=CiW?{#^YmzBU+Iw|eD+5FILX0@CH|-K{;W_s1#{vz9zqjO4JC`0m zWwv3Cv)b>IC87HF&HOJrZrt|TGMe>e;|}h%cm9N{%3ZY(QOQf0$ro^*Ez4#8r|WEP z9<#R_l%8DW_0jX(9Ctn8yQUu<_8HnuKO}X|WRLLnciSUe!`>W~yLe_*>{{zI-$T1! zD|}p8G*iAbXR^cE=Sh7JbK}K-zm!Ya?9ro<v}Q^~$HH*mgj3vGe%{%%GEm0d;^hai zZ#mMeE2^*FGWqBIv(7nzS2y)jfHrTAUd!%jPfRm;IDM`qpSiYTL$&q7Kl|9iIMi?7 z;5fY}{l3$h+ZP_s(D9!3zh=|BZKcYNs>wgPJKVPJ@{pU5c~~Q8S;1^M$(V0ClCzVy z)$iUmPk5zl^I^WNF#@k^@0?%0Xli}@jSkh?w<%vHpOTDv%GM>pce_egTZ(xyPx@=e z%!f=DPt4Q%>GHbk)p>D7vwFdJ^;eQhf(-mKDgyJ*2p37m%O+Zcy_=9Dv1BpRr6WnQ z{FaNQx2@#pH;Y%ZzjeYQ{zHi7H!Tge*(ZX$FI=en^&<0M56{A5zY=G+Fjxs)`8mP0 z+9797g48lWoASGBr#-jN*>%6C$|dP%QTzJ%dI!(1VKVo2N&nSf8nINyXIEC?71w+1 zelCL9-QW1PR<ug}Ph(|Pb9{PdcjzxGgHxuH{@ncKV)5_6QIR~u@7A}hcfZTqq&eY+ zL}7PW^F28s$>LVVM`?)#tEVTrUNrc_d|2nL<k8bdIpj4j7R#A0yf?);cyVZ)ZDNet z%Z+^t60cw6voZ;szJK+->zUX7-gD9qQaTVJ@b|Or{-aUlks|6`8<M{@cC#ly2Nt z1=&SGtW`o+W29GF2XXQ!@}0WtW2Vk$afqK|S9<)LX%C!l>Tk1e3SYx~d(*DjpVAjS zGup1~9L=rv<5#Iha&XI49*1Dw;1tGFx6S@#H!hs{!EpMnf@2TOjOHovod0aaKXvic z{r-!qWIC`7fD|&6f{W-%5(hwx%`HsGUh{E0-h65sm$2iBN3X3bwgv=C|91-}rjVBQ zU8XvD$MjdS=~ru?R`D(e71I0xk)qD7(gAEr^;fS>sNAmNo-px3noHu&s-t%ca&%`4 zR~qO4{4NnCuE}(-sC)9|=SP2MSl(e-Iyp*MU4p&%wQK$4H;o?UhWGR@_I~lpUsONo zPn_10<i(*$D{AFx67`aPhz3NToy(kmWLr_D_3oo9HpLW1if)|n_xY4OaSjie(}&G@ zUQKfpnBDwf@8(9;`@#*`yJ~j7zs|gQ#s5e<9$&9zx1_IE#QnMz?ohgZ!j#9e;=4L? zGE?gPZf#k6sxc~~=&=ds!gpL39cM+I(H7eynXTyizPDD(iBm0XbLofT%u~DM_TGMR z)*`I1XKn9W+w|54`=@_jx9x(??<135{@JkS=0-0+;a6@P_0!nW)3!9-b}C$Qck`7; zf9rUSKD4JshN~rt*UUO&YW|D&m;1!<T>^7vE;wdyVz=;RxZm^@j~{sM@p<&iXp!H| zl0|NF{%sGiPrubuEA-HQ@--PQ<@0Lye&nyLF<r|eAR^1<)Zp!|XLv1BuP*XgL}%N+ zbCp*u1ZMoG^ZB5DI5fZ3%0IJ%C-+5OU4~nbipkH0igdoeQXjuGFXB0?d1{^de$5ii zD~{4JUB?SGB+hATbY(jqyvAd+rI}TrB2u!>Q)ABOED5#v443v?Jtc|64?T;G<XqP{ z6lY4N84GOU@?Tzj#n!Ta{z;8(`(Mn>kGd$xyvpbzx5_T1i$zCM4V}*)`sg(KfB2DK zzsw3|ZjpQ?^N4%0`kK2!1&bKB@=1NHx<7H@;jTvgsod@yP7TMt*y}nQv(9@y;iKT} z-#YoHkBYO({-5IMr*qt#L1p#jj13}E6{mzw&*j#hCFtJarF7_E(FDEu%CVt$C3@HG zT_eX(@Uu+JsVVJz#P!w#8g6^H9h-gqfQ^@rhW@J`vW&aCSlJW)I0S?=%xK7uH3&F# z=hW$?C3&2m3p@{6muE<=TUW=j%w+9Zn`b7gC;CPl7dn`BCSm2~;`*rz>b-4vy;`On z(cF1^V_%_&o5jl>wykMD7+ULO{SGT_TcdBk(Px&PTc)pyi*=E{t51~ax+yKSH<nyI z;$--z@xq1q_0vtB>|oxM8f&_C^63lz&8LeWF1c~CD^S0({PrL9-EAAzeQo4gb<5M^ z>m&`ABbL`r>ofB=*SuNuLjTOZTD6;XPnmVZR;=G4&)D*F`nx5UPq*HhvgS&K`Pv6- z!;kd}e>w5Re_Fx)9ZU5d3S_S`_bWKx|F<PLOxYmYsh}d|efB=z<D1uQ_OpmucXs*u zo7wXkdKZ2@c0}-XdfJU%*%@+cxQwj6l@;B*GV%B2slqPRANTcm1ZCg7*0(rD(?U*( zFOzHKOoJ77?6P$#9{6qBpK5(zPMeU}gYq^OhTx`q+dU#~DW|?tcqztleNKpzMC#vX zhh*;yt&w{Bb3*n;?wl|8s*a29zm%IFC^A{d_(o*pzq!tj{R+PsMQA)cCE#-RzSNux zS2z5V+&ryBdw)`oV9)PlZ-toI;mf;TTrmm|nA8}P@#UUrqESiwqkVjZX%p`H=S2Rs zH8R@wTu3Q<p+Cd39J!5cbw~c+eV<<tu#ETAB2JN~N{cd@YvkYjO1`fe>tmC{w>i7; z_o)?2%p7@i=4_Z!!GGQ&d+#siWgO2<wc>v<Dw;%yANX%<%4$8uMR4C<tJZ?^Sv<=w z_iXtrWb{glangyOOI@+8`GBqUNMc9?Pbrc%_+esZ1RAT}OxEB>b7tqp`FdwN!k#Uy zF?}C%{&`^ZO=61bv`6m^G7R^{n*E+Ek|=MI04l1>@BXdX!QWuEWXXoxzLIW{mrk#n zQ+uRkr{3<{IkgLTkAKx-)ht{R`D@<?v1()QLq)SMo>q4Fc0t%I?#4D%hfDh+xsT@B z|GQRR>vC<$>Yqi*rRH4e0vaDvc3plDap30VYXxE^%igJq)$Q1_-S<$L@bl=k>J6L$ z1rsK%o;o?}<%ds(ZDmDFC$81)^Y6L-Mj`2}t8jl@@TQ-dfA(=%ot^)8VoqoI_lrvn zJFMep+?}+jbDwh8>rIP`9oH-hxvYDweQt;QCSFmIJih6XGM*=bZ8?6JXii_^xVocu z#{ad`Lee%%FKc$Lt^bspK3g~XisR{>2Vz}wl;t#%d~a+yYUy_B^d0VPZWT8qX1tNO zYuC@OBbEPd!tT&z7Ty~yq#v!=@%hL8!nXoddzsw#YyN0?7JQOtWu-`X-Jx?q_9uJd z9#=fmd{rP)n6ZyzR-M+KeICMVww*fNQL$usp!~<wUZY7Z$tHHsmrR}R@#OQl48|)B zhk1mKo?mdq#?q=v&f?+m)8RA3r*hSKOj;Ad5w9M4W7_T2&IUfK6+RZrT4<DWC>(v= zdM`h!WlyMb%Ix^8e;1l3T5?@wPYB~<|0Q4`v@1ZiCM4<b7RQwPb$kC8*Ax^8Yn=@% ztH0fK!mdhCMB%J$<Cd?v;+!{Uy1RMyZ{PE$YX0=D4~JIrGxS`1bZpfghf4nkd;U~D z%5h2ha98=RZRC+m@k=j0?z!2bb&*Brm4?+E?vjstt+`X{mp=My_U`G`JK-@+-8X7| zcGd4sS;bngzHpc0mh_X$<0>CmA7A{w>&m<<oDL64bvAe2G_zNpwj)+t|Fvef%vrPf zXHHh~3m@UX$f_v#!8%<&ZT5^qa(m9k9q}lbTyD5MeBCL=&1*yq3?>I_<wnL#YF7Im zP-&9UlyG}h*berZPc4ggvv*z!nB~1lBF`vv|J&;qlD%{buWm1XxiGfWEKB?6{*NCd zrtZyW^49XJNOaNg(6ct&Z|?EI_|b<JccmKPOpo-SszA%OT=%buXHVu%bea{nM<6$B z7N7a{?db)9GNNZfC%^w-;h&(WKKs8lt8|A_(q`ug!D-yz&qg2k^?y&r{De<+U!7}g zYrWdi7Z<EtTU0f@Cj97PkAJ1V*{!}`F23vZ-oC>3)XPVrCX=t$9$)`gfkEib<B4a> zWV{UK$FKFyI{fhPzko+dSz_;9m9^DHdwcK3W|<UoN%RYBYhSeZ8S~NA{Ze*npV&mt z<jkC({4(vNWgLevf5iMu#jRf!ozN<hVsFl!C;FkaY{s02hge(W9^cVjJA2iAonF?; z6tj%kFQ)DC*<&uBQd@EMd_fIEeAfl8MGsn|H+36dD)_js+*OE6_QfjRPyZI|;NiN` zGnJ<=(KwJXNIUubyw&I4?w!BCShZ_L|Eqmb3{T~}djcJ!74N7lIzMYq)r1XVX7@Ix z9NE|EvraF6g;RTiWY9GGEUDzM`vL3aw8QI8N7@|gUg46^@&1zc%zA~(nGy$^nPTs@ z=w=*9QBf~@)Ojn<#pz+0@#E^Ut!wzc83b}@9`QTNV7=|a8#cdFo6L5<JhOMv!5i88 z)XwR9=hSPL_q<KryYl;Mi<DapO!b%NzInV)?xg%CKkb>8dC8Kja=Ri+#C|U<tveyQ zMEv8;atE8@roN9QyQ9~wDU$9D;8vPc71le&Fu}kYdGJF|PKP0pp_HM7Ap<^MoeW;4 zmkAycA+6XpH8Hg`XkuMTR<RwwqDVDi^7{p9$*QN_`s?m)bY~PLrr35&OZYPNiRP0H z(>}MXly#5-726Z<%4&*OM!i}w)i@#ReJN+*<#`q=%_X+h`9ZHX2so+DSXFjlo2vrP z<q6we<pm6OA3P}|)q2C?R+L5G;^+<gP8n3F3ThlJpL!<a+sf*n3;9)*o1V5@i}L-X z@L4)=Y1WZGzR-qmjGy-Y)zA2Tp6%<hW0P+@ydNX6Hsy7SjJd~M(?v=zc=mt2z{t^R zQ#(h&dB3Z0jGNr=O^yzy_&0aBUq0|HzffrA^_$D?PI$@dIE6v=ug=`u;O)0J-Fms^ z=a27U;_`=+zRa83Ru=fB(0;BEleDxs%MZJ-Ob<qWcN4bIgX_;fbeS(~Ua?mGpS5$i z%uW}FIVQ!s-Rj+)KfZY4x&2*OcWUUO=dIs2*Ks|(bKQ!)ahG9=-^Hn)XRF_AU6Wfm zL*%EY*L`WBiPM@ZmS`<}+}16dyZ_$;L+1sTC67+vTl+*qzW>+Hz{U4=pUAjXxNBFI zB%e|B1EVt{T$~pSJ|C`RF<hJ=a{RfU&htCP-I^-l?rZCXjN;bLx#>8^EUAF0e1~J$ zf%%CZYoF-|3#=+xrDp$M#jTM0Q$pdZH`Dua*N8lceX#S!RZbrN^J;FVYQJsCuhO#c zvs@PQ_T7sm-#JSKqEqy*x5takezNey`xSE%rT_aqw~g8CnI`uwe=37O*RE{MKU01^ zzj=9jdi<{KJ_q+kXWrXs!@YC8PHn4h+q+|;F&64un#{7Rr`-8p_?BDW^gDB>h*kru z(Tylq*F84pqQZjNHmW>YyG$W;mZ4>$uJGZehkxQ_qh|D6m~iUxu1i0soxG}Jdu;c^ z9R|01ukvU0e3@*y#qK53?}o2jrb$`5AIBVXmF->W@}j?}es>1btnGbqGYgK)>Zo(t z&J$2}{?5u%7d)nRzCWa>dA#PM>IK)xSDMpbCL731FPGW1k?ZV&2ipu;n)iO4+3D&r zXTQeY*Pf|Y4B3C}IJqWpTV;D)X~E;0Cr<vd-W?Ksp@?NoWumf<bV=%=_g}o-3X*5( zo?GBQEm`Kd>fA>vjLD)gdIu&+ybpLP<l%p~i@&AwAIG#^jTfbVE{J~iH+MGEap_xI zLhkVz-ft;5!YktDYjNtO#?ggu{#g2~S6=I<5x(r7!|ePkpRaCzssF8U(_+QAF1IeJ z>d()mZZxF4d2;x`!HZoBWt`PQBxm?CpAI<o>W3KT(#2wX!rR{^EkE(j_@j^h;bx}2 z*$pp*=7{Z0zHAbBrueRq%E>4CUNg_nW_eu2xnQDM!5yDtE_so{b9P*)Ugq2L&${K1 zcljj4+jqKm{ry{{;rjE%yqL`5+*hyljLvZhzgRZq)$B9g%o`&7zuZncGH;)u%)j8d z$;`JdZwN2wWfHJfNT|ETW$;x?c1mG;-n|78(Pzs~PFm<E`%N<^LVlx#olViE$G@Mk z?X6ZX|Krght=j%tRWGx7=SkZW=T>ig+;d7U<f?d9Teal1>rH-YUw6mxW~%&aYKz=E z*D20E|K$AKOFha?FJ>$9{Zqc3%kqA5mU{JxrhEGxz6WlI72WK=>lJUx_2VrCZ>1A0 z!=I~O`&YQMQgh$7kOPht(d<<c|8<vJJrAFD*YE!M>&-K7d2`yw7Ym$R*|u!+f6qjv zl|3Jhgom^Jx!vEy|5x*xvFAe(r6jHN)fJ5fHKy&0|K|OFwEfDJ{H~vS4l%sGkXo%$ z(`0K@ZTvr#e~V#|fi7~ftsp1IkPa@UQyIz`5*bJx3NbS_G&g9<6@;6~&bFW_m&u?h z=N}UzgF#cycZ3Whq3tlL*Sz?9PAubNQ!QAwvi)6T@PGL{q6+TwpRTsAojv)AjZf!} z&0Mw(O*svhES?8n)$rJxyJeQy(vL5;1+RS17<5f!exp%9K3|!5fYOZ{ft8De>{s7P zxxPx^Pv_bX3l<v)8@&uz(eEtMwZ~=cj+s{r)_oNGdeB0#sz6ZPT}G!MKS@!-u1J4P zYzVK`#7O~DdUq}KOTFxP-Ej8zgI!D0?(j14Bryd{zdiQ@gKYdu`>67%BIVpku1{Dh z#iuYt+1NJJpG{5^e!hS0{_KF2q0KytO{dJWz8Jjd=eB~5Df<?idDczsc(LW<lNs+% zFfqQ-f0lo;s$*~5%|8pPbc|wd#^&^gpUnRtA?!3|@}F7lwhONQcau?KzIEZbuPSTJ z5`#sLuBjT#y7gS`n(m_~fi|4K->nSNKBZZ(Z<piI*##_>tA0HyxH4_toTE23Upn)+ z?^?IoA`8Qx?T5|1wcmW@xf*=Ab$#~x4JOC<dUa+#K3#o#PEN$(?|iQgzqHm|@09gp zHQ&9vrk^$IABJX4crb5%^rO2oZ{7VB)w*|S<RLvT1$T`#kIpgI8wuQ)TKDEHm)Eky z80p;`k4EsEyt5=LC3Bz2Z`Nm$(E)px{ysTj|8L`?Db3DZi%Qm8E}Ez5?|=14mCyv$ zb9}qFTbS)smju0-;mciF>Y4BAzah&#(A<Kl(CX~14Yq5o1-h2M&|_XUv+Q^LH?Nx6 z{fyzezkYrenwquldlKjTI~%tYcb85&t<|;XBwu1smFL!@b(1GJ{w+H8OWpGE#buU? zf)5sbU|Dj?(WbBLTrbDdl>td7&-^?(MRC*SmD0yv?4IyhuEN#*k$A+ssJruvpE_r+ zdfUVOW=4m8$s(?gI+>GY9*VFid7b@u^~?L5l~%_lbXfh;pK)97$wViaXnk=m?oPuC zDM@TDK5=&^vj56CW%D<#F(g^x_l+wFjZD1fcS&b;9B2FzRzCle-_xd*XPMV4p8du3 zBDnO#OUZz(H;W&<w|RM^Bj;VFLweR+=ZJ8rro8C2FZy=Ndz{%bk7v$<)Bh7$+MTrO zdzEG#&VR!@U0N{rk!V=I_?;s!kJP@L9ABieXXSj;Sa$~RLqFHO&E$G@JhLHuX+u=+ zydO{H^&X`~Cf#S-qP41gfy&=my2krn?b*+8bA!kM*)^<ZTGD@|)bG9PxA(T^gRAv{ zuE8&l*y{B<He_u2?7){(sIxh!=JYmWJ5F7uwF%~li}SZiGS;s4^h@t<<PPj{P`R{a zma6RA8PDY|I!WH>vG(`+G*!&xNKw<9+CzI;%XK~D=dPP~@6_Z;y*lSIA|6jas&>Wc z(OQGKA%Pj941432pRNCV_E)^p-MmPPgC@`XEN+Q5gx~r4v51+ce3#b_jTa}xBg};u z`PH^d%?^2D;1_ks_g2!BgBMsAJesv=&*IHuI}C36U4P{BtlCr~<jwy-{}+4z^J5Ts zdDzsIo1wJkZeHUJF6*0yIzfG`8<szCTM*s9{+Z`b2EX|c-<Ve}(OPHr?c>v#M*Fi4 zG3ba31*xm%B|nqDS}c5q_4&@Dv4u<9Vsjoa*f*<fJ@nn}(2JAuPx`-<o_Uy3UN7mO z;QaWc;UCke<4WHH1Kt_jcAR~D&R4-{n`Zsk_sPUN!cTdX*i#NZ@lL7E_Ky=nRnGs~ zbxPn`QFrO*wTW8U)nPJc{#lhI|I`-!cWHxK+ksGHvxTlF@4QIN?3TAGQDj#>!FuQH zLa)7f2Ag#Y3v{&v;w&px>7`ft{@r3MKFL#|sf_nxZ?4<I-JbmRWtkt=JTQ*TyB&SX zYewn3HIg+4r+$#kw0xj((l1KFc<-NACw)&U>aUFFDK@+JPxknIt3$j=_dYCMIiuy( zO1r3i?2)%}Ud@T#)F`YiIF+|&+q$dgw?)rUso#?+>OXDoi8mc>hA!vUO#jKWmBFY% z`%}G}+q;$LIZtMMl+yJ~7vW7^U}C*TKbdp+tGh)HZ4dnE{h)pHQR~w4b1xoZOYAtC zvOiYJ{m+R>H<R|)vwyVu8F!;2GG^{9(US)|SP%T1!|~bgQh)N^(;s*h@~u}VD!qDQ z=DdG-@gcbfKb-mA``l~aGw-y)@uuWCIyYY>tUMAF>znia--^c{p8lSHVD`jm>B^A| z%hYB@^)6q>ljKl-z|~U6^Mys0;guD?KA6|7e81r2Ub)H@vI~`7A3dnsaN>@dDXZIU zv(2h=SNVU)uX*KuMg8@{<4;!X3!1VpVbkB)=Dn43L|^Wd(EDg^y>wOg+&)F^9Xqu` z4#+K@c-h{!|Jvlc=E>Gl%6n(rEIY~S8ExK{X}rAY%f+e3H-wp9Dq`H;7aGK<IP+Jb zYQi_i4fdP$H=p=7WuhW?|K@o{CY+CXYv=y>AtYzX)abVEn@BkS8FrOB8dD@a;wOLm z_pruh$MRW^SzgWiZR1;Uw8)jeRpJ5Tx5JA=Zyjz}H7ho3$;b1ZQ!X9(>U3qn;~%D8 z3}5RxCYkN7l1psbB)fC}S1Wbp_LgnWC*A#Zw4wUhAI0A<Dkdy*QVov!a!##R?2^^b zy#=4%Gd$$&>HDiNTPK}e=bvUe@8&rIyf&pi!LCaA-DmC?x%Xw|AFR#G<qD3Mx;jhC zDq;DzbqqHpne`HSK3wW(`|5Nl?1+{@UPoN`PxnOCYwkK0n_W#Ew4*Qn_?a<BF(zPN zc!tYi{iM}z-}UWE*W0yVMU6u0o0NmjO@W&1W|HYrLU#(Lm^<CRwldDL?rYdGH}+jc znU7xzRO~t^@>r>M?~{%*3v3QA4%G<w8UFh6+65NJ{~GtOTuR$6HAUj%+wx8Q+ub(r z3hZl){=0K;0`sM1zi;cO39kBc#8}@`%zC0`PREWD%nvWQT+2$3ExcY(_q+K?jKD)< z#-rO~gPGqohu;j+WzN2l_U+u+i6(Dv9p6+WJnI$D|Hd+o<MS@Zf79RUnbmbQJNok} z@xB!k=DyBOjL-@WY4H-=vF7m?V<Tl&(ZD(HPyXo)>D%aYJv{gL-8QC=nul2ryl<T1 zCNe*6f3xb*{0w_(Hl5T)ckxwG4Dvnck&osZ8moT)H0evB$>B{`=BZz~U@!kKKQu(# zjO*^?IV(^3m@a(pF!l8Pz{yKzxixn0F88^$-#4zw;ObiM*Znz`y7lMYhp5l^!g_Ch z@&oy>rV5`q{I?sMUT!;OHk&u;huxy2Y{pdSzotp2Pyc%DrNMJj+~cPFx&F1cU%5r? zG@2W?dU>qcxlMDdyqn&h(%nC6>XWU1RrZ~IJXO^=G4#`fKfSVwUiWW0Wt~5*cg}V9 zDarGN30;y?W<Nf*&h<lSk$hl|{R<Tf(P<|g{?wk(WN!#qs`1_C`;x#@DWCXvnC>c+ zkd1ZJ*=V%o_VIIe9mhr8W|!~H)~fszzHQ|J(XIUljF+mmGzW;es@ksKrM~p~{-ah| zlXq>KeNRq-<7s<oTF&3oq3JV?+#Mx*m7lR_@Xk-28yu23D?WD1mb>R3R&^DN&r9)> zE@jQXnUp8iJu^mThQzY^&)HRcVQGJ5BYox0IGOC~d@FK%$C<TdZr^iW|9kPfb^qfD zHR4eZ7!uCqpY{!Sow-sV<WSU)P?r6Szg+}FIxMZX+08XbIw$t-^p)$T_xV<=s+qp} z!9AfB9aFDG{9G=!xov@bSM;L%kQvF-{MT6BI)2bX`KvQaS+88o(|c2lo$tJfIXgw6 zs_c=LMy1`IVnHj;-<fBN-hG|nr)ZLtUvj5C{&-Qx{DjGR<&jf*)!SRkt1E9jmf-&0 z7~b;g4f~SU>wV&8UNrwJ-4*MU@9*jOf<JX}OyrC=r#e}E8Ga|tS@6u^ZRG`qH7A>m z?wtK${&xaz_EVLG8TM@sKcCqD_h^$lpla5(G-2V<!wo{uUB7S!?7uko)uV*;Z1!)4 z)349AHg!|bZ*LFHS?{^EWbJ~|3_tr1Ceac9ly<jGVg6xmVZDCpf}8BmysY-Pp10RI zme42LQ&CnqWAgj`jt<RclWZ+BW<2;-9Qhzbx#X35OxB*rFK6qPW}M4E5N?y_{fc99 z!R$qCyI6FM*_t<O@_ARD;<Q~!F2nA=ww(KiGkhPV7^-!<&MWKYm!$W9QBrv7Qf_~_ z=Jw({4{v|U-!cD}TkHI`^i={5hm(YizF9_>ADlCH&2PraXW5F^d^vUZ`rKNrYtLwX z-|B{Rqjh}zitV=_t-5OJ+9Z3V<Bp50z3ah6A!boF9$bsOj{ClSD;!>UZ0lSdx%OWy z4T+JqyZJ9|oc=X<p5uaxz8ksJe?)CMDamj{Z3C0x+V(if_5^MFPiv|xxjinWc(+;1 zlPwb1Hu=-Z`!l<iHGU7SzuqsiXkzpgG0yEz*q(4tU%%kqjg99kibTTdZ+ZPTzA{1T z%<Wq_mzss7xQ-v-d3@yhy-j5&R~#$*qGdAMky+#L#V5;bysf?Fdtcv~P~f`aziF1& z>*EieoC|a~Y!SPs=!azei{Q%(&ddna(_QsiV&B$|S*JL@*?qloO#D2bQDo%zoZHV5 zoc5kLFIF+}@Dkg7s!LY>uG)IqxIpLD)=7z~E#EdfTK_cXk=gq5iq!sw3_Es9wQX0f zOl3N7>mWyg!t)mH(ku6$eA~nAeNMMuQkgqE?a8m34|vtwtPK}_75lC$^G)_Ur|NHp zJ0h3Ap7aV})>-?VweUaprTZI&1i8~$HVLg3+4pH0lWFXa=t~b+W?ozSU9W9P<aZm% zN6~o-_D@$b{+m_iGxz&!&2YZVin`}k^LJ%FoTq0yvD~g_@rz>BS=%2eII}XUwA~gy zuweEyslO>##EmD;?6-ZjC;iSX^H_VE+M4Co|7GODk1w0n`jB@ulgx$oSJHV6ch~<; z7xj4X^J$nwL*F&8^K*Y6IxKuSZUKki%UNF+?~RH%Wz+9b_-O9QMT$}ldFLbF2~1d_ zf0QvW>*m(NI~AE4ck<G&FZ-4@<7#JE!gO1M<0<A^Yj=wAKI*%@;iTr{qOg@656<2; zd{TPh<Bg-;93~rn@a(Po+-TbJnswfE<()lyIRo9pr)-|3BJCja;P<xR{V#Q=YERG! zwDGZ&DQR19EhcqVtN(oo*Rx%@lT?0Rch@(*KO^z$kK-58H@)6^O5H?prSk;^-(8Hh zZ|Yt<YsS7a?!2S*e8<&}Yn65TDvBS>UYy0m_PI7*`AG2`yY%|TSuds>IP~NOU!Mcl zwbFWlwvT3fYTF;mx^OKKJLZ(}<+^xX^L1nCmp;0(!i`TBDqY?0#uH&^`s9`G_Dd%w z@_hegZ_Ru4s_3pcwd_lB*KNu@>C2ZtCxP?H#qS*_HoV@s<%xLZnf)f&7ueK~1UXB5 z-Cgz1`i8-WBh!}5_Pi2e`8DEVMrx0^;`Sr9r(&+OOudoOdO*!)LUd=X%9#^?_BFnH zWxy0LtNXy-_4OU+&+KEle?a8<^IcUh=A6!aDu3Xo${o2Y8$)f9tZr@Hy=uogRkNsX z^V1An?k9^ZN|5=KUCVl7`@i{%__v?2ou=w8qjtx>n(gPT`z9uZY@KJEdrRD2dz_vB zllg+X-v!f&t4~ZzxvtvI>64>2W0_X1#-iehar2k5YIA8V>G~-eRrKj2Z)*G|zR140 zC$EK0ah0BN@VD`rxrTcm+g5~K++4L}mf=h0ggXWYbSA0$9J+j8J=Hb-`?MWVCb1bk z4J=#UZ$HzV{%)?r^r}ONnx5X<q8&abpE{kp_t;dS7VY1=H&!?EF1mL(_e$cd)`q9Q zRpbjYzrMbwWxe}uteLYSPgU7bd8L=}{YJNcd}fui34WT{D86S`WX0^KYUz^}AD$RJ z@B8*(Z}x7(r;pMvD8y~=T>C+D->tCuFFi#9wirsYZ=9AhFH_~AP|Tut8-=<K&Uvt@ z_Rqsr1-8EWy&t+i?pS%`{&%IsXC*FEnc8cV`xXbt3LpQQ)!DWntyQxj^?KqBCdTxl z_cwYHDi?F!`f}^QiW98cwm4dJ2y3oBu{F0jxUJ*4L&Ra>Bjvffnq@R=-dO#f+3>(( zk>uUqOBiq2nOa^v#IAPjij#u)3ih4}k6L%gh%7Z=Fj7-3a{Uyg7PXqw!$(_}^U||E znV%W+etk9Q)49w&|5|U_$5%-=r5pBo*OVMiKeJ%NRHJOYWC52aUGa?09AzA{b@bQU zM)J!)eZZGy7`JJ!;7+3p+j$ub_S_WZ)p*^yvpP2}S2|*!{=DNWTK6>Ucy{Z+lFw(3 zJbLsyYj?K4aM6caeurMCd6rs>UN9te7BARhV(|3af+?S*JOd}Vewyp!!D|-&%<jq> z0p%%@3U>`2&b4D<tmDwD?(X~Vu<~v5jwuG4BmY&k8qJzhA-_X=ep=_Qn!xk?m#U}b z@T4ncMmp<1(quRP5yHr+yt7O0va4<151-u2Rc9sMD<1vt@ps3HSt484%yD1W#a;5& z@6q$Cp1WRbHJY>3X1S&3*0YCxr_T8F#k=g`jY#2jg*&a5ScpZhY>qvrpexDc;kB>k zQ{k&4dw>5rIP26~wRqXvce<|oU&~m{`q95+?WvHC?>qKfoHS+aPRofq%D!4vO)!)8 zV_x!j&p9vdmV%VKKa9kh*{kb2ZA+QEr?gI5uwU!Ko^#r-c7&F<#B4}$?a38i8fZWH zL11*%;%BKEtUD}<7ckGfSL4~`u+dg#@7n86*_od@Zi@SUJM7^@sZLINyT7Kdxo2KT zS+a>uy@uhC=qlz%mwW!T-f8ygoOrwH(z`7_kK&VK8Jw;?y?RI4?fIFlM^ZPPl{;aZ z(!43u|9+luugBdbUlSIj<*&Zqb!+j>4DP!&pSL7DJ-{V&<Z-TXM=;M6t%nzw|EH~W z+J1R%PvFC*>25pNgZ)dUPI&W?-)}nC`bV`YTW+Lk=}vvJ>BzQoyO;5s>^;0ja|3It z=-t(GPo-Ssm|S@Hg|)ZguCpP++lBv`{(1S7*W`tW&4GkaRf)2*p0l29*^?H&KCEt! zX7kmkoo91m{9YeqT|7N!&fO#3At}c@AOC6kbWV6q(}#mgA4L8zFn)C5*R|=fYAZ|r zYk5j+WuDTK*ml%&##1x>BR|hax4AZbS|XJ?O|#O8>&zxmd9mv2r&Hg}ZfLlEZ%MWl zmu9($V%FKE6AjCB7nUtLqh58VZ_P33w~Hn<{F$rXHi02ZPr%$hI>YYYxB97^tIAyr zpE2IpI^Fcz@sB+l?j*2&-Xx@HYP~Tj#h=lq_U0xn<Gle(tE<X)tO$Owx_#Bnm8&-9 z)+O<&Z+WD3qxDKZx81hxi{IX?4A7a>Y<cP2k?lna2gTkVp0&C1{pq@8Jo`INDoy(- zUp?ns&bGEkkGtf39Xe~ArgL(MHvh>^Y*2sAef8tC#68Lf--};1KH!|1ab)I&oBA>f zl)kDteDOV}SgZK(e&f29$#?3WyiUppd%dAi`%3fMJ&hN?2hDZOTep7h>YIMsm9E=m zN*NbVOXqEKnzC-8c#nLKwy0;=%&%WInza86wa}h&MR}Lz?ZS%w&2M`yidcRrtvLAF zd4t>e1v$(Or`I0%bEv*ydZKZ320v?c;^uHx=|J<a{3qcHQbSoXO(s56-X^KEZ#D0l z-ZK)M$_0y#GJjdys(&<b+Lr%<lMnuwDL3a_{M-fNndg)o+p_Xs=&!G{s%KN~PR|YI znkZ3}!}WN}WbqjblroQHPnwa~_UzG*r(Qdg{;6Kg>y=(4cKLs$i0)R2Yv&7Yom=`r zXXXdl8J#Y5pGsLQm<;Y*UQsJ5edMgVsqwFndj_Q+Uw+$IC-H0B7rWPWJB?nJDdjD` z=<oJCwy4}x;%@8B=IfJNc>XNEU~ppHQN7LK^Z(`EC@s{TBQrNp?X6tWgFE51p1eE! zTPr3Mb-da%b?0F#&THTPe|p@M+iYwkUZx-veOdBJ`LSOM)=c!YYGS-E%XTB=Y_NUZ z2ceCLPGwga<h^Z;<~+C_vUo>ANBq7Lg|kvMVVU`E0@b>bCp7i%z5Y7maYVIj^P?9l zkEv!a{;t<_J6mn{YH<$>`)?eZWczxj9{M%o@O8W02Snsd^SGw0o#EnP`Z_|~y_n}b zBYUM~gkitK+*>kEr%GnqKG2Vnlc;-SDbc-fqI{H-`xkqWhb67A_KL(epIaW{Bkf$2 zJWc3%Vd&id4URsS=lplp3VXivx5_)#TT86UIgh>DwNIY&e$12TndcVyt0ncg)b$^j zX1VCA&$rkaayvFeh6lB=NGY7*{VZjf8YiGV(e>Yz|8*_DH7(zH+{sj0!(6m4{Gr*} zT?&VvJv+Mg@)C!=ZTY<23}S*cOSqQ(e|xF7Gc_lxYsuwerRuc_a?P$&k6GlYIzARq zW0_fc;GVv%ne?B-YL{Fx?=pH{_Xzhpve)oldsW)x;CUUZ?#D{(I-Pi6%Eb)B<==u% zTTU!F67t*X9dE^)cbncV<$V}m+VtXl!|bR{y$t#;ySJR%{N0yjrM#^1Q?6Urb6;4o zD>P-yRM>mY_)p%=yxGQE4Pqm%Pit0^D%s{S>yyzfo($XXGhXdpXR`FAO1)$Gr=a=U zGW1>9k`q1GR+=4FcwC~(yCPA5`|`JAuYYamkTB#HI?d`o_k>qRziEPh_mZi1{dLwQ z?t0klonR-usO`tAiFfZ?1@80nPcoQL(&x`3_4cmo`MCWxVn<EBl*rr&NW8G#XiwrT zVWp~qjT3U8`uOTR_1IUtvSGr@2GOrmFS)gz%oj{4aPjiH-(S%&P4ThP9-}l%jeuj~ z(|l)~XIM0O0*72cL&kc(dyU(<Rot$r@O5tf_V|wFX0bDT8H$-{*1WssF*^1z|9PKy zyXCEV%Vocht3PpcX4trMoLj6KxIwRO*DqZ)(JLa)SzSKH{&^k7*>ciS>+2NW4H1_G zcV%6UvU@!<V0H$pX@j_4$#-QX>zu63EPtIvJTF;j$y!%+buHL^_0^nRZ}ld+G&h`{ zm;CtczZ^l?n`v)%_Rjy4{@E+ze*cSEnNs$vyE0b`_<E-rTk{Hix1I6qSyqGE*Z(h; z-CKE1_|4aed#;{0W8D+<YlrW$pr`DaGk-OOTkT^~nC8nZpjfl&sO~*Jg?WFU_C+oB zGg~2E_hHiP3{UsF9daEf6O7vh@85d+x~DnCvgdMtM%kbEJfR)!*XIbnKl)E5c=Md~ zC2!|PmHSj`ChgDX5w}>tli1)h>+cJb>kQjYnJf6nDVJ?bJ{K@;&+>PS`}?+cd*A9> zk)6GN;r*I));Q1U+J`nh(+JeA&I*o5o2T-;d|IyVb%v`muY7d(;9pX;`&61DOO~5- z>z||I$KTjaEt#@-!->+qMdAYIT7rY5IgZvPBt3`^UU=u|Ywv)U@BKVKK2u#+!tnFx z{1ww%<5_=i7CW`d-!o*(H1kLiWxF87meXSIR#j*_{rP)OY<0ip|2xa$#Qk^jS-Yw{ zvAO^KnwiVAx#?@ZefcU9{rkG0+)gJy--BvP`esbkK2XZIEsU#kZt}lR5gyzv8y{(9 zEuL>uE~yiKhsTm_hxoJ4$I~62q|Rty3w>=;v*g9ynTPud^v?LLm7d8x=fIUsKYpAl zeV5c2x1d9vQ7hj<t-JNA>%}I^iKWt?%LLrN*3Q3JlQ8YP?AJNZ754kA`QLG1R^8=1 z=g!TiIrs0$$~<$nvGx4_(4(g&cHG}<y8Qv?3#XTNpM1}K=o^*DnpyPp`{ev1I()5b zq%t!09xT(9cHGP4TN|&gVQcfODtZ3@ZR@57xyXbmD}R6H-5|wK=9$>`W?@*tozQOv zvKvB=T+h($$Tfe`x18JJLALmGGr`5t{^u5$n#xY&)p=O&zuob4(j5n-@5z@Vo6dCp zFnja=#>?!4tNWi%{>^`G^4S1)@6JU_emceNd1W7Gtvhjb4$H<S%{QlGKL(phyfMpb z|I==!%e~;q!j?@2n%XCgt$L@H@&rAx*FIUf{m`q~-}GefSaypWtngQLoOo}67ss5e zxBR_FW?1V6uZ@ihv2|JHlD}{6mlf@9Th>f>H)U`Az+cUEpLJo>@>6Z$F={IEF9a%& zZ9Md>zO?(=weShqe@YvC>uiE$r`4J9JduBXU5!6%>s~IWO$lQAs@|?Q@fLX`YH6>? zIyGW)P->9Y!E^T`4(qmj{FoT{-@4m*^@D`XqUW!u^E;f|))$;!bLK{be({8sWwL)R zo^yRH{N$YdHSyZbl_kxLg-nw-u9?%~{;F{ezummx=%NiL*Bo1#e)^iu!S~;Pq#XA& z^m!pK_c*)EXuI`yKV8lP9Lk=(&hbJsUQb$Ru~z;OU;L>@*CLJ!-J2S%yrOr`ru+kb zZ4Zi>LSyBpD7*+vOpgu=Tsc*Q{r0c$lj`RuKa*<Q*=fwFzojL=-!fsP)zsZVDzmOU zbu&|8`jlPWxM*+2aX+hH_cn%ky?xG;P;))0MbIrbb$|KV-x_TfHk-M(XL)_~*|_Ru zt?&g!^%s^0A6QRcu!+kq>NJnP>K%sHa-#o_xEkNx9DQu5ysY9`nIC4C%Ka^DjSs(M zxNo=jw#A({6CRuq>uL9%X8!DCrTo8ny236~cQ>EfxmV)#nz`W$wpUyvr#c8MexurN zS~@XzqN&ljgU@^RcznDlAT+!9VeASH_5J#ue-F#wORX{9!LZ==uP1+eQnndqCSIR) zQ+ugT74PjRwg*g~clb8#|9E|M(I+FXnm-pB<$6_aPCRz2@*tnC@RZt(i=GM|K9IOr z@6j8h$BC86U2i-mUtnuwdLit);a-Qh%<8in&Z*yK_z<BrLpfo^>!o$tJHAKG4$s>y zRPrTcO1jXiTI(Cnj1TG<@9_Ea?rE2UQl#`$%RJUUGRj&4ztwv6ALfL5GOD}pZcP4h z{lcZr`Oe>MxHaQTKZ(E6@9%bF$nuyt|FL1N+g--%$1Dyg|2tnP@o$gx{jvlluS+o( z`H!S>^YA_3+ijtiUi#r)kmv{D0}V22DuutU{;|*gGGoR5zqY5oH#|ALW5(W~>lx*z zi;HhvtkNp&a`<}5`svED>VW^VvM-eHYs@pAKG7|3!i*agxiea)g>}8&H0R3H8m|S{ z9KSf0>}8cTR=l)l%f=bijctj!3k1VHr}i4@d+k{J?%l6O?`y@o?4R>JypetS?#)G6 z`*;Iym}zzvbC<C{Ti;sV`1?CY&~kAxzEIcG$CmuL<jEVn_)y%u9c$-sNql(a&8_>& z_4*yHtyxQNzO`K8U!tQSu+h&o-?c${#;xF(rj4I9&&NK!{Of0x@wsCvFOH}_|6zXl z-LKtGrg3PNNjgm}JUhAaTmJ8^G->%+>*s8+u?>8%TDQ;b>MZ_<(o;`<TugoYet}R= z*siX+fBV)H&5sG*=d-loEN9XC%~6|-n~lCQAN?s-X0yE3Yp=ff(x3kX{!TOBX>i&w zX}(`--2<jq&$*sidW$o;OEj2#oo{&6t#7Z+)B`N<b_8F1&SDdh{Bp{=X!raT>w?vm zmliV4dAxJESjzbV-FgAHbU{~Nm&0Nn9uwDZ3!8trpjK_-?||=rl7oXjs|Z?D@A}qu zzaq%}l-mD*>cyumujNIsKbZIGZ;x(B>hT%>J2@&oOk+%3Cb8|%`A)lVm8H^=RvB(m z!D4Zf9bytVPwsGje#<89O5NWXlFgfxc08Ip#rX00YgwIH-(~Bry$b4-R||fbwWjUC zm1FkGD_FY)vc1eq@7&szlX*Bc;eb@fi-?!o3@RoRy4qjMwSD-MQN=)NgYCPQe>$b_ z6&cB?>Aceo*u-?1DY*1r74w=1X7dia9?J)_if(&~@I2%A!q8CU?Jjt9k9p?&hlZLN zU%Z#xU7f|dL2uSd(eE2Xm;YV!CFEJv>R;cU{EZ6L-El0VF<VZ#%U9un?3GU;J!g`h z-I^6I-@`RcEcK5j``Y@|mmj|PR>UINJTdAPZ-%(V9IwDdi4sL(FQSXIFERN1x^?U2 z?-!!i1=gtSH@;VsvTW`u%eWTD>-iJkA4n)UYw;>Fh9S)P!MQvpT`!{(N+;$Oo1b<+ zJn4Pjrkq2<Qp@(JWUQQ$axHTD@k6yo+r3_VXt`nMZxL;<?LA{LL$jEIgXB&duF7c| z0oguVIBZf_TbiT9rZ8W#p0)kQUz>j!YD+SDw64rl3}^2v31Xbjbzix0d9~1v_gB^L zz4h^Z7SvX%ap9RtQCBTj{1ThlLJ}2<+YWs>`>NgT%;$fJHa(yA^Jdq)vu-uXs{eeh z<jL|@o<mW(sjO|=mzCeVu)3oD!}0pPk-Sy2cZjJ@J>mbnTE??T^t|!SN52#8t?TVw zzBIb=G;*9@wsEJ=4trtc%fS!A_uHI1Ty*H(C#8c*%Fj(xSi8OK7vHOx^YUVA(Toz! zB^Aou2j<<5?7qSp6)3&P_d`$9e4jl++D<d}shiws$$u1e{dLSO=3r;NdHf+k(+>SQ z9Ub|bEx^2Wwp(<;Kkj{vPj8&lurG>zxZ=&J8!;R=re;o-cDgYCNki?eS7B#Mw0>SX zee0&KH@oZ1TuZBSeH!(}s!kCKlC}FKd~WdwGfk=UDfecpyS;H!Xwx12<{7Uin^^7t zc*ZG*Y4HMu{xWslgm-J4W_;kXwGZt*wc0g(N~_Oq86J-hf~#fXFKn;8xPC&xb>}+K z^_C3#FQzTn7dQD<%w}f42<!QqmVGaBUirszQPu~g6U)tS<OJ%U@X+&UUf<@s^5AE~ z%t&{=%GR5u!A#M5`I_?o<rioCNDup0-?=#>PEtC^=vJD@)fI<S6h19F<TCT_tdwV! z>3`<Oh+diFdf(8xPh_Rpjhxdi9~ui@CVMr{vJuHw+I+X;w0vZZ@<XNR4!fV5hdMJ) zb4|D!mm?V9{7&NT)yaLTLY2lPi<z3t4DMFuYbR`JG<(Mst{s?~kuMhAHm_4sbMFN& z#*#YD>n8<GW8!|9N1ab{IPo%TlllES*-_iPcDt}Do&37~LBAKr@_QA+#*gcFziVAH z?X~iJ#o5w1e40O_WajE@tvs(c{nuFw74Erwn_e3Dx!;%H%eCaXpf~UD{tCIyZ&&r@ zyOqLNN<YTe@^nVXRsXsa+U@K2rD<Z+w3#>7B|E!|TjeD`w`%y=dG4kShxV%XGY?I7 zozIfEN<8e5{{Anw+sw=k9|@NiOf->;Hb`7_L+k2^?MwVWGVWJCe{#pn_p?RrZSgUG z_)@f9xIOSf$BgdmLr<^Wp374leRcWOJAOwWTPzIc%;aCOQ1VoV<{gnqm3^6O?`~IF ze|5g=mF@Mj%}(htxX&=>k=x+HxZJd({ipVhMOML6z6kfb<gWI4&hX}F(Q(C%yM7xV zjM{krK>NKb;a<NrzQ~;nD%xkYcG2lov!r$;nVgz7%li83i}swS#Hag;ZCJvxnDIsI z|KeGC%Ws_M+H{^V>p=6x9)@>&)-~3$?5~sw?mS-aw^`?%(9_0)tJdqU{au|PV$FN~ z)O4W_Jdb{wI_>(>GJ#9e@j@l@Dc$Cfj(fk`UL5+9@?gpGotLuYH)KW?zPTFqLdUr5 zQWBfV<MMrfE2Ec|amBvwTAUu1(U^C9^1GW|Z~SXQjOOl}`l@|})3mSic{^BH59-}z z&pqFMC4K3W+dFEq8~AcxJ-eJMm3L&(pSs-5hT5mrmA^CP)l9dTrO26{(kANuBxlW} z+>82OewzJVTM=k3o?5uJQ`BH$v!i+rE90wVk<{G@bM|?KrwYGccE*(BbDFvSSr(JW zlaIDE+RT1o+tTsCM60A-%rda^z_cscA+8tQRX>Vc{U4<pt8^xC(^Qw08x8EQn%?7Z zWm;pfxHdg3=F-g+pI5V*g7Y)A1CFiw%ecvZ{hwZg^C^B>|0514^Z(Ked2PGe)x&{z zd(fZ%R~Viz&Yf(@;FFfjD!liqZn4B}P2meaJ|{@pAAidI<NDs3h-euJx1#q?|Cy;v z?^Dc+mkhMqJn!iPPya3RuJGOxF<X-VAXlitJd(+#LfnPFV7E!8U+`RyBDTJgOB@MH zUv8Ry({s(j?bow^o|7oI<&fvmVwxHma3=n7yZ_;RTlX2iDz?5J<)mF(Ci~oekyW;h z<=JgQWn8%mvQaB<Ef4fh>NuqEZ|n9o#=hPb=ihx&y6paQ{m(P|n^Qz9KOb*P5Y79i z%C=eHf9&Og%^n`^y1S20{L}iNQNz!cYtq_ND~hr|r+)dsQ24Py*yxq}(Ya2{hmtd6 zud5tAe!{hN##Rf4xU6~i>}B@_KIhfnXn8rPt!ImeNT+~B@~1C+7w#6e+Z?_SAy&b4 z{YmiOl^<_Rtz~%|HGS(7CyNvN@)Tk@7sb_@d|mp~;f&}qC7p*!Z|6M>=4{n|e9toa z%fXidHV3-{C**9j|HRwwGXMGNbBr<<etu1oN#$<5+w0AEdEbO9O0OMtRwc;x#q$bh zEm|ogc)&1pjnBXIWbNyDvg<5m8x$io@-r{GM@+Y9ekr<v^Zb>&%}1Anr3JroJij!0 zb@3T3Wxq2k{yG0Lys4?SI-NynF2@}C)YgEBQT`RIt2)JYr*v18-`Qkvxn5Y*=Th;t z-*%xlkM#F12(pZ0kXiOR-`44euFb*?$`y5<?ZubuwxsLacp3ZZjAZeJYG;v&^UnTF z^0U`4IQug{*x=@@c^)~6KTomTcvvt$h5cnui}$~t$9{!T-WLr%EGzlIbhUb4O0&Qe z-#czC3U|uXoTs@Ml)XG~pD9O*V^w62>q&E~Ki{9lN$M)NPJWfF^`0x|mTwLBp(7gG zr#HGt$?CDCA8V;qx$#nB)hCzK-TnzYlZ0a&^3TU{u8MLLm@>&~;q?H+r(v8M!{$9) zdGpTZj<1mpCv`3eS?paEvcn+4y3llsbJ^VbBtiKTI^QKf-4UH+zUtN?lUr;#+WGNu zX=lzW7o`UODGqvJ!1>cjxBh<JliytqTvLv0_7QlJ9>=>hS;Amn@3adYkNawNm&Gxy zDEzFD!I{@sIQ!4^vqxjL_Z#1x*Xro~nPHv&wm0tPW*Y0i+$t-Qoy2o2iN&|pNPC)& zfzAK4P+?Z_8%NHZ?nwLc;gp{2YNxI?RfUt)p9NE9{yW^n7<sYj*PCU@%5Sg7ESc^e zo$<fNXfn@>t9(B$J{7!qx?`D~^sVBpX&U|posat?gY=*O3J&D?#oybW;kA3WdM*3a zrHeP5(>~t*nAy4OX!iGI8z-&a+@KP3nCrtc!HH9EW?WUT-~XnVOFsH$_O|fPB@;~! z<$s&)Y?#3`t;B7%ZIi*}M;G^=`Wd!6obyxKvokllH}yRZmpA;&yGJIrtE^wUq5RK{ zN&1;9|GgKuVDVgccFf1GjGG_Uh6HH2e%#&}X|cK6No4b+V=<rQcvP>hZ#3ZDt>OH` zSe-Y?u*JjGwLy8d!Q;dA|7I_b%b5H)WxD;1|G6H2({{)db*lJpFkX9Np^Q|1<F%W6 zm;C=c^-642P)c9mr#t_(YrfUX2&z?m4QeUTi1-%VZzp+VLp0acN$0s`yqz~?Z}_v$ z<%D(6{2u#9IWg|*FLLh{61BVb&@wkU<oxvS@^h-Z8ahI3Rd{|rUO)T4qg}#$n-$9> zQ^L0JxZcX&c&%t9Pk8!|-{EW9FY9QA%(acb_U&NE+tr=PGk%^3?wS5k%BA+R>7hQB zJDEb}x{OnQy>`v~c5L1HlPL~ddb)a^cUhEA2Hmn>wSDV`x~2PG1~kc4UYmFP%%sI? zMk?~m54YY9l)vV_uv{nc(uRE&e=_dGHPq=C<O){Gy_j8eFuUo`+#6^99^&P{EFf`T zn&Ip6E1J759l2MKe^v5x+3Y>KKg(@+e#%wP+T7XlGc-Es{}i?xf8_pDwSGJ0=Qwrm zYWcMFjStQ)nPzhKXvVE6T%lsqSDTf!ww-jfxw+_BklQS-)yJQgPt0XFYpZM9ojQv( zQ;Tbt{prVz?EfEitZBMjskd+^k6^LWyS)A05_()!Olw4yZGNv6)4XW)=;c34gRU2R z`5tcDEdyTe-qv=y%!BE8Pf@+-<z4SRJ@5VGH9P)$_Pd73KR)=*yL<hpap>3k^Kw5e zIJEX_(exe*-Ji;ty2i$;1*beU8;ajtQeIzUruTSD`YQpG%SR{9oAt)(@2qQ&5A^R4 zzmZ-bo4Cp#ulT}0wb1*e4{dZ-A9S;O(z2vfdeu)O&K0q;nl@bjA_ZbaZ5c8u_&>i3 zu1_j3h&g}Y^Ry#*m;1zjWTjqF?tih*ZIgdnl#ky-Mw2-w?j1Vm#lGTls?Ne)WwWmB zP~_z?OZsK}x>~Z}SRVVFziZ@nCFs9*J}Tvq8gQCr<zvaTsz8^N!*-?qw<aImbXD`7 z){)KLepwcK<`*pKsC@iFYp$Dj*Rmw(Lnqv)1*>W=Xz1B;(uJvWYyX+TWtR=@gN@2( zaZLTlXV5k=@Z>YEk20&IFaF5h(v`qt=Kh=2a{312gLm38k2lW<niU_@cD3Oir@XAs z>6pA%m#!+GIK;p2V{`SNgGZuFTaSi(efUjwdep1`C7zAh&GuXdo#u|)emQ<BpR!|K zVwdWpAbsP%7tdT=%{0>^&hVRQ-eUj2771UoIp#Cdt|+C?KE9NrVm1G_Ps*Ol(kvpC zt!_JaA9~qt@cOpbr5#DT=kRO45zkdW$64n2V!!CGDWA-Gsu%fe7OIr~Uv24NvtDxH z*J%4??k=a<9{M<lxww>BzFVKHe(vV)-^LTp>b`qova;65tc@u;uZsWniGDe?t;w~s z|9!l~DDg9{GGzJdipYltt88caWIsE!(1GWQKkE&_e=>!Mnp^J5uXuHpN84ZX=e6+6 zy4MF;*&p>rn)0f@)Us1Ey)W`?^I_?*GZ&`htnYQ0JHs>kcn7;varA*3f4kVGt#8V% zu73PzAyZ3Az{6HYySu-4#;ttX;KTQ2g7uPHujBW%`+r?6x&7`g-K*AR_xAhpg{z!0 zY1*w5UEXMNS7nc|+Zi{-;78Idh4l`z?kvdmNbgGAE%9H`e|vG&hYZbgTlO<7vHg*% zQ9HHo%o!)n<w-IvH)^EpuiQ{ttm$oeH9|g&(~9x^#hcIkuRdBT`a&YCdV%|=yZd9! zc7)#H`8|26bcuiU+_wsCC!QEuJo%?Gw`7I|N8p3&2fG#TBuU<|b@J{`)Ssuc*nD14 zQOD&)>o-hr{@m~HUE?la#(qz!d})jB+*kLCvSmw8ZO~F}TRka5>+Y!*O+J|^o_g8) zPMIb>D64pU?{ukjj(Sp>_}SlfN`D_D2QN?DpKpJ9@?Cev9S_cCZ{|u5mtebHaOTs& zHsPHcBHI_Y$bPEy`2BXuk5<J)!M96<V{P`f1^!xb_OQz0TVFq~U`sB%nAYrc;@Pi; zgvK>-7rks|iHnu{z2;mRDr>9|+Og>1&Q?_`1+{0nQ`}R-*zNB1>uTLP)%WXbsRQ3i zcK)qr8<$31{Bu)KUdU~sZl^cT>!$)g8~C1N$0STza#}e($W%(_NB_mdr^~x#S$yt& zkAHBzw<TnCi2?Ka(0u}lZp;TKwtjw9^rLU8z~*$%(^27xsf#PLr*!`7-0)x*haLYZ zgLU`x<{$Yz!*`yL;|ABYDHa7Eetgxjc_nVSEUvE2_m+@;#eV799;KM`RnvB@@+jRQ zCaU&NzEyK#g7LkgJGntdo19Mug+5*4E^~8IoQtX1s?zSl<s$AU_uW{<B6&00*k~Vj z#eJub8Me#j$({ADi@2~OMkUDKTH%_3P}WkFWfjf*$KEJiS<2mgHznte|C2WxB$A#_ zU)L2D9nH7Xz-7s+LdWx8&2oz~)+uicZ9hDZO}Mgm@tL(161D3;_?eZ+mi$U*sn9zZ z`}%dJ_Q8uUbdTH0xjFoOfA+bW)xwXaypE6Ge!X#GpWD9c-z#GH{(ihL%dznp``1n* zj!sRjLz|XbdUfz?<!+MAp1CjPXP-qHOIv2=foIn57MzN!OW~Q^7;@>5%o&+VVRLTj zNhSZp1?sN(ra!+mOLWt(YwaI*acZ1pzjEFpA?nek2aA8X&vi1Ci49+w?<>sVsI~LL zoxa!melB*L5c{*ud0DT21MekccR`-lKa2RX7~9sRJPMC1xp`nQkF5B_+Mo$@KMAdh znxS-Y7W=NluPuX?bUvT#XSZgN;tZEf=L@Il=r+r%Xk9M9@U;JV&a-{Rr*`IFNqG|? zYtf)|ZZp4De__lFmi?Lwm37W&ua0Y2>T}ij_N`;D#pZmz_-@_Ky1c1Nc3$vvvaafM z4{dgDQ;#a{bdar1S@+-Q&b*r}zPU3O_l7QEb{5g?zO&&|g-Cqs&(~+uceu1n?vB)B zQo4QZfUL<6<|{6rO642Btu<`ECb;G!N7&~53uA2`ZCU!q;qgDVJ&OA-?zDF5<4&Gx zTgI{JQSE``?>{1cHK-pp3V0Kp%atgnc;Nwi?wRv_$*222#H`!4!J<XN|E>wo+`wI( zDZ65iCq8aCP|@uEnNvn~!?N&_l^0Z4PamE7toc#qsf$zEs$4DRL<C!;?Owiiitw%# zSKMZFa&@*p4L_M#EXG~2PCI?Jx~ZU@z1g8-Q`vIvcQ9>!V(>ug;;ijV8Hdj1PZr(y zYhu}l7pnhTIo6yOb((sIzn0C!c!NAAqhy(yjK$oFVp~<s-<Q`PKfLw#)YtdeUznu- zDUhA8@9?wx67SSvcfP-K`{VgTS05xikUTj_UF2i^CQF4)mv8QumSCOuT59hG?QO0* zX4L%nn0P?;ZrqNV%1lMc$qKo`)mKstO%5bPPZjkJyjAk!X;>_Snd{v%u9HPCGwIKH z%f9!(r~5r+2ad1GyL30_=Ev)DDZWe76}B}j@3?)GWz7dJM~NG~r+j=aZg_S~{_uql zADxbJJ99g1_WH0geSWHsmC&N=dtDv$4=qaHS?OVs-EXd{e!cU}9e#(aul7IJ6L&4U z@kBPme|oIhnhTC=AKqM&$PwSXT`vDS$L23<HqO#s+jvcJ`bDSt%O#g;ZK#-UksX_7 zKV@nCk2hiSbN47M4$;wg{G*EFThQZKrH^Dkr*;PRZP~%k>ftew>6YO)&%G_i9IR${ zR=rwnt7_yhEuv;&<l{FET>B5PevRw@b^gf2{ZpC?czv?M7g-+tulHv8C7ut*^iMJc z2W(rk^M}6l*^SSu8BH^%-kK5n{IuI)p|_<KZ+pY;&TPHi{jz@BF0Xl?%@5Xbf1KDS zt(fY0YG&>8!pnO159q&|_$e;7OY8p9#*@pU9?ohMDvLP8!<XMXb4r8V?g`w+DQ6W| z84AsOu)9L3KwN@1L_>Sox@9JtGC#FR&wcZ-CF#28O>xzi)7M5aY&Tqd?)&Ax4H?T% z%{-lR#EaE%ySYlfm(*2FN9*9W$;a$}6}@<QD{^ba>SwVoFSNEjE3*;hF)tCg5|!tD z;`r5nLer&^%b%^hmwobm(C<Z=ITx0fyl+cz6smhU$*Sr&$B7fc^^*I#ANO)CnDp|) z+}D4(kNytZvHsA3`l~C14z6cCRn*j&w({jF_1$+r$Qw2>dM3H6fAWs1dhT}Eta;NC zuhkB+b8{c$&QoxnvZ&Z9j(6cwA5~|s{C($E=~riO&$;R)Bj3rJWMb-5<nuN!Y}%~o z*Jqq15`)it>G9@1rp)VnkE7>F4DTYQsaIb7Jn{CadvA#8P3H}|mxVVfJ98ht^zBa6 z(RUwO*Eh$iK7Y6FUb)(gvY<OH{Vpf|Kee2_?Z<@L{Ny-!m8t8mtv;@!q-rhKXjA&| zj=<!7hOfQ3RfJ>DoM!L+uMo!QS92kv>;R|L)o`7+?T=#aZZE0Hdt?0S=jl}mUykrj zz4WOzqp#=je~)v^G85|k?C#urK0EIv^H;l?1?#5tT%VCReF5X+kQK$%cZI554_oi} zSijbJ;ni+0eSW4H$$QwJU(?=g@Z|8k9shG5>+BZN77dN>?yX)eyqjN9<ejZI&z&~Y zsBde}DqES}={$SRZ<>$LLGD{R9ipc{UU0khg5CJZDVy?KpW9ao?>ROYrR%NZyP{My z_s7~?%`J@kw%YE0DbZZ)nRM_hTdVRxrNhr>?G>!}zf?DQvm-<Q-)~=YuemF59{C-4 z%x#e~|1pmLjh<|KbB){u>~@<uhHpA|^tgf^&)lD?8?rk(URS<++VecxYrXDTHD&%x z$Jo0|r1&Sl?sI>;rucF1^7Sn9>`Y!fw^^nCxZ5k?`Y)fwTUqlrUh#Pnu(I3hR-A~! z`XK+TM0>u67hUK46bya3P(5zNp;xo7nMB>1uT;f!NHEwTZfmp9JGZSozm7IIEn6aR zv6N4J$)o-lp9n{D<$p=DylQJA8JG|Lxb7Oa-^_JAgX#Z$mxB%Wwcp%pko)aoh!AJ$ z?%a?M#xrwdY*eZ~+cZvnJz;P8YAIzq@qKGAg^0iA-!xe>^jQRJX7lNGk%>1qs`1Qm z+<Q}_SVWR1_&C?<o7?{cFBkrQMo8q!6U&vId25<oq@N``zi6%6Wh>1fc`|Kd=8QY5 z)aFdJ&%Y5I+;K(0!J1+I7WR3*;@6ff$l%<}l@mR|vU*nWs(U#tGek?Wlikuk#9lWE zzNqol%CPGZf58qu!E&CvVnW+)e@QbHYO340Bv9vf@7gPZyQ;p5@2fa7Z<DgPRy0fV zB_oj=O8q9km%O;KWSx%5gL8$VMg8|zDZel=F{*b`Dqpa~=IMQv9fFldmDYuBZQXXp z`?2(vRO9alH!{68>;L*!UgXw{h6owy15CAiA1<3H&N$%X{K4nDbzSuj9g&E8o?$b7 zCNe3DbwB@^lcjs`<(qq#^3Aj~xc?N1-{S0=Kl4Ckq3*$&ezVWN=XhPp70F&!{i0Tf z^+`aWq-x9iOeyA_bH(yAQhYR$9K|YJZv<>v(|xdp#eW+^wB73U^`E{?R=D`Xs_9nu z-DR>3T(?<Gqo3VVappeurAO#=LVZt0?@aC~lVeOzCqA08x2wSHzL@}rMUwuc)Ba)H z#|<^F&9uqkEGwMSdh2qIm9?2gz-`{TZ~mO-Z$5nrK36q6EG}Tpm6Mh)&*yP^FA-0@ z{W@;RlG`RB->02<cKEyMwJp0{8LKaraM^#}V(=v~mGj2(i%gAMa@je5-O8`px+c`{ z@0unjbu|yU9(mVAP74<EJof8M>GRj#b$H3!Wgq`*bj^IdCcPwibJQ6HKFQL%xAt?# znSV=L{pP4rVnq^zb?~n#CRw?r=LMhL;7pci;S+yfa!O+PG3|T5+FRz;<=?-cHvehN ztn7w+nyww27&puf7i{MaJ#*=gxyh=jOs|*TJACx<7q+nCl()wMKCU|WOKD2t!^k5W zUg!yzxH<d&EOgu+w^`(@={=>Ebywr<!W=sGTb=HhRNmrJFtct6FY9Z@<nrg?XEz7@ zwA=mll5SRcUcfVNwsg0%Ck~yT9`o;apUCGkZ*SYw`L1CKi`HM0es5-bRsGS|@o%1c ze7}83XOGME)kk<7bsyc+`gcZ1xo+daHQNgwKHFSmSh;=8?d|v8_x8#!He|Z<_tIw* zA(c%NHn5#%+A)7=dFZ@VF)piC+P?hV*W28)&7wAO>GeA^7B9W^b>{EhWw+$t{92_E zb?nsR^X4L4-=b!mFWCI;)?04w-Ar2FZiXEE;d`+99^)mk6_e8L_e=^--X{Fvq{q{~ zz$tSt@}~*N{&boZsjB|!_w=(&X+LgHc(|RPS+TC?)9FCIcS~Y6nerT2cEdGQY`MhF zUk`8X-17MV?}W79)>#X@a%D4AzlnWcZSeGWS$k1iVNk5^9Fgeqrxtf6m`6yIO4(oA zbDnELu5Z0k^U3Gd8|Ti|l9T*(`KZ0IgxFHS$1d?c&1Rn``^#KUPMzN!`1rl#&b+J- zjfXN0dM&uX867O-yH`ftZL+=dr&qVkH?H8wj1YCGpSod&qIhdupw-3o&s95~KYL!c z`Sh%{n>|ljFId_y|7)LWy}3-$oQ}sLSC&^6dkY1+${h`xeXjM#-+dujvA6Z-DE8d{ zHRpQx<;%TV@+W`p{P{Re_LScK1#KMMg+-sZ^k*Hic2BE&`b3}U8OK2}^^@(>Z1{fs z)?M_D(@|e*dfyLzxhor0vvS{kxw|p{YE|lOZMK^?cqg8DxW{KwFPj4IHQgQi&YbD; znR4MRTdGq06h@gvO%k34KYK5IwkrR*cj^NT$4vLh&s^e8Z;+l5&Y;j?pw~6S<l*1L z_uBuOKE3jJ&10!jP7l*P2RucS^cVhqR`T!K^4EWp7YBRS$4^_yv$V^(t@%-Yjoz;p zixNK_^MCF3!!mK}Uh}>~%k>mCOkHXHUc+X>hH5j(yfcMSpJEx0vJ@*C?Gx^8F$v>n zeqdiF&vItP`{N#cZu=$GoR{$4T)<wsv0#0GpJ#i281o!%*Jk$!S>}0Nn_C&Oa~H<? zFO1r%6lSehl$`gk{0E~p&%twg4J+KYIbL6sU#$Bm{L}p&(LBYK=PjJ|pX&Mr`Cf34 zeY;)%_oXF@hf=nQ?epDnC7#VE_=~|~>wE4$jtOnNp#GF)hgX7ZR?5nGpX{2{SDQ?g zm)OWDv2u;Vi!7&xn;~*%3_i&1-IexaLHW1O+>dfIuiX-3%9DGYoLIj+?DE9-A$nE* zGE63sH@E&_tK0h6(Q!#RKhNQ~$)A6QRCl~wv*(46{kbT^9~RrbMMi&q-uWP`ann}U zHO7lM^!B!tZu_RY*KKYR>srP?p<J_EmPV9C)+<@;ICxU~@~4dr&%FCKZ&KZ&rOR@B z{{DM5?0@PDb0#g*KUVYNe9`L&zIWkX>oWWGdNt&(hhCf3BIe$B^@7K`1MdP|yZEPQ ztmNGPWfS|Pms5;o%^i)hZgp%56;eIB^hC*b^;5qJC(WI<;&H~_-Rk_ZcS0XqNxv^T z6KlTnc5axal=+V-o)co1?rZv8vFOsH3G4n{wC+v3Z*O8bV_Ms`xqe~}Pk$aXGP$?+ zGvASb<t)CdKFE2+TNPAJwlF*2on__66YjRS*+WoPgN@lcs_c;%%Z|jZ=7irnO<bom zhTK%%{=#dQCvV-xT=VF<mzR!~zPg*I_s=FF;FO@y#IRM*-CqCaWc)J!z^i=;M$v87 zjYk!uK38jB`&Y-WmGIA>X@Z4CL5cC9aLcLBuB_SWs+*Z%&9z(gAQS7BDTgah8x)!^ zu9#WBwV>#If2!1#?5$#dEc@p&iYAm@SFZ@PS1JA(b5i8XW8YRa?v|(Xe8rFU&u}wM zsIF6;QF%1rXHDaJrVA|G{JDii+(Fgf^H>jfsGJQ|T07&(g@C$PKAYnjf7Zr2XFXW+ zqu|en+CR37`wkT`ocva@`m1twB-7Jx*%}%>@rsMS_bi@#TQ(_BV(#0hPgCv&+ze<; zVY9O}mzZp}+P(XWGHYVU^)vR1w<?@BP)%RpBphipmGfub=6Xk#6zhqvx^7O(zklWN z{Y$n2N_;QA8isE;{@<u0f1_TnxyAFO+UgE<u9i!_>E1=0PDv}<Hny%?*cb9+0jr=^ z{ZrS!cl0iCGbCMB68qyS%*C(i*Lf&fwJiR>;!K{i$Ih7PJ$XM}T5a`Jjothqd;b37 zyB^v1DR|EP%^?{PF%RZ?oY0@v=3MhU=g^bTrY?<~M3<7oTW2uc?oXAjv@%!Rm-+Ka zXThn(^>f_6@!r;QT)upT)AuV~H8M3Zr;8UR$Z)TF!uDvz8^6BJvq$8AJ5LsIYs)RF zE07T{eNxW->)F4+wzH4+>NxTwZeI|kyd>D<rdj_sQ^xc*-{%b1PK0`;PrhZmO@ps* z>8~euBn#f0>7A86)$@Xslx?;H;|AXseChh14t~7WX`*xKfV1f$-xasz-bMcHd^|Zt z=7y4Q(!)s#1qT#g`Z=%r!@G+s#^kZ~-{_tYH{IQlj@SNPGT@3geysiHOmd82;@7sP z$`39q{dDN1ka$@@n%>O)svYwtevM-G^Ymjj4idPWuadCtFvkY>t?ni9lOh%g)$QEO zxJyhVj(@+HcI7+1iY2NX>r$d#i#+{ay(i^B`IQLII)RjZ8$Coa0&d@vo4|LF`%snN zg$<|Er)!^dlm44kInkJR{T#8LCf&u0H%>Y8<fwmlLHs+3hZXXxf4+Jaa$#0x#^LE# ze9!N={QrlPH{WON#M$XbZORVWZd(wSd}773y}JU-72|j=?4BuiM_}>qQwstfeYcwW z+3(Nirkf({Z~t%8$x;(!o_)$7r|EucbysNwYue%)r7q`QMTtCZ@5@_iEnxMk_geG^ z`GokjYYa3LwJ!V);oQ_eLI2FpD|wcl@A`D-uw1_Tg3r*7;dI<wjzfxH=UbS}HlOw; zLNcA{WA=jZnAy$F$NV?*bX|SbZKg6a?)z75)!l;bFXuVEU|C$aES~#N=nh`lkJ7?Z zCvWd`G<tO|nfLd`DdBvV!;Xes3^Ba2@?Bd)W%uliow;XPo;!$yEl_^@<Kz-Qld7V5 zDbZ{zKCV8v%*NQW%<##F@4;DD4>RAiKaqJY<M2MKo3CWsbQ=?IR7C#q-FJI!WX{ji zeA{(*1n&I4A^pxZ*HeyRLVGqDmRQCXoYdLGZ#}K|#H7?iebt-t3@qJtHwx^UzVOf` z5%#LhUwmFW%(a(nJ=cEYPtMeGo>)1rySHyIWbhaCSoZMLsw25yl~%Ou%zrI^@#se> zg?jC1C({yF{-*yfLK7~0v#p-tFgxIIf~9Bk<>}kAvY(fH==77mU;E@k|9!n#*Nslk z3$o8l|I@W4S&?sn+Y$bmF)Ly_W26{Vd#4`X!Mf+&oCBTZ_vF4`k1!4tHI+G&8W`$W zS9vJP#CnzL3m*UDZK(nK<CLOQdG1}S<dDDp=~>RMw|k}1y$)Osw(mY#x7SRlI@--} zN3_hQx_3MFWIQu!P@BbekK?kKqPT(F&%AYy7MQ(!x@0lKEV;~syQ?Et1qrVdn&qfD zyFT*f6Cd*<Gg|&XO1}}kd3Ak`{Y--x#mCp(eyi89Uu%3;?f>bcs`{bjn^jtK3U@f} zmN=-~mFmsrCA8~GbivoTTfE*K@G|zgslC>VuSM>lP*dZ%KX;<HE-U$>tR1gepnauJ zE?H^$<l1Q;7w&%k!BMnPyFTTogJ#X&PcbR?V%lSVo|>}A<fHLZ-6v&LhJ2|llgo1K zRw%v}zOHlj^ZqxR1h{A1`OR5$z204=<xY_Cojvg`e*4+qPGWqK$}6$j=l+@b<#!t8 zGS8mZl+oG4npo-Dk()L_!E3_mEz2f;_Wo?7SMuuq^!I0U@A`LHCeNq{T&=xzhkaV~ z6z;c&H{BC$^0L}fG*ew;@{xwC$DgiR#8&h-?}oJ3jwgZA$;Z{)7y=l=f0y`Ndhu&Z zOWGGj?UPTpyi&e@K;r4M(ivN9m}Z3^loHi<_#Wb0ZR~9M)J^!?|NlY-y`k&!9$&N9 zW6M+c>9~+b?Be=QOZGWOP36AXz*c3`W-Ru{ac1Ki#oKRx&l8^zUcBtU(+6iZocEM5 z`owYGwadM#E3u9#r+dlHWg9mH1>8HY%yzw(@yOj7T&L89raWbuduVFk4L{MCiw;*7 zt~$Qu3dhzL(tX#9I4>V>2<=_vxa?7Kai@TH+BxlmQj)V~nCP`_P19Pjcj3a6KT5U2 z9yfPMr+rXqWoG6Io1C~k>6Qkw#T2`V?R^GD_tMVZN#Di3@p#c~?h<w0%71HI7Hk%L zEb(>Webc8e1v-A`_DI-tOfU^~|70V_5n4Wj<JiI3`&oAeNoCAWZqRw2x1TBAwCehe zHS*t!gwws*lsH13^sQHty5TVW|GM4Hp|(0Dg>z3%X%3p`63HCw>a_Yxqw0Yuu@d%r z+pOt=ojsC%k7Pw%Zl^gemAtj3aM#%YripXrA9{UxzJ^ZsiQ<hO-<%sK92fId&a_d! zUic{~s%)Z_a&ntk%`ao!nHkH~z0UOSx_2v4ZN_f3-w*E9JgruB6TO-AYU!Vuljk0D zG*4S~^IrDr2Y1grd^4ZXaYAcnSKlqw{{D?>7wq=9K5b4@`u6&)4EMI2qopA;QuSwF z_`1ez_k|wy`+pTZ3ezR5voEh<jJuz5zSYG~!n{>|w+P3=$cI;xr!4yP?$K$9ALrg^ zZ3z0yee7kxk$d)D)<5>0Q4w>o7Pb#OaAcl?DA&huL+ur;2hZ-A^TzX$+YCuP!Knw6 z*F7jT^zXEk5O^xnnz1W!+n4amH{<ztIGxgnXPQ`eUuWvaiG1#N?M}*kl$dkfwn6P_ zs5bM4ER`8zVbAuoxpkX;l`@rRzhJ#V*4}A>sPg>_XSFALYJLxFm5z8UEbi>QrQJE) z|7&1mN2P)Iq$_tabak%BWvz2|S-2$p$lfB2l@Hsa-HyMLN&D9Gs@ZYx;^G@=O%;u$ zfh;mhmh6xFSaZ~|@MFX3NxMSy!aF3>yW<#&-?<$NwoBCPThkpedDrX1W(Pm=79RZ6 zA(l6zCwxCst;-jUv!NC3*_mQLyfxKz%QqKvsm!Zkd-trvenowelZtR?<JA?5W`D>% zoAseG-$3JQ@Q$bJZp`i}mlP4%DZ1tVGapg;1(!d(;Ff;Wy?gtkQ}?YzOv5dlP6V4D z;mH4f+`!F#&&K(y=53LBc`VU-%~z{48@DT3zD|9lq<3Az>ieBvD<c)WKF_Ika9*YR zuGP(vkF|26S-ATxlO6N+cbcuwT~M_7=GW+3f<=x$mo9oEaQj~9vcNsp_KGdiseA2w zauKiW7Gt|d+xE}QUYuQRGx?ck#r(+qRjK8xUDX2*A9;PxRqd*(C-0<>H*TzBJg#q~ z6?(@1{EXZuC)l5)Og=rqb?U*VYriUn27dnexn!ECiHG{!>(XBKf3*+YU7U8{$$b^) zudEHJiXYm4%rSmyJ!_}XIlsv1TuW9IGw@yB(IfCs_NmvL7vB>tTs!MyawpDKh|Ar* zuse13@oBwRFWhf$Qs1!knNdU7c{`q2ECLU<9qw;xQY-vgZ&5sZ-n&QNSE+ftEfs7{ zs96-L)myW-E8bN0&qlfXa~DrP`;j?buKK+H8Ph|1?v{K0Nt<c*<?|vY4(|g64oCUw zA6rGsc?rdMey-U3M%(qO+pc+6U+w%q{fu(f&6Av^cf{@Wwf1ss)jM1}XSz`C*Vgt& z@&0y|YdZrb{P4c!_j|?%AKg|7ZPnD}b7FdRkKNf}-umo-*F~FCUf0_-tfcei^k;Y^ zJrik~ynS2Jo%P!To@_s+_3iJqMTRk#Cf3hh%0K7z2ZKv9CvDiAXQ{RHtaE+T&6ML} zj!)kDcP^cDE#Tf-PkV(F*?2GM8}0@5Ynyw&^<I*mxL-0%z-?Z$i8%A*`=4D7=p5Y; z;cj-|*n;mzk1oIP`On45qst$(>n@gmR5rDh|A_GWm;#;GXQSrM5w|)a({iY*>wT%h zo_$~4=gyT^KH<h8dw$<_fr;Nw<{i)9uWcl4#CUSqY;LEZ<=wV3`Zq6*_uBjG=lSoc z)_=Kn_Pi~<lv?)W$@347yBz2GafcpSyK2o_+nAZoQSM*No+P-(ES%h`fBAh)&<>`v z8(+3eaNDVWdA;cVv_Ep|dhfUIxb@@s>ifpmr6(Eva=4LRGh5S=IqQXn--ejUH_P0% z-@j;k((+ncL;kEOftz${wki}z<x71C%bo1AF=4@t5LSEMqHN)`DZif-?s0x!QJv<~ z<smWC@w@Xwfj{f)Z^k*7Ze4n`Hn94)){n!FkH+qp!)t3PlUV1q!LIzj;{3II?;<AM z=L={Q`z%#va)wdTbj{;DruP3YLp_dJIF()NTc5jkJ^zGfhP<~@x5WKl_B34GU6FNz z@*g%{jjo6#i*HNB22Of>|94cY%)Y&%)*H;(rvJKL^@mlprTwmez!vd{=$p;TN;AGT zYi?G5pI-kpTrFkGlf3CMt2^e)h`!T!{Ae|ca$?lXg$4<2$Gl<;x2-!=vfkoq?S`GV z6(6o)Ofh}1@#<fp>U`<G^O{TLpB>Z?(LC`itM<py@W9x$m$#Rd2#EFi*~tBJulgme zI?rKo&t5*ci)K>F1;4YGz24W$`_JV=%i`Ywj}Es6ZByUJ=)ZAI)ecqub8mT<Ihd@@ zPpN*i=&{qBPv_<^uUNa#vud$$=P#Y+Q$>!2+|jqHo_u!mxP4}=|KpX~7mE{GPl|QE zX<s?(%btq~fpw9qQpK`O3K}AKtLB`Xyu@nh->*iux3|o2`57kZ>)@L@WykuRwrj*L z?qASUAZQ_XU%b>UE^0a7)1+l)tzXsR(nQZ5n(Fsyy@b+gX|rYb?Y+_x71ln>`{b|9 z@NIo_OU=}EkG(f22A&U?^usZ?QDo`Ue@j2OOxvGfy#4Oui+elfr#HM)J+q~VImmBc zpyrYZ=~JI}_=IwEJdD_rl==Oc;`*7ZYECi-e0o_Gvtmi^p9$~3b$)ja{%QSt*_3TN zlY9?)eREb-KlkUr(zoKWb}nYAjs^8<FI-QnuGtYaD`I|P;vN}x1E+_zcemZ));Xl} z;SY!4x)O_H#}k5NX87%3KOJ)Kl63kBx68F5bCQ`_3T)oG>hLxsOb*}wqEC~f(S7!+ z^m^meQ+L0KO}OzoW$r7hd;iP!l)d3%=zil~S!ElfQoLZ-LCy~q2i%){c_-zCKIGw> z68-vaUQTh@jE7zSS^uj=SwByV@%AZ{H-6o7@x$5h&2wY+$@2HU@jDq-d9bhB?yb1& z-t7GM+23Lunpc)zFMXPudBrI2!M5Zj$t?okuYSq7^Y~NiJDC?7wy^$V<X~f!;m9qT zf92va9d^U2nj{9^bGw*>N}J^>f3!~um95S{#xT!Bayiq!i!XjozV&}UXOGS6wjWjU z&wcMC^j$t9e`x1Vo_`q|G?$ARl&<Y-H8X7Z+>*D%Yh75$WJRgq=||he_U>X?oOpt5 z@5ao}g@p?Q-U;lIdF0>K{`bS~xc2RP-PjG3A{VOEmo)2!-Ssx<U0m_z1jF{tEngQ| zrhJh1>Q}$u+NLDv<LCUiFe(04Zm!JgMAy{kA(u9vdT%mSP5GafP!Zd&lNPlGe%1GX z@$+0$tXf((A^)+Yc7M?Phx5YNIQb{#$Xwg(JZZt>Dce6c@`ejDUtaZ+Ej-hHdug}5 zvRZBuf0%{(DTm(E2h{#ucTzi*tz&Rfx#bzd8kWz6g%28Usyp|)Fle59I?vljwn5wV zm#fB%<pF9Z4T8D%*(jgZF-e<vsQ>w)FG(}@Zd>t5)mHxUdn=9^3Vr2E`WDFX?${&l z>c-jpr8S_kb$jwr$-LQ%C%ub)Uj8!S`~NRj0;FBrEAFr8Sa!T2<H>zTEBnOb2DRaZ z7mPklP@A~3V}_CF*?Q;m0YQE>&Cj0LO)4(CyHa1?yJ+A4q)q##G`QJ5Iq3H@VQt!p z?z7*u8|%$h?p<*tBW(J?M)`>y-g(#WehvQed(*L=<tNsklrp|>UG#c5_uuTM-o*u{ z-(3Dx5g?IYu_&x+&fQewTOAu-Z%gZ4@aaQ2-|GX7JLdlBUEUY1s$;h?arGN-Z{3c+ zT>IY3vVKviHd@1RHdAH(g{)f-#owl#>!~aEFn<4pX-{3=wN3k7TV67-EQwc5l~pwJ z^XW;_T>HWDmSX;D$qV}K9F2kHr{$)XmS{Q1vijuyo@8?0%6r+;<NqJ2?%=6je&<o< zZwHUl<qj40ek*PttUZ>xc!|=62eTWv_IKC@GK#glDmWo^TlVZOpH*esJ$Gy5=0+RV zvEFo879!xaqNL#7YiHKw=h7@LzG}U7<5OtCG~=wcV+Pf}iyj==#}>T!fR<ghfkfuZ zW7jtxzxjNZZ-Lvc{h6HqEFWzt?raKE%V(8{ojOxQeeLYvQ=gUHLwLEEma!QXR;um! zyMBW2#yoBguNgL9Po8qUaXr-5^?Yi`4E>r%G7k<%pLrK}TF(AYvwcZv-N~l;SKU>4 z8nS0!VGMnj(pJMU`_S3SJq(IG<}JpP9kM5<zO6Bf`}m+<a*p)Yq-U&KCU4b!9`1Rq zr|jj+3p}svpVnNx@utf*YS)2-2aDNv?s)3rog8wYizB-2khSan9om}Qo#~5@EV7DY zdGk#A-YPT3kDI<aiU{BPX7(l3EbjednKM1f{QXN$Oy>0t&UK&HZoSa5RNncW!1Rz` zfhiuFy!iZ{Ui=$=oN4~!ZR+bDY*Bn^Tqp5x#pLicTbk}gTBhDj_{_b5!z?>x{p5A- zztui|=G<~(>hHK~>W1$kPfpyGa4z7*ohhPk(_%C3KMq`cz3E};ht~G58x-W0E`4wQ zT<|ti=cVb%ht`(+xV&7Qym0+By=^R+HPwNC)K9FId6DG!Ib(&pY(wX}Z=L_@_|*1l zmh8;-DB#gP6#Oq{)6b*H{F_hscrBPGWUPMBP~mjso~f1JCZ+gw&R<%#FXYOtp1)zo z)qUGeWqw=tVU_iIMXm$c5BIKiW<9lGj{Dlyw%p|(%_knIXgKS0(@BJJgXVeXS8tVr z>t3#GI}o;{?be~+ArE6EFRLWkKk*M~U-c?}zm&pUz6wpPPxYp|e(hzyHT_D{m-B0` zaqQNUnr(Jq+oi^B(vOaqX?w4G_^U%%S*cfRqyNUBiE~?O9q)gd!JNdlH<3x^?Toet z)6H*!ytzd64!yRIw)HqR-LIt8Pnqfb3cb*|$J4(5vw3E#_s7q7&i+ilO%9d2d~D0V z$KRaK%i{gWC(AT<>I6fMC%Wo2T=yi47R@&Ii`(LVWYwD|M@44sO&319tTp|f@dOz~ zljo-tWU?$%-ppYyZjpI#ob8Ff`>bl0cgJ2gMX&DNotr#s&UJwh$AdYd``<Jy|5>k> zE}R##`nFEd{9OSPk`=$GB|XiYk<0n$*R8VGlV`076qblTxjlKpN2WK^K3k{y?a=<q zw&{bDamn;cJ$@~Y$|^g4Jm{$Td?%cz_H9q>?D|DwE(!c@ajR@*7PJ55G2Fe4?UiS1 zr}_;se!mC*7F~b+^+*-J$VB1y>mSVjrgZZK7oX~Jv1xgVHFCn2E268{2d2B<^39s{ z{%qE|zaD|9!P|3c_GIcrJWT8g=1KpQEK(?_H2sam$EVXa`p$Tq7~&N)t0(>R7Mq`X z4WAQNREKyTH(&cQ-#F&jU2FHZ2SlbgAMlUyV>p>%|G&fcP1zd9WFP4|!<lP%rtg~S zF)R3=?`>7R*zl>^x9%-<VzT9lUsd49^-EV$?WOtEV1GeLh3Q!}#}ruPH$VTEa$Ark zZ+0k;UdOtvPxRh*qy(I`zj=B(dvbVK^%Jpo1~V@$zc~AD+=G+uXTLi<zo^!BDsXL0 z9Fv}`s}29`W&2jE1V=TU`E{x7am`;n9`B_(N6!>IzI8+C^3T^So0DF>*H^k?C$7i3 zd)CLQ^-m5lNc!!Wcui;XpH+hMCmpkp)tMI3aP9gO8}mcI%8W%1?p|?q+s4K@=Iz@* zaw!!FUJ|<gA|}hCQK3ve@ay_5&-i)m=lS1LUKcPqZMuA$pNF&P`mS67i5oeG#e3fJ zto15ZSy$87yj^?ZPkjOD^W1MIy{OQ>CRBHK_QaL_2YDQL&IAj4HJlbUa$L7v`fcNu zO<Fals%G{o6}@yR-V$$Z8q*`BQ)hYVGw+ehxAn7RwRgWrnzLF|wBW!r#&}QFa^~>W zD^G6ooWL!%+*vogW9FjZ7k~3jEpjElOj-FxziG<r1xBl<t2=Dnq#cs9>&BZN&sE1< zH<fOjnN<6T$MeJgB8%VE0zT`06u<H)J@WOd%_29!J@?c#O4zs96xJ4$NiXqaIFL21 z*-fq8r$1(*T#7rpap=X9QcY6@wp<kbe8R(L>FJ%Gb(Oz4u1(*xYUUAkqwmd^6=av~ zKcsPNwuZ~PCzi!$c7D4qaJ<F($Ue^Wn-wK)tj5Z-1n2$SE;qrLd1K_H*Ws7Ny%$7! z?GM#F=TLr0_F1@Wc9D_7>zc&>yo<z_h;5pvdDr)*#A*hMz4^fv_wO(K9?y1n$L-}i z1q~NVIo!33j=H#cQrN;mu2cK^A~yUfYMMJIb=@1^j8juy?mOD#dQB-MHGc61tKRo) z5guNGuQ$lty;Xc(;;hwuS@Coe=Eb+3+wq>&k)2r);jotfRtbOC3^U!@*JmT|th{V- z;PMK+_vgQ;a33tz`&1lu)*~(G>IZ`->Y655^>JH1*6%$1L-!!(|4hYoGs8BV-+VX1 z(CkY}RQbXZ6Q^qS?!8qqHUB2Ew}juFvF6J}yI+DA?#u{jOiIa}b=u)d)s(asey6nd zeQ4TOyVZp&x5+wm;g`67>zlv-u-PkCQ5><<C9S!(x^dgm<>ua#W#_%wt6P;=n#Qqv z{YS_Av$OOZa%NnxHr}{6SwX1ch4X6lP2Uf1{C0iUvej<)iuP?b{le5Mu()gP856mS zn>Xq>*38+n_3M(5#692nYNB6gbhWY7T)7~@x%KbKz~4L6Y$h*T;c0a7H`|<;tf1_u zSGnqOtE0XCoRR!;^hN1(+3jB|D;F}`Z_N(xT(RFREj#~t=9!M}m~<&WCAG-XgZDBn zS6{!ETVB@M_ce4f<E5{1+1K)K_f`A7Pjj9v`s%X$OD~4ghFi=(8>vh+z4st~Wqzc& zf77eo&llDPeilkxd;LazW6#DXjchZrcM1A5efX+=^m^vD$$gHk4$_8ulItdJF?l*W zLH?D4sH*C-c~hgbrF8D=zHDCfb!k;We*n)i&9F;fWIZ@8FTOOr?AV6@>ADZB)+ehb z{rI7+CdohJ=dL}MGoLcNJX0aLee#PFe#fVIF599yW9y4^xlvcvJ$mnUT=#Ne;uN_r z5sR1wCdd_EQEo8SmEz<nQG6?<zl~+rLg_}8eRXF}w%w3Cxz}dJ5srfAr`Y1tzHvts zTTkFRa4cxa(}snb*}u1y9lz0+lJn$3r2n;u$H7x~h`2_VFit63?-b8c9ceE7PsB{I zN9&Yxc~gnLlu4{{U^DlkhfVy-cYhstV}IhSr%ZUP--=n?8Mm!F&N{~L-sbn|c!b<v zYZj%2S2nUl-VV~bt@HEyfjcMvx1YcJZtwQ9JI!0Im(LRJpD8ifL*kqCJ)sWsoo<Y8 z#l2jan5+EH-Y*N7$2iZ}cvi(rar;M?@-NT&IxojxL-q!LNsEldE#5CLB~0fg`Jdai zu-)bJTl>3ZJ>f6pZB38Pc2$m04y)bKcc7L*^`ziIjW7Cllk5Y!C%&4>I%D3BgD>oo z+NPQ-#|Tf$T<}-Sx}g4C`=RfZPm`4*Kgy)vW87&K?yMaeyypw&@4mx9SB|Ys)%o6# z8R-(DJ%5#GvKROADgS%<%p2{eiq)}h=VA!aKK8Tg_LG?S9c5E5@Nku`&N%eh`uNg! z)jBIUbq=YCM@;yB!f@%1m2a3hdR~eCXPf%qY;RoR%=AC&ekq)KbpJ(2U$N_KPFbP* z?+<$yeP?kxI?4UNx=X{UN?)b)+dSu%$=oiO!S|TyrMNd+Q1V18sZGhOlWv$!Pkh+D z>UCzr*LR;5?3MUD<-A)N>x_5vyu(fub5HaV<~k9)tLU)t_YTINCaQiJ6&p|MMZ7!G z&vs<qX{Va6&L<_SKR-X`ZIZ#2#J*J`-{<$d>-TwAXAA$6={LLJCiA-N>4N_nx#>B% z`|g~bbJLPrX%oLo?Y81aYi5fb&&~?Je=k#kUHGW?wF2oM`cq{c?)$%JTpS&{I^pmC zC0}$m$GL=yEwwxMM9BZq@`~L7mWz9*9c|?Jxy|c9U1F}5)(g1?o0D6(F1EOQ@m~;~ zvHHKYV>8DLeG_&`4?UIAmJ>^*Gr5i~lHjkp9rd-?JH6%oG}C=oXa71luOmc3a9;-J zDzhxjg+|Lc>|T8Bu%5)itnu{OwC%T_TK_Fs6TQ#bmcOoOyWL)n&o1*sIyp~E^Z$+N zXM8H98*sRy?#_*qzCsIb-caTHy*Phr)d#bs*6P1bEQsjcozG_PXVA$g_Hx(m+8~xy zJ4+LHaz&e8;N4S_J$qUInXtsj?KgMkXqK)$@}7a){ybwSYq{%@BfHpZs$b8jW;HT% zY&DAI)~Nb>yX^73XZDV(gy$w2+5O=w5<c)om|3E?V1`@YMiZO%J;&ZXZqB_KvtXt+ z|Ae;L``)peJ?u08_i2m84b`W2)iZuIXEa`J`1fyBxO|tuqIoyI*Ryp?l<mp5m$`_u zGh>R>(zSL%$uhHj&YonboGn*uc;c=M_w4<7(XWC^*I#VsGPiZ|6uDQn^8EA<X(w)2 zSjltFf4RSnH{;#2tz|Q&{*+9*@=Ddj)~fkv@#jy|#0?%5dTOSKT@`ub<@K%m&<ugZ zeMx6(kDWLyX}&AKZ~m>D=jQb8+%%It|DNWr7e6}Z-hRoQJ>i|kZPvt$9(Vf_%HO&Z z_?G&7_u8NE#_<u80^jmv57~z`CzApmIPNNxJMAL(Z{5Bmz0D;zzpl28IyLLa7M91{ zcSX4C>?<Yy%k7+{edEWiIl@za|NZSLHYcQT^3rR}tGuR}Jh>>o!L@_&q52v7Qp2*l zx))#ExuEag@%K@=vEWP<!K6D2M44|^9adU(HAKB{Zgl?cv_z4ZUz>M5*q|hHoBIc6 zZ}Z}1YA1M>H(h5qX`K{wfAUWwrTvRGC32ebt>v#c_#uhO-G;k7_7-RGiWOhA1P#>Y zB+q!7;&EQB*0|Kkx0Z3`992!<P{|u_<{$EinRe8nZmsRpbsyQhmuq`!)$EP(ntCxu z<wRQG%g{%kvm$eUxHT+2%Ui_kI@RX&^luus4!UmEEOYbSTomzsOK;oe)5ag(l%8AF zyX{_O)BTFMyW8`d%eIKxvh(j=ySZ-9j5EB#O7m_Xt6?k;5p7)ac(HKv1Ac3jUHS*k zCtiAyyUIg*OGtO&%AS22|1vf!iA+1Y-y!&Pp;5WQ%o&$-l}%jlXFPw#`%UOY!(#oj zFJq*xOp@OHH)+L<zp_WZPhH{kjYC2{F3hxiGTY)6N54hYJu8*Xc8`CxTC#|{Y{4nx zQz9))X@&i6OY`nrY4)y_pVU$wQ5OFo?5)9<=pR>R$t>2HGpl<;bZXuq&-uUPTJI$M z;V|3cqbIM=Io-f|;`T*5UEVfcT@q2ncc?C0T69gB$Ej~l!K>{rPtmxsr91Ln*GEC= z8V2F8Kno82{QP6d-!DCWU0fz|(DeMzr&>uC5-PU)SeyFebob8d_sfdE(yFR_;`A<! z2UqgvG;rrH;&}hUdDYLFbNqt(-2V3U^*yZlroWpT<JWb#9%*#;J}+~v(x&+<)5$dp zlP#IWUT)YE@Xls-KckP_h8@xGwPo24UcNT-E2q$}N%A#fcDfpAHIMx!T5g@^v6p+M zed4@F(={~8bT@5wJixG+x3zZ3?!%>j3V%0w)>_|FjF0l1J;_(-PMm@7S0<L@JB@6A z-pRfmvo7LbrxB~qtUoJ{GOxP$z|c(MCYRZZx}7h!F*N>Hj_>UMaQszK_pB?smifFo z;F$37_*^AB2Vve>t#36xRGs5eRw??o+}uDsg6qd}*G`SB?VoivR$rNTa^l8kArF~T zbyzR@>ul&wxYT{<%k5rq^An1hx9dVCg(RPjP|6RGylUEiHhw`>+#+S?50>Yx_V-Cn zWqtkcXu;lPbA=CBiF{BKvo%b-yY#na+gIWJY+O-KH+0oZU!{F_ZTZrSW-YC)+L<>e zt3*b<67IQao4rqKRlI@YtR*RFE~_5x*VpKqynESUce_{NPo6yD-l_JwL~;4l;IAuY z7jDZlyS2+y;PjS9|31WB?Ra{6*{ywt{iB+9xZbXFJ|h>)lJ@$4Z)EnSw_#N)F8t1^ zmjCQ@==*LL5o5a+FMG3{wf(c--iZ{_3Gy*)Gt{2q;g|H}D{rDcbL-9JEgyNk{BOsr ztuy!8H~slsuJ`-?AFl0P`*y_%gZDOe3%5tl729c%vG{+W$lS8mqAyo<%+YxEE%eTr z#o7GqS$WDAlvt!DtXX+wwFjrD>qb|RGv~i7-~BZ<-2BP1__>+W&a10jIe#^`$>LU4 zc7BpYl=Z@cX?EiBhP~0nGta$qugz??EdIuIzPxzStpD{(-~JBK2y<<J+$AJ?qpk0E zMfcYa-`&&Z337gu&blx6c<!!yp65;O{@uO8G;;s^&(-z^zpm`=&t(4?*ZPw2B%i)n zxuCdXsPvM@w`b*^Uh1`%$2s#r1eciY6%~O)+-iJW%TG$#U0!kNg%MwRcTxK5@aLcG zmg(F}6LzTBCbv-j=NpS{jlZW}pU!_ZD~rG8KG(Om?R#H7w%K9+<M5{vi@P60XEtSg zw0tk)W67iO-OlA$Sg2tle~D${RiRDKx%@mXp5GF<%4l)uu7YaIfFrk$pAOtJS!mwe z<xlQT*rHPEx6Ey_VpsKrcU(OZUTd|u?>^;CK9upziu(<7L$Jvjhsb}8Jl==6-!Hkj zQsO4Zcgb@5qbC)zj&`1w<+IldwLZo_>2k-rSpAh}Pd^kpuvL8J?f;dVm7l)suHh|` zxOqfG<JrRN3uU;b?0lcNw=8e-6QSk<yF)n@)|3Q$-HWyCe9LjEY~pkN@7&yvU7sgv zS^nD+ygRutyzgeg;vJtw-8M5N7zh5=?5mLT2<c#1bARDGMeSItvny2%Sxp{K|5Mmo z<lR5@VX5`hO125_zg$V-bNrpM?`+V*yIYJ?yq+Y_irur7NBdI4uDy@XL_eH##aDP; zP1nw2w|k4bW*plWXl`r&F8;)(TdzL{J7;xlyL=#gDSu(iJ)1jw9v{`=aB%s!bob_; zk0;qTe>l>7v~^-)`{yqe-=w;~+wQa4ub{c2qmb)yv)KIFdmLqVlvH<0)#Q}_d;M&+ z#irvc)C%NU-kmv9$dfnG&T-X*haWDj=S<L8QD-+-Q2Mp(x9d8p;Zyf(@VRU#`TO@` zvOVA5)OGW&^1s};$o;3<{|<TIhC^&z_dN8ENPM2~_LcCRr)PHmJTm9Acu$-|Vc~kE z$ye3Rb7pz3Ue;ed^~7xDtIYB@yrUny&^=RcCEUjIy?Findh5a|E1qTFoaDdi1<UuJ z+1Y<8zkl3fwr1}Nmn$c)T9?J`S;Nxe(GmVtd(JcQ8?|TNDYo@+C9Qd5`u}I;T{H88 zNm9>GChJZ+yvOO#<ETduZtB**HZNXgSrb||ncI5p!<T+C4paWM{hqP5h-ud6?p0oA z#pXALZD0AglhbaOl&$KC2*3I(=11-FONvg_MW>n{%5N~6s=?}`R;smpxBPd<`e&&d zn0_CKZSH=kqqA;T_MQ~|wQcSXcAQ#wO7X3J#E$a;f^)@H{#{C+$JOAbc5w37wndhe zE-cH+)zcSwuZ-GqVt&k#saXo|Wz!cwNe|h%)iNvDcE4cM>{sQ-M2!tt_>U=`*I(L~ z;kotsG|qJ!wu$Gl=*;8G37HZ5z`1jKN1UL<r0ECV$IJ>zxwk&)pxfm?44<an?`%l( zkAJr>u6oVUnER<t56?*`AMHFMDaC&8!HtHOCDJSMyDPN}e!Pop30dRrq28b*$<5fE zYoWd6&+f;zS8mRH+Z${<pH=3RWnSI2WPx0rg4v>8#`c$ewidpN_qZ)&_VUz@&AdM0 z>^-L?XLxCdcI#Zb8@b8q9d}OawfMXVlVW|Q#)=)`69@`bJN#4m(o3f#>-zU^wtv=4 z{lEX@zr7u1Qw(eN82V=WFte)cV)t4c(e>|Ie6W`H!^O*I`$Wmu@7>83|1J7tWA?>) za}=j6ndhrJ;qUt>o9QL81-HJgb$6JdcgpQd+0?~VcZF+`uipIo(fVAdTsnIP!`jJv zIIid_uoO24>`M@2(+&A@=K4OV<%=`=^7`}>OMV$nir+K$@W<(XXFl1dZ+Ta0#4|N^ z%k3M{?aL<m9j*J4_UQKN?1j_&&Y4w2mV|~eyx80}@gIY+6>pQ$&am#6D}KvOGoQIk z?b@S)6wluJN9I3Iu(-B8(W=l-j!WJYdvd<;KINcGkDl#5>?wZV@Il?5Njq{I3YJ(a zYwX-*TrYd#lJtQK(^=eXBNV+;E3fLf_?>$(Nh$MBk-(NiG0!S$D&m@}iY8fTS5G*S z%gs`5aHDLUwEFc~D_m~cEnfPZD`3y`7w6Y^P5qD`Vlla7#r4_0J#r>SGV=O2s9Xy7 zy3G2?L8a@DenE`{-yEiX**d|d#+<3f>biV$U&a;*?kM?E?NG<dBImeoy4~r>eX;xc zwyn7)weew7jmo>~Lw2z@1Gc)Y`S7aWKG8S4he>#A<?GYx-!0Gobf3+bRiI{XwN_3c za$|7GyMJHq8o6tj<T7>7VNIB1lVR%3(#R=pGFdjrH(|NtjhvtcTP3!lXGaz@rGy(t zB*lMWd=~gdyN#)8pU{tlP-C|bZv(GLy~^v|cYSi=3(gn6zjNIGdwJ`gJLVRlf=ox= z?%Mk9a#60%MYi&nNs<za_BB1tkeSJD{vldzOVsL@!6oG-FTU_Qsq5CQI#n>+NiF^O z()HKN_pZ*bTX-nSek%_@>#dlOg9g3^h6cQBoC$3njH%2lOpL4yEDEdt_xB6lJs*AD z;<Uk=ME=NR^&+7Q{aKMoxp$iuFYlPcBEspgqbc!4^lO7H@-AW_A`*f{!LvYDpaB5n C>$}7N diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexInitializer.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexInitializer.java index 68268cd3c2..0592364d2d 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexInitializer.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexInitializer.java @@ -11,6 +11,7 @@ import org.springframework.context.event.EventListener; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -34,6 +35,7 @@ public class IndexInitializer { this.elasticsearchOperations = elasticsearchOperations; } + @Transactional @EventListener(ApplicationReadyEvent.class) public void initIndex() { log.debug("creating identifierindex"); diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java index eb4f2522a6..13a5e63de3 100644 --- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java +++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java @@ -12,6 +12,8 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.security.web.util.matcher.OrRequestMatcher; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @@ -36,6 +38,17 @@ public class WebSecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + final OrRequestMatcher internalEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/actuator/prometheus/**", "GET") + ); + final OrRequestMatcher publicEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/api/identifier/**", "GET"), + new AntPathRequestMatcher("/api/pid/**", "GET"), + new AntPathRequestMatcher("/v3/api-docs.yaml"), + new AntPathRequestMatcher("/v3/api-docs/**"), + new AntPathRequestMatcher("/swagger-ui/**"), + new AntPathRequestMatcher("/swagger-ui.html") + ); /* enable CORS and disable CSRF */ http = http.cors().and().csrf().disable(); /* set session management to stateless */ @@ -54,16 +67,11 @@ public class WebSecurityConfig { } ).and(); /* set permissions on endpoints */ - http.authorizeRequests() + http.authorizeHttpRequests() /* our internal endpoints */ - .requestMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll() + .requestMatchers(internalEndpoints).permitAll() /* our public endpoints */ - .requestMatchers(HttpMethod.GET, "/api/identifier/**").permitAll() - .requestMatchers(HttpMethod.GET, "/api/pid/**").permitAll() - .requestMatchers("/v3/api-docs.yaml", - "/v3/api-docs/**", - "/swagger-ui/**", - "/swagger-ui.html").permitAll() + .requestMatchers(publicEndpoints).permitAll() /* our private endpoints */ .anyRequest().authenticated(); /* add JWT token filter */ @@ -78,7 +86,7 @@ public class WebSecurityConfig { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); - config.addAllowedOrigin("*"); + config.addAllowedOriginPattern("*"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ChannelDetailsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ChannelDetailsDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ChannelDetailsDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ChannelDetailsDto.java index 5bb5314272..ed521fccdf 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ChannelDetailsDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ChannelDetailsDto.java @@ -3,13 +3,15 @@ package at.tuwien.api.amqp; import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.NotNull; import lombok.*; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ChannelDetailsDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ConsumerDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ConsumerDto.java similarity index 93% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ConsumerDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ConsumerDto.java index 815857a75e..9973c875e8 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ConsumerDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ConsumerDto.java @@ -4,13 +4,15 @@ import com.fasterxml.jackson.annotation.JsonProperty; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ConsumerDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateExchangeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateExchangeDto.java similarity index 91% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateExchangeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateExchangeDto.java index b405ee3fd1..47adfb26e4 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateExchangeDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateExchangeDto.java @@ -6,13 +6,15 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class CreateExchangeDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateUserDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateUserDto.java similarity index 87% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateUserDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateUserDto.java index f528e63ecd..979925a4ad 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateUserDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateUserDto.java @@ -3,13 +3,15 @@ package at.tuwien.api.amqp; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class CreateUserDto { @JsonProperty("password_hash") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateVirtualHostDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateVirtualHostDto.java similarity index 87% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateVirtualHostDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateVirtualHostDto.java index f1149f1b23..be72924306 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateVirtualHostDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateVirtualHostDto.java @@ -4,13 +4,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class CreateVirtualHostDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ExchangeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ExchangeDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ExchangeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ExchangeDto.java index d90d9c57a3..6a6aceef06 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ExchangeDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ExchangeDto.java @@ -6,13 +6,15 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ExchangeDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/GrantVirtualHostPermissionsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/GrantVirtualHostPermissionsDto.java similarity index 89% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/GrantVirtualHostPermissionsDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/GrantVirtualHostPermissionsDto.java index 8c7f54e2b1..8c1c290441 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/GrantVirtualHostPermissionsDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/GrantVirtualHostPermissionsDto.java @@ -4,13 +4,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class GrantVirtualHostPermissionsDto { @NotNull @Schema(example = ".*") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/QueueBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueBriefDto.java similarity index 87% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/QueueBriefDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueBriefDto.java index aaedcdf0bf..2bfcb7efe6 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/QueueBriefDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueBriefDto.java @@ -1,17 +1,18 @@ package at.tuwien.api.amqp; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class QueueBriefDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/QueueDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueDto.java similarity index 91% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/QueueDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueDto.java index 30cc16733e..27ad5ba287 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/QueueDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueDto.java @@ -5,13 +5,15 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class QueueDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/TupleDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/TupleDto.java similarity index 87% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/TupleDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/TupleDto.java index c94c04b466..3b2c66b70e 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/TupleDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/TupleDto.java @@ -4,13 +4,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class TupleDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/UserDetailsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/UserDetailsDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/UserDetailsDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/UserDetailsDto.java index a5174f42fa..f932dfcf99 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/UserDetailsDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/UserDetailsDto.java @@ -5,13 +5,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UserDetailsDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/CreateUserDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/CreateUserDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java index 70a57b2654..fd76994630 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/CreateUserDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java @@ -6,14 +6,17 @@ import lombok.*; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class CreateUserDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/CredentialDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/CredentialDto.java similarity index 90% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/CredentialDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/CredentialDto.java index dae6cc8f63..591b73e806 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/CredentialDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/CredentialDto.java @@ -5,13 +5,15 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class CredentialDto { @NotBlank diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/JwtResponseDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java similarity index 90% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/JwtResponseDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java index 2e2d793b2c..c05f053c3b 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/JwtResponseDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java @@ -4,14 +4,17 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class JwtResponseDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/LoginRequestDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java similarity index 87% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/LoginRequestDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java index c961774794..5d0de083d9 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/LoginRequestDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java @@ -4,13 +4,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class LoginRequestDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/RealmAccessDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/RealmAccessDto.java similarity index 88% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/RealmAccessDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/RealmAccessDto.java index cd63b55bae..f3266c631e 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/RealmAccessDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/RealmAccessDto.java @@ -4,13 +4,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class RealmAccessDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/SignupRequestDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/SignupRequestDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/SignupRequestDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/SignupRequestDto.java index 44a0b4b4c5..3cd30bc60f 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/SignupRequestDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/SignupRequestDto.java @@ -7,13 +7,15 @@ import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class SignupRequestDto { @NotBlank diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/TokenIntrospectDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/TokenIntrospectDto.java similarity index 97% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/TokenIntrospectDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/TokenIntrospectDto.java index 0df11f1441..a1756e0c90 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/TokenIntrospectDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/TokenIntrospectDto.java @@ -5,13 +5,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class TokenIntrospectDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerActionTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerActionTypeDto.java similarity index 100% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerActionTypeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerActionTypeDto.java diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java similarity index 95% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerBriefDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java index 1a3bccd269..6c6dbe7c05 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerBriefDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java @@ -9,14 +9,17 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ContainerBriefDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerChangeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerChangeDto.java similarity index 86% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerChangeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerChangeDto.java index 6de5684bfd..2559e8c655 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerChangeDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerChangeDto.java @@ -4,12 +4,14 @@ import io.swagger.v3.oas.annotations.Parameter; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized @ToString public class ContainerChangeDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerCreateRequestDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerCreateRequestDto.java similarity index 90% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerCreateRequestDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerCreateRequestDto.java index 98e6170ca8..50159cb0e1 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerCreateRequestDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerCreateRequestDto.java @@ -4,12 +4,14 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotBlank; +import lombok.extern.jackson.Jacksonized; @Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor +@Jacksonized @ToString public class ContainerCreateRequestDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerDto.java similarity index 96% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerDto.java index cd112e1da4..c3a152785f 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerDto.java @@ -10,14 +10,17 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ContainerDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerStateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerStateDto.java similarity index 100% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerStateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerStateDto.java diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java similarity index 89% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageBriefDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java index 999657db55..3c4c5e1a21 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageBriefDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java @@ -5,13 +5,15 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ImageBriefDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageChangeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageChangeDto.java similarity index 94% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageChangeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageChangeDto.java index 894e5a675e..3e7f14ac54 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageChangeDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageChangeDto.java @@ -7,14 +7,17 @@ import lombok.*; import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotBlank; +import lombok.extern.jackson.Jacksonized; + import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ImageChangeDto { @Min(value = 1024, message = "only user ports are allowed 1024-65535") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageCreateDto.java similarity index 95% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageCreateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageCreateDto.java index a0698abf37..7da9a9cdeb 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageCreateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageCreateDto.java @@ -7,14 +7,17 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ImageCreateDto { @NotBlank diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageDateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDateDto.java similarity index 95% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageDateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDateDto.java index 47802b583a..6a1a41f20a 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageDateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDateDto.java @@ -7,14 +7,17 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ImageDateDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDto.java similarity index 97% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDto.java index 8e20b2ab37..b1606bdd27 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDto.java @@ -8,16 +8,19 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.math.BigInteger; import java.time.Instant; import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ImageDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageEnvItemDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageEnvItemDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemDto.java index 9d81cac967..ce7115f563 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageEnvItemDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemDto.java @@ -6,13 +6,15 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ImageEnvItemDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageEnvItemTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemTypeDto.java similarity index 100% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageEnvItemTypeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemTypeDto.java diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/AccessTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/AccessTypeDto.java similarity index 100% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/AccessTypeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/AccessTypeDto.java diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseAccessDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java similarity index 93% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseAccessDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java index eeee96c627..3aaedc8fc7 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseAccessDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java @@ -8,15 +8,18 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; import java.util.UUID; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class DatabaseAccessDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java similarity index 96% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseBriefDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java index be536d413a..bf2161981d 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseBriefDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java @@ -10,14 +10,17 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class DatabaseBriefDto { @NotNull(message = "database id is required") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseCreateDto.java similarity index 91% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseCreateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseCreateDto.java index 5960ae6df8..039e1070f7 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseCreateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseCreateDto.java @@ -6,13 +6,15 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class DatabaseCreateDto { @NotBlank(message = "database name is required") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java similarity index 97% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java index 7dd826478b..5715b7cd29 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java @@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import lombok.extern.jackson.Jacksonized; import org.springframework.data.elasticsearch.annotations.Document; import jakarta.validation.constraints.NotBlank; @@ -18,10 +19,11 @@ import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString @Document(indexName = "databaseindex", createIndex = false) public class DatabaseDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseGiveAccessDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseGiveAccessDto.java similarity index 88% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseGiveAccessDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseGiveAccessDto.java index 67acd21766..5c161e7ae7 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseGiveAccessDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseGiveAccessDto.java @@ -4,13 +4,15 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class DatabaseGiveAccessDto { @NotBlank(message = "username is required") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseModifyAccessDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyAccessDto.java similarity index 84% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseModifyAccessDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyAccessDto.java index 871ee52958..5d11bc57fe 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseModifyAccessDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyAccessDto.java @@ -3,13 +3,15 @@ package at.tuwien.api.database; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class DatabaseModifyAccessDto { @NotNull(message = "access type is required") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseModifyVisibilityDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyVisibilityDto.java similarity index 88% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseModifyVisibilityDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyVisibilityDto.java index eeb8574e2f..9fb05f6d09 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseModifyVisibilityDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyVisibilityDto.java @@ -5,13 +5,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class DatabaseModifyVisibilityDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseTransferDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseTransferDto.java similarity index 82% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseTransferDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseTransferDto.java index b7682cbbed..d287275909 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseTransferDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseTransferDto.java @@ -3,13 +3,15 @@ package at.tuwien.api.database; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class DatabaseTransferDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/LanguageTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/LanguageTypeDto.java similarity index 100% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/LanguageTypeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/LanguageTypeDto.java diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/LicenseDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/LicenseDto.java similarity index 89% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/LicenseDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/LicenseDto.java index d657108d71..e8f7109acb 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/LicenseDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/LicenseDto.java @@ -5,13 +5,15 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class LicenseDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/SubjectModifyDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java similarity index 86% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/SubjectModifyDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java index a3e9af8769..984f37b790 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/SubjectModifyDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java @@ -4,13 +4,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class SubjectModifyDto { private Long id; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewBriefDto.java similarity index 96% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewBriefDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewBriefDto.java index 3d51ae4a65..84c6230fa2 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewBriefDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewBriefDto.java @@ -9,15 +9,18 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; import java.util.UUID; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ViewBriefDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewCreateDto.java similarity index 93% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewCreateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewCreateDto.java index aea8de5a99..ca02de1b42 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewCreateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewCreateDto.java @@ -6,13 +6,15 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ViewCreateDto { @NotBlank(message = "name is required") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java similarity index 97% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java index 6c521b5e06..7a5f80d2bc 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import lombok.extern.jackson.Jacksonized; import org.springframework.data.elasticsearch.annotations.Document; import jakarta.validation.constraints.NotBlank; @@ -15,10 +16,11 @@ import java.util.UUID; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString @Document(indexName = "viewindex", createIndex = false) public class ViewDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExecuteInternalQueryDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java similarity index 85% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExecuteInternalQueryDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java index c6434cfbf8..1cc1d501c8 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExecuteInternalQueryDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java @@ -2,13 +2,14 @@ package at.tuwien.api.database.query; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.*; +import lombok.extern.jackson.Jacksonized; @Getter @Setter @Builder -@AllArgsConstructor @NoArgsConstructor -@EqualsAndHashCode +@AllArgsConstructor +@Jacksonized @ToString public class ExecuteInternalQueryDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExecuteStatementDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteStatementDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExecuteStatementDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteStatementDto.java index d84afd9afb..5878f45b58 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExecuteStatementDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteStatementDto.java @@ -5,14 +5,16 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotBlank; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; @Getter @Setter @Builder -@AllArgsConstructor @NoArgsConstructor -@EqualsAndHashCode +@AllArgsConstructor +@Jacksonized @ToString public class ExecuteStatementDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExportDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExportDto.java similarity index 87% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExportDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExportDto.java index c5b80615dd..b844947b83 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExportDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExportDto.java @@ -4,13 +4,14 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotBlank; +import lombok.extern.jackson.Jacksonized; @Getter @Setter @Builder -@AllArgsConstructor @NoArgsConstructor -@EqualsAndHashCode +@AllArgsConstructor +@Jacksonized @ToString public class ExportDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ImportDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ImportDto.java similarity index 94% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ImportDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ImportDto.java index e7636a95c0..bb2425edf0 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ImportDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ImportDto.java @@ -8,13 +8,14 @@ import lombok.*; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter @Builder -@AllArgsConstructor @NoArgsConstructor -@EqualsAndHashCode +@AllArgsConstructor +@Jacksonized @ToString public class ImportDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java similarity index 97% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryBriefDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java index 40237b8961..8998e84ee1 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryBriefDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java @@ -10,6 +10,8 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; import java.util.UUID; @@ -17,9 +19,9 @@ import java.util.UUID; @Getter @Setter @Builder -@AllArgsConstructor @NoArgsConstructor -@EqualsAndHashCode +@AllArgsConstructor +@Jacksonized @ToString public class QueryBriefDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryDto.java similarity index 97% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryDto.java index 216267dbac..e7ebbc1cb4 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryDto.java @@ -10,6 +10,8 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; import java.util.UUID; @@ -17,9 +19,9 @@ import java.util.UUID; @Getter @Setter @Builder -@AllArgsConstructor @NoArgsConstructor -@EqualsAndHashCode +@AllArgsConstructor +@Jacksonized @ToString public class QueryDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryResultDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryResultDto.java similarity index 91% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryResultDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryResultDto.java index fb9f1d9f71..ac21249ec5 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryResultDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryResultDto.java @@ -5,15 +5,17 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.List; import java.util.Map; @Getter @Setter @Builder -@AllArgsConstructor @NoArgsConstructor -@EqualsAndHashCode +@AllArgsConstructor +@Jacksonized @ToString public class QueryResultDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryTypeDto.java similarity index 100% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryTypeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryTypeDto.java diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/SaveStatementDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/SaveStatementDto.java similarity index 87% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/SaveStatementDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/SaveStatementDto.java index 4987b6c2f9..724d3da41a 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/SaveStatementDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/SaveStatementDto.java @@ -4,13 +4,14 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotBlank; +import lombok.extern.jackson.Jacksonized; @Getter @Setter @Builder -@AllArgsConstructor @NoArgsConstructor -@EqualsAndHashCode +@AllArgsConstructor +@Jacksonized @ToString public class SaveStatementDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java similarity index 95% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableBriefDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java index bba2d9bcd6..ea31bf329b 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableBriefDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java @@ -8,14 +8,17 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class TableBriefDto { @NotNull(message = "id is required") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCreateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateDto.java index a1101f8e9a..775e5d0eee 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCreateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateDto.java @@ -7,14 +7,17 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class TableCreateDto { @NotBlank diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCreateRawQuery.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateRawQuery.java similarity index 87% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCreateRawQuery.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateRawQuery.java index a587587d2f..efc3842b29 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCreateRawQuery.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateRawQuery.java @@ -1,15 +1,17 @@ package at.tuwien.api.database.table; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.sql.PreparedStatement; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class TableCreateRawQuery { private PreparedStatement preparedStatement; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvDeleteDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDeleteDto.java similarity index 85% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvDeleteDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDeleteDto.java index 1e90e02149..b38edd2b41 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvDeleteDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDeleteDto.java @@ -3,14 +3,17 @@ package at.tuwien.api.database.table; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.Map; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class TableCsvDeleteDto { @NotNull(message = "primary key columns are required") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDto.java similarity index 84% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDto.java index 4b7c7c14cb..700084500c 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDto.java @@ -3,14 +3,17 @@ package at.tuwien.api.database.table; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.Map; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class TableCsvDto { @NotNull(message = "data is required") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvInformationDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvInformationDto.java similarity index 91% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvInformationDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvInformationDto.java index 3d1975b5d7..6064b71d02 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvInformationDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvInformationDto.java @@ -7,13 +7,17 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.List; -@Setter @Getter +@Setter @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class TableCsvInformationDto { @NotBlank diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvUpdateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvUpdateDto.java similarity index 88% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvUpdateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvUpdateDto.java index ff5e358eda..7fd558022f 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvUpdateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvUpdateDto.java @@ -3,14 +3,17 @@ package at.tuwien.api.database.table; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.Map; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class TableCsvUpdateDto { @NotNull(message = "data is required") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java similarity index 97% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java index 4e0368cb6c..cf7d14f940 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import lombok.extern.jackson.Jacksonized; import org.springframework.data.elasticsearch.annotations.Document; import jakarta.validation.constraints.NotBlank; @@ -17,10 +18,11 @@ import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString @Document(indexName = "tableindex", createIndex = false) public class TableDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableHistoryDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableHistoryDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableHistoryDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableHistoryDto.java index f51b2e77a9..74f2918dca 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableHistoryDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableHistoryDto.java @@ -5,14 +5,17 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class TableHistoryDto { @NotNull(message = "event timestamp is required") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableInsertRawQuery.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableInsertRawQuery.java similarity index 84% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableInsertRawQuery.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableInsertRawQuery.java index 66d09bb136..ea4d33df5d 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableInsertRawQuery.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableInsertRawQuery.java @@ -1,16 +1,18 @@ package at.tuwien.api.database.table; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.util.Collection; import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class TableInsertRawQuery { private String query; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java similarity index 93% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnBriefDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java index 16d0cd6619..38ba0bff01 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnBriefDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java @@ -6,13 +6,15 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ColumnBriefDto { @NotNull(message = "id is required") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnCreateDto.java similarity index 95% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnCreateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnCreateDto.java index 204fc024c9..873ef4500f 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnCreateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnCreateDto.java @@ -6,13 +6,15 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ColumnCreateDto { @NotBlank diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java similarity index 97% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java index a79cd93767..612f15d86d 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import lombok.extern.jackson.Jacksonized; import org.springframework.data.elasticsearch.annotations.Document; import jakarta.validation.constraints.NotBlank; @@ -15,10 +16,11 @@ import jakarta.validation.constraints.NotNull; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString @Document(indexName = "columnindex", createIndex = false) public class ColumnDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnTypeDto.java similarity index 100% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnTypeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnTypeDto.java diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/SiUnitDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/SiUnitDto.java similarity index 100% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/SiUnitDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/SiUnitDto.java diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/ColumnSemanticsUpdateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ColumnSemanticsUpdateDto.java similarity index 86% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/ColumnSemanticsUpdateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ColumnSemanticsUpdateDto.java index f55d9c158e..77a38f70b4 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/ColumnSemanticsUpdateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ColumnSemanticsUpdateDto.java @@ -2,13 +2,15 @@ package at.tuwien.api.database.table.columns.concepts; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.*; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ColumnSemanticsUpdateDto { @JsonProperty("concept_uri") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/ConceptDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/ConceptDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java index ca02d1189d..68b98535aa 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/ConceptDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java @@ -6,14 +6,17 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ConceptDto { @NotBlank diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/UnitDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/UnitDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java index af56ff3c21..a5429ceb9b 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/UnitDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java @@ -6,14 +6,17 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UnitDto { @NotBlank diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/ConstraintsCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsCreateDto.java similarity index 90% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/ConstraintsCreateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsCreateDto.java index c741751b35..6fc2304f5d 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/ConstraintsCreateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsCreateDto.java @@ -3,15 +3,17 @@ package at.tuwien.api.database.table.constraints; import at.tuwien.api.database.table.constraints.foreignKey.ForeignKeyCreateDto; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ConstraintsCreateDto { private List<List<String>> uniques = null; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/ConstraintsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsDto.java similarity index 90% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/ConstraintsDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsDto.java index bc63fd70a0..c6b51376c7 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/ConstraintsDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsDto.java @@ -4,15 +4,17 @@ import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.constraints.foreignKey.ForeignKeyDto; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ConstraintsDto { List<List<ColumnDto>> uniques; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ForeignKeyCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ForeignKeyCreateDto.java similarity index 91% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ForeignKeyCreateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ForeignKeyCreateDto.java index 52ad89bc87..938cd08181 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ForeignKeyCreateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ForeignKeyCreateDto.java @@ -2,15 +2,17 @@ package at.tuwien.api.database.table.constraints.foreignKey; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ForeignKeyCreateDto { private List<String> columns; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ForeignKeyDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ForeignKeyDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ForeignKeyDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ForeignKeyDto.java index e2b1889622..0764dd7349 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ForeignKeyDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ForeignKeyDto.java @@ -4,15 +4,17 @@ import at.tuwien.api.database.table.TableBriefDto; import at.tuwien.api.database.table.columns.ColumnDto; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ForeignKeyDto { private List<ColumnDto> columns; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ReferenceTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ReferenceTypeDto.java similarity index 100% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ReferenceTypeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ReferenceTypeDto.java diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteBody.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteBody.java similarity index 75% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteBody.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteBody.java index e21006600b..8ef874acba 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteBody.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteBody.java @@ -1,14 +1,17 @@ package at.tuwien.api.datacite; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.io.Serializable; -@Data @Getter +@Setter +@Builder @NoArgsConstructor @AllArgsConstructor -@Builder +@Jacksonized +@ToString public class DataCiteBody<T> implements Serializable { private DataCiteData<T> data; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteData.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteData.java similarity index 83% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteData.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteData.java index 02a2ea99aa..ae459e4291 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteData.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteData.java @@ -2,14 +2,17 @@ package at.tuwien.api.datacite; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.io.Serializable; -@Data @Getter +@Setter +@Builder @NoArgsConstructor @AllArgsConstructor -@Builder +@Jacksonized +@ToString @JsonIgnoreProperties(ignoreUnknown = true) public class DataCiteData<T> implements Serializable { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteError.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteError.java similarity index 82% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteError.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteError.java index 301b1483f3..dcbc312d31 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteError.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteError.java @@ -1,15 +1,17 @@ package at.tuwien.api.datacite; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.util.Map; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class DataCiteError { private String message; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteCreateDoi.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteCreateDoi.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteCreateDoi.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteCreateDoi.java index b46bf4d3a4..24da7bc82a 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteCreateDoi.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteCreateDoi.java @@ -4,14 +4,18 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.io.Serializable; import java.util.List; -@Data @Getter +@Setter +@Builder @NoArgsConstructor @AllArgsConstructor -@Builder +@Jacksonized +@ToString public class DataCiteCreateDoi implements Serializable { private String url; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoi.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoi.java similarity index 81% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoi.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoi.java index 8e622553c6..5d3e0b2c1e 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoi.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoi.java @@ -2,14 +2,17 @@ package at.tuwien.api.datacite.doi; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.io.Serializable; -@Data @Getter +@Setter +@Builder @NoArgsConstructor @AllArgsConstructor -@Builder +@Jacksonized +@ToString @JsonIgnoreProperties(ignoreUnknown = true) public class DataCiteDoi implements Serializable { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreator.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreator.java similarity index 87% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreator.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreator.java index 7d67a0a731..4da70cd2eb 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreator.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreator.java @@ -3,14 +3,18 @@ package at.tuwien.api.datacite.doi; import lombok.*; import jakarta.validation.constraints.NotBlank; +import lombok.extern.jackson.Jacksonized; + import java.io.Serializable; import java.util.List; -@Data @Getter +@Setter +@Builder @NoArgsConstructor @AllArgsConstructor -@Builder +@Jacksonized +@ToString public class DataCiteDoiCreator implements Serializable { @NotBlank diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreatorAffiliation.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreatorAffiliation.java similarity index 82% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreatorAffiliation.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreatorAffiliation.java index 3dc9f39372..a361452b96 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreatorAffiliation.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreatorAffiliation.java @@ -1,14 +1,17 @@ package at.tuwien.api.datacite.doi; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.io.Serializable; -@Data @Getter +@Setter +@Builder @NoArgsConstructor @AllArgsConstructor -@Builder +@Jacksonized +@ToString public class DataCiteDoiCreatorAffiliation implements Serializable { private String affiliationIdentifier; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreatorNameIdentifier.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreatorNameIdentifier.java similarity index 81% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreatorNameIdentifier.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreatorNameIdentifier.java index b759574ba3..449c814171 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreatorNameIdentifier.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreatorNameIdentifier.java @@ -1,14 +1,17 @@ package at.tuwien.api.datacite.doi; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.io.Serializable; -@Data @Getter +@Setter +@Builder @NoArgsConstructor @AllArgsConstructor -@Builder +@Jacksonized +@ToString public class DataCiteDoiCreatorNameIdentifier implements Serializable { private String schemeUri; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiEvent.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiEvent.java similarity index 100% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiEvent.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiEvent.java diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiRelatedIdentifier.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiRelatedIdentifier.java similarity index 83% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiRelatedIdentifier.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiRelatedIdentifier.java index ac6e084b58..d446029eae 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiRelatedIdentifier.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiRelatedIdentifier.java @@ -1,14 +1,17 @@ package at.tuwien.api.datacite.doi; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.io.Serializable; -@Data @Getter +@Setter +@Builder @NoArgsConstructor @AllArgsConstructor -@Builder +@Jacksonized +@ToString public class DataCiteDoiRelatedIdentifier implements Serializable { private String relatedIdentifier; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiRights.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiRights.java similarity index 79% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiRights.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiRights.java index ca072bb98c..4a53c7f7c5 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiRights.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiRights.java @@ -1,14 +1,17 @@ package at.tuwien.api.datacite.doi; import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.io.Serializable; -@Data @Getter +@Setter +@Builder @NoArgsConstructor @AllArgsConstructor -@Builder +@Jacksonized +@ToString public class DataCiteDoiRights implements Serializable { private String rights; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiTitle.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiTitle.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiTitle.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiTitle.java index 644a4508cb..a0358da69a 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiTitle.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiTitle.java @@ -4,13 +4,17 @@ import com.fasterxml.jackson.annotation.JsonProperty; import lombok.*; import jakarta.validation.constraints.NotBlank; +import lombok.extern.jackson.Jacksonized; + import java.io.Serializable; -@Data @Getter +@Setter +@Builder @NoArgsConstructor @AllArgsConstructor -@Builder +@Jacksonized +@ToString public class DataCiteDoiTitle implements Serializable { @NotBlank diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiTypes.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiTypes.java similarity index 88% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiTypes.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiTypes.java index 4218e12009..778853ce78 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiTypes.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiTypes.java @@ -3,13 +3,17 @@ package at.tuwien.api.datacite.doi; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.io.Serializable; -@Data @Getter +@Setter +@Builder @NoArgsConstructor @AllArgsConstructor -@Builder +@Jacksonized +@ToString public class DataCiteDoiTypes implements Serializable { public static final DataCiteDoiTypes DATASET = DataCiteDoiTypes.builder().resourceTypeGeneral("Dataset").build(); diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/error/ApiErrorDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/error/ApiErrorDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/error/ApiErrorDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/error/ApiErrorDto.java index 2d6d83db34..4cb84a15c0 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/error/ApiErrorDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/error/ApiErrorDto.java @@ -2,16 +2,18 @@ package at.tuwien.api.error; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import lombok.extern.jackson.Jacksonized; import org.springframework.http.HttpStatus; import jakarta.validation.constraints.NotNull; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ApiErrorDto { @NotNull(message = "http status is required") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/BibliographyTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/BibliographyTypeDto.java similarity index 93% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/BibliographyTypeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/BibliographyTypeDto.java index 51cfbbe416..9da9afbc0b 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/BibliographyTypeDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/BibliographyTypeDto.java @@ -1,7 +1,9 @@ package at.tuwien.api.identifier; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +@Getter public enum BibliographyTypeDto { @JsonProperty("apa") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java similarity index 77% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorBriefDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java index ea386c1461..c22846ccb1 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorBriefDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java @@ -1,17 +1,18 @@ - package at.tuwien.api.identifier; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; -import lombok.Data; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import jakarta.validation.constraints.NotBlank; -@Data +import lombok.extern.jackson.Jacksonized; + @Getter @Setter @Builder +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class CreatorBriefDto { @NotBlank diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorCreateDto.java similarity index 85% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorCreateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorCreateDto.java index 0d0bc83fb6..b0efceceda 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorCreateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorCreateDto.java @@ -1,19 +1,18 @@ package at.tuwien.api.identifier; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; -import lombok.Data; -import lombok.Getter; -import lombok.Setter; -import lombok.extern.jackson.Jacksonized; +import lombok.*; import jakarta.validation.constraints.NotBlank; +import lombok.extern.jackson.Jacksonized; -@Data @Getter @Setter @Builder +@NoArgsConstructor +@AllArgsConstructor @Jacksonized +@ToString public class CreatorCreateDto { @NotBlank diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java similarity index 91% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java index 8513d10380..2bcfa39f3e 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java @@ -9,12 +9,17 @@ import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; -@Data @Getter @Setter @Builder +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class CreatorDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierBriefDto.java similarity index 93% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierBriefDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierBriefDto.java index 817e1fdb59..7538b8d9dd 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierBriefDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierBriefDto.java @@ -4,20 +4,22 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; -import lombok.Data; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; import java.util.List; -@Data @Getter @Setter @Builder +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class IdentifierBriefDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierCreateDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierCreateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierCreateDto.java index a38ccfe4ed..abb5b18263 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierCreateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierCreateDto.java @@ -4,20 +4,22 @@ import at.tuwien.api.database.LanguageTypeDto; import at.tuwien.api.database.LicenseDto; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; -import lombok.Data; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotEmpty; +import lombok.extern.jackson.Jacksonized; + import java.util.List; -@Data @Getter @Setter @Builder +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class IdentifierCreateDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java similarity index 98% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java index bb3ebcc8bc..592c7cfc8c 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import lombok.extern.jackson.Jacksonized; import org.springframework.data.elasticsearch.annotations.Document; import jakarta.validation.constraints.NotBlank; @@ -17,10 +18,11 @@ import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString @Document(indexName = "identifierindex", createIndex = false) public class IdentifierDto { diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierTypeDto.java similarity index 93% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierTypeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierTypeDto.java index 3f02e08fc1..c30411b440 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierTypeDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierTypeDto.java @@ -1,7 +1,9 @@ package at.tuwien.api.identifier; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +@Getter public enum IdentifierTypeDto { @JsonProperty("database") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierUpdateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierUpdateDto.java similarity index 92% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierUpdateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierUpdateDto.java index 610533188b..ab081e4295 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierUpdateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierUpdateDto.java @@ -4,20 +4,22 @@ import at.tuwien.api.database.LanguageTypeDto; import at.tuwien.api.database.LicenseDto; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; -import lombok.Data; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotEmpty; +import lombok.extern.jackson.Jacksonized; + import java.util.List; -@Data @Getter @Setter @Builder +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class IdentifierUpdateDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedIdentifierCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierCreateDto.java similarity index 91% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedIdentifierCreateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierCreateDto.java index 8b04575432..a3e354cba9 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedIdentifierCreateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierCreateDto.java @@ -6,11 +6,13 @@ import lombok.extern.jackson.Jacksonized; import jakarta.validation.constraints.NotNull; -@Data @Getter @Setter @Builder +@NoArgsConstructor +@AllArgsConstructor @Jacksonized +@ToString public class RelatedIdentifierCreateDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedIdentifierDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java similarity index 91% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedIdentifierDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java index 7c6dc67468..abc17edb91 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedIdentifierDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java @@ -8,12 +8,17 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.time.Instant; -@Data @Getter @Setter @Builder +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class RelatedIdentifierDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedTypeDto.java similarity index 97% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedTypeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedTypeDto.java index c8cef3c89f..1e75513abc 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedTypeDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedTypeDto.java @@ -1,7 +1,9 @@ package at.tuwien.api.identifier; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +@Getter public enum RelatedTypeDto { @JsonProperty("DOI") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelationTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelationTypeDto.java similarity index 98% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelationTypeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelationTypeDto.java index a23d3ab8f9..fb43cc5b46 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelationTypeDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelationTypeDto.java @@ -1,7 +1,9 @@ package at.tuwien.api.identifier; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +@Getter public enum RelationTypeDto { @JsonProperty("IsCitedBy") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/VisibilityTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/VisibilityTypeDto.java similarity index 100% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/VisibilityTypeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/VisibilityTypeDto.java diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/ExchangeUpdatePermissionsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/ExchangeUpdatePermissionsDto.java similarity index 89% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/ExchangeUpdatePermissionsDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/ExchangeUpdatePermissionsDto.java index d1f1f218e8..d68514d42f 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/ExchangeUpdatePermissionsDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/ExchangeUpdatePermissionsDto.java @@ -4,13 +4,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotBlank; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class ExchangeUpdatePermissionsDto { @NotBlank diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/GrantedAuthorityDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/GrantedAuthorityDto.java similarity index 83% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/GrantedAuthorityDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/GrantedAuthorityDto.java index 3ed32c1cb6..08a7ce10d6 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/GrantedAuthorityDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/GrantedAuthorityDto.java @@ -2,19 +2,18 @@ package at.tuwien.api.user; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor -@EqualsAndHashCode +@AllArgsConstructor +@Jacksonized +@ToString public class GrantedAuthorityDto { @Schema(example = "ROLE_RESEARCHER") private String authority; - - } diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/RoleTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/RoleTypeDto.java similarity index 94% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/RoleTypeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/RoleTypeDto.java index 6c6e91a8fc..4b2c877435 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/RoleTypeDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/RoleTypeDto.java @@ -1,7 +1,9 @@ package at.tuwien.api.user; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +@Getter public enum RoleTypeDto { @JsonProperty("researcher") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserAttributeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserAttributeDto.java similarity index 91% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserAttributeDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserAttributeDto.java index 3f77686aab..2a46d764ee 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserAttributeDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserAttributeDto.java @@ -5,14 +5,17 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.UUID; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UserAttributeDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserBriefDto.java similarity index 94% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserBriefDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserBriefDto.java index 1030fb41a2..1304c56de7 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserBriefDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserBriefDto.java @@ -5,14 +5,17 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.UUID; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UserBriefDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserDetailsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDetailsDto.java similarity index 94% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserDetailsDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDetailsDto.java index 56eeda4829..e72a0505ab 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserDetailsDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDetailsDto.java @@ -1,6 +1,7 @@ package at.tuwien.api.user; import lombok.*; +import lombok.extern.jackson.Jacksonized; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; @@ -10,10 +11,11 @@ import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UserDetailsDto implements UserDetails { private String id; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java similarity index 96% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java index fd5c7ca85f..6197dd0697 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java @@ -6,16 +6,18 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.List; import java.util.UUID; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor -@EqualsAndHashCode +@AllArgsConstructor +@Jacksonized +@ToString public class UserDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserEmailDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserEmailDto.java similarity index 87% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserEmailDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserEmailDto.java index 6d2db19757..0459cb96e8 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserEmailDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserEmailDto.java @@ -5,13 +5,15 @@ import lombok.*; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UserEmailDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserForgotDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserForgotDto.java similarity index 87% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserForgotDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserForgotDto.java index 9433ede1a3..ffc95c3f8a 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserForgotDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserForgotDto.java @@ -4,13 +4,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.Email; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UserForgotDto { @Schema(example = "jcarberry") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserModifyPasswordDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserModifyPasswordDto.java similarity index 87% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserModifyPasswordDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserModifyPasswordDto.java index c9763ee84f..5fe224ee77 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserModifyPasswordDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserModifyPasswordDto.java @@ -4,13 +4,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UserModifyPasswordDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserPasswordDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserPasswordDto.java similarity index 81% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserPasswordDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserPasswordDto.java index 34926e85f5..bcd21ded02 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserPasswordDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserPasswordDto.java @@ -3,13 +3,15 @@ package at.tuwien.api.user; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UserPasswordDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserResetDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserResetDto.java similarity index 83% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserResetDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserResetDto.java index 9c00094f82..919c3b12af 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserResetDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserResetDto.java @@ -3,13 +3,15 @@ package at.tuwien.api.user; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UserResetDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserRolesDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserRolesDto.java similarity index 83% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserRolesDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserRolesDto.java index b33182c99e..06d7c83f26 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserRolesDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserRolesDto.java @@ -3,14 +3,17 @@ package at.tuwien.api.user; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; + import java.util.List; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UserRolesDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserThemeSetDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserThemeSetDto.java similarity index 88% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserThemeSetDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserThemeSetDto.java index 2ebf9bd4f2..1eeadc99e3 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserThemeSetDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserThemeSetDto.java @@ -5,13 +5,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotNull; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UserThemeSetDto { @NotNull diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserUpdateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdateDto.java similarity index 89% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserUpdateDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdateDto.java index a14c2e211f..bdc444ca68 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserUpdateDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdateDto.java @@ -2,13 +2,15 @@ package at.tuwien.api.user; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UserUpdateDto { @Schema(example = "Josiah") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserUpdatePermissionsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdatePermissionsDto.java similarity index 86% rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserUpdatePermissionsDto.java rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdatePermissionsDto.java index 6c69d5bc68..f54d2c4749 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserUpdatePermissionsDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdatePermissionsDto.java @@ -4,13 +4,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import jakarta.validation.constraints.NotBlank; +import lombok.extern.jackson.Jacksonized; @Getter @Setter -@ToString @Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString public class UserUpdatePermissionsDto { @NotBlank diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/Container.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java similarity index 95% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/Container.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java index 57c6f1c352..1f7921291b 100644 --- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/Container.java +++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java @@ -6,6 +6,7 @@ import at.tuwien.entities.user.User; import jakarta.persistence.*; import lombok.*; import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; @@ -32,6 +33,7 @@ public class Container { private Long id; @ToString.Exclude + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "createdBy", nullable = false, columnDefinition = "VARCHAR(36)") private UUID createdBy; @@ -42,6 +44,7 @@ public class Container { private User creator; @ToString.Exclude + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "ownedBy", nullable = false, columnDefinition = "VARCHAR(36)") private UUID ownedBy; diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImage.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImage.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageDate.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDate.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageDate.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDate.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageDateKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDateKey.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageDateKey.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDateKey.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItem.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItem.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItem.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItem.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItemKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItemKey.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItemKey.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItemKey.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItemType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItemType.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItemType.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItemType.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/AccessType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/AccessType.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/AccessType.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/AccessType.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/Database.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java similarity index 97% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/Database.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java index 14015d7944..e987416bc7 100644 --- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/Database.java +++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java @@ -36,6 +36,7 @@ public class Database implements Serializable { private Long id; @ToString.Exclude + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "created_by", nullable = false, columnDefinition = "VARCHAR(36)") private UUID createdBy; @@ -46,6 +47,7 @@ public class Database implements Serializable { private User creator; @ToString.Exclude + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "owned_by", nullable = false, columnDefinition = "VARCHAR(36)") private UUID ownedBy; @@ -76,6 +78,7 @@ public class Database implements Serializable { private String description; @ToString.Exclude + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "contact_person", nullable = false, columnDefinition = "VARCHAR(36)") private UUID contactPerson; diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/DatabaseAccess.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java similarity index 94% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/DatabaseAccess.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java index 3c27dd1b56..ee3058130d 100644 --- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/DatabaseAccess.java +++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java @@ -2,6 +2,7 @@ package at.tuwien.entities.database; import at.tuwien.entities.user.User; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; @@ -22,6 +23,7 @@ public class DatabaseAccess { @Id @EqualsAndHashCode.Include + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "user_id", updatable = false, columnDefinition = "VARCHAR(36)") private UUID huserid; diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/DatabaseAccessKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/DatabaseAccessKey.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/LanguageType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/LanguageType.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/LanguageType.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/LanguageType.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/License.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/License.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/License.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/License.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/View.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/View.java similarity index 98% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/View.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/View.java index 87cf2b1d7e..a538086f8c 100644 --- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/View.java +++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/View.java @@ -5,6 +5,7 @@ import at.tuwien.entities.user.User; import lombok.*; import net.sf.jsqlparser.statement.select.FromItem; import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; @@ -47,6 +48,7 @@ public class View { private Long vdbid; @ToString.Exclude + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "createdBy", nullable = false, columnDefinition = "VARCHAR(36)") private UUID createdBy; diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/ViewKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/ViewKey.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/ViewKey.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/ViewKey.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/Table.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/Table.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/TableKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/TableKey.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/TableKey.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/TableKey.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumn.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumn.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnConcept.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java similarity index 95% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnConcept.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java index 0bb465af08..2fff7bc4e7 100644 --- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnConcept.java +++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java @@ -29,7 +29,7 @@ public class TableColumnConcept { @org.springframework.data.annotation.Transient @ToString.Exclude - @OneToMany(fetch = FetchType.LAZY) + @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST) @JoinTable(name = "mdb_columns_concepts", joinColumns = @JoinColumn(name = "uri", referencedColumnName = "uri", insertable = false, updatable = false), inverseJoinColumns = { diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnKey.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnKey.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnKey.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnType.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnType.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnType.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnUnit.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnUnit.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/Constraints.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/Constraints.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/Constraints.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/Constraints.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ForeignKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ForeignKey.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ForeignKeyReference.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ForeignKeyReference.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ReferenceType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ReferenceType.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ReferenceType.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ReferenceType.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/unique/Unique.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/unique/Unique.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/Creator.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Creator.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/Creator.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Creator.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/CreatorKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/CreatorKey.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/CreatorKey.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/CreatorKey.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/Identifier.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/Identifier.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/IdentifierType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/IdentifierType.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/IdentifierType.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/IdentifierType.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelatedIdentifier.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelatedIdentifier.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelatedIdentifierKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifierKey.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelatedIdentifierKey.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifierKey.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelatedType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedType.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelatedType.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedType.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelationType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelationType.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelationType.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelationType.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/VisibilityType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/VisibilityType.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/VisibilityType.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/VisibilityType.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Credential.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Credential.java similarity index 90% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Credential.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Credential.java index d0f10b62c4..1176dc9470 100644 --- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Credential.java +++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Credential.java @@ -1,6 +1,7 @@ package at.tuwien.entities.user; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import jakarta.persistence.*;; @@ -19,12 +20,14 @@ public class Credential { @Id @EqualsAndHashCode.Include + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "ID", nullable = false, columnDefinition = "VARCHAR(36)") private UUID id; @Column(nullable = false) private String type; + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "user_id", nullable = false, columnDefinition = "VARCHAR(36)") private UUID userId; diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Realm.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Realm.java similarity index 82% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Realm.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Realm.java index 5c7816af6a..77d350fb00 100644 --- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Realm.java +++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Realm.java @@ -1,12 +1,10 @@ package at.tuwien.entities.user; import lombok.*; -import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Immutable; -import org.hibernate.annotations.Type; +import org.hibernate.annotations.JdbcTypeCode; -import jakarta.persistence.*;; -import java.util.List; +import jakarta.persistence.*; import java.util.UUID; @Data @@ -25,6 +23,7 @@ public class Realm { @Id @EqualsAndHashCode.Include + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "ID", nullable = false, columnDefinition = "VARCHAR(36)") private UUID id; diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Role.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Role.java similarity index 87% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Role.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Role.java index e50a902bd0..20fdb812d0 100644 --- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Role.java +++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Role.java @@ -2,6 +2,7 @@ package at.tuwien.entities.user; import lombok.*; import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import jakarta.persistence.*;; @@ -22,12 +23,14 @@ public class Role { @Id @EqualsAndHashCode.Include + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "ID", nullable = false, columnDefinition = "VARCHAR(36)") private UUID id; @Column(name = "NAME", nullable = false) private String name; + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "REALM_ID", nullable = false, columnDefinition = "VARCHAR(36)") private UUID realmId; diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/RoleMapping.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMapping.java similarity index 86% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/RoleMapping.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMapping.java index 674b9b8608..6e167d2e17 100644 --- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/RoleMapping.java +++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMapping.java @@ -1,6 +1,7 @@ package at.tuwien.entities.user; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import jakarta.persistence.*;; @@ -22,11 +23,13 @@ public class RoleMapping { @Id @EqualsAndHashCode.Include + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "USER_ID", nullable = false, columnDefinition = "VARCHAR(36)") private UUID userId; @Id @EqualsAndHashCode.Include + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "ROLE_ID", nullable = false, columnDefinition = "VARCHAR(36)") private UUID roleId; diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/RoleMappingKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMappingKey.java similarity index 100% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/RoleMappingKey.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMappingKey.java diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/User.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java similarity index 97% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/User.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java index bf12e29066..551acd615d 100644 --- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/User.java +++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java @@ -4,6 +4,7 @@ import at.tuwien.entities.container.Container; import at.tuwien.entities.database.Database; import at.tuwien.entities.identifier.Identifier; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import org.springframework.security.core.Authentication; @@ -33,6 +34,7 @@ public class User { @Id @EqualsAndHashCode.Include + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "ID", nullable = false, columnDefinition = "VARCHAR(36)") private UUID id; @@ -45,6 +47,7 @@ public class User { @Column(name = "LAST_NAME") private String lastname; + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "REALM_ID", columnDefinition = "VARCHAR(36)") private UUID realmId; diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/UserAttribute.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/UserAttribute.java similarity index 88% rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/UserAttribute.java rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/UserAttribute.java index 199dcdd149..8136ea1512 100644 --- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/UserAttribute.java +++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/UserAttribute.java @@ -1,6 +1,7 @@ package at.tuwien.entities.user; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import jakarta.persistence.*;; @@ -19,10 +20,12 @@ public class UserAttribute { @Id @EqualsAndHashCode.Include + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "ID", nullable = false, columnDefinition = "VARCHAR(36)") private UUID id; @ToString.Exclude + @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "USER_ID", nullable = false, columnDefinition = "VARCHAR(36)") private UUID userId; diff --git a/dbrepo-metadata-db/querystore/src/main/java/at/tuwien/oaipmh/querystore/Query.java b/dbrepo-metadata-db/querystore/src/main/java/at/tuwien/querystore/Query.java similarity index 100% rename from dbrepo-metadata-db/querystore/src/main/java/at/tuwien/oaipmh/querystore/Query.java rename to dbrepo-metadata-db/querystore/src/main/java/at/tuwien/querystore/Query.java diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/DockerConfig.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/config/DockerConfig.java similarity index 100% rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/DockerConfig.java rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/config/DockerConfig.java diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/H2Utils.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/config/H2Utils.java similarity index 100% rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/H2Utils.java rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/config/H2Utils.java diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/MariaDbConfig.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/config/MariaDbConfig.java similarity index 100% rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/MariaDbConfig.java rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/config/MariaDbConfig.java diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/RabbitMqConfig.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/config/RabbitMqConfig.java similarity index 100% rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/RabbitMqConfig.java rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/config/RabbitMqConfig.java diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/test/BaseTest.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java similarity index 100% rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/test/BaseTest.java rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/utils/AmqpUtils.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/utils/AmqpUtils.java similarity index 100% rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/utils/AmqpUtils.java rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/utils/AmqpUtils.java diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/utils/ArrayUtil.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/utils/ArrayUtil.java similarity index 100% rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/utils/ArrayUtil.java rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/utils/ArrayUtil.java diff --git a/dbrepo-metadata-service/Dockerfile b/dbrepo-metadata-service/Dockerfile index 350d9af3cf..813cdbc04f 100644 --- a/dbrepo-metadata-service/Dockerfile +++ b/dbrepo-metadata-service/Dockerfile @@ -45,9 +45,8 @@ RUN chmod +x /usr/bin/service_ready HEALTHCHECK --interval=10s --timeout=5s --retries=12 CMD service_ready -COPY ./server.keystore ./server.keystore COPY --from=build ./rest-service/target/rest-service-*.jar ./metadata-service.jar EXPOSE 9090 -ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-Djavax.net.ssl.trustStore=/app/server.keystore", "-Djavax.net.ssl.trustStorePassword=password", "-jar", "./metadata-service.jar"] +ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-jar", "./metadata-service.jar"] diff --git a/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml b/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml index cbf7390e2b..f57bf10f48 100644 --- a/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml @@ -39,7 +39,7 @@ logging: fda: ready.path: ./ready pid.base: https://example.com/pid/ - gateway.endpoint: https://localhost + gateway.endpoint: http://localhost dbrepo: repository-name: TU Wien Database Repository base-url: https://dbrepo1.ec.tuwien.at/api/oai diff --git a/dbrepo-metadata-service/rest-service/src/test/resources/application.properties b/dbrepo-metadata-service/rest-service/src/test/resources/application.properties index 507921d77d..f56b5e38f3 100644 --- a/dbrepo-metadata-service/rest-service/src/test/resources/application.properties +++ b/dbrepo-metadata-service/rest-service/src/test/resources/application.properties @@ -9,7 +9,8 @@ spring.cloud.config.discovery.enabled = false spring.cloud.config.enabled = false # disable datasource -spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS FDA +# spring 6 fix https://github.com/h2database/h2database/issues/3363 +spring.datasource.url=jdbc:h2:mem:testdb;NON_KEYWORDS=VALUE;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS FDA spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password diff --git a/dbrepo-metadata-service/server.keystore b/dbrepo-metadata-service/server.keystore deleted file mode 100644 index 6f43470deca0b65a2aec9bf124ce944a502113fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41120 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 C>$}7N diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java index 83313bfc8b..13d92092fc 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java @@ -8,6 +8,8 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.security.web.util.matcher.OrRequestMatcher; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @@ -21,6 +23,16 @@ public class WebSecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + final OrRequestMatcher internalEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/actuator/prometheus/**", "GET") + ); + final OrRequestMatcher publicEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/api/oai/**", "GET"), + new AntPathRequestMatcher("/v3/api-docs.yaml"), + new AntPathRequestMatcher("/v3/api-docs/**"), + new AntPathRequestMatcher("/swagger-ui/**"), + new AntPathRequestMatcher("/swagger-ui.html") + ); /* enable CORS and disable CSRF */ http = http.cors().and().csrf().disable(); /* set session management to stateless */ @@ -39,15 +51,11 @@ public class WebSecurityConfig { } ).and(); /* set permissions on endpoints */ - http.authorizeRequests() + http.authorizeHttpRequests() /* our internal endpoints */ - .requestMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll() + .requestMatchers(internalEndpoints).permitAll() /* our public endpoints */ - .requestMatchers(HttpMethod.GET, "/api/oai/**").permitAll() - .requestMatchers("/v3/api-docs.yaml", - "/v3/api-docs/**", - "/swagger-ui/**", - "/swagger-ui.html").permitAll() + .requestMatchers(publicEndpoints).permitAll() /* our private endpoints */ .anyRequest().authenticated(); return http.build(); @@ -58,7 +66,7 @@ public class WebSecurityConfig { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); - config.addAllowedOrigin("*"); + config.addAllowedOriginPattern("*"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); diff --git a/dbrepo-query-service/Dockerfile b/dbrepo-query-service/Dockerfile index c65fdc6dd3..df2847401a 100644 --- a/dbrepo-query-service/Dockerfile +++ b/dbrepo-query-service/Dockerfile @@ -37,7 +37,7 @@ ENV BROKER_CONSUMERS=2 ENV LOG_LEVEL=debug ENV DBREPO_CLIENT_SECRET=client-secret ENV CLIENT_ID=dbrepo-client -ENV JWT_ISSUER=https://localhost/realms/dbrepo +ENV JWT_ISSUER=http://localhost/realms/dbrepo ENV JWT_PUBKEY=public-key ENV NOT_SUPPORTED_KEYWORDS=\\*,AVG,BIT_AND,BIT_OR,BIT_XOR,COUNT,COUNTDISTINCT,GROUP_CONCAT,JSON_ARRAYAGG,JSON_OBJECTAGG,MAX,MIN,STD,STDDEV,STDDEV_POP,STDDEV_SAMP,SUM,VARIANCE,VAR_POP,VAR_SAMP,-- @@ -48,9 +48,8 @@ RUN chmod +x /usr/bin/service_ready HEALTHCHECK --interval=10s --timeout=5s --retries=12 CMD service_ready -COPY ./server.keystore ./server.keystore COPY --from=build ./rest-service/target/rest-service-*.jar ./query-service.jar EXPOSE 9093 -ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-Djavax.net.ssl.trustStore=/app/server.keystore", "-Djavax.net.ssl.trustStorePassword=password", "-jar", "./query-service.jar"] +ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-jar", "./query-service.jar"] diff --git a/dbrepo-query-service/rest-service/src/main/resources/application-local.yml b/dbrepo-query-service/rest-service/src/main/resources/application-local.yml index 3c064e2b4f..32b8a33c40 100644 --- a/dbrepo-query-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-query-service/rest-service/src/main/resources/application-local.yml @@ -41,10 +41,10 @@ logging: at.tuwien.: trace org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver: debug fda: - gateway.endpoint: https://localhost + gateway.endpoint: http://localhost ready.path: ./ready jwt: - issuer: https://localhost/realms/dbrepo + issuer: http://localhost/realms/dbrepo public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB client_secret: client-secret client_id: dbrepo-client diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/mapper/StoreMapperTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/mapper/StoreMapperTest.java index 5054baff5f..bc3a177d9b 100644 --- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/mapper/StoreMapperTest.java +++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/mapper/StoreMapperTest.java @@ -31,12 +31,12 @@ public class StoreMapperTest extends BaseUnitTest { @MockBean private RabbitMqListenerImpl rabbitMqListener; - private final DateTimeFormatter mariaDbFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S[SS]") + private final DateTimeFormatter mariaDbFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss[.SSS]") .withZone(ZoneId.of("UTC")); @Test public void mapMariaDbInstant_succeeds() { - final String timestamp = "2023-01-08 08:49:29.0"; + final String timestamp = "2023-01-08 08:49:29"; final Instant compare = Instant.ofEpochSecond(1673167769); /* test */ diff --git a/dbrepo-query-service/rest-service/src/test/resources/application.properties b/dbrepo-query-service/rest-service/src/test/resources/application.properties index 7934d71f3c..ca9a7d11ef 100644 --- a/dbrepo-query-service/rest-service/src/test/resources/application.properties +++ b/dbrepo-query-service/rest-service/src/test/resources/application.properties @@ -9,7 +9,8 @@ spring.cloud.config.discovery.enabled=false spring.cloud.config.enabled=false # internal datasource -spring.datasource.url=jdbc:h2:mem:testdb;DATABASE_TO_UPPER=false;DB_CLOSE_ON_EXIT=FALSE;INIT=RUNSCRIPT FROM './src/test/resources/schema.sql' +# spring 6 fix https://github.com/h2database/h2database/issues/3363 +spring.datasource.url=jdbc:h2:mem:testdb;NON_KEYWORDS=VALUE;DATABASE_TO_UPPER=false;DB_CLOSE_ON_EXIT=FALSE;INIT=RUNSCRIPT FROM './src/test/resources/schema.sql' spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password diff --git a/dbrepo-query-service/server.keystore b/dbrepo-query-service/server.keystore deleted file mode 100644 index 6f43470deca0b65a2aec9bf124ce944a502113fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41120 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 C>$}7N diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java b/dbrepo-query-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java index b61e8d13bf..582fe83630 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java @@ -12,6 +12,8 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.security.web.util.matcher.OrRequestMatcher; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @@ -36,6 +38,23 @@ public class WebSecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + final OrRequestMatcher internalEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/actuator/prometheus/**", "GET") + ); + final OrRequestMatcher publicEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/api/container/**/database/data/**", "GET"), + new AntPathRequestMatcher("/api/container/**/database/**/table/**/data/**", "GET"), + new AntPathRequestMatcher("/api/container/**/database/**/view/**", "GET"), + new AntPathRequestMatcher("/api/container/**/database/**/table/**/history/**", "GET"), + new AntPathRequestMatcher("/api/container/**/database/**/table/**/export/**", "GET"), + new AntPathRequestMatcher("/api/container/**/database/**/query/**", "GET"), + new AntPathRequestMatcher("/api/container/**/database/**/query/**/export", "GET"), + new AntPathRequestMatcher("/api/container/**/database/**/query/**", "PUT"), + new AntPathRequestMatcher("/v3/api-docs.yaml"), + new AntPathRequestMatcher("/v3/api-docs/**"), + new AntPathRequestMatcher("/swagger-ui/**"), + new AntPathRequestMatcher("/swagger-ui.html") + ); /* enable CORS and disable CSRF */ http = http.cors().and().csrf().disable(); /* set session management to stateless */ @@ -54,22 +73,11 @@ public class WebSecurityConfig { } ).and(); /* set permissions on endpoints */ - http.authorizeRequests() + http.authorizeHttpRequests() /* our internal endpoints */ - .requestMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll() + .requestMatchers(internalEndpoints).permitAll() /* our public endpoints */ - .requestMatchers(HttpMethod.GET, "/api/container/**/database/data/**").permitAll() - .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/table/**/data/**").permitAll() - .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/view/**").permitAll() - .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/table/**/history/**").permitAll() - .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/table/**/export/**").permitAll() - .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/query/**").permitAll() - .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/query/**/export").permitAll() - .requestMatchers(HttpMethod.PUT, "/api/container/**/database/**/query/**").permitAll() - .requestMatchers("/v3/api-docs.yaml", - "/v3/api-docs/**", - "/swagger-ui/**", - "/swagger-ui.html").permitAll() + .requestMatchers(publicEndpoints).permitAll() /* our private endpoints */ .anyRequest().authenticated(); /* add JWT token filter */ @@ -84,7 +92,7 @@ public class WebSecurityConfig { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); - config.addAllowedOrigin("*"); + config.addAllowedOriginPattern("*"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/mapper/StoreMapper.java b/dbrepo-query-service/services/src/main/java/at/tuwien/mapper/StoreMapper.java index 9302a0ca0a..27f0a3e9d3 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/mapper/StoreMapper.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/mapper/StoreMapper.java @@ -18,7 +18,7 @@ public interface StoreMapper { org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(StoreMapper.class); - DateTimeFormatter mariaDbFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S[SS]") + DateTimeFormatter mariaDbFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss[.SSS]") .withZone(ZoneId.of("UTC")); default CallableStatement queryStoreRawInsertQuery(Connection connection, User user, ExecuteStatementDto data) diff --git a/dbrepo-search-service/Dockerfile b/dbrepo-search-service/Dockerfile deleted file mode 100644 index 667774bd61..0000000000 --- a/dbrepo-search-service/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM elasticsearch:7.13.4 AS runtime -MAINTAINER Martin Weise <martin.weise@tuwien.ac.at> - -ENV discovery.type=single-node -ENV ES_JAVA_OPTS="-Xms2g -Xmx2g" -ENV logger.level=WARN -ENV bootstrap.memory_lock=true -ENV xpack.security.enabled=true -ENV ELASTIC_PASSWORD=elastic \ No newline at end of file diff --git a/dbrepo-search-service/README.md b/dbrepo-search-service/README.md deleted file mode 100644 index c2560a95a5..0000000000 --- a/dbrepo-search-service/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# Search Service - -Supports ElasticSearch for searching databases, tables, colums saved in the metadatabase. Two indices were created, namely databaseindex and tblindex. For a detailed documentation also cf. https://www.elastic.co/guide/index.html - -### `POST /9200/databaseindex/_search` -with JSON body -```JSON -{ - "query": { - "match": { - "name": { - "query": "Whether whorld", - "fuzziness": 6 - } - } - } -} -``` - -Finds databases by their names. - -Example output: -```JSON -{ - "took": 76, - "timed_out": false, - "_shards": { - "total": 1, - "successful": 1, - "skipped": 0, - "failed": 0 - }, - "hits": { - "total": { - "value": 1, - "relation": "eq" - }, - "max_score": 0.2054872, - "hits": [ - { - "_index": "databaseindex", - "_type": "_doc", - "_id": "1", - "_score": 0.2054872, - "_source": { - "_class": "at.tuwien.entities.database.Database", - "id": 1, - "container": { - "id": 1, - "containerCreated": 1633772448088, - "name": "Weather World", - "internalName": "fda-userdb-weather-world", - "hash": "789905c2c184ffdadb80d1a0158b3e282404c25bba136731afc3c9ade7126ba1", - "port": 37665, - "image": { - "_class": "at.tuwien.entities.container.image.ContainerImage$HibernateProxy$dVABPDQa" - }, - "created": 1633772448249, - "lastModified": 1633772448249 - }, - "name": "Weather Australia", - "internalName": "weather_australia", - "description": "string", - "isPublic": true, - "created": 1633772487671, - "lastModified": 1633772487671 - } - } - ] - } -} -``` - -### `POST /9200/tblindex/_search` -```JSON -{ - "query": { - "match": { - "columns.name": { - "query": "date", - "fuzziness": 6 - } - } - } -} -``` - -Finds databases with columnnames 'date'. diff --git a/dbrepo-semantics-service/Dockerfile b/dbrepo-semantics-service/Dockerfile index 601e0d71a4..9e5ebf1464 100644 --- a/dbrepo-semantics-service/Dockerfile +++ b/dbrepo-semantics-service/Dockerfile @@ -18,7 +18,7 @@ ENV LOG_LEVEL=debug ENV METADATA_DB=fda ENV METADATA_USERNAME=root ENV METADATA_PASSWORD=dbrepo -ENV JWT_ISSUER=https://localhost/realms/dbrepo +ENV JWT_ISSUER=http://localhost/realms/dbrepo ENV JWT_PUBKEY=public-key COPY ./requirements.txt ./requirements.txt diff --git a/dbrepo-table-service/Dockerfile b/dbrepo-table-service/Dockerfile index fd41da1447..03486d1abf 100644 --- a/dbrepo-table-service/Dockerfile +++ b/dbrepo-table-service/Dockerfile @@ -35,7 +35,7 @@ ENV USER_NETWORK=userdb ENV LOG_LEVEL=debug ENV DBREPO_CLIENT_SECRET=client-secret ENV CLIENT_ID=dbrepo-client -ENV JWT_ISSUER=https://localhost/realms/dbrepo +ENV JWT_ISSUER=http://localhost/realms/dbrepo ENV JWT_PUBKEY=public-key WORKDIR /app @@ -45,9 +45,8 @@ RUN chmod +x /usr/bin/service_ready HEALTHCHECK --interval=10s --timeout=5s --retries=12 CMD service_ready -COPY ./server.keystore ./server.keystore COPY --from=build ./rest-service/target/rest-service-*.jar ./table-service.jar EXPOSE 9091 -ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-Djavax.net.ssl.trustStore=/app/server.keystore", "-Djavax.net.ssl.trustStorePassword=password", "-jar", "./table-service.jar"] +ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-jar", "./table-service.jar"] diff --git a/dbrepo-table-service/rest-service/src/main/resources/application-local.yml b/dbrepo-table-service/rest-service/src/main/resources/application-local.yml index 2df732e702..1e35ebe62b 100644 --- a/dbrepo-table-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-table-service/rest-service/src/main/resources/application-local.yml @@ -43,8 +43,8 @@ logging: fda: ready.path: ./ready jwt: - issuer: https://localhost/realms/dbrepo + issuer: http://localhost/realms/dbrepo public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB client_secret: client-secret client_id: dbrepo-client - gateway.endpoint: https://localhost \ No newline at end of file + gateway.endpoint: http://localhost \ No newline at end of file diff --git a/dbrepo-table-service/rest-service/src/main/resources/application.yml b/dbrepo-table-service/rest-service/src/main/resources/application.yml index d608f70ae1..3cf83d1507 100644 --- a/dbrepo-table-service/rest-service/src/main/resources/application.yml +++ b/dbrepo-table-service/rest-service/src/main/resources/application.yml @@ -47,4 +47,4 @@ fda: public_key: "${JWT_PUBKEY}" client_secret: "${DBREPO_CLIENT_SECRET}" client_id: "${CLIENT_ID}" - gateway.endpoint: https://gateway-service \ No newline at end of file + gateway.endpoint: http://gateway-service \ No newline at end of file diff --git a/dbrepo-table-service/rest-service/src/test/resources/application.properties b/dbrepo-table-service/rest-service/src/test/resources/application.properties index eb7f3a33ee..81a1ff9203 100644 --- a/dbrepo-table-service/rest-service/src/test/resources/application.properties +++ b/dbrepo-table-service/rest-service/src/test/resources/application.properties @@ -9,7 +9,8 @@ spring.cloud.config.discovery.enabled=false spring.cloud.config.enabled=false # internal datasource -spring.datasource.url=jdbc:h2:mem:testdb;DATABASE_TO_UPPER=false;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL;INIT=RUNSCRIPT FROM 'classpath:schema.sql' +# spring 6 fix https://github.com/h2database/h2database/issues/3363 +spring.datasource.url=jdbc:h2:mem:testdb;NON_KEYWORDS=VALUE;DATABASE_TO_UPPER=false;DB_CLOSE_ON_EXIT=FALSE;INIT=RUNSCRIPT FROM 'classpath:schema.sql' spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password diff --git a/dbrepo-table-service/server.keystore b/dbrepo-table-service/server.keystore deleted file mode 100644 index 6f43470deca0b65a2aec9bf124ce944a502113fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41120 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 C>$}7N diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java b/dbrepo-table-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java index afc03f2c89..f91a903333 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java @@ -12,6 +12,8 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.security.web.util.matcher.OrRequestMatcher; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @@ -36,6 +38,16 @@ public class WebSecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + final OrRequestMatcher internalEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/actuator/prometheus/**", "GET") + ); + final OrRequestMatcher publicEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/api/container/**/database/**/table/**", "GET"), + new AntPathRequestMatcher("/v3/api-docs.yaml"), + new AntPathRequestMatcher("/v3/api-docs/**"), + new AntPathRequestMatcher("/swagger-ui/**"), + new AntPathRequestMatcher("/swagger-ui.html") + ); /* enable CORS and disable CSRF */ http = http.cors().and().csrf().disable(); /* set session management to stateless */ @@ -54,15 +66,11 @@ public class WebSecurityConfig { } ).and(); /* set permissions on endpoints */ - http.authorizeRequests() + http.authorizeHttpRequests() /* our internal endpoints */ - .requestMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll() + .requestMatchers(internalEndpoints).permitAll() /* our public endpoints */ - .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/table/**").permitAll() - .requestMatchers("/v3/api-docs.yaml", - "/v3/api-docs/**", - "/swagger-ui/**", - "/swagger-ui.html").permitAll() + .requestMatchers(publicEndpoints).permitAll() /* our private endpoints */ .anyRequest().authenticated(); /* add JWT token filter */ @@ -77,7 +85,7 @@ public class WebSecurityConfig { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); - config.addAllowedOrigin("*"); + config.addAllowedOriginPattern("*"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); diff --git a/dbrepo-ui/api/table.service.js b/dbrepo-ui/api/table.service.js index 8cef6aff3f..4ec9769323 100644 --- a/dbrepo-ui/api/table.service.js +++ b/dbrepo-ui/api/table.service.js @@ -145,6 +145,7 @@ class TableService { create (id, databaseId, data) { return new Promise((resolve, reject) => { + console.debug('====>', data) api.post(`/api/container/${id}/database/${databaseId}/table`, data, { headers: { Accept: 'application/json' } }) .then((response) => { const table = response.data diff --git a/dbrepo-ui/components/DatabaseList.vue b/dbrepo-ui/components/DatabaseList.vue index 09a64f2f9a..fc044ee2ff 100644 --- a/dbrepo-ui/components/DatabaseList.vue +++ b/dbrepo-ui/components/DatabaseList.vue @@ -1,6 +1,6 @@ <template> <div> - <v-progress-linear v-if="loadingContainers || loadingDatabases" :color="loadingColor" :indeterminate="!error" /> + <v-progress-linear v-if="loadingContainers || loadingDatabases" :indeterminate="!error" /> <v-card v-for="(container, idx) in containers" :key="idx" @@ -17,9 +17,13 @@ <div class="db-tags"> <v-chip v-if="hasDatabase(container) && container.database.is_public" small color="green" outlined>Public</v-chip> <v-chip v-if="hasDatabase(container) && !container.database.is_public" small color="red" outlined>Private</v-chip> - <v-chip v-if="hasIdentifier(container)" small outlined>PID</v-chip> <v-chip - v-if="identifierCreated(container)" + v-if="identifierYear(container)" + small + outlined + v-text="identifierYear(container)" /> + <v-chip + v-if="hasIdentifier(container)" small outlined v-text="container.database.identifier.publisher" /> @@ -58,7 +62,6 @@ </template> <script> -import { formatYearUTC, isResearcher } from '@/utils' import DatabaseService from '@/api/database.service' import ContainerService from '@/api/container.service' import ContainerMapper from '@/api/container.mapper' @@ -81,25 +84,11 @@ export default { } }, computed: { - loadingColor () { - return this.error ? 'red lighten-2' : 'primary' - }, token () { return this.$store.state.token }, user () { return this.$store.state.user - }, - isResearcher () { - return isResearcher(this.user) - }, - config () { - if (this.token === null) { - return {} - } - return { - headers: { Authorization: `Bearer ${this.token}` } - } } }, mounted () { @@ -133,11 +122,11 @@ export default { hasIdentifier (container) { return container.database && container.database.identifier }, - identifierCreated (container) { - if (!container || !container.database || !container.database.identifier) { + identifierYear (container) { + if (!container || !container.database || !container.database.identifier || !container.database.identifier.publication_year) { return null } - return formatYearUTC(container.database.identifier.created) + return container.database.identifier.publication_year }, identifierDescription (container) { if (!container || !container.database || !container.database.identifier) { diff --git a/dbrepo-ui/components/query/Builder.vue b/dbrepo-ui/components/query/Builder.vue index 970cfbd218..9acae34636 100644 --- a/dbrepo-ui/components/query/Builder.vue +++ b/dbrepo-ui/components/query/Builder.vue @@ -321,6 +321,7 @@ export default { }, createView () { this.loadingQuery = true + this.view.query = this.sql DatabaseService.createView(this.$route.params.container_id, this.$route.params.database_id, this.view) .then(async (view) => { this.resultId = view.id diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/import.vue b/dbrepo-ui/pages/container/_container_id/database/_database_id/table/import.vue index 7f43332873..d3358405f2 100644 --- a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/import.vue +++ b/dbrepo-ui/pages/container/_container_id/database/_database_id/table/import.vue @@ -375,10 +375,6 @@ export default { this.validStep4 = true this.createTable() }, - setOthers (column) { - column.null_allowed = false - column.unique = true - }, loadDateFormats () { this.loadingImage = true ContainerService.findOne(this.$route.params.container_id) @@ -412,12 +408,46 @@ export default { // bail out if there is a problem with one of the columns if (!validColumns.every(Boolean)) { return } - TableService.create(this.$route.params.container_id, this.$route.params.database_id, this.tableCreate) + const table = this.tableCreate.columns.reduce((table, column) => { + // eslint-disable-next-line camelcase + const { name, type, null_allowed, primary_key } = column + table.columns.push({ + name, + type, + null_allowed, + primary_key + }) + if (column.unique) { + table.constraints.uniques.push([column.name]) + } + if (column.check_expression) { + table.checks.push(column.check_expression) + } + if (column.foreign_key && column.references) { + table.foreign_keys.push({ + columns: [column.name], + referenced_table: column.foreign_key, + referenced_columns: [column.references] + }) + } + return table + }, { + name: this.tableCreate.name, + description: this.tableCreate.description, + columns: [], + constraints: { + foreign_keys: [], + uniques: [], + checks: [] + } + }) + TableService.create(this.$route.params.container_id, this.$route.params.database_id, table) .then((table) => { this.newTableId = table.id TableService.importCsv(this.$route.params.container_id, this.$route.params.database_id, table.id, this.tableImport) - .then(() => { + .then(async () => { this.$toast.success('Successfully created table from import!') + await this.$store.dispatch('reloadDatabase') this.step = 5 }) .finally(() => { diff --git a/dbrepo-user-service/Dockerfile b/dbrepo-user-service/Dockerfile index e276c3f17d..4255e803ee 100644 --- a/dbrepo-user-service/Dockerfile +++ b/dbrepo-user-service/Dockerfile @@ -29,7 +29,7 @@ ENV METADATA_DB=fda ENV METADATA_USERNAME=root ENV METADATA_PASSWORD=dbrepo ENV GATEWAY_ENDPOINT=http://gateway-service -ENV JWT_ISSUER=https://localhost/realms/dbrepo +ENV JWT_ISSUER=http://localhost/realms/dbrepo ENV JWT_PUBKEY=public-key ENV LOG_LEVEL=debug ENV DEFAULT_ROLE=default-researcher-roles @@ -42,9 +42,8 @@ RUN chmod +x /usr/bin/service_ready HEALTHCHECK --interval=10s --timeout=5s --retries=12 CMD service_ready -COPY ./server.keystore ./server.keystore COPY --from=build ./rest-service/target/rest-service-*.jar ./user-service.jar EXPOSE 9093 -ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-Djavax.net.ssl.trustStore=/app/server.keystore", "-Djavax.net.ssl.trustStorePassword=password","-jar", "./user-service.jar"] +ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true", "-jar", "./user-service.jar"] diff --git a/dbrepo-user-service/rest-service/src/main/resources/application-local.yml b/dbrepo-user-service/rest-service/src/main/resources/application-local.yml index 432834c323..e15f94b2cc 100644 --- a/dbrepo-user-service/rest-service/src/main/resources/application-local.yml +++ b/dbrepo-user-service/rest-service/src/main/resources/application-local.yml @@ -42,8 +42,8 @@ logging: org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver: debug fda: ready.path: ./ready - gateway.endpoint: https://localhost + gateway.endpoint: http://localhost default_role: default-researcher-roles jwt: - issuer: https://localhost/realms/dbrepo + issuer: http://localhost/realms/dbrepo public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB \ No newline at end of file diff --git a/dbrepo-user-service/rest-service/src/test/resources/application.properties b/dbrepo-user-service/rest-service/src/test/resources/application.properties index a2cfb02bea..11e1ad7113 100644 --- a/dbrepo-user-service/rest-service/src/test/resources/application.properties +++ b/dbrepo-user-service/rest-service/src/test/resources/application.properties @@ -9,7 +9,8 @@ spring.cloud.config.discovery.enabled=false spring.cloud.config.enabled=false # internal datasource -spring.datasource.url=jdbc:h2:mem:testdb;DATABASE_TO_UPPER=false;DB_CLOSE_ON_EXIT=FALSE;INIT=RUNSCRIPT FROM './src/test/resources/schema.sql' +# spring 6 fix https://github.com/h2database/h2database/issues/3363 +spring.datasource.url=jdbc:h2:mem:testdb;NON_KEYWORDS=VALUE;DATABASE_TO_UPPER=false;DB_CLOSE_ON_EXIT=FALSE;INIT=RUNSCRIPT FROM './src/test/resources/schema.sql' spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password diff --git a/dbrepo-user-service/server.keystore b/dbrepo-user-service/server.keystore deleted file mode 100644 index 6f43470deca0b65a2aec9bf124ce944a502113fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41120 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 C>$}7N diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java b/dbrepo-user-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java index 7d27eda0ec..93cc8c5631 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java @@ -12,6 +12,8 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.security.web.util.matcher.OrRequestMatcher; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @@ -36,6 +38,17 @@ public class WebSecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + final OrRequestMatcher internalEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/actuator/prometheus/**", "GET") + ); + final OrRequestMatcher publicEndpoints = new OrRequestMatcher( + new AntPathRequestMatcher("/api/user/**", "GET"), + new AntPathRequestMatcher("/api/user/**", "POST"), + new AntPathRequestMatcher("/v3/api-docs.yaml"), + new AntPathRequestMatcher("/v3/api-docs/**"), + new AntPathRequestMatcher("/swagger-ui/**"), + new AntPathRequestMatcher("/swagger-ui.html") + ); /* enable CORS and disable CSRF */ http = http.cors().and().csrf().disable(); /* set session management to stateless */ @@ -54,16 +67,11 @@ public class WebSecurityConfig { } ).and(); /* set permissions on endpoints */ - http.authorizeRequests() + http.authorizeHttpRequests() /* our internal endpoints */ - .requestMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll() + .requestMatchers(internalEndpoints).permitAll() /* our public endpoints */ - .requestMatchers(HttpMethod.GET, "/api/user/**").permitAll() - .requestMatchers(HttpMethod.POST, "/api/user/**").permitAll() - .requestMatchers("/v3/api-docs.yaml", - "/v3/api-docs/**", - "/swagger-ui/**", - "/swagger-ui.html").permitAll() + .requestMatchers(publicEndpoints).permitAll() /* our private endpoints */ .anyRequest().authenticated(); /* add JWT token filter */ @@ -78,7 +86,7 @@ public class WebSecurityConfig { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); - config.addAllowedOrigin("*"); + config.addAllowedOriginPattern("*"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); diff --git a/docker-compose.yml b/docker-compose.yml index 84abc9dc75..6ecf19c0fb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -295,15 +295,20 @@ services: restart: always container_name: dbrepo-search-service hostname: search-service - build: ./dbrepo-search-service - image: dbrepo-search-service + image: elasticsearch:8.7.1 networks: core: ports: - 9200:9200 - - 9600:9600 env_file: - .env + environment: + discovery.type: "single-node" + ES_JAVA_OPTS: "-Xms2g -Xmx2g" + logger.level: "WARN" + bootstrap.memory_lock: "true" + xpack.security.enabled: "true" + ELASTIC_PASSWORD: "elastic" volumes: - search-service-data:/usr/share/elasticsearch/data logging: @@ -344,10 +349,6 @@ services: - "443:443" env_file: - .env - volumes: - - ./dbrepo-gateway-service/dbrepo.conf:/etc/nginx/conf.d/default.conf - - ./dbrepo-gateway-service/server.key:/server.key - - ./dbrepo-gateway-service/server.pem:/server.pem depends_on: dbrepo-analyse-service: condition: service_healthy -- GitLab