From d679a7ed99a0ca1ca074f2ed912e28b8d35b3fb8 Mon Sep 17 00:00:00 2001 From: Daniela Tomoiaga Date: Thu, 4 Mar 2021 10:24:43 +0200 Subject: [PATCH 1/4] feat(NUM-1296): Use rest client to retrieve server templates --- .../aqleditor/configuration/EhrConfig.java | 41 +++++++++++++++++++ .../aqleditor/dto/template/TemplateDto.java | 6 +++ .../aqleditor/properties/EhrProperties.java | 17 ++++++++ .../service/AqlEditorTemplateService.java | 27 ++++-------- .../ehrbase/FakeEhrTemplateProvider.java | 14 +++++++ 5 files changed, 87 insertions(+), 18 deletions(-) create mode 100644 src/main/java/org/ehrbase/aqleditor/configuration/EhrConfig.java create mode 100644 src/main/java/org/ehrbase/aqleditor/properties/EhrProperties.java create mode 100644 src/main/java/org/ehrbase/aqleditor/service/ehrbase/FakeEhrTemplateProvider.java diff --git a/src/main/java/org/ehrbase/aqleditor/configuration/EhrConfig.java b/src/main/java/org/ehrbase/aqleditor/configuration/EhrConfig.java new file mode 100644 index 0000000..d8a5724 --- /dev/null +++ b/src/main/java/org/ehrbase/aqleditor/configuration/EhrConfig.java @@ -0,0 +1,41 @@ +package org.ehrbase.aqleditor.configuration; + +import java.net.URI; +import java.net.URISyntaxException; +import lombok.RequiredArgsConstructor; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.CredentialsProvider; +import org.apache.http.impl.client.BasicCredentialsProvider; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.ehrbase.aqleditor.properties.EhrProperties; +import org.ehrbase.aqleditor.service.ehrbase.FakeEhrTemplateProvider; +import org.ehrbase.client.openehrclient.OpenEhrClientConfig; +import org.ehrbase.client.openehrclient.defaultrestclient.DefaultRestClient; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@RequiredArgsConstructor +public class EhrConfig { + + private final EhrProperties ehrProperties; + + @Bean + public DefaultRestClient createEhrRestClient() throws URISyntaxException { + CredentialsProvider provider = new BasicCredentialsProvider(); + provider.setCredentials( + AuthScope.ANY, + new UsernamePasswordCredentials( + ehrProperties.getUsername(), ehrProperties.getPassword())); + + CloseableHttpClient httpClient = + HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build(); + + return new DefaultRestClient( + new OpenEhrClientConfig(new URI(ehrProperties.getRestApiUrl())), + new FakeEhrTemplateProvider(), + httpClient); + } +} diff --git a/src/main/java/org/ehrbase/aqleditor/dto/template/TemplateDto.java b/src/main/java/org/ehrbase/aqleditor/dto/template/TemplateDto.java index c3fafc5..12f15f5 100644 --- a/src/main/java/org/ehrbase/aqleditor/dto/template/TemplateDto.java +++ b/src/main/java/org/ehrbase/aqleditor/dto/template/TemplateDto.java @@ -19,8 +19,14 @@ package org.ehrbase.aqleditor.dto.template; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; +@AllArgsConstructor +@NoArgsConstructor +@Builder @Data public class TemplateDto { diff --git a/src/main/java/org/ehrbase/aqleditor/properties/EhrProperties.java b/src/main/java/org/ehrbase/aqleditor/properties/EhrProperties.java new file mode 100644 index 0000000..e59a232 --- /dev/null +++ b/src/main/java/org/ehrbase/aqleditor/properties/EhrProperties.java @@ -0,0 +1,17 @@ +package org.ehrbase.aqleditor.properties; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +@ConfigurationProperties(prefix = "ehrbase") +public class EhrProperties { + + private String restApiUrl; + + private String username; + + private String password; +} \ No newline at end of file diff --git a/src/main/java/org/ehrbase/aqleditor/service/AqlEditorTemplateService.java b/src/main/java/org/ehrbase/aqleditor/service/AqlEditorTemplateService.java index df18edd..8bb65ad 100644 --- a/src/main/java/org/ehrbase/aqleditor/service/AqlEditorTemplateService.java +++ b/src/main/java/org/ehrbase/aqleditor/service/AqlEditorTemplateService.java @@ -19,45 +19,36 @@ package org.ehrbase.aqleditor.service; import java.util.List; -import java.util.Optional; import java.util.stream.Collectors; import lombok.AllArgsConstructor; import org.ehrbase.aqleditor.dto.template.TemplateDto; +import org.ehrbase.client.openehrclient.defaultrestclient.DefaultRestClient; +import org.ehrbase.response.openehr.TemplatesResponseData; import org.ehrbase.webtemplate.filter.Filter; import org.ehrbase.webtemplate.model.WebTemplate; import org.ehrbase.webtemplate.parser.OPTParser; -import org.openehr.schemas.v1.OPERATIONALTEMPLATE; import org.springframework.stereotype.Service; @Service @AllArgsConstructor public class AqlEditorTemplateService { - private static final TestDataTemplateProvider testDataTemplateProvider = - new TestDataTemplateProvider(); + private final DefaultRestClient restClient; public List getAll() { - return testDataTemplateProvider.listTemplateIds().stream() - .map(testDataTemplateProvider::find) - .filter(Optional::isPresent) - .map(Optional::get) - .map(this::map) + TemplatesResponseData responseData = restClient.templateEndpoint().findAllTemplates(); + return responseData.get().stream() + .map(templateMetaDataDto -> TemplateDto.builder() + .templateId(templateMetaDataDto.getTemplateId()) + .description(templateMetaDataDto.getConcept()).build()) .collect(Collectors.toList()); } public WebTemplate getWebTemplate(String templateId) { - return testDataTemplateProvider - .find(templateId) + return restClient.templateEndpoint().findTemplate(templateId) .map(o -> new OPTParser(o).parse()) .map(w -> new Filter().filter(w)) .orElse(null); } - private TemplateDto map(OPERATIONALTEMPLATE operationaltemplate) { - TemplateDto templateDto = new TemplateDto(); - templateDto.setTemplateId(operationaltemplate.getTemplateId().getValue()); - templateDto.setDescription( - operationaltemplate.getDescription().getDetailsArray()[0].getPurpose()); - return templateDto; - } } diff --git a/src/main/java/org/ehrbase/aqleditor/service/ehrbase/FakeEhrTemplateProvider.java b/src/main/java/org/ehrbase/aqleditor/service/ehrbase/FakeEhrTemplateProvider.java new file mode 100644 index 0000000..c14cad4 --- /dev/null +++ b/src/main/java/org/ehrbase/aqleditor/service/ehrbase/FakeEhrTemplateProvider.java @@ -0,0 +1,14 @@ +package org.ehrbase.aqleditor.service.ehrbase; + +import java.util.Optional; +import org.ehrbase.webtemplate.templateprovider.TemplateProvider; +import org.openehr.schemas.v1.OPERATIONALTEMPLATE; + +public class FakeEhrTemplateProvider implements TemplateProvider { + + @Override + public Optional find(String templateId) { + return Optional.empty(); + } + +} From 919bbac066e95ee62a62bb59bf3085c45feb398a Mon Sep 17 00:00:00 2001 From: Daniela Tomoiaga Date: Thu, 4 Mar 2021 22:50:14 +0200 Subject: [PATCH 2/4] feat(NUM-1136): DefaultRestClient with optional TemplateProvider --- pom.xml | 2 +- .../aqleditor/configuration/EhrConfig.java | 10 +--- .../service/TestDataTemplateProvider.java | 55 ------------------- .../ehrbase/FakeEhrTemplateProvider.java | 14 ----- 4 files changed, 2 insertions(+), 79 deletions(-) delete mode 100644 src/main/java/org/ehrbase/aqleditor/service/TestDataTemplateProvider.java delete mode 100644 src/main/java/org/ehrbase/aqleditor/service/ehrbase/FakeEhrTemplateProvider.java diff --git a/pom.xml b/pom.xml index c7f26cf..c5343f4 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ 11 11 11 - 1.2.0 + v1.3.0 3.8 diff --git a/src/main/java/org/ehrbase/aqleditor/configuration/EhrConfig.java b/src/main/java/org/ehrbase/aqleditor/configuration/EhrConfig.java index d8a5724..82ef524 100644 --- a/src/main/java/org/ehrbase/aqleditor/configuration/EhrConfig.java +++ b/src/main/java/org/ehrbase/aqleditor/configuration/EhrConfig.java @@ -7,10 +7,7 @@ import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.impl.client.BasicCredentialsProvider; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClientBuilder; import org.ehrbase.aqleditor.properties.EhrProperties; -import org.ehrbase.aqleditor.service.ehrbase.FakeEhrTemplateProvider; import org.ehrbase.client.openehrclient.OpenEhrClientConfig; import org.ehrbase.client.openehrclient.defaultrestclient.DefaultRestClient; import org.springframework.context.annotation.Bean; @@ -30,12 +27,7 @@ public DefaultRestClient createEhrRestClient() throws URISyntaxException { new UsernamePasswordCredentials( ehrProperties.getUsername(), ehrProperties.getPassword())); - CloseableHttpClient httpClient = - HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build(); - return new DefaultRestClient( - new OpenEhrClientConfig(new URI(ehrProperties.getRestApiUrl())), - new FakeEhrTemplateProvider(), - httpClient); + new OpenEhrClientConfig(new URI(ehrProperties.getRestApiUrl()))); } } diff --git a/src/main/java/org/ehrbase/aqleditor/service/TestDataTemplateProvider.java b/src/main/java/org/ehrbase/aqleditor/service/TestDataTemplateProvider.java deleted file mode 100644 index 744e4a7..0000000 --- a/src/main/java/org/ehrbase/aqleditor/service/TestDataTemplateProvider.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * - * * Copyright (c) 2020 Stefan Spiska (Vitasystems GmbH) and Hannover Medical School - * * This file is part of Project EHRbase - * * - * * Licensed under the Apache License, Version 2.0 (the "License"); - * * you may not use this file except in compliance with the License. - * * You may obtain a copy of the License at - * * - * * http://www.apache.org/licenses/LICENSE-2.0 - * * - * * Unless required by applicable law or agreed to in writing, software - * * distributed under the License is distributed on an "AS IS" BASIS, - * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * * See the License for the specific language governing permissions and - * * limitations under the License. - * - */ - -package org.ehrbase.aqleditor.service; - -import java.io.IOException; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; -import org.apache.xmlbeans.XmlException; -import org.ehrbase.test_data.operationaltemplate.OperationalTemplateTestData; -import org.ehrbase.webtemplate.templateprovider.TemplateProvider; -import org.openehr.schemas.v1.OPERATIONALTEMPLATE; -import org.openehr.schemas.v1.TemplateDocument; - -public class TestDataTemplateProvider implements TemplateProvider { - - @Override - public Optional find(String templateId) { - return Optional.ofNullable(OperationalTemplateTestData.findByTemplateId(templateId)) - .map(OperationalTemplateTestData::getStream) - .map( - s -> { - try { - return TemplateDocument.Factory.parse(s); - } catch (XmlException | IOException e) { - throw new RuntimeException(e.getMessage(), e); - } - }) - .map(TemplateDocument::getTemplate); - } - - public List listTemplateIds() { - return Arrays.stream(OperationalTemplateTestData.values()) - .map(OperationalTemplateTestData::getTemplateId) - .collect(Collectors.toList()); - } -} diff --git a/src/main/java/org/ehrbase/aqleditor/service/ehrbase/FakeEhrTemplateProvider.java b/src/main/java/org/ehrbase/aqleditor/service/ehrbase/FakeEhrTemplateProvider.java deleted file mode 100644 index c14cad4..0000000 --- a/src/main/java/org/ehrbase/aqleditor/service/ehrbase/FakeEhrTemplateProvider.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.ehrbase.aqleditor.service.ehrbase; - -import java.util.Optional; -import org.ehrbase.webtemplate.templateprovider.TemplateProvider; -import org.openehr.schemas.v1.OPERATIONALTEMPLATE; - -public class FakeEhrTemplateProvider implements TemplateProvider { - - @Override - public Optional find(String templateId) { - return Optional.empty(); - } - -} From ced9fb597debb4d12be529681c52f22e7c0bb704 Mon Sep 17 00:00:00 2001 From: Daniela Tomoiaga Date: Tue, 9 Mar 2021 15:10:30 +0200 Subject: [PATCH 3/4] feat(NUM-1136): DefaultRestClient with optional TemplateProvider --- .../org/ehrbase/aqleditor/configuration/EhrConfig.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/ehrbase/aqleditor/configuration/EhrConfig.java b/src/main/java/org/ehrbase/aqleditor/configuration/EhrConfig.java index 82ef524..21af4b2 100644 --- a/src/main/java/org/ehrbase/aqleditor/configuration/EhrConfig.java +++ b/src/main/java/org/ehrbase/aqleditor/configuration/EhrConfig.java @@ -7,6 +7,8 @@ import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.impl.client.BasicCredentialsProvider; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; import org.ehrbase.aqleditor.properties.EhrProperties; import org.ehrbase.client.openehrclient.OpenEhrClientConfig; import org.ehrbase.client.openehrclient.defaultrestclient.DefaultRestClient; @@ -27,7 +29,10 @@ public DefaultRestClient createEhrRestClient() throws URISyntaxException { new UsernamePasswordCredentials( ehrProperties.getUsername(), ehrProperties.getPassword())); + CloseableHttpClient httpClient = + HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build(); + return new DefaultRestClient( - new OpenEhrClientConfig(new URI(ehrProperties.getRestApiUrl()))); + new OpenEhrClientConfig(new URI(ehrProperties.getRestApiUrl())), null, httpClient); } } From 218404b9910922777a80b78854bf640f7c4ebe77 Mon Sep 17 00:00:00 2001 From: Stefan Spiska Date: Tue, 9 Mar 2021 15:57:00 +0100 Subject: [PATCH 4/4] update version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c5343f4..46c51ca 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.ehrbase.openehr aql-editor-backend-spring-boot-starter - 0.2.0 + 0.3.0 jar