From 123f6d789f8c1b3eb58012a4490c38150bf41fd9 Mon Sep 17 00:00:00 2001 From: Javi Corvi Date: Tue, 21 Jun 2022 10:24:08 +0200 Subject: [PATCH 01/26] refactorization of packages and swagger --- pom.xml | 7 ++++- .../DocumentTrackingRepositoryCustom.java | 5 ---- .../pretox}/rest/api/App.java | 4 +-- .../pretox}/rest/api/config/Config.java | 2 +- .../rest/api/config/PersistenceJPAConfig.java | 2 +- .../api/controllers/DocumentController.java | 30 +++++-------------- .../rest/api/controllers/FileController.java | 8 ++--- .../api/controllers/LivenessController.java | 2 +- .../pretox}/rest/api/model/Action.java | 2 +- .../pretox}/rest/api/model/Annotation.java | 4 +-- .../pretox}/rest/api/model/Document.java | 2 +- .../rest/api/model/DocumentAnnotations.java | 2 +- .../rest/api/model/DocumentTracking.java | 2 +- .../pretox}/rest/api/model/Feature.java | 2 +- .../pretox}/rest/api/model/FileMessage.java | 2 +- .../pretox}/rest/api/model/FileModel.java | 2 +- .../pretox}/rest/api/model/Finding.java | 2 +- .../pretox}/rest/api/model/RecordState.java | 2 +- .../rest/api/model/RelevantSentence.java | 2 +- .../rest/api/model/SRDomainFinding.java | 4 +-- .../pretox}/rest/api/model/Status.java | 2 +- .../pretox}/rest/api/model/Tracking.java | 2 +- .../DocumentAnnotationsRepository.java | 4 +-- .../DocumentAnnotationsRepositoryCustom.java | 2 +- .../api/repository/DocumentRepository.java | 4 +-- .../repository/DocumentRepositoryCustom.java | 6 ++-- .../repository/DocumentRepositoryImpl.java | 8 ++--- .../DocumentTrackingRepository.java | 4 +-- .../DocumentTrackingRepositoryCustom.java | 5 ++++ .../rest/api/security/SecurityConfig.java | 2 +- .../api/security/SecurityConfiguration.java | 2 +- .../rest/api/security/WebController.java | 2 +- .../basic/inmemory/AuthenticationBean.java | 2 +- .../BasicAuthenticationController.java | 2 +- .../basic/inmemory/SecurityConfig.java | 2 +- .../api/security/pkce/SecurityConfig.java | 6 +++- .../rest/api/services/DocumentService.java | 10 +++---- .../api/services/DocumentServiceImpl.java | 30 +++++++++---------- .../rest/api/services/FileService.java | 2 +- .../rest/api/services/FileServiceImp.java | 8 ++--- .../pretox}/rest/api/util/Constants.java | 2 +- .../rest/api/util/VisualizationHTMLUtil.java | 6 ++-- .../resources/application-prod.properties | 4 +++ 43 files changed, 101 insertions(+), 104 deletions(-) delete mode 100644 src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentTrackingRepositoryCustom.java rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/App.java (79%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/config/Config.java (65%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/config/PersistenceJPAConfig.java (77%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/controllers/DocumentController.java (85%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/controllers/FileController.java (93%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/controllers/LivenessController.java (90%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/Action.java (62%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/Annotation.java (96%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/Document.java (96%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/DocumentAnnotations.java (97%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/DocumentTracking.java (95%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/Feature.java (87%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/FileMessage.java (84%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/FileModel.java (90%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/Finding.java (99%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/RecordState.java (50%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/RelevantSentence.java (99%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/SRDomainFinding.java (98%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/Status.java (55%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/model/Tracking.java (94%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/repository/DocumentAnnotationsRepository.java (71%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/repository/DocumentAnnotationsRepositoryCustom.java (68%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/repository/DocumentRepository.java (82%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/repository/DocumentRepositoryCustom.java (59%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/repository/DocumentRepositoryImpl.java (91%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/repository/DocumentTrackingRepository.java (72%) create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentTrackingRepositoryCustom.java rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/security/SecurityConfig.java (92%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/security/SecurityConfiguration.java (88%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/security/WebController.java (90%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/security/basic/inmemory/AuthenticationBean.java (85%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/security/basic/inmemory/BasicAuthenticationController.java (88%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/security/basic/inmemory/SecurityConfig.java (94%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/security/pkce/SecurityConfig.java (80%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/services/DocumentService.java (80%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/services/DocumentServiceImpl.java (97%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/services/FileService.java (94%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/services/FileServiceImp.java (96%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/util/Constants.java (94%) rename src/main/java/es/bsc/inb/{ades => etransafe/pretox}/rest/api/util/VisualizationHTMLUtil.java (97%) diff --git a/pom.xml b/pom.xml index f8a0691..a863430 100644 --- a/pom.xml +++ b/pom.xml @@ -68,7 +68,12 @@ spring-security-oauth2-jose - + + org.springdoc + springdoc-openapi-ui + 1.6.9 + + com.fasterxml.jackson.core jackson-databind diff --git a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentTrackingRepositoryCustom.java b/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentTrackingRepositoryCustom.java deleted file mode 100644 index a9c9b6e..0000000 --- a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentTrackingRepositoryCustom.java +++ /dev/null @@ -1,5 +0,0 @@ -package es.bsc.inb.ades.rest.api.repository; - -public interface DocumentTrackingRepositoryCustom { - -} diff --git a/src/main/java/es/bsc/inb/ades/rest/api/App.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/App.java similarity index 79% rename from src/main/java/es/bsc/inb/ades/rest/api/App.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/App.java index 8e738bf..5b31e1f 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/App.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/App.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api; +package es.bsc.inb.etransafe.pretox.rest.api; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -6,7 +6,7 @@ import org.springframework.context.annotation.ComponentScan; @SpringBootApplication -@ComponentScan("es.bsc.inb.ades") +@ComponentScan("es.bsc.inb.etransafe") public class App { public static void main(String[] args) { diff --git a/src/main/java/es/bsc/inb/ades/rest/api/config/Config.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/config/Config.java similarity index 65% rename from src/main/java/es/bsc/inb/ades/rest/api/config/Config.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/config/Config.java index 892c188..76adc7b 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/config/Config.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/config/Config.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.config; +package es.bsc.inb.etransafe.pretox.rest.api.config; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/config/PersistenceJPAConfig.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/config/PersistenceJPAConfig.java similarity index 77% rename from src/main/java/es/bsc/inb/ades/rest/api/config/PersistenceJPAConfig.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/config/PersistenceJPAConfig.java index 7ba7893..8e80e7b 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/config/PersistenceJPAConfig.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/config/PersistenceJPAConfig.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.config; +package es.bsc.inb.etransafe.pretox.rest.api.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java similarity index 85% rename from src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java index d1d7d9b..349bbc8 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java @@ -1,34 +1,28 @@ -package es.bsc.inb.ades.rest.api.controllers; +package es.bsc.inb.etransafe.pretox.rest.api.controllers; -import java.security.Principal; import java.util.List; -import javax.servlet.http.HttpServletRequest; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import es.bsc.inb.ades.rest.api.model.Document; -import es.bsc.inb.ades.rest.api.model.DocumentAnnotations; -import es.bsc.inb.ades.rest.api.model.DocumentTracking; -import es.bsc.inb.ades.rest.api.model.Status; -import es.bsc.inb.ades.rest.api.services.DocumentService; +import es.bsc.inb.etransafe.pretox.rest.api.model.Document; +import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; +import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; +import es.bsc.inb.etransafe.pretox.rest.api.model.Status; +import es.bsc.inb.etransafe.pretox.rest.api.services.DocumentService; @RestController @CrossOrigin(origins="*") public class DocumentController { - - @Autowired public DocumentService documentService; @@ -52,11 +46,6 @@ public class DocumentController { return documentService.findDocumentSRDomainByDocumentId(id); } -// @RequestMapping("/documents/{id}") -// public Document find2(@PathVariable(value="id") Long id) { -// return documentService.findByDocumentId2(id); -// } - @RequestMapping("/documents/{id}/finding/{findingId}") public String findFinding(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId) { String snippet = documentService.findFindingEvidenceByDocumentIdAndFindingId(id, findingId); @@ -126,12 +115,7 @@ public class DocumentController { String snippet = documentService.findTextByDocumentId(id); return snippet; } - -// @RequestMapping("/documents/{id}/finding2/{findingId}") -// public String findFinding2(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId) { -// String snippet = documentService.findTextSnippetByDocumentIdAndFindingId2(id, findingId); -// return snippet; -// } + @RequestMapping(value = "/documents/export/{id}") public ResponseEntity generateReport(@PathVariable("id") long documentId){ diff --git a/src/main/java/es/bsc/inb/ades/rest/api/controllers/FileController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/FileController.java similarity index 93% rename from src/main/java/es/bsc/inb/ades/rest/api/controllers/FileController.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/FileController.java index 9e10790..1c11575 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/controllers/FileController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/FileController.java @@ -1,5 +1,5 @@ -package es.bsc.inb.ades.rest.api.controllers; +package es.bsc.inb.etransafe.pretox.rest.api.controllers; import java.util.ArrayList; @@ -21,9 +21,9 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder; -import es.bsc.inb.ades.rest.api.model.FileMessage; -import es.bsc.inb.ades.rest.api.model.FileModel; -import es.bsc.inb.ades.rest.api.services.FileService; +import es.bsc.inb.etransafe.pretox.rest.api.model.FileMessage; +import es.bsc.inb.etransafe.pretox.rest.api.model.FileModel; +import es.bsc.inb.etransafe.pretox.rest.api.services.FileService; @Controller @CrossOrigin("*") diff --git a/src/main/java/es/bsc/inb/ades/rest/api/controllers/LivenessController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LivenessController.java similarity index 90% rename from src/main/java/es/bsc/inb/ades/rest/api/controllers/LivenessController.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LivenessController.java index 05e0982..d8f02d7 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/controllers/LivenessController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LivenessController.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.controllers; +package es.bsc.inb.etransafe.pretox.rest.api.controllers; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/Action.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Action.java similarity index 62% rename from src/main/java/es/bsc/inb/ades/rest/api/model/Action.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Action.java index 7116b1a..c796850 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/Action.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Action.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; public enum Action { MOVE, REJECT, ACCEPT, EXPORT_SR_FINDING, NOT_EXPORT_SR_FINDING diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/Annotation.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Annotation.java similarity index 96% rename from src/main/java/es/bsc/inb/ades/rest/api/model/Annotation.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Annotation.java index 33ffa94..cd5fe43 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/Annotation.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Annotation.java @@ -1,11 +1,11 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; import java.util.ArrayList; import java.util.List; import org.springframework.data.mongodb.core.mapping.Field; -import es.bsc.inb.ades.rest.api.util.VisualizationHTMLUtil; +import es.bsc.inb.etransafe.pretox.rest.api.util.VisualizationHTMLUtil; /** * diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/Document.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Document.java similarity index 96% rename from src/main/java/es/bsc/inb/ades/rest/api/model/Document.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Document.java index bff1e3c..114faaa 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/Document.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Document.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; import java.util.List; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/DocumentAnnotations.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java similarity index 97% rename from src/main/java/es/bsc/inb/ades/rest/api/model/DocumentAnnotations.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java index 8552ed6..8129440 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/DocumentAnnotations.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/DocumentTracking.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentTracking.java similarity index 95% rename from src/main/java/es/bsc/inb/ades/rest/api/model/DocumentTracking.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentTracking.java index 69a6d4d..bc84448 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/DocumentTracking.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentTracking.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/Feature.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Feature.java similarity index 87% rename from src/main/java/es/bsc/inb/ades/rest/api/model/Feature.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Feature.java index 5722fde..49478b5 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/Feature.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Feature.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; /** * * @author jcorvi diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/FileMessage.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FileMessage.java similarity index 84% rename from src/main/java/es/bsc/inb/ades/rest/api/model/FileMessage.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FileMessage.java index f000e46..0d51e3e 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/FileMessage.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FileMessage.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; public class FileMessage { diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/FileModel.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FileModel.java similarity index 90% rename from src/main/java/es/bsc/inb/ades/rest/api/model/FileModel.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FileModel.java index 8d2c5ae..d9ad247 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/FileModel.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FileModel.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; /** * File model diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/Finding.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Finding.java similarity index 99% rename from src/main/java/es/bsc/inb/ades/rest/api/model/Finding.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Finding.java index 2834940..d89434f 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/Finding.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Finding.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/RecordState.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/RecordState.java similarity index 50% rename from src/main/java/es/bsc/inb/ades/rest/api/model/RecordState.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/RecordState.java index 51ab40a..b050f95 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/RecordState.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/RecordState.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; public enum RecordState { diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/RelevantSentence.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/RelevantSentence.java similarity index 99% rename from src/main/java/es/bsc/inb/ades/rest/api/model/RelevantSentence.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/RelevantSentence.java index 995de73..7a4afbc 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/RelevantSentence.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/RelevantSentence.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/SRDomainFinding.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java similarity index 98% rename from src/main/java/es/bsc/inb/ades/rest/api/model/SRDomainFinding.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java index bd2b6da..fc4bcb1 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/SRDomainFinding.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java @@ -1,8 +1,8 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; import org.apache.tomcat.util.bcel.classfile.Constant; -import es.bsc.inb.ades.rest.api.util.Constants; +import es.bsc.inb.etransafe.pretox.rest.api.util.Constants; /** * This class describes a finding in SR-Domain format. diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/Status.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Status.java similarity index 55% rename from src/main/java/es/bsc/inb/ades/rest/api/model/Status.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Status.java index afbb360..d6348c7 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/Status.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Status.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; public enum Status { DRAFT, IN_PROGRESS, FINISHED, CLOSED diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/Tracking.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Tracking.java similarity index 94% rename from src/main/java/es/bsc/inb/ades/rest/api/model/Tracking.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Tracking.java index 94a6caf..84bf18b 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/model/Tracking.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Tracking.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.model; +package es.bsc.inb.etransafe.pretox.rest.api.model; import java.util.Date; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentAnnotationsRepository.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentAnnotationsRepository.java similarity index 71% rename from src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentAnnotationsRepository.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentAnnotationsRepository.java index 38a021c..3259e0f 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentAnnotationsRepository.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentAnnotationsRepository.java @@ -1,9 +1,9 @@ -package es.bsc.inb.ades.rest.api.repository; +package es.bsc.inb.etransafe.pretox.rest.api.repository; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; -import es.bsc.inb.ades.rest.api.model.DocumentAnnotations; +import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; @Repository public interface DocumentAnnotationsRepository extends DocumentAnnotationsRepositoryCustom, MongoRepository { diff --git a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentAnnotationsRepositoryCustom.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentAnnotationsRepositoryCustom.java similarity index 68% rename from src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentAnnotationsRepositoryCustom.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentAnnotationsRepositoryCustom.java index 8cddfbe..3c6aa15 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentAnnotationsRepositoryCustom.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentAnnotationsRepositoryCustom.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.repository; +package es.bsc.inb.etransafe.pretox.rest.api.repository; /** * Custom Interface for Document diff --git a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentRepository.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepository.java similarity index 82% rename from src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentRepository.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepository.java index 0a7317a..2846290 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentRepository.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepository.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.repository; +package es.bsc.inb.etransafe.pretox.rest.api.repository; import java.util.List; @@ -6,7 +6,7 @@ import org.bson.types.ObjectId; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; -import es.bsc.inb.ades.rest.api.model.Document; +import es.bsc.inb.etransafe.pretox.rest.api.model.Document; @Repository public interface DocumentRepository extends DocumentRepositoryCustom, MongoRepository { diff --git a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentRepositoryCustom.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryCustom.java similarity index 59% rename from src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentRepositoryCustom.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryCustom.java index 4951ad5..f2e8c16 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentRepositoryCustom.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryCustom.java @@ -1,7 +1,7 @@ -package es.bsc.inb.ades.rest.api.repository; +package es.bsc.inb.etransafe.pretox.rest.api.repository; -import es.bsc.inb.ades.rest.api.model.DocumentAnnotations; -import es.bsc.inb.ades.rest.api.model.Finding; +import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; +import es.bsc.inb.etransafe.pretox.rest.api.model.Finding; /** * Custom Interface for Document diff --git a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentRepositoryImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryImpl.java similarity index 91% rename from src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentRepositoryImpl.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryImpl.java index 260542d..cfc1611 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentRepositoryImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryImpl.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.repository; +package es.bsc.inb.etransafe.pretox.rest.api.repository; import java.util.List; @@ -12,9 +12,9 @@ import org.springframework.data.mongodb.core.aggregation.ProjectionOperation; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; -import es.bsc.inb.ades.rest.api.model.Document; -import es.bsc.inb.ades.rest.api.model.DocumentAnnotations; -import es.bsc.inb.ades.rest.api.model.Finding; +import es.bsc.inb.etransafe.pretox.rest.api.model.Document; +import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; +import es.bsc.inb.etransafe.pretox.rest.api.model.Finding; /** * Custom implementation of DocumentRepository diff --git a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentTrackingRepository.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentTrackingRepository.java similarity index 72% rename from src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentTrackingRepository.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentTrackingRepository.java index 126b1f0..19d7f6d 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentTrackingRepository.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentTrackingRepository.java @@ -1,9 +1,9 @@ -package es.bsc.inb.ades.rest.api.repository; +package es.bsc.inb.etransafe.pretox.rest.api.repository; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; -import es.bsc.inb.ades.rest.api.model.DocumentTracking; +import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; @Repository public interface DocumentTrackingRepository extends DocumentTrackingRepositoryCustom, MongoRepository { diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentTrackingRepositoryCustom.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentTrackingRepositoryCustom.java new file mode 100644 index 0000000..d3db001 --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentTrackingRepositoryCustom.java @@ -0,0 +1,5 @@ +package es.bsc.inb.etransafe.pretox.rest.api.repository; + +public interface DocumentTrackingRepositoryCustom { + +} diff --git a/src/main/java/es/bsc/inb/ades/rest/api/security/SecurityConfig.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfig.java similarity index 92% rename from src/main/java/es/bsc/inb/ades/rest/api/security/SecurityConfig.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfig.java index 51715bc..845c57b 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/security/SecurityConfig.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfig.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.security; +package es.bsc.inb.etransafe.pretox.rest.api.security; //@KeycloakConfiguration public class SecurityConfig /*extends KeycloakWebSecurityConfigurerAdapter*/ diff --git a/src/main/java/es/bsc/inb/ades/rest/api/security/SecurityConfiguration.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfiguration.java similarity index 88% rename from src/main/java/es/bsc/inb/ades/rest/api/security/SecurityConfiguration.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfiguration.java index 2a8dfb3..e8452e5 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/security/SecurityConfiguration.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfiguration.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.security; +package es.bsc.inb.etransafe.pretox.rest.api.security; import org.springframework.context.annotation.Configuration; //import org.springframework.security.config.annotation.web.builders.HttpSecurity; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/security/WebController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/WebController.java similarity index 90% rename from src/main/java/es/bsc/inb/ades/rest/api/security/WebController.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/WebController.java index b675377..078418a 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/security/WebController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/WebController.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.security; +package es.bsc.inb.etransafe.pretox.rest.api.security; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/AuthenticationBean.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/AuthenticationBean.java similarity index 85% rename from src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/AuthenticationBean.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/AuthenticationBean.java index 7f26752..bb9dc27 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/AuthenticationBean.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/AuthenticationBean.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.security.basic.inmemory; +package es.bsc.inb.etransafe.pretox.rest.api.security.basic.inmemory; public class AuthenticationBean { diff --git a/src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/BasicAuthenticationController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/BasicAuthenticationController.java similarity index 88% rename from src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/BasicAuthenticationController.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/BasicAuthenticationController.java index 0140397..ec005a0 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/BasicAuthenticationController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/BasicAuthenticationController.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.security.basic.inmemory; +package es.bsc.inb.etransafe.pretox.rest.api.security.basic.inmemory; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/SecurityConfig.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/SecurityConfig.java similarity index 94% rename from src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/SecurityConfig.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/SecurityConfig.java index 68ae896..5a9543d 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/SecurityConfig.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/SecurityConfig.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.security.basic.inmemory; +package es.bsc.inb.etransafe.pretox.rest.api.security.basic.inmemory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/security/pkce/SecurityConfig.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java similarity index 80% rename from src/main/java/es/bsc/inb/ades/rest/api/security/pkce/SecurityConfig.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java index 7bfef2b..0a55f25 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/security/pkce/SecurityConfig.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.security.pkce; +package es.bsc.inb.etransafe.pretox.rest.api.security.pkce; @@ -20,6 +20,10 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers(HttpMethod.GET, "/liveness").permitAll() .antMatchers(HttpMethod.GET, "/readiness").permitAll() .antMatchers(HttpMethod.GET, "/documents/restore/*").permitAll() + .antMatchers(HttpMethod.GET, "/api-docs").permitAll() + .antMatchers(HttpMethod.GET, "/api-docs/**").permitAll() + .antMatchers(HttpMethod.GET, "/api.html").permitAll() + .antMatchers(HttpMethod.GET, "/swagger-ui/**").permitAll() .anyRequest().authenticated() .and() .sessionManagement() diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java similarity index 80% rename from src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java index c1d632c..c5e2e50 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java @@ -1,11 +1,11 @@ -package es.bsc.inb.ades.rest.api.services; +package es.bsc.inb.etransafe.pretox.rest.api.services; import java.util.List; -import es.bsc.inb.ades.rest.api.model.Document; -import es.bsc.inb.ades.rest.api.model.DocumentAnnotations; -import es.bsc.inb.ades.rest.api.model.DocumentTracking; -import es.bsc.inb.ades.rest.api.model.Status; +import es.bsc.inb.etransafe.pretox.rest.api.model.Document; +import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; +import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; +import es.bsc.inb.etransafe.pretox.rest.api.model.Status; public interface DocumentService { diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java similarity index 97% rename from src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java index e007ac0..700a033 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.services; +package es.bsc.inb.etransafe.pretox.rest.api.services; import java.nio.charset.Charset; import java.security.Principal; @@ -23,20 +23,20 @@ import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.nimbusds.jwt.JWT; -import es.bsc.inb.ades.rest.api.model.Action; -import es.bsc.inb.ades.rest.api.model.Annotation; -import es.bsc.inb.ades.rest.api.model.Document; -import es.bsc.inb.ades.rest.api.model.DocumentAnnotations; -import es.bsc.inb.ades.rest.api.model.DocumentTracking; -import es.bsc.inb.ades.rest.api.model.Finding; -import es.bsc.inb.ades.rest.api.model.RecordState; -import es.bsc.inb.ades.rest.api.model.SRDomainFinding; -import es.bsc.inb.ades.rest.api.model.Status; -import es.bsc.inb.ades.rest.api.model.Tracking; -import es.bsc.inb.ades.rest.api.repository.DocumentAnnotationsRepository; -import es.bsc.inb.ades.rest.api.repository.DocumentRepository; -import es.bsc.inb.ades.rest.api.repository.DocumentTrackingRepository; -import es.bsc.inb.ades.rest.api.util.Constants; +import es.bsc.inb.etransafe.pretox.rest.api.model.Action; +import es.bsc.inb.etransafe.pretox.rest.api.model.Annotation; +import es.bsc.inb.etransafe.pretox.rest.api.model.Document; +import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; +import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; +import es.bsc.inb.etransafe.pretox.rest.api.model.Finding; +import es.bsc.inb.etransafe.pretox.rest.api.model.RecordState; +import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding; +import es.bsc.inb.etransafe.pretox.rest.api.model.Status; +import es.bsc.inb.etransafe.pretox.rest.api.model.Tracking; +import es.bsc.inb.etransafe.pretox.rest.api.repository.DocumentAnnotationsRepository; +import es.bsc.inb.etransafe.pretox.rest.api.repository.DocumentRepository; +import es.bsc.inb.etransafe.pretox.rest.api.repository.DocumentTrackingRepository; +import es.bsc.inb.etransafe.pretox.rest.api.util.Constants; @Service diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/FileService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileService.java similarity index 94% rename from src/main/java/es/bsc/inb/ades/rest/api/services/FileService.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileService.java index b9fd2e5..dd331a5 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/services/FileService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileService.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.services; +package es.bsc.inb.etransafe.pretox.rest.api.services; import org.springframework.core.io.Resource; import org.springframework.web.multipart.MultipartFile; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/FileServiceImp.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileServiceImp.java similarity index 96% rename from src/main/java/es/bsc/inb/ades/rest/api/services/FileServiceImp.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileServiceImp.java index 1aafb88..2c9f31d 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/services/FileServiceImp.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileServiceImp.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.services; +package es.bsc.inb.etransafe.pretox.rest.api.services; @@ -18,7 +18,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; -import es.bsc.inb.ades.rest.api.model.RecordState; +import es.bsc.inb.etransafe.pretox.rest.api.model.RecordState; import java.io.ByteArrayInputStream; import java.io.File; @@ -88,7 +88,7 @@ public class FileServiceImp implements FileService { */ private Boolean documentIdExist(Document doc) { Long documentId = doc.getLong("id"); - es.bsc.inb.ades.rest.api.model.Document document = documentService.findByDocumentId(documentId); + es.bsc.inb.etransafe.pretox.rest.api.model.Document document = documentService.findByDocumentId(documentId); if(document!=null) { return true; } @@ -101,7 +101,7 @@ public class FileServiceImp implements FileService { */ private Boolean documentNameExist(Document doc) { String name = doc.getString("name"); - List documents = documentService.findByDocumentsName(name); + List documents = documentService.findByDocumentsName(name); if(documents!=null && documents.size()>0) { return true; } diff --git a/src/main/java/es/bsc/inb/ades/rest/api/util/Constants.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/util/Constants.java similarity index 94% rename from src/main/java/es/bsc/inb/ades/rest/api/util/Constants.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/util/Constants.java index 13caede..5a2844d 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/util/Constants.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/util/Constants.java @@ -1,4 +1,4 @@ -package es.bsc.inb.ades.rest.api.util; +package es.bsc.inb.etransafe.pretox.rest.api.util; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/es/bsc/inb/ades/rest/api/util/VisualizationHTMLUtil.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/util/VisualizationHTMLUtil.java similarity index 97% rename from src/main/java/es/bsc/inb/ades/rest/api/util/VisualizationHTMLUtil.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/util/VisualizationHTMLUtil.java index f819532..de358e0 100644 --- a/src/main/java/es/bsc/inb/ades/rest/api/util/VisualizationHTMLUtil.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/util/VisualizationHTMLUtil.java @@ -1,7 +1,7 @@ -package es.bsc.inb.ades.rest.api.util; +package es.bsc.inb.etransafe.pretox.rest.api.util; -import es.bsc.inb.ades.rest.api.model.Annotation; -import es.bsc.inb.ades.rest.api.model.Feature; +import es.bsc.inb.etransafe.pretox.rest.api.model.Annotation; +import es.bsc.inb.etransafe.pretox.rest.api.model.Feature; public class VisualizationHTMLUtil { diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index 5b31d2b..44eed02 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -1,8 +1,12 @@ spring.application.name =ades_rest_api server.servlet.context-path=/pretoxapi +springdoc.api-docs.path=/api-docs +springdoc.swagger-ui.path=/api.html #Spring Boot Port server.port = ${SERVER_PORT} #PRETOX Database spring.data.mongodb.uri=${MONGO_URI} #KEYCLOCK configuration variables spring.security.oauth2.resourceserver.jwt.jwk-set-uri=${OAUTH2_RS_CERTS} + +1646136508026 -- GitLab From 0311cf7cee24623a77800d422288a2e6bdd48472 Mon Sep 17 00:00:00 2001 From: Javi Corvi Date: Tue, 21 Jun 2022 11:12:09 +0200 Subject: [PATCH 02/26] export to srdomain --- .../api/controllers/DocumentController.java | 6 + .../rest/api/model/DocumentAnnotations.java | 11 ++ .../pretox/rest/api/model/FindingSR.java | 186 ++++++++++++++++++ .../api/services/DocumentServiceImpl.java | 28 ++- 4 files changed, 230 insertions(+), 1 deletion(-) create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FindingSR.java diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java index 349bbc8..650dabd 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java @@ -8,6 +8,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -36,6 +37,11 @@ public class DocumentController { return documentService.findDocumentAnnotationsByDocumentId(id); } + @GetMapping(value = "/documents/srdomain/{id}") + public DocumentAnnotations findSRDomainDocument(@PathVariable(value="id") Long id) { + return documentService.findDocumentSRDomainByDocumentId(id); + } + @RequestMapping("/document_data/{id}") public Document findDocument(@PathVariable(value="id") Long id) { return documentService.findByDocumentId(id); diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java index 8129440..01403f3 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java @@ -25,6 +25,8 @@ public class DocumentAnnotations { private List srdomainfindings; + private List findingsSR; + private Status status; public DocumentAnnotations() {} @@ -87,6 +89,15 @@ public class DocumentAnnotations { this.status = status; } + public List getFindingsSR() { + return findingsSR; + } + + public void setFindingsSR(List findingsSR) { + this.findingsSR = findingsSR; + } + + diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FindingSR.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FindingSR.java new file mode 100644 index 0000000..31e4756 --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FindingSR.java @@ -0,0 +1,186 @@ +package es.bsc.inb.etransafe.pretox.rest.api.model; + +public class FindingSR { + + //SRSEQ -- > Sequence number + private Long id; + + //SRGRPDOS --> Group Dose Level, "20 mg/kg" + private String dose=""; + //SPGRPCD --> Sponsor-defined Group Code, group 1 , A + private String group=""; + //GRPLBL --> Sponsor-defined Group Name, "low dose", "mid dose" + private String groupQualifier=""; + + //SRSEX -- > Sex + private String sex=""; + //SRDOMAIN --> Domain of Finding + private String domain=""; + + //SROBSV --> Manifestation of Finding, “I” (Increase), “D” (Decrease), “P” (Present) or “A” (Absent) + private String manifestationFinding=""; + //SRSPEC --> Specimen of Finding + private String specimen=""; + //SRTSTCD --> Test Short Name + private String studyTestCD=""; + //SRFNDG --> Finding + private String finding=""; + //SRORES --> Observation (original result) + private String abnormalObservationFreeText=""; + //SRTRTEF --> Treatment-Related + private String isTreatmentRelated=""; + + //SRRISK --> Effect Level Associated with a Group/Sex, NOEL, LOEL, NOAEL, LOAEL, HNSTD, STD, MTD + private String risk=""; + //SROBSQ --> Observation Qualifier, “R” (Reversible), “T” (Transient) or ‘none’ + private String observationQualifier=""; + //SRSIGF --> Statistical Significance + private String statisticalSignificance=""; + //SRCOMNT --> Comment + private String comment=""; + //SRSEV --> Severity of Finding + private String severity=""; + //SRSTDY + private String dayStartOfFinding=""; + //SRSTPHSE --> Study Phase of first Observation, “PRE-DOSING”, “DOSING”, “RECOVERY” + private String phaseOfFirstObservation=""; + //SRENPHSE -->Study Phase of last Observation + private String phaseOfLastObservation=""; + //SROBSTDY --> Start Phase Day of Observation + private String startPhaseDayOfObservation=""; + + //SRENDY --> ?? + + //SROBENDY --> ?? + + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getRisk() { + return risk; + } + public void setRisk(String risk) { + this.risk = risk; + } + public String getDose() { + return dose; + } + public void setDose(String dose) { + this.dose = dose; + } + public String getGroup() { + return group; + } + public void setGroup(String group) { + this.group = group; + } + public String getSex() { + return sex; + } + public void setSex(String sex) { + this.sex = sex; + } + + public String getDomain() { + return domain; + } + public void setDomain(String domain) { + this.domain = domain; + } + public String getGroupQualifier() { + return groupQualifier; + } + public void setGroupQualifier(String groupQualifier) { + this.groupQualifier = groupQualifier; + } + public String getObservationQualifier() { + return observationQualifier; + } + public void setObservationQualifier(String observationQualifier) { + this.observationQualifier = observationQualifier; + } + public String getDayStartOfFinding() { + return dayStartOfFinding; + } + public void setDayStartOfFinding(String dayStartOfFinding) { + this.dayStartOfFinding = dayStartOfFinding; + } + public String getPhaseOfFirstObservation() { + return phaseOfFirstObservation; + } + public void setPhaseOfFirstObservation(String phaseOfFirstObservation) { + this.phaseOfFirstObservation = phaseOfFirstObservation; + } + public String getPhaseOfLastObservation() { + return phaseOfLastObservation; + } + public void setPhaseOfLastObservation(String phaseOfLastObservation) { + this.phaseOfLastObservation = phaseOfLastObservation; + } + public String getStartPhaseDayOfObservation() { + return startPhaseDayOfObservation; + } + public void setStartPhaseDayOfObservation(String startPhaseDayOfObservation) { + this.startPhaseDayOfObservation = startPhaseDayOfObservation; + } + public String getManifestationFinding() { + return manifestationFinding; + } + public void setManifestationFinding(String manifestationFinding) { + this.manifestationFinding = manifestationFinding; + } + public String getSpecimen() { + return specimen; + } + public void setSpecimen(String specimen) { + this.specimen = specimen; + } + public String getStudyTestCD() { + return studyTestCD; + } + public void setStudyTestCD(String studyTestCD) { + this.studyTestCD = studyTestCD; + } + public String getFinding() { + return finding; + } + public void setFinding(String finding) { + this.finding = finding; + } + public String getAbnormalObservationFreeText() { + return abnormalObservationFreeText; + } + public void setAbnormalObservationFreeText(String abnormalObservationFreeText) { + this.abnormalObservationFreeText = abnormalObservationFreeText; + } + + public String getSeverity() { + return severity; + } + public void setSeverity(String severity) { + this.severity = severity; + } + public String getStatisticalSignificance() { + return statisticalSignificance; + } + public void setStatisticalSignificance(String statisticalSignificance) { + this.statisticalSignificance = statisticalSignificance; + } + public String getIsTreatmentRelated() { + return isTreatmentRelated; + } + public void setIsTreatmentRelated(String isTreatmentRelated) { + this.isTreatmentRelated = isTreatmentRelated; + } + public String getComment() { + return comment; + } + public void setComment(String comment) { + this.comment = comment; + } + + +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java index 700a033..5aef624 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java @@ -29,6 +29,7 @@ import es.bsc.inb.etransafe.pretox.rest.api.model.Document; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; import es.bsc.inb.etransafe.pretox.rest.api.model.Finding; +import es.bsc.inb.etransafe.pretox.rest.api.model.FindingSR; import es.bsc.inb.etransafe.pretox.rest.api.model.RecordState; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding; import es.bsc.inb.etransafe.pretox.rest.api.model.Status; @@ -76,7 +77,7 @@ public class DocumentServiceImpl implements DocumentService { return documentAnnotationsRepository.findByDocumentId(id); } - public DocumentAnnotations findDocumentSRDomainByDocumentId(Long id) { + public DocumentAnnotations findDocumentSRDomainByDocumentIdDeprecated(Long id) { DocumentAnnotations docAnno = documentAnnotationsRepository.findByDocumentId(id); List srdomains = new ArrayList(); for (Annotation sentence : docAnno.getRelevantSentences()) { @@ -92,6 +93,31 @@ public class DocumentServiceImpl implements DocumentService { return docAnno; } + + + public DocumentAnnotations findDocumentSRDomainByDocumentId(Long id) { + DocumentAnnotations docAnno = documentAnnotationsRepository.findByDocumentId(id); + List srdomains = new ArrayList(); + for (Annotation sentence : docAnno.getRelevantSentences()) { + for (Finding finding : sentence.getFindings()) { + for (SRDomainFinding sr : finding.getSrDomainFindings()) { + FindingSR f = new FindingSR(); + f.setAbnormalObservationFreeText(sr.getSRORES()); + f.setFinding(sr.getSRFNDG()); + f.setSex(sr.getSRSEX()); + f.setSpecimen(sr.getSRSPEC()); + f.setStudyTestCD(sr.getSRTSTCD()); + srdomains.add(f); + } + } + } + docAnno.setFindingsSR(srdomains); + docAnno.setRelevantSentences(null); + docAnno.setFindings(null); + return docAnno; + } + + public Document findByDocumentId2(Long id) { documentRepository.findByDocumentId(id); return documentRepository.findByDocumentId(id); -- GitLab From b28c2a80274de5ff6adbc0934dfe2e23ef11c872 Mon Sep 17 00:00:00 2001 From: Javi Corvi Date: Wed, 6 Jul 2022 16:03:13 +0200 Subject: [PATCH 03/26] update finding --- .../api/controllers/DocumentController.java | 8 ++++++ .../rest/api/model/SRDomainFinding.java | 2 -- .../rest/api/services/DocumentService.java | 5 +++- .../api/services/DocumentServiceImpl.java | 26 +++++++++++++++++++ 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java index 650dabd..d065b46 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java @@ -10,12 +10,15 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import es.bsc.inb.etransafe.pretox.rest.api.model.Document; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; +import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding; import es.bsc.inb.etransafe.pretox.rest.api.model.Status; import es.bsc.inb.etransafe.pretox.rest.api.services.DocumentService; @@ -27,6 +30,11 @@ public class DocumentController { @Autowired public DocumentService documentService; + @PostMapping("/documents/{id}/updatefinding") + public SRDomainFinding updateFinding(@PathVariable(value="id") Long id,@RequestBody SRDomainFinding srDomainFinding) { + return documentService.saveFinding(id, srDomainFinding); + } + @RequestMapping("/documents") public List findAll() { return documentService.findAll(); diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java index fc4bcb1..40cadc7 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java @@ -1,7 +1,5 @@ package es.bsc.inb.etransafe.pretox.rest.api.model; -import org.apache.tomcat.util.bcel.classfile.Constant; - import es.bsc.inb.etransafe.pretox.rest.api.util.Constants; /** diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java index c5e2e50..15ed76f 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java @@ -5,6 +5,7 @@ import java.util.List; import es.bsc.inb.etransafe.pretox.rest.api.model.Document; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; +import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding; import es.bsc.inb.etransafe.pretox.rest.api.model.Status; @@ -50,5 +51,7 @@ public interface DocumentService { void removeDocument(long documentId); - void restoreDocument(long documentId); + void restoreDocument(long documentId); + + SRDomainFinding saveFinding(Long documentId, SRDomainFinding srDomainFinding); } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java index 5aef624..f08e349 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java @@ -10,6 +10,7 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; @@ -1072,5 +1073,30 @@ public class DocumentServiceImpl implements DocumentService { public void setRequest(HttpServletRequest request) { this.request = request; } + + @Override + public SRDomainFinding saveFinding(Long documentId, SRDomainFinding srDomainFinding) { + DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(documentId); + SRDomainFinding srDomainFinding2 = findSRDomainFinding(documentAnnotations, srDomainFinding.getSrDomainId()); + BeanUtils.copyProperties(srDomainFinding, srDomainFinding2); + documentAnnotationsRepository.save(documentAnnotations); + return srDomainFinding; + } + + private SRDomainFinding findSRDomainFinding(DocumentAnnotations documentAnnotations, Integer id) { + for (Annotation annotation : documentAnnotations.getRelevantSentences()) { + for (Finding finding : annotation.getFindings()) { + for (SRDomainFinding srDomainFinding : finding.getSrDomainFindings()) { + if(srDomainFinding.getSrDomainId().equals(id)) { + return srDomainFinding; + } + } + + } + } + return null; + } + + } -- GitLab From d5122daf4b1d58a0d5828a0a14f482727a1147d1 Mon Sep 17 00:00:00 2001 From: Javi Corvi Date: Fri, 15 Jul 2022 11:01:34 +0200 Subject: [PATCH 04/26] refactorization of rest api --- .../api/controllers/DocumentController.java | 92 +++++++++---------- .../api/controllers/LivenessController.java | 6 +- .../rest/api/security/SecurityConfig.java | 41 --------- .../api/security/SecurityConfiguration.java | 18 ---- .../rest/api/security/WebController.java | 22 ----- .../basic/inmemory/AuthenticationBean.java | 24 ----- .../BasicAuthenticationController.java | 17 ---- .../basic/inmemory/SecurityConfig.java | 32 ------- 8 files changed, 46 insertions(+), 206 deletions(-) delete mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfig.java delete mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfiguration.java delete mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/WebController.java delete mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/AuthenticationBean.java delete mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/BasicAuthenticationController.java delete mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/SecurityConfig.java diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java index d065b46..b15d474 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java @@ -8,9 +8,10 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -25,113 +26,110 @@ import es.bsc.inb.etransafe.pretox.rest.api.services.DocumentService; @RestController @CrossOrigin(origins="*") +@RequestMapping("/documents") public class DocumentController { @Autowired public DocumentService documentService; - @PostMapping("/documents/{id}/updatefinding") + @PutMapping(value ="/{id}/srfinding/update") public SRDomainFinding updateFinding(@PathVariable(value="id") Long id,@RequestBody SRDomainFinding srDomainFinding) { return documentService.saveFinding(id, srDomainFinding); } - @RequestMapping("/documents") + @GetMapping public List findAll() { return documentService.findAll(); } - @RequestMapping("/documents/{id}") + @GetMapping(value ="/{id}") public DocumentAnnotations find(@PathVariable(value="id") Long id) { return documentService.findDocumentAnnotationsByDocumentId(id); } - @GetMapping(value = "/documents/srdomain/{id}") + @GetMapping(value = "/srdomain/{id}") public DocumentAnnotations findSRDomainDocument(@PathVariable(value="id") Long id) { return documentService.findDocumentSRDomainByDocumentId(id); } - @RequestMapping("/document_data/{id}") - public Document findDocument(@PathVariable(value="id") Long id) { - return documentService.findByDocumentId(id); - } +// @GetMapping(value = "/document_data/{id}") +// public Document findDocument(@PathVariable(value="id") Long id) { +// return documentService.findByDocumentId(id); +// } - @RequestMapping("/documents/{id}/srdomain") + @GetMapping(value = "/{id}/srdomain") public DocumentAnnotations findDocumentSRDomain(@PathVariable(value="id") Long id) { return documentService.findDocumentSRDomainByDocumentId(id); } - @RequestMapping("/documents/{id}/finding/{findingId}") - public String findFinding(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId) { - String snippet = documentService.findFindingEvidenceByDocumentIdAndFindingId(id, findingId); - return snippet; - } - @RequestMapping("/documents/{id}/findings/{findingIds}") - public String findFindings(@PathVariable(value="id") Long id, @PathVariable(value="findingIds") List findingIds) { - //String snippet = documentService.findFindingEvidenceByDocumentIdAndFindingId(id, findingId); - //return snippet; - return ""; - } - @RequestMapping("/documents/{id}/move/{status}") + @PutMapping(value = "/{id}/move/{status}") public String moveDocument(@PathVariable(value="id") Long id, @PathVariable(value="status") Status status) { documentService.moveDocument(id, status); return "true"; } - - - @RequestMapping("/documents/{id}/setExportSRDomain/{srDomainId}/{export_srDomain}") - public String setExportFinding(@PathVariable(value="id") Long id, @PathVariable(value="srDomainId") Integer srDomainId, @PathVariable(value="export_srDomain") Boolean export_srDomain) { + @PutMapping(value = "/{id}/srfinding/{srFindingId}/export/{export}") + public String setExportFinding(@PathVariable(value="id") Long id, @PathVariable(value="srFindingId") Integer srDomainId, @PathVariable(value="export") Boolean export_srDomain) { documentService.setExportSRDomainFinding(id, srDomainId, export_srDomain); return "true"; } - @RequestMapping("/documents/{id}/srFindingValidation/{srDomainId}/{status}") - public String setSRFindingValidation(@PathVariable(value="id") Long id, @PathVariable(value="srDomainId") Integer srDomainId, @PathVariable(value="status") String status) { + @PutMapping(value = "/{id}/srfinding/{srFindingId}/validation/{status}") + public String setSRFindingValidation(@PathVariable(value="id") Long id, @PathVariable(value="srFindingId") Integer srDomainId, @PathVariable(value="status") String status) { documentService.setValidationSRDomainFinding(id, srDomainId, status); return "true"; } - @RequestMapping("/documents/{id}/findingValidation/{findingId}/{status}") - public String setFindingValidation(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId, @PathVariable(value="status") String status) { - documentService.setFindingValidation(id, findingId, status); - return "true"; +// @RequestMapping(value = "/{id}/findingValidation/{findingId}/{status}") +// public String setFindingValidation(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId, @PathVariable(value="status") String status) { +// documentService.setFindingValidation(id, findingId, status); +// return "true"; +// } + + + + @GetMapping(value = "/{id}/evidence/sentences") + public String findSentencesEvidence(@PathVariable(value="id") Long id) { + String snippet = documentService.findSentencesEvidenceByDocumentId(id); + return snippet; } - @RequestMapping("/documents/{id}/sentence/{sentenceId}") + @GetMapping(value = "/{id}/evidence/sentence/{sentenceId}") public String findSentence(@PathVariable(value="id") Long id, @PathVariable(value="sentenceId") Integer sentenceId) { String snippet = documentService.findSentenceEvidenceByDocumentIdAndSentenceId(id, sentenceId); return snippet; } - @RequestMapping("/documents/{id}/evidence/findings") + @GetMapping(value = "/{id}/evidence/findings") public String findAllFindingEvidence(@PathVariable(value="id") Long id) { String snippet = documentService.findFindingsEvidenceByDocumentId(id); return snippet; } - - @RequestMapping("/documents/{id}/evidence/all") - public String findAllEvidence(@PathVariable(value="id") Long id) { - String snippet = documentService.findAllEvidenceByDocumentId(id); + + @GetMapping(value = "/{id}/evidence/finding/{findingId}") + public String findFinding(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId) { + String snippet = documentService.findFindingEvidenceByDocumentIdAndFindingId(id, findingId); return snippet; } - @RequestMapping("/documents/{id}/evidence/sentences") - public String findSentencesEvidence(@PathVariable(value="id") Long id) { - String snippet = documentService.findSentencesEvidenceByDocumentId(id); - //String snippet = documentService.findAllEvidenceByDocumentId(id); + + + @GetMapping(value = "/{id}/evidence/all") + public String findAllEvidence(@PathVariable(value="id") Long id) { + String snippet = documentService.findAllEvidenceByDocumentId(id); return snippet; } - @RequestMapping("/documents/{id}/text") + @GetMapping(value = "/{id}/text") public String findDocumentText(@PathVariable(value="id") Long id) { String snippet = documentService.findTextByDocumentId(id); return snippet; } - @RequestMapping(value = "/documents/export/{id}") + @GetMapping(value = "/export/{id}") public ResponseEntity generateReport(@PathVariable("id") long documentId){ String filename = "Study_Report_" + documentId +".txt"; byte[] content = documentService.exportDocumentAnnotation(documentId); @@ -143,19 +141,19 @@ public class DocumentController { return new ResponseEntity<>(content, head,HttpStatus.OK); } - @RequestMapping(value = "/documents/remove/{id}") + @DeleteMapping(value = "/remove/{id}") public String removeDocument(@PathVariable("id") long documentId){ documentService.removeDocument(documentId); return "true"; } - @RequestMapping(value = "/documents/restore/{id}") + @GetMapping(value = "/restore/{id}") public String restoreDocument(@PathVariable("id") long documentId){ documentService.restoreDocument(documentId); return "true"; } - @RequestMapping("/documents/{id}/tracking") + @GetMapping(value = "/{id}/tracking") public DocumentTracking findTrackings(@PathVariable(value="id") Long id) { return documentService.findTrackings(id); } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LivenessController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LivenessController.java index d8f02d7..9a93907 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LivenessController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LivenessController.java @@ -17,9 +17,5 @@ public class LivenessController { public String readeness() { return "true"; } - - @GetMapping(path = "/hello") - public String hello() { - return "holita"; - } + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfig.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfig.java deleted file mode 100644 index 845c57b..0000000 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfig.java +++ /dev/null @@ -1,41 +0,0 @@ -package es.bsc.inb.etransafe.pretox.rest.api.security; - -//@KeycloakConfiguration -public class SecurityConfig /*extends KeycloakWebSecurityConfigurerAdapter*/ -{ - -// /** -// * Registers the KeycloakAuthenticationProvider with the authentication manager. -// */ -// @Autowired -// public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { -// auth.authenticationProvider(keycloakAuthenticationProvider()); -// } -// -// /** -// * Defines the session authentication strategy. -// */ -// @Bean -// @Override -// protected SessionAuthenticationStrategy sessionAuthenticationStrategy() { -// return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl()); -// } -// -// @Override -// protected void configure(HttpSecurity http) throws Exception -// { -// super.configure(http); -// http.authorizeRequests() -// .antMatchers("/greeting").hasRole("user") -// //.antMatchers("/admin*").hasRole("ADMIN") http://localhost:8087/greeting -// .anyRequest().permitAll(); -// } -// -// @Bean -// public KeycloakSpringBootConfigResolver KeycloakConfigResolver() { -// return new KeycloakSpringBootConfigResolver(); -// } - -} - - diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfiguration.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfiguration.java deleted file mode 100644 index e8452e5..0000000 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/SecurityConfiguration.java +++ /dev/null @@ -1,18 +0,0 @@ -package es.bsc.inb.etransafe.pretox.rest.api.security; - -import org.springframework.context.annotation.Configuration; -//import org.springframework.security.config.annotation.web.builders.HttpSecurity; -//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -@Configuration -public class SecurityConfiguration /*extends WebSecurityConfigurerAdapter */{ - - -// @Override -// public void configure(HttpSecurity http) throws Exception { -// http.authorizeRequests() -// .anyRequest().authenticated() -// .and() -// .oauth2Login(); -// } - -} \ No newline at end of file diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/WebController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/WebController.java deleted file mode 100644 index 078418a..0000000 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/WebController.java +++ /dev/null @@ -1,22 +0,0 @@ -package es.bsc.inb.etransafe.pretox.rest.api.security; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; - -import java.security.Principal; -@Controller -public class WebController { - - @RequestMapping("/api/v1/nada") - public String index(Model model, Principal principal) { - return "login correct"; - } - @GetMapping("/greeting") - public String greeting(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) { - model.addAttribute("name", name); - return "index"; - } - -} \ No newline at end of file diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/AuthenticationBean.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/AuthenticationBean.java deleted file mode 100644 index bb9dc27..0000000 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/AuthenticationBean.java +++ /dev/null @@ -1,24 +0,0 @@ -package es.bsc.inb.etransafe.pretox.rest.api.security.basic.inmemory; - -public class AuthenticationBean { - - private String message; - - public AuthenticationBean(String message) { - this.message = message; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - @Override - public String toString() { - return String.format("HelloWorldBean [message=%s]", message); - } - -} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/BasicAuthenticationController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/BasicAuthenticationController.java deleted file mode 100644 index ec005a0..0000000 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/BasicAuthenticationController.java +++ /dev/null @@ -1,17 +0,0 @@ -package es.bsc.inb.etransafe.pretox.rest.api.security.basic.inmemory; - -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -//Controller -@CrossOrigin() -@RestController -public class BasicAuthenticationController { - - @GetMapping(path = "/basicauth") - public AuthenticationBean helloWorldBean() { - //throw new RuntimeException("Some Error has Happened! Contact Support at ***-***"); - return new AuthenticationBean("You are authenticated"); - } -} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/SecurityConfig.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/SecurityConfig.java deleted file mode 100644 index 5a9543d..0000000 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/basic/inmemory/SecurityConfig.java +++ /dev/null @@ -1,32 +0,0 @@ -package es.bsc.inb.etransafe.pretox.rest.api.security.basic.inmemory; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpMethod; -import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; - -//@Configuration -public class SecurityConfig extends WebSecurityConfigurerAdapter { - @Override - protected void configure(HttpSecurity http) throws Exception { - http.cors().and().csrf().disable(). - //http.csrf().disable(). - - authorizeRequests(). - antMatchers(HttpMethod.OPTIONS, "/**").permitAll(). - antMatchers(HttpMethod.GET, "/liveness").permitAll(). - antMatchers(HttpMethod.GET, "/readiness").permitAll().anyRequest().authenticated() - .and().httpBasic(); - - } - - @Autowired - public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { - auth.inMemoryAuthentication().withUser("admin").password("{noop}eTRAN2019!").roles("USER"); - for (int i = 1; i < 41; i++) { - auth.inMemoryAuthentication().withUser("user"+i).password("{noop}user"+i+"2021!").roles("USER"); - } - } -} -- GitLab From 5ef68df4de3a53c218c8d7a415b48c649b2a6449 Mon Sep 17 00:00:00 2001 From: Javi Corvi Date: Fri, 22 Jul 2022 13:08:40 +0200 Subject: [PATCH 05/26] working with legacy reports --- .../rest/api/controllers/FileController.java | 43 +------- .../controllers/LegacyReportController.java | 83 ++++++++++++++ .../pretox/rest/api/model/Document.java | 3 - .../pretox/rest/api/model/Report.java | 93 ++++++++++++++++ .../api/security/pkce/SecurityConfig.java | 3 + .../pretox/rest/api/services/FileService.java | 30 +----- .../rest/api/services/FileServiceImp.java | 102 +++++++----------- .../api/services/LegacyReportsService.java | 39 +++++++ .../services/LegacyReportsServiceImpl.java | 100 +++++++++++++++++ 9 files changed, 364 insertions(+), 132 deletions(-) create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LegacyReportController.java create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsService.java create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsServiceImpl.java diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/FileController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/FileController.java index 1c11575..5f28c96 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/FileController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/FileController.java @@ -5,24 +5,16 @@ package es.bsc.inb.etransafe.pretox.rest.api.controllers; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.Resource; -import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder; -import es.bsc.inb.etransafe.pretox.rest.api.model.FileMessage; -import es.bsc.inb.etransafe.pretox.rest.api.model.FileModel; import es.bsc.inb.etransafe.pretox.rest.api.services.FileService; @Controller @@ -56,36 +48,7 @@ public class FileController { } } - @GetMapping("/files") - public ResponseEntity> getFiles(){ - List fileInfos = fileService.loadAll().map(path -> { - String filename = path.getFileName().toString(); - String url = MvcUriComponentsBuilder.fromMethodName(FileController.class, "getFile", - path.getFileName().toString()).build().toString(); - return new FileModel(filename, url); - }).collect(Collectors.toList()); - - return ResponseEntity.status(HttpStatus.OK).body(fileInfos); - } - - - @GetMapping("/files/{filename:.+}") - public ResponseEntity getFile(@PathVariable String filename){ - Resource file = fileService.load(filename); - return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, - "attachment; filename=\""+file.getFilename() + "\"").body(file); - } - - @GetMapping("/delete/{filename:.+}") - public ResponseEntity deleteFile(@PathVariable String filename) { - String message = ""; - try { - message = fileService.deleteFile(filename); - return ResponseEntity.status(HttpStatus.OK).body(new FileMessage(message)); - } catch (Exception e) { - - return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(new FileMessage(message)); - } - } - + + + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LegacyReportController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LegacyReportController.java new file mode 100644 index 0000000..138a893 --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LegacyReportController.java @@ -0,0 +1,83 @@ +package es.bsc.inb.etransafe.pretox.rest.api.controllers; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import es.bsc.inb.etransafe.pretox.rest.api.model.Report; +import es.bsc.inb.etransafe.pretox.rest.api.services.LegacyReportsService; + + +@RestController +@CrossOrigin(origins="*") +@RequestMapping("/reports") +public class LegacyReportController { + + @Autowired + LegacyReportsService legacyReportsService; + + @PostMapping("/upload") + public ResponseEntity> uploadLegacyReports(@RequestParam("files")MultipartFile[] files){ + try{ + List fileNames = new ArrayList<>(); + List errors = legacyReportsService.validateUpload(files); + if(errors.size()==0) { + Arrays.asList(files).stream().forEach(file->{ + try { + legacyReportsService.upload(file); + } catch (IOException e) { + errors.add("There was an IOExcpteion problem uploading the report: " + file.getName()); + e.printStackTrace(); + } + fileNames.add(file.getOriginalFilename()); + }); + } + if(errors.size()!=0) { + errors.add("Validation fail, no legacy report was uploaded."); + return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(errors); + } + List messages = new ArrayList(); + messages.add("The legacy reports were uploaded correctly."); + return ResponseEntity.status(HttpStatus.OK).body(messages); + }catch (Exception e){ + e.printStackTrace(); + List messages = new ArrayList(); + messages.add("An error occurred while uploading legacy reports."); + return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(messages); + } + } + + + @GetMapping("/download/{id}") + public ResponseEntity download(@PathVariable String id) throws IOException { + Report legacyReport = legacyReportsService.download(id); + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType(legacyReport.getFileType() )) + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + legacyReport.getFileName() + "\"") + .body(new ByteArrayResource(legacyReport.getFile())); + } + + + @GetMapping("/list") + public ResponseEntity> listLegacyReports() throws IOException { + List list = legacyReportsService.list(); + return ResponseEntity.ok().body(list); + } + +} \ No newline at end of file diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Document.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Document.java index 114faaa..01696cd 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Document.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Document.java @@ -1,10 +1,7 @@ package es.bsc.inb.etransafe.pretox.rest.api.model; -import java.util.List; - import org.bson.types.ObjectId; import org.springframework.data.annotation.Id; -import org.springframework.data.mongodb.core.mapping.DBRef; import org.springframework.data.mongodb.core.mapping.Field; @org.springframework.data.mongodb.core.mapping.Document(collection="documents") diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java new file mode 100644 index 0000000..637f790 --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java @@ -0,0 +1,93 @@ +package es.bsc.inb.etransafe.pretox.rest.api.model; + +import org.bson.types.ObjectId; +import org.springframework.data.annotation.Id; + +@org.springframework.data.mongodb.core.mapping.Document(collection="reports") +public class Report { + + @Id + private ObjectId id; + + private String name; + + private String uploadDate; + + private String fileName; + + private String fileType; + + private String fileSize; + + private byte[] file; + + private ObjectId gridFSId; + + public ObjectId getId() { + return id; + } + + public void setId(ObjectId id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getUploadDate() { + return uploadDate; + } + + public void setUploadDate(String uploadDate) { + this.uploadDate = uploadDate; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public byte[] getFile() { + return file; + } + + public void setFile(byte[] file) { + this.file = file; + } + + public ObjectId getGridFSId() { + return gridFSId; + } + + public void setGridFSId(ObjectId gridFSId) { + this.gridFSId = gridFSId; + } + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + public String getFileSize() { + return fileSize; + } + + public void setFileSize(String fileSize) { + this.fileSize = fileSize; + } + + + + +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java index 0a55f25..6538cd5 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java @@ -20,6 +20,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers(HttpMethod.GET, "/liveness").permitAll() .antMatchers(HttpMethod.GET, "/readiness").permitAll() .antMatchers(HttpMethod.GET, "/documents/restore/*").permitAll() + .antMatchers(HttpMethod.POST, "/reports/upload").permitAll() + .antMatchers(HttpMethod.GET, "/reports/download/*").permitAll() + .antMatchers(HttpMethod.GET, "/reports/list").permitAll() .antMatchers(HttpMethod.GET, "/api-docs").permitAll() .antMatchers(HttpMethod.GET, "/api-docs/**").permitAll() .antMatchers(HttpMethod.GET, "/api.html").permitAll() diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileService.java index dd331a5..e1a2a03 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileService.java @@ -1,40 +1,17 @@ package es.bsc.inb.etransafe.pretox.rest.api.services; -import org.springframework.core.io.Resource; -import org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; -import java.nio.file.Path; import java.util.List; -import java.util.stream.Stream; -public interface FileService { +import org.springframework.web.multipart.MultipartFile; - /* - Metodo para crear la carpeta donde vamos a guardar los archivos - */ - public void init(); +public interface FileService { + /* Metodo para guardar los archivos */ public void save(MultipartFile file); - /* - Metodo para cargar un archivo - */ - public Resource load(String filename); - - /* - Metodo para borrar todos los archivos cada vez que se inicie el servidor - */ - public void deleteAll(); - - /* - Metodo para Cargar todos los archivos - */ - public Stream loadAll(); - /* Metodo para Borrar un archivo */ @@ -45,4 +22,5 @@ public interface FileService { * @return */ public List validate(MultipartFile[] files, Boolean allow_duplicates); + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileServiceImp.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileServiceImp.java index 2c9f31d..74fe733 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileServiceImp.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileServiceImp.java @@ -2,28 +2,8 @@ package es.bsc.inb.etransafe.pretox.rest.api.services; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; -import org.bson.Document; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.Resource; -import org.springframework.core.io.UrlResource; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.stereotype.Service; -import org.springframework.util.FileSystemUtils; -import org.springframework.web.multipart.MultipartFile; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.mongodb.client.MongoCollection; -import com.mongodb.client.MongoDatabase; - -import es.bsc.inb.etransafe.pretox.rest.api.model.RecordState; - import java.io.ByteArrayInputStream; -import java.io.File; import java.io.IOException; -import java.net.MalformedURLException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -34,7 +14,20 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.stream.Stream; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.io.IOUtils; +import org.bson.Document; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.gridfs.GridFsOperations; +import org.springframework.data.mongodb.gridfs.GridFsTemplate; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonGenerationException; +import com.mongodb.BasicDBObject; +import com.mongodb.DBObject; @Service public class FileServiceImp implements FileService { @@ -48,15 +41,12 @@ public class FileServiceImp implements FileService { @Autowired DocumentService documentService; - @Override - public void init() { - try { - Files.createDirectory(root); - } catch (IOException e) { - throw new RuntimeException("No se puede inicializar la carpeta uploads"); - } - } + @Autowired + private GridFsOperations operations; + @Autowired + private GridFsTemplate gridFsTemplate; + /** * Execute process in a document * @param file @@ -82,6 +72,24 @@ public class FileServiceImp implements FileService { e.printStackTrace(); } } + + /** + * Execute process in a document + * @param file + * @param outputGATEFile + * @throws ResourceInstantiationException + * @throws IOException + * @throws JsonGenerationException + * @throws InvalidOffsetException + */ + public String saveLegacyReport(MultipartFile file) throws IOException{ + DBObject metadata = new BasicDBObject(); + metadata.put("fileSize", file.getSize()); + metadata.put("type", "legacy_report"); + Object fileID = gridFsTemplate.store(file.getInputStream(), file.getOriginalFilename(), file.getContentType(), metadata); + return fileID.toString(); + } + /** * return if document id exist in database. * @param doc @@ -108,41 +116,7 @@ public class FileServiceImp implements FileService { return false; } - @Override - public Resource load(String filename) { - try { - Path file = root.resolve(filename); - Resource resource = new UrlResource(file.toUri()); - - if(resource.exists() || resource.isReadable()){ - return resource; - }else{ - throw new RuntimeException("No se puede leer el archivo "); - } - - }catch (MalformedURLException e){ - throw new RuntimeException("Error: " + e.getMessage()); - } - } - @Override - public void deleteAll() { - FileSystemUtils.deleteRecursively(root.toFile()); - } - - @Override - public Stream loadAll(){ - //Files.walk recorre nuestras carpetas (uploads) buscando los archivos - // el 1 es la profundidad o nivel que queremos recorrer - // :: Referencias a metodos - // Relativize sirve para crear una ruta relativa entre la ruta dada y esta ruta - try{ - return Files.walk(this.root,1).filter(path -> !path.equals(this.root)) - .map(this.root::relativize); - }catch (RuntimeException | IOException e){ - throw new RuntimeException("No se pueden cargar los archivos "); - } - } @Override public String deleteFile(String filename){ @@ -250,4 +224,6 @@ public class FileServiceImp implements FileService { return new ArrayList(errors); } + + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsService.java new file mode 100644 index 0000000..7abe295 --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsService.java @@ -0,0 +1,39 @@ +package es.bsc.inb.etransafe.pretox.rest.api.services; + +import java.io.IOException; +import java.util.List; + +import org.springframework.web.multipart.MultipartFile; + +import es.bsc.inb.etransafe.pretox.rest.api.model.Report; + +public interface LegacyReportsService { + + + /** + * Save legacy report + * @param file + */ + public String upload(MultipartFile file) throws IOException; + /** + * Validate legacy report save + * @param files + * @param allow_duplicates + * @return + */ + public List validateUpload(MultipartFile[] files); + + /** + * + * @param id + * @return + * @throws IOException + * @throws IllegalStateException + */ + public Report download(String id) throws IllegalStateException, IOException; + /** + * + * @return + */ + public List list(); +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsServiceImpl.java new file mode 100644 index 0000000..a7eec01 --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsServiceImpl.java @@ -0,0 +1,100 @@ +package es.bsc.inb.etransafe.pretox.rest.api.services; + + + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.gridfs.GridFsOperations; +import org.springframework.data.mongodb.gridfs.GridFsTemplate; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonGenerationException; +import com.mongodb.BasicDBObject; +import com.mongodb.DBObject; +import com.mongodb.client.gridfs.model.GridFSFile; + +import es.bsc.inb.etransafe.pretox.rest.api.model.Report; + +@Service +public class LegacyReportsServiceImpl implements LegacyReportsService { + + + @Autowired + MongoTemplate mongoTemplate; + + @Autowired + DocumentService documentService; + + @Autowired + private GridFsOperations operations; + + @Autowired + private GridFsTemplate gridFsTemplate; + + + /** + * Execute process in a document + * @param file + * @param outputGATEFile + * @throws ResourceInstantiationException + * @throws IOException + * @throws JsonGenerationException + * @throws InvalidOffsetException + */ + public String upload(MultipartFile file) throws IOException{ + DBObject metadata = new BasicDBObject(); + metadata.put("fileSize", file.getSize()); + metadata.put("type", "legacy_report"); + Object fileID = gridFsTemplate.store(file.getInputStream(), file.getOriginalFilename(), file.getContentType(), metadata); + return fileID.toString(); + } + + + @Override + public List validateUpload(MultipartFile[] files) { + List errors = new ArrayList(); + Map map = new HashMap(); + for (MultipartFile multipartFile : files) { + if(!multipartFile.getOriginalFilename().endsWith(".pdf")) { + errors.add("Only pdf files are allowed to upload" + multipartFile.getOriginalFilename() + "."); + }else { + + } + } + return errors; + + } + + @Override + public Report download(String id) throws IllegalStateException, IOException { + GridFSFile gridFSFile = gridFsTemplate.findOne( new Query(Criteria.where("_id").is(id)) ); + Report loadFile = new Report(); + if (gridFSFile != null && gridFSFile.getMetadata() != null) { + loadFile.setFileName( gridFSFile.getFilename() ); + loadFile.setFileType( gridFSFile.getMetadata().get("_contentType").toString() ); + loadFile.setFileSize( gridFSFile.getMetadata().get("fileSize").toString() ); + loadFile.setFile( IOUtils.toByteArray(operations.getResource(gridFSFile).getInputStream()) ); + } + return loadFile; + } + + + @Override + public List list() { + // TODO Auto-generated method stub + return null; + } + + + +} -- GitLab From 06af12f733e73d5ac6aa21a530a255ba5801d401 Mon Sep 17 00:00:00 2001 From: Javi Corvi Date: Mon, 25 Jul 2022 12:10:01 +0200 Subject: [PATCH 06/26] legacy report abm entry points --- ...tController.java => ReportController.java} | 18 +++--- .../pretox/rest/api/model/Report.java | 57 +++++++++---------- .../rest/api/repository/ReportRepository.java | 11 ++++ .../repository/ReportRepositoryCustom.java | 11 ++++ ...ReportsService.java => ReportService.java} | 2 +- ...erviceImpl.java => ReportServiceImpl.java} | 27 +++++---- 6 files changed, 75 insertions(+), 51 deletions(-) rename src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/{LegacyReportController.java => ReportController.java} (85%) create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepository.java create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryCustom.java rename src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/{LegacyReportsService.java => ReportService.java} (94%) rename src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/{LegacyReportsServiceImpl.java => ReportServiceImpl.java} (73%) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LegacyReportController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java similarity index 85% rename from src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LegacyReportController.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java index 138a893..548295b 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LegacyReportController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java @@ -21,26 +21,26 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import es.bsc.inb.etransafe.pretox.rest.api.model.Report; -import es.bsc.inb.etransafe.pretox.rest.api.services.LegacyReportsService; +import es.bsc.inb.etransafe.pretox.rest.api.services.ReportService; @RestController @CrossOrigin(origins="*") @RequestMapping("/reports") -public class LegacyReportController { +public class ReportController { @Autowired - LegacyReportsService legacyReportsService; + ReportService reportService; @PostMapping("/upload") public ResponseEntity> uploadLegacyReports(@RequestParam("files")MultipartFile[] files){ try{ List fileNames = new ArrayList<>(); - List errors = legacyReportsService.validateUpload(files); + List errors = reportService.validateUpload(files); if(errors.size()==0) { Arrays.asList(files).stream().forEach(file->{ try { - legacyReportsService.upload(file); + reportService.upload(file); } catch (IOException e) { errors.add("There was an IOExcpteion problem uploading the report: " + file.getName()); e.printStackTrace(); @@ -64,9 +64,9 @@ public class LegacyReportController { } - @GetMapping("/download/{id}") - public ResponseEntity download(@PathVariable String id) throws IOException { - Report legacyReport = legacyReportsService.download(id); + @GetMapping("/download/{gridFSId}") + public ResponseEntity download(@PathVariable String gridFSId) throws IOException { + Report legacyReport = reportService.download(gridFSId); return ResponseEntity.ok() .contentType(MediaType.parseMediaType(legacyReport.getFileType() )) .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + legacyReport.getFileName() + "\"") @@ -76,7 +76,7 @@ public class LegacyReportController { @GetMapping("/list") public ResponseEntity> listLegacyReports() throws IOException { - List list = legacyReportsService.list(); + List list = reportService.list(); return ResponseEntity.ok().body(list); } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java index 637f790..74fdd83 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java @@ -1,5 +1,7 @@ package es.bsc.inb.etransafe.pretox.rest.api.model; +import java.util.Date; + import org.bson.types.ObjectId; import org.springframework.data.annotation.Id; @@ -7,11 +9,9 @@ import org.springframework.data.annotation.Id; public class Report { @Id - private ObjectId id; - - private String name; + private String id; - private String uploadDate; + private Date uploadDate; private String fileName; @@ -19,34 +19,19 @@ public class Report { private String fileSize; + //This field is only for response, the file is stored in the gridFS object private byte[] file; - private ObjectId gridFSId; - - public ObjectId getId() { + private String gridFSId; + + public String getId() { return id; } - public void setId(ObjectId id) { + public void setId(String id) { this.id = id; } - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getUploadDate() { - return uploadDate; - } - - public void setUploadDate(String uploadDate) { - this.uploadDate = uploadDate; - } - public String getFileName() { return fileName; } @@ -63,13 +48,7 @@ public class Report { this.file = file; } - public ObjectId getGridFSId() { - return gridFSId; - } - - public void setGridFSId(ObjectId gridFSId) { - this.gridFSId = gridFSId; - } + public String getFileType() { return fileType; @@ -86,6 +65,22 @@ public class Report { public void setFileSize(String fileSize) { this.fileSize = fileSize; } + + public Date getUploadDate() { + return uploadDate; + } + + public void setUploadDate(Date uploadDate) { + this.uploadDate = uploadDate; + } + + public String getGridFSId() { + return gridFSId; + } + + public void setGridFSId(String gridFSId) { + this.gridFSId = gridFSId; + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepository.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepository.java new file mode 100644 index 0000000..24bb8ae --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepository.java @@ -0,0 +1,11 @@ +package es.bsc.inb.etransafe.pretox.rest.api.repository; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +import es.bsc.inb.etransafe.pretox.rest.api.model.Report; + +@Repository +public interface ReportRepository extends ReportRepositoryCustom, MongoRepository { + +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryCustom.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryCustom.java new file mode 100644 index 0000000..d115302 --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryCustom.java @@ -0,0 +1,11 @@ +package es.bsc.inb.etransafe.pretox.rest.api.repository; + +/** + * Custom Interface for Report repository + * @author jcorvi + * + */ +public interface ReportRepositoryCustom { + + +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java similarity index 94% rename from src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsService.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java index 7abe295..5fb0fb9 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java @@ -7,7 +7,7 @@ import org.springframework.web.multipart.MultipartFile; import es.bsc.inb.etransafe.pretox.rest.api.model.Report; -public interface LegacyReportsService { +public interface ReportService { /** diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java similarity index 73% rename from src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsServiceImpl.java rename to src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java index a7eec01..6791ca4 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/LegacyReportsServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java @@ -9,8 +9,8 @@ import java.util.List; import java.util.Map; import org.apache.commons.io.IOUtils; +import org.bson.types.ObjectId; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.gridfs.GridFsOperations; @@ -24,16 +24,14 @@ import com.mongodb.DBObject; import com.mongodb.client.gridfs.model.GridFSFile; import es.bsc.inb.etransafe.pretox.rest.api.model.Report; +import es.bsc.inb.etransafe.pretox.rest.api.repository.ReportRepository; @Service -public class LegacyReportsServiceImpl implements LegacyReportsService { +public class ReportServiceImpl implements ReportService { @Autowired - MongoTemplate mongoTemplate; - - @Autowired - DocumentService documentService; + ReportRepository reportReporsitory; @Autowired private GridFsOperations operations; @@ -55,8 +53,18 @@ public class LegacyReportsServiceImpl implements LegacyReportsService { DBObject metadata = new BasicDBObject(); metadata.put("fileSize", file.getSize()); metadata.put("type", "legacy_report"); - Object fileID = gridFsTemplate.store(file.getInputStream(), file.getOriginalFilename(), file.getContentType(), metadata); - return fileID.toString(); + ObjectId fileID = gridFsTemplate.store(file.getInputStream(), file.getOriginalFilename(), file.getContentType(), metadata); + GridFSFile gridFSFile = gridFsTemplate.findOne( new Query(Criteria.where("_id").is(fileID)) ); + Report report = new Report(); + if (gridFSFile != null && gridFSFile.getMetadata() != null) { + report.setFileName( gridFSFile.getFilename() ); + report.setFileType( gridFSFile.getMetadata().get("_contentType").toString() ); + report.setFileSize( gridFSFile.getMetadata().get("fileSize").toString() ); + report.setGridFSId(fileID.toString()); + report.setUploadDate(gridFSFile.getUploadDate()); + } + reportReporsitory.save(report); + return report.getId().toString(); } @@ -91,8 +99,7 @@ public class LegacyReportsServiceImpl implements LegacyReportsService { @Override public List list() { - // TODO Auto-generated method stub - return null; + return reportReporsitory.findAll(); } -- GitLab From a7b006fa68bebcc27a2efa48caabc33ed895eabb Mon Sep 17 00:00:00 2001 From: Javi Corvi Date: Wed, 27 Jul 2022 17:01:21 +0200 Subject: [PATCH 07/26] Legacy Report upload --- .../api/controllers/ReportController.java | 24 +++++++++++-------- .../pretox/rest/api/model/Report.java | 13 ++++++++-- .../pretox/rest/api/model/Status.java | 5 +++- .../rest/api/repository/ReportRepository.java | 4 ++++ .../rest/api/services/FileServiceImp.java | 1 - .../rest/api/services/ReportService.java | 2 +- .../rest/api/services/ReportServiceImpl.java | 11 ++++++--- 7 files changed, 42 insertions(+), 18 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java index 548295b..46c3cc8 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java @@ -33,16 +33,22 @@ public class ReportController { ReportService reportService; @PostMapping("/upload") - public ResponseEntity> uploadLegacyReports(@RequestParam("files")MultipartFile[] files){ - try{ - List fileNames = new ArrayList<>(); + public ResponseEntity uploadLegacyReports(@RequestParam("files")MultipartFile[] files){ + List messages = new ArrayList(); + List reports = new ArrayList(); + try{ + List fileNames = new ArrayList<>(); List errors = reportService.validateUpload(files); if(errors.size()==0) { + messages.add("The legacy reports were uploaded correctly:"); Arrays.asList(files).stream().forEach(file->{ try { - reportService.upload(file); - } catch (IOException e) { - errors.add("There was an IOExcpteion problem uploading the report: " + file.getName()); + Report report = reportService.upload(file); + messages.add(report.getFileName()); + reports.add(report); + } catch (IOException e) { + messages.clear(); + errors.add("There was an IOException problem uploading the report: " + file.getName()); e.printStackTrace(); } fileNames.add(file.getOriginalFilename()); @@ -52,12 +58,10 @@ public class ReportController { errors.add("Validation fail, no legacy report was uploaded."); return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(errors); } - List messages = new ArrayList(); - messages.add("The legacy reports were uploaded correctly."); return ResponseEntity.status(HttpStatus.OK).body(messages); + //return ResponseEntity.status(HttpStatus.OK).body(reports); }catch (Exception e){ e.printStackTrace(); - List messages = new ArrayList(); messages.add("An error occurred while uploading legacy reports."); return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(messages); } @@ -74,7 +78,7 @@ public class ReportController { } - @GetMapping("/list") + @GetMapping public ResponseEntity> listLegacyReports() throws IOException { List list = reportService.list(); return ResponseEntity.ok().body(list); diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java index 74fdd83..4caa56c 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java @@ -2,7 +2,6 @@ package es.bsc.inb.etransafe.pretox.rest.api.model; import java.util.Date; -import org.bson.types.ObjectId; import org.springframework.data.annotation.Id; @org.springframework.data.mongodb.core.mapping.Document(collection="reports") @@ -23,7 +22,9 @@ public class Report { private byte[] file; private String gridFSId; - + + private Status status; + public String getId() { return id; } @@ -81,6 +82,14 @@ public class Report { public void setGridFSId(String gridFSId) { this.gridFSId = gridFSId; } + + public Status getStatus() { + return status; + } + + public void setStatus(Status status) { + this.status = status; + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Status.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Status.java index d6348c7..9ba495e 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Status.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Status.java @@ -1,5 +1,8 @@ package es.bsc.inb.etransafe.pretox.rest.api.model; public enum Status { - DRAFT, IN_PROGRESS, FINISHED, CLOSED + //workflow + WAITING,READY,RUNNING,COMPLETED,FAIL, + + DRAFT, IN_PROGRESS, FINISHED, CLOSED, } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepository.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepository.java index 24bb8ae..f271514 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepository.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepository.java @@ -1,5 +1,7 @@ package es.bsc.inb.etransafe.pretox.rest.api.repository; +import java.util.List; + import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; @@ -8,4 +10,6 @@ import es.bsc.inb.etransafe.pretox.rest.api.model.Report; @Repository public interface ReportRepository extends ReportRepositoryCustom, MongoRepository { + List findByFileName(String name); + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileServiceImp.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileServiceImp.java index 74fe733..1474e6a 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileServiceImp.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileServiceImp.java @@ -132,7 +132,6 @@ public class FileServiceImp implements FileService { @Override public List validate(MultipartFile[] files, Boolean allow_duplicates) { List errors = new ArrayList(); - Map map = new HashMap(); List annotations_files = new ArrayList(); List documents_files = new ArrayList(); List documents_files_multipart = new ArrayList(); diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java index 5fb0fb9..5df2e8a 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java @@ -14,7 +14,7 @@ public interface ReportService { * Save legacy report * @param file */ - public String upload(MultipartFile file) throws IOException; + public Report upload(MultipartFile file) throws IOException; /** * Validate legacy report save * @param files diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java index 6791ca4..7944779 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java @@ -24,6 +24,7 @@ import com.mongodb.DBObject; import com.mongodb.client.gridfs.model.GridFSFile; import es.bsc.inb.etransafe.pretox.rest.api.model.Report; +import es.bsc.inb.etransafe.pretox.rest.api.model.Status; import es.bsc.inb.etransafe.pretox.rest.api.repository.ReportRepository; @Service @@ -49,7 +50,7 @@ public class ReportServiceImpl implements ReportService { * @throws JsonGenerationException * @throws InvalidOffsetException */ - public String upload(MultipartFile file) throws IOException{ + public Report upload(MultipartFile file) throws IOException{ DBObject metadata = new BasicDBObject(); metadata.put("fileSize", file.getSize()); metadata.put("type", "legacy_report"); @@ -62,22 +63,26 @@ public class ReportServiceImpl implements ReportService { report.setFileSize( gridFSFile.getMetadata().get("fileSize").toString() ); report.setGridFSId(fileID.toString()); report.setUploadDate(gridFSFile.getUploadDate()); + report.setStatus(Status.READY); } reportReporsitory.save(report); - return report.getId().toString(); + return report; } @Override public List validateUpload(MultipartFile[] files) { List errors = new ArrayList(); - Map map = new HashMap(); for (MultipartFile multipartFile : files) { if(!multipartFile.getOriginalFilename().endsWith(".pdf")) { errors.add("Only pdf files are allowed to upload" + multipartFile.getOriginalFilename() + "."); }else { } + List reports = reportReporsitory.findByFileName(multipartFile.getOriginalFilename()); + if(reports!=null && reports.size()>0) { + errors.add("There is a report with the file name already in the database: " + multipartFile.getOriginalFilename() + "."); + } } return errors; -- GitLab From 821d0add1b4accebc3299c476c9b5f880739058f Mon Sep 17 00:00:00 2001 From: Javi Corvi Date: Wed, 3 Aug 2022 15:46:14 +0200 Subject: [PATCH 08/26] remove report --- .../api/controllers/ReportController.java | 22 +++++++--- .../pretox/rest/api/model/Report.java | 15 ++++--- .../rest/api/repository/ReportRepository.java | 2 + .../repository/ReportRepositoryCustom.java | 7 +++- .../api/repository/ReportRepositoryImpl.java | 40 +++++++++++++++++++ .../api/security/pkce/SecurityConfig.java | 4 +- .../rest/api/services/ReportService.java | 16 +++++++- .../rest/api/services/ReportServiceImpl.java | 31 ++++++++++---- .../resources/application-prod.properties | 5 ++- 9 files changed, 117 insertions(+), 25 deletions(-) create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryImpl.java diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java index 46c3cc8..d71ae8f 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java @@ -12,6 +12,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -56,14 +57,14 @@ public class ReportController { } if(errors.size()!=0) { errors.add("Validation fail, no legacy report was uploaded."); - return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(errors); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errors); } - return ResponseEntity.status(HttpStatus.OK).body(messages); - //return ResponseEntity.status(HttpStatus.OK).body(reports); + //return ResponseEntity.status(HttpStatus.OK).body(messages); + return ResponseEntity.status(HttpStatus.OK).body(reports); }catch (Exception e){ e.printStackTrace(); messages.add("An error occurred while uploading legacy reports."); - return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(messages); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(messages); } } @@ -76,12 +77,21 @@ public class ReportController { .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + legacyReport.getFileName() + "\"") .body(new ByteArrayResource(legacyReport.getFile())); } - - + @GetMapping public ResponseEntity> listLegacyReports() throws IOException { List list = reportService.list(); return ResponseEntity.ok().body(list); } + + @DeleteMapping(value = "/remove/{id}") + public ResponseEntity removeDocument(@PathVariable("id") String reportId){ + return ResponseEntity.ok().body(reportService.remove(reportId)); + } + + @PostMapping(value = "/restore/{id}") + public ResponseEntity restoreDocument(@PathVariable("id") String reportId){ + return ResponseEntity.ok().body(reportService.restore(reportId)); + } } \ No newline at end of file diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java index 4caa56c..41a34b3 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java @@ -25,6 +25,8 @@ public class Report { private Status status; + private RecordState recordState; + public String getId() { return id; } @@ -49,8 +51,6 @@ public class Report { this.file = file; } - - public String getFileType() { return fileType; } @@ -90,8 +90,13 @@ public class Report { public void setStatus(Status status) { this.status = status; } - - - + + public RecordState getRecordState() { + return recordState; + } + + public void setRecordState(RecordState recordState) { + this.recordState = recordState; + } } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepository.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepository.java index f271514..81e0ca2 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepository.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepository.java @@ -1,6 +1,7 @@ package es.bsc.inb.etransafe.pretox.rest.api.repository; import java.util.List; +import java.util.Optional; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; @@ -12,4 +13,5 @@ public interface ReportRepository extends ReportRepositoryCustom, MongoRepositor List findByFileName(String name); + Optional findById(String reportId); } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryCustom.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryCustom.java index d115302..ceafc2a 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryCustom.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryCustom.java @@ -1,5 +1,9 @@ package es.bsc.inb.etransafe.pretox.rest.api.repository; +import java.util.List; + +import es.bsc.inb.etransafe.pretox.rest.api.model.Report; + /** * Custom Interface for Report repository * @author jcorvi @@ -7,5 +11,6 @@ package es.bsc.inb.etransafe.pretox.rest.api.repository; */ public interface ReportRepositoryCustom { - + public List findAllActiveReports(); + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryImpl.java new file mode 100644 index 0000000..754cecb --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryImpl.java @@ -0,0 +1,40 @@ +package es.bsc.inb.etransafe.pretox.rest.api.repository; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; + +import es.bsc.inb.etransafe.pretox.rest.api.model.Report; + +/** + * Custom implementation of DocumentRepository + * @author jcorvi + * + */ +public class ReportRepositoryImpl implements ReportRepositoryCustom{ + + @Autowired + MongoTemplate mongoTemplate; + + public List findAllActiveReports(){ + Query query = new Query(); + query.fields().include("id"); + query.fields().include("fileName"); + query.fields().include("gridFSId"); + query.fields().include("uploadDate"); + query.fields().include("status"); + query.fields().include("recordState"); + query.addCriteria(Criteria.where("recordState").ne("DELETED")); + //Sort sort = new Sort(Sort.Direction.ASC, "name"); + //query.with(sort); + List reports = mongoTemplate.find(query, Report.class); + return reports; + } + + + + +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java index 6538cd5..8a81b9f 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java @@ -20,9 +20,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers(HttpMethod.GET, "/liveness").permitAll() .antMatchers(HttpMethod.GET, "/readiness").permitAll() .antMatchers(HttpMethod.GET, "/documents/restore/*").permitAll() - .antMatchers(HttpMethod.POST, "/reports/upload").permitAll() - .antMatchers(HttpMethod.GET, "/reports/download/*").permitAll() - .antMatchers(HttpMethod.GET, "/reports/list").permitAll() + .antMatchers(HttpMethod.GET, "/reports/restore/*").permitAll() .antMatchers(HttpMethod.GET, "/api-docs").permitAll() .antMatchers(HttpMethod.GET, "/api-docs/**").permitAll() .antMatchers(HttpMethod.GET, "/api.html").permitAll() diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java index 5df2e8a..fb6717b 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java @@ -24,7 +24,7 @@ public interface ReportService { public List validateUpload(MultipartFile[] files); /** - * + * download legacy report content, * @param id * @return * @throws IOException @@ -32,8 +32,20 @@ public interface ReportService { */ public Report download(String id) throws IllegalStateException, IOException; /** - * + * List of reports. * @return */ public List list(); + /** + * Remove report + * @param documentId + * @return + */ + public Report remove(String reportId); + /** + * Restore report + * @param documentId + * @return + */ + public Report restore(String reportId); } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java index 7944779..af5f123 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java @@ -4,9 +4,7 @@ package es.bsc.inb.etransafe.pretox.rest.api.services; import java.io.IOException; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.apache.commons.io.IOUtils; import org.bson.types.ObjectId; @@ -23,6 +21,7 @@ import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import com.mongodb.client.gridfs.model.GridFSFile; +import es.bsc.inb.etransafe.pretox.rest.api.model.RecordState; import es.bsc.inb.etransafe.pretox.rest.api.model.Report; import es.bsc.inb.etransafe.pretox.rest.api.model.Status; import es.bsc.inb.etransafe.pretox.rest.api.repository.ReportRepository; @@ -32,7 +31,7 @@ public class ReportServiceImpl implements ReportService { @Autowired - ReportRepository reportReporsitory; + ReportRepository reportRepository; @Autowired private GridFsOperations operations; @@ -64,8 +63,9 @@ public class ReportServiceImpl implements ReportService { report.setGridFSId(fileID.toString()); report.setUploadDate(gridFSFile.getUploadDate()); report.setStatus(Status.READY); + report.setRecordState(RecordState.ACTIVE); } - reportReporsitory.save(report); + reportRepository.save(report); return report; } @@ -79,7 +79,7 @@ public class ReportServiceImpl implements ReportService { }else { } - List reports = reportReporsitory.findByFileName(multipartFile.getOriginalFilename()); + List reports = reportRepository.findByFileName(multipartFile.getOriginalFilename()); if(reports!=null && reports.size()>0) { errors.add("There is a report with the file name already in the database: " + multipartFile.getOriginalFilename() + "."); } @@ -104,9 +104,26 @@ public class ReportServiceImpl implements ReportService { @Override public List list() { - return reportReporsitory.findAll(); + return reportRepository.findAllActiveReports(); } - + @Override + public Report remove(String reportId) { + Report report = this.findById(reportId); + report.setRecordState(RecordState.DELETED); + return reportRepository.save(report); + } + + private Report findById(String reportId) { + return reportRepository.findById(reportId).get(); + } + + + @Override + public Report restore(String reportId) { + Report report = this.findById(reportId); + report.setRecordState(RecordState.ACTIVE); + return reportRepository.save(report); + } } diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index 44eed02..58bf945 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -8,5 +8,8 @@ server.port = ${SERVER_PORT} spring.data.mongodb.uri=${MONGO_URI} #KEYCLOCK configuration variables spring.security.oauth2.resourceserver.jwt.jwk-set-uri=${OAUTH2_RS_CERTS} +#spring upload configuration +spring.servlet.multipart.enabled = true +spring.servlet.multipart.max-file-size = 200MB +spring.servlet.multipart.max-request-size = 200MB -1646136508026 -- GitLab From 39b8b72b4d74675e55dd03d95428055a239320fd Mon Sep 17 00:00:00 2001 From: Javi Corvi Date: Mon, 8 Aug 2022 13:16:03 +0200 Subject: [PATCH 09/26] develop last changes --- .../api/controllers/DocumentController.java | 8 +- .../api/controllers/ReportController.java | 1 - .../rest/api/model/DocumentAnnotations.java | 24 -- .../pretox/rest/api/model/FindingSR.java | 186 --------------- .../api/services/DocumentServiceImpl.java | 223 +----------------- 5 files changed, 6 insertions(+), 436 deletions(-) delete mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FindingSR.java diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java index b15d474..020268e 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java @@ -57,10 +57,10 @@ public class DocumentController { // return documentService.findByDocumentId(id); // } - @GetMapping(value = "/{id}/srdomain") - public DocumentAnnotations findDocumentSRDomain(@PathVariable(value="id") Long id) { - return documentService.findDocumentSRDomainByDocumentId(id); - } +// @GetMapping(value = "/{id}/srdomain") +// public DocumentAnnotations findDocumentSRDomain(@PathVariable(value="id") Long id) { +// return documentService.findDocumentSRDomainByDocumentId(id); +// } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java index d71ae8f..46fc24d 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java @@ -59,7 +59,6 @@ public class ReportController { errors.add("Validation fail, no legacy report was uploaded."); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errors); } - //return ResponseEntity.status(HttpStatus.OK).body(messages); return ResponseEntity.status(HttpStatus.OK).body(reports); }catch (Exception e){ e.printStackTrace(); diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java index 01403f3..bb84c87 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java @@ -21,12 +21,8 @@ public class DocumentAnnotations { @Field("relevant_sentences") private ArrayList relevantSentences; - private ArrayList findings; - private List srdomainfindings; - private List findingsSR; - private Status status; public DocumentAnnotations() {} @@ -64,14 +60,6 @@ public class DocumentAnnotations { this.documentId = documentId; } - public ArrayList getFindings() { - return findings; - } - - public void setFindings(ArrayList findings) { - this.findings = findings; - } - public List getSrdomainfindings() { return srdomainfindings; } @@ -88,17 +76,5 @@ public class DocumentAnnotations { public void setStatus(Status status) { this.status = status; } - - public List getFindingsSR() { - return findingsSR; - } - - public void setFindingsSR(List findingsSR) { - this.findingsSR = findingsSR; - } - - - - } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FindingSR.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FindingSR.java deleted file mode 100644 index 31e4756..0000000 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/FindingSR.java +++ /dev/null @@ -1,186 +0,0 @@ -package es.bsc.inb.etransafe.pretox.rest.api.model; - -public class FindingSR { - - //SRSEQ -- > Sequence number - private Long id; - - //SRGRPDOS --> Group Dose Level, "20 mg/kg" - private String dose=""; - //SPGRPCD --> Sponsor-defined Group Code, group 1 , A - private String group=""; - //GRPLBL --> Sponsor-defined Group Name, "low dose", "mid dose" - private String groupQualifier=""; - - //SRSEX -- > Sex - private String sex=""; - //SRDOMAIN --> Domain of Finding - private String domain=""; - - //SROBSV --> Manifestation of Finding, “I” (Increase), “D” (Decrease), “P” (Present) or “A” (Absent) - private String manifestationFinding=""; - //SRSPEC --> Specimen of Finding - private String specimen=""; - //SRTSTCD --> Test Short Name - private String studyTestCD=""; - //SRFNDG --> Finding - private String finding=""; - //SRORES --> Observation (original result) - private String abnormalObservationFreeText=""; - //SRTRTEF --> Treatment-Related - private String isTreatmentRelated=""; - - //SRRISK --> Effect Level Associated with a Group/Sex, NOEL, LOEL, NOAEL, LOAEL, HNSTD, STD, MTD - private String risk=""; - //SROBSQ --> Observation Qualifier, “R” (Reversible), “T” (Transient) or ‘none’ - private String observationQualifier=""; - //SRSIGF --> Statistical Significance - private String statisticalSignificance=""; - //SRCOMNT --> Comment - private String comment=""; - //SRSEV --> Severity of Finding - private String severity=""; - //SRSTDY - private String dayStartOfFinding=""; - //SRSTPHSE --> Study Phase of first Observation, “PRE-DOSING”, “DOSING”, “RECOVERY” - private String phaseOfFirstObservation=""; - //SRENPHSE -->Study Phase of last Observation - private String phaseOfLastObservation=""; - //SROBSTDY --> Start Phase Day of Observation - private String startPhaseDayOfObservation=""; - - //SRENDY --> ?? - - //SROBENDY --> ?? - - public Long getId() { - return id; - } - public void setId(Long id) { - this.id = id; - } - public String getRisk() { - return risk; - } - public void setRisk(String risk) { - this.risk = risk; - } - public String getDose() { - return dose; - } - public void setDose(String dose) { - this.dose = dose; - } - public String getGroup() { - return group; - } - public void setGroup(String group) { - this.group = group; - } - public String getSex() { - return sex; - } - public void setSex(String sex) { - this.sex = sex; - } - - public String getDomain() { - return domain; - } - public void setDomain(String domain) { - this.domain = domain; - } - public String getGroupQualifier() { - return groupQualifier; - } - public void setGroupQualifier(String groupQualifier) { - this.groupQualifier = groupQualifier; - } - public String getObservationQualifier() { - return observationQualifier; - } - public void setObservationQualifier(String observationQualifier) { - this.observationQualifier = observationQualifier; - } - public String getDayStartOfFinding() { - return dayStartOfFinding; - } - public void setDayStartOfFinding(String dayStartOfFinding) { - this.dayStartOfFinding = dayStartOfFinding; - } - public String getPhaseOfFirstObservation() { - return phaseOfFirstObservation; - } - public void setPhaseOfFirstObservation(String phaseOfFirstObservation) { - this.phaseOfFirstObservation = phaseOfFirstObservation; - } - public String getPhaseOfLastObservation() { - return phaseOfLastObservation; - } - public void setPhaseOfLastObservation(String phaseOfLastObservation) { - this.phaseOfLastObservation = phaseOfLastObservation; - } - public String getStartPhaseDayOfObservation() { - return startPhaseDayOfObservation; - } - public void setStartPhaseDayOfObservation(String startPhaseDayOfObservation) { - this.startPhaseDayOfObservation = startPhaseDayOfObservation; - } - public String getManifestationFinding() { - return manifestationFinding; - } - public void setManifestationFinding(String manifestationFinding) { - this.manifestationFinding = manifestationFinding; - } - public String getSpecimen() { - return specimen; - } - public void setSpecimen(String specimen) { - this.specimen = specimen; - } - public String getStudyTestCD() { - return studyTestCD; - } - public void setStudyTestCD(String studyTestCD) { - this.studyTestCD = studyTestCD; - } - public String getFinding() { - return finding; - } - public void setFinding(String finding) { - this.finding = finding; - } - public String getAbnormalObservationFreeText() { - return abnormalObservationFreeText; - } - public void setAbnormalObservationFreeText(String abnormalObservationFreeText) { - this.abnormalObservationFreeText = abnormalObservationFreeText; - } - - public String getSeverity() { - return severity; - } - public void setSeverity(String severity) { - this.severity = severity; - } - public String getStatisticalSignificance() { - return statisticalSignificance; - } - public void setStatisticalSignificance(String statisticalSignificance) { - this.statisticalSignificance = statisticalSignificance; - } - public String getIsTreatmentRelated() { - return isTreatmentRelated; - } - public void setIsTreatmentRelated(String isTreatmentRelated) { - this.isTreatmentRelated = isTreatmentRelated; - } - public String getComment() { - return comment; - } - public void setComment(String comment) { - this.comment = comment; - } - - -} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java index f08e349..e049f8b 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java @@ -12,9 +12,6 @@ import javax.servlet.http.HttpServletRequest; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken; import org.springframework.stereotype.Service; @@ -22,7 +19,6 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import com.nimbusds.jwt.JWT; import es.bsc.inb.etransafe.pretox.rest.api.model.Action; import es.bsc.inb.etransafe.pretox.rest.api.model.Annotation; @@ -30,7 +26,6 @@ import es.bsc.inb.etransafe.pretox.rest.api.model.Document; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; import es.bsc.inb.etransafe.pretox.rest.api.model.Finding; -import es.bsc.inb.etransafe.pretox.rest.api.model.FindingSR; import es.bsc.inb.etransafe.pretox.rest.api.model.RecordState; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding; import es.bsc.inb.etransafe.pretox.rest.api.model.Status; @@ -78,7 +73,7 @@ public class DocumentServiceImpl implements DocumentService { return documentAnnotationsRepository.findByDocumentId(id); } - public DocumentAnnotations findDocumentSRDomainByDocumentIdDeprecated(Long id) { + public DocumentAnnotations findDocumentSRDomainByDocumentId(Long id) { DocumentAnnotations docAnno = documentAnnotationsRepository.findByDocumentId(id); List srdomains = new ArrayList(); for (Annotation sentence : docAnno.getRelevantSentences()) { @@ -90,35 +85,9 @@ public class DocumentServiceImpl implements DocumentService { } docAnno.setSrdomainfindings(srdomains); docAnno.setRelevantSentences(null); - docAnno.setFindings(null); - return docAnno; - } - - - - public DocumentAnnotations findDocumentSRDomainByDocumentId(Long id) { - DocumentAnnotations docAnno = documentAnnotationsRepository.findByDocumentId(id); - List srdomains = new ArrayList(); - for (Annotation sentence : docAnno.getRelevantSentences()) { - for (Finding finding : sentence.getFindings()) { - for (SRDomainFinding sr : finding.getSrDomainFindings()) { - FindingSR f = new FindingSR(); - f.setAbnormalObservationFreeText(sr.getSRORES()); - f.setFinding(sr.getSRFNDG()); - f.setSex(sr.getSRSEX()); - f.setSpecimen(sr.getSRSPEC()); - f.setStudyTestCD(sr.getSRTSTCD()); - srdomains.add(f); - } - } - } - docAnno.setFindingsSR(srdomains); - docAnno.setRelevantSentences(null); - docAnno.setFindings(null); return docAnno; } - public Document findByDocumentId2(Long id) { documentRepository.findByDocumentId(id); return documentRepository.findByDocumentId(id); @@ -448,195 +417,7 @@ public class DocumentServiceImpl implements DocumentService { json_to_return.add("entities", entities); return gsonBuilder.toJson(json_to_return).toString(); } - - - -// /** -// * Generate the evidence snippet for a findind -// * @param text -// * @param findingSelected -// * @return -// */ -// private void generateFindingEvidence(JsonObject evidence, Finding findingSelected) { -// List all = findingSelected.generateSortedAnnotationsAll(); -// JsonArray entities = new JsonArray(); -// JsonArray attributes = new JsonArray(); -// JsonArray relations = new JsonArray(); -// int t = 1; -// int a = 1; -// int r = 1; -// String id_finding = ""; -// for (Annotation annotation : all) { -// JsonArray values = new JsonArray(); -// String type = annotation.getFeature("ANNOTATION_TYPE"); -// values.add("T"+t); -// values.add(type); -// JsonArray offste = new JsonArray(); -// JsonArray offste2 = new JsonArray(); -// offste.add(annotation.getStartOffset()); -// offste.add(annotation.getEndOffset()); -// offste2.add(offste); -// values.add(offste2); -// entities.add(values); -// if(type.equals("FINDING") || type.equals("STUDY_TESTCD") ) { -// id_finding = "T"+t; -// JsonArray values_a = new JsonArray(); -// values_a.add("A"+a); -// values_a.add("Notorious"); -// values_a.add(id_finding); -// attributes.add(values_a); -// a++; -// }else { -// JsonArray values_r = new JsonArray(); -// values_r.add("R"+r); -// values_r.add("Relation"); -// JsonArray values_r_e = new JsonArray(); -// JsonArray values_r_e_v = new JsonArray(); -// values_r_e_v.add("Entity"); -// values_r_e_v.add(id_finding); -// values_r_e.add(values_r_e_v); -// JsonArray values_r_e_v_2 = new JsonArray(); -// values_r_e_v_2.add("Subentity"); -// values_r_e_v_2.add("T"+t); -// values_r_e.add(values_r_e_v_2); -// values_r.add(values_r_e); -// relations.add(values_r); -// r++; -// } -// t++; -// } -// evidence.add("entities", entities); -// evidence.add("attributes", attributes); -// evidence.add("relations", relations); -// } -// -// /** -// * -// * @param text -// * @param findingSelected -// * @return -// */ -// private String generateFindingSnippet2(String text, Finding findingSelected) { -// Gson gsonBuilder = new GsonBuilder().create(); -// JsonObject finding = new JsonObject(); -// finding.addProperty("text", text); -// List all = findingSelected.generateSortedAnnotationsAll(); -// JsonArray entities = new JsonArray(); -// JsonArray attributes = new JsonArray(); -// JsonArray relations = new JsonArray(); -// int t = 1; -// int a = 1; -// int r = 1; -// String id_finding = ""; -// for (Annotation annotation : all) { -// JsonArray values = new JsonArray(); -// String type = annotation.getFeature("ANNOTATION_TYPE"); -// values.add("T"+t); -// values.add(type); -// JsonArray offste = new JsonArray(); -// JsonArray offste2 = new JsonArray(); -// offste.add(annotation.getStartOffset()); -// offste.add(annotation.getEndOffset()); -// offste2.add(offste); -// values.add(offste2); -// entities.add(values); -// if(type.equals("FINDING") || type.equals("STUDY_TESTCD") ) { -// id_finding = "T"+t; -// JsonArray values_a = new JsonArray(); -// values_a.add("A"+a); -// values_a.add("Notorious"); -// values_a.add(id_finding); -// attributes.add(values_a); -// a++; -// }else { -// JsonArray values_r = new JsonArray(); -// values_r.add("R"+r); -// values_r.add("Relation"); -// JsonArray values_r_e = new JsonArray(); -// JsonArray values_r_e_v = new JsonArray(); -// values_r_e_v.add("Entity"); -// values_r_e_v.add(id_finding); -// values_r_e.add(values_r_e_v); -// JsonArray values_r_e_v_2 = new JsonArray(); -// values_r_e_v_2.add("Subentity"); -// values_r_e_v_2.add("T"+t); -// values_r_e.add(values_r_e_v_2); -// values_r.add(values_r_e); -// relations.add(values_r); -// r++; -// } -// t++; -// } -// finding.add("entities", entities); -// finding.add("attributes", attributes); -// finding.add("relations", relations); -// return gsonBuilder.toJson(finding).toString(); -// } - -// /** -// * -// * @param text -// * @param findingSelected -// * @return -// */ -// private String generateFindingsSnippet4(String text, List findings) { -// Gson gsonBuilder = new GsonBuilder().create(); -// JsonObject findings_evidence = new JsonObject(); -// findings_evidence.addProperty("text", text); -// JsonArray entities = new JsonArray(); -// JsonArray attributes = new JsonArray(); -// JsonArray relations = new JsonArray(); -// int t = 1; -// int a = 1; -// int r = 1; -// for (Finding findingSelected : findings) { -// List all = findingSelected.generateSortedAnnotationsAll(); -// String id_finding = ""; -// for (Annotation annotation : all) { -// JsonArray values = new JsonArray(); -// String type = annotation.getFeature("ANNOTATION_TYPE"); -// values.add("T"+t); -// values.add(type); -// JsonArray offste = new JsonArray(); -// JsonArray offste2 = new JsonArray(); -// offste.add(annotation.getStartOffset()); -// offste.add(annotation.getEndOffset()); -// offste2.add(offste); -// values.add(offste2); -// entities.add(values); -// if(type.equals("FINDING") || type.equals("STUDY_TESTCD") ) { -// id_finding = "T"+t; -// JsonArray values_a = new JsonArray(); -// values_a.add("A"+a); -// values_a.add("Notorious"); -// values_a.add(id_finding); -// attributes.add(values_a); -// a++; -// }else { -// JsonArray values_r = new JsonArray(); -// values_r.add("R"+r); -// values_r.add("Relation"); -// JsonArray values_r_e = new JsonArray(); -// JsonArray values_r_e_v = new JsonArray(); -// values_r_e_v.add("Entity"); -// values_r_e_v.add(id_finding); -// values_r_e.add(values_r_e_v); -// JsonArray values_r_e_v_2 = new JsonArray(); -// values_r_e_v_2.add("Subentity"); -// values_r_e_v_2.add("T"+t); -// values_r_e.add(values_r_e_v_2); -// values_r.add(values_r_e); -// relations.add(values_r); -// r++; -// } -// t++; -// } -// findings_evidence.add("entities", entities); -// findings_evidence.add("attributes", attributes); -// findings_evidence.add("relations", relations); -// } -// return gsonBuilder.toJson(findings_evidence).toString(); -// } + /** * Generate the snippet only of the text without annotations. -- GitLab From 2f52b83ea8485c1e060e2bce6fe0f75b3d6bd7ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20D=C3=ADaz=20Roussel?= Date: Wed, 24 Aug 2022 16:51:09 +0200 Subject: [PATCH 10/26] Read SRdomain finding attributes from relevant sentences --- .../rest/api/services/DocumentServiceImpl.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java index f08e349..339280f 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java @@ -98,21 +98,15 @@ public class DocumentServiceImpl implements DocumentService { public DocumentAnnotations findDocumentSRDomainByDocumentId(Long id) { DocumentAnnotations docAnno = documentAnnotationsRepository.findByDocumentId(id); - List srdomains = new ArrayList(); + List srdomainfindings = new ArrayList<>(); for (Annotation sentence : docAnno.getRelevantSentences()) { for (Finding finding : sentence.getFindings()) { - for (SRDomainFinding sr : finding.getSrDomainFindings()) { - FindingSR f = new FindingSR(); - f.setAbnormalObservationFreeText(sr.getSRORES()); - f.setFinding(sr.getSRFNDG()); - f.setSex(sr.getSRSEX()); - f.setSpecimen(sr.getSRSPEC()); - f.setStudyTestCD(sr.getSRTSTCD()); - srdomains.add(f); + for (SRDomainFinding srFinding : finding.getSrDomainFindings()) { + srdomainfindings.add(srFinding); } } } - docAnno.setFindingsSR(srdomains); + docAnno.setSrdomainfindings(srdomainfindings); docAnno.setRelevantSentences(null); docAnno.setFindings(null); return docAnno; -- GitLab From 36f9f4a977a3a33e1e45cda17935467108361247 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20D=C3=ADaz=20Roussel?= Date: Wed, 24 Aug 2022 17:12:44 +0200 Subject: [PATCH 11/26] Unify SRDomainFinding attributes --- .../rest/api/model/SRDomainFinding.java | 217 ++++++++---------- 1 file changed, 100 insertions(+), 117 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java index 40cadc7..e9273bf 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java @@ -3,53 +3,45 @@ package es.bsc.inb.etransafe.pretox.rest.api.model; import es.bsc.inb.etransafe.pretox.rest.api.util.Constants; /** - * This class describes a finding in SR-Domain format. - * No textual evidence. + * This class describes a finding in SR-Domain format. No textual evidence. + * * @author javi * */ -public class SRDomainFinding implements Cloneable{ - - private String STUDYID=""; - private String DOMAIN=""; - private String SRSEQ=""; - private String SRRISK=""; - private String SPGRPCD=""; - private String GRPLBL=""; - private String SRGRPDOS=""; - private String SRSEX=""; - private String SRSTDY=""; - private String SRSTPHSE=""; - private String SROBSTDY=""; - private String SRENDY=""; - private String SRENPHSE=""; - private String SROBENDY=""; - private String SRDOMAIN=""; - private String SRDOMAIN_DESC=""; - private String SRSPEC=""; - private String SRSPEC_DESC=""; - private String SRTSTCD=""; - private String SRTSTCD_DESC=""; - private String SRFNDG=""; - private String SRFNDG_DESC=""; - private String SRORES=""; - private String SROBSV=""; - private String SROBSV_DESC=""; - private String SROBSQ=""; - private String SRSEV=""; - private String SRPCNT=""; - private String SRSIGF=""; - private String SRTRTEF=""; - private String SRCOMNT=""; +public class SRDomainFinding implements Cloneable { + + private String STUDYID = ""; // Study Identifier + private String DOMAIN = ""; // Domain Abbreviation + private String SRSEQ = ""; // Sequence number + private String SRRISK = ""; // Risk Level Associated with this Group/Sex + private String SPGRPCD = ""; // Sponsor-Defined Group Code + private String GRPLBL = ""; // Sponsor-Defined Group Name + private String SRGRPDOS = ""; // Group Dose Level + private String SRSEX = ""; // Sex + private String SRSTDY = ""; // Study Day of Start of Finding + private String SRSTPHSE = ""; // Study Phase of first Observation + private String SROBSTDY = ""; // Start Phase Day of Observation + private String SRENDY = ""; // Study Day of End of Finding + private String SRENPHSE = ""; // Study Phase of last Observation + private String SROBENDY = ""; // End Phase Day of Observation + private String SRDOMAIN = ""; // Domain of Finding + private String SRSPEC = ""; // Specimen of Finding + private String SRTSTCD = ""; // Test Short Name + private String SRFNDG = ""; // Finding + private String SRORES = ""; // Observation (original result) + private String SROBSV = ""; // Manifestation of Finding + private String SROBSQ = ""; // Observation Qualifier + private String SRSEV = ""; // Severity of Finding + private String SRPCNT = ""; // Scale of this Finding + private String SRSIGF = ""; // Statistical Significance + private String SRTRTEF = ""; // Treatment-Related? + private String SRCOMNT = ""; // Comment private Boolean export; private Integer findingId; private Integer srDomainId; - private String status="non_curated"; - - - - + private String status = "non_curated"; + public String getStatus() { return status; } @@ -59,268 +51,259 @@ public class SRDomainFinding implements Cloneable{ } public String getSrdomain_value() { - if(Constants.SEND_DOMAIN_NAMES.get(SRDOMAIN)!=null) { + if (Constants.SEND_DOMAIN_NAMES.get(SRDOMAIN) != null) { return Constants.SEND_DOMAIN_NAMES.get(SRDOMAIN) + "(" + SRDOMAIN + ")"; - }else if(SRDOMAIN==null || SRDOMAIN.equals("")) { + } else if (SRDOMAIN == null || SRDOMAIN.equals("")) { return ""; - }else { + } else { return SRDOMAIN; } - - } - - public String getSrfndg_value() { - if(SRFNDG ==null || SRFNDG.equals("")) { - return SRORES; - } - return SRFNDG_DESC + "(" + SRFNDG + ")"; - } - - public String getSrtstcd_value() { - if(SRTSTCD ==null || SRTSTCD.equals("")) { - return SRTSTCD_DESC; - } - return SRTSTCD_DESC + "(" + SRTSTCD + ")"; - } - - public String getSrobsv_value() { - if(SROBSV ==null || SROBSV.equals("")) { - return SROBSV_DESC; - } - return SROBSV_DESC + "(" + SROBSV + ")"; - } - - public String getSrspec_value() { - if(SRSPEC ==null || SRSPEC.equals("")) { - return SRSPEC_DESC; - } - return SRSPEC_DESC + "(" + SRSPEC + ")"; + } - - - + public String getSTUDYID() { return STUDYID; } + public void setSTUDYID(String sTUDYID) { STUDYID = sTUDYID; } + public String getDOMAIN() { return DOMAIN; } + public void setDOMAIN(String dOMAIN) { DOMAIN = dOMAIN; } + public String getSRSEQ() { return SRSEQ; } + public void setSRSEQ(String sRSEQ) { SRSEQ = sRSEQ; } + public String getSRRISK() { return SRRISK; } + public void setSRRISK(String sRRISK) { SRRISK = sRRISK; } + public String getSPGRPCD() { return SPGRPCD; } + public void setSPGRPCD(String sPGRPCD) { SPGRPCD = sPGRPCD; } + public String getGRPLBL() { return GRPLBL; } + public void setGRPLBL(String gRPLBL) { GRPLBL = gRPLBL; } + public String getSRGRPDOS() { return SRGRPDOS; } + public void setSRGRPDOS(String sRGRPDOS) { SRGRPDOS = sRGRPDOS; } + public String getSRSEX() { return SRSEX; } + public void setSRSEX(String sRSEX) { SRSEX = sRSEX; } + public String getSRSTDY() { return SRSTDY; } + public void setSRSTDY(String sRSTDY) { SRSTDY = sRSTDY; } + public String getSRSTPHSE() { return SRSTPHSE; } + public void setSRSTPHSE(String sRSTPHSE) { SRSTPHSE = sRSTPHSE; } + public String getSROBSTDY() { return SROBSTDY; } + public void setSROBSTDY(String sROBSTDY) { SROBSTDY = sROBSTDY; } + public String getSRENDY() { return SRENDY; } + public void setSRENDY(String sRENDY) { SRENDY = sRENDY; } + public String getSRENPHSE() { return SRENPHSE; } + public void setSRENPHSE(String sRENPHSE) { SRENPHSE = sRENPHSE; } + public String getSROBENDY() { return SROBENDY; } + public void setSROBENDY(String sROBENDY) { SROBENDY = sROBENDY; } + public String getSRDOMAIN() { return SRDOMAIN; } + public void setSRDOMAIN(String sRDOMAIN) { SRDOMAIN = sRDOMAIN; } + public String getSRSPEC() { return SRSPEC; } + public void setSRSPEC(String sRSPEC) { SRSPEC = sRSPEC; } + public String getSRTSTCD() { return SRTSTCD; } + public void setSRTSTCD(String sRTSTCD) { SRTSTCD = sRTSTCD; } + public String getSRFNDG() { return SRFNDG; } + public void setSRFNDG(String sRFNDG) { SRFNDG = sRFNDG; } + public String getSRORES() { return SRORES; } + public void setSRORES(String sRORES) { SRORES = sRORES; } + public String getSROBSV() { return SROBSV; } - - - + public String getSROBSQ() { return SROBSQ; } + public void setSROBSQ(String sROBSQ) { SROBSQ = sROBSQ; } + public String getSRSEV() { return SRSEV; } + public void setSRSEV(String sRSEV) { SRSEV = sRSEV; } + public String getSRPCNT() { return SRPCNT; } + public void setSRPCNT(String sRPCNT) { SRPCNT = sRPCNT; } + public String getSRSIGF() { return SRSIGF; } + public void setSRSIGF(String sRSIGF) { SRSIGF = sRSIGF; } + public String getSRTRTEF() { return SRTRTEF; } + public void setSRTRTEF(String sRTRTEF) { SRTRTEF = sRTRTEF; } + public String getSRCOMNT() { return SRCOMNT; } + public void setSRCOMNT(String sRCOMNT) { SRCOMNT = sRCOMNT; } - public void setSRDOMAIN_DESC(String sRDOMAIN_DESC) { - SRDOMAIN_DESC = sRDOMAIN_DESC; - } - public void setSROBSV(String sROBSV) { - SROBSV = sROBSV; - } - - public String getSRDOMAIN_DESC() { - return SRDOMAIN_DESC; - } - - public String getSRSPEC_DESC() { - return SRSPEC_DESC; - } - public void setSRSPEC_DESC(String sRSPEC_DESC) { - SRSPEC_DESC = sRSPEC_DESC; - } - public String getSRTSTCD_DESC() { - return SRTSTCD_DESC; - } - public void setSRTSTCD_DESC(String sRTSTCD_DESC) { - SRTSTCD_DESC = sRTSTCD_DESC; - } - public String getSRFNDG_DESC() { - return SRFNDG_DESC; - } - public void setSRFNDG_DESC(String sRFNDG_DESC) { - SRFNDG_DESC = sRFNDG_DESC; - } - public String getSROBSV_DESC() { - return SROBSV_DESC; - } - public void setSROBSV_DESC(String sROBSV_DESC) { - SROBSV_DESC = sROBSV_DESC; - } + public Boolean getExport() { - if(export==null)return true; + if (export == null) + return true; return export; } + public void setExport(Boolean export) { this.export = export; } + public Integer getSrDomainId() { return srDomainId; } + public void setSrDomainId(Integer srDomainId) { this.srDomainId = srDomainId; } + public Integer getFindingId() { return findingId; } + public void setFindingId(Integer findingId) { this.findingId = findingId; } + public SRDomainFinding clone() { try { - return (SRDomainFinding)super.clone(); + return (SRDomainFinding) super.clone(); } catch (CloneNotSupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } + public String getTrackingSummary() { - String summary = SRSEQ ; + String summary = SRSEQ; return summary; } - + } -- GitLab From ebc7488afc6f420e8acd8e08c8579e925b04b620 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20D=C3=ADaz=20Roussel?= Date: Fri, 26 Aug 2022 16:07:20 +0200 Subject: [PATCH 12/26] Use ResponseEntity for controllers --- .../api/controllers/DocumentController.java | 74 +++++++++---------- .../api/controllers/LivenessController.java | 10 ++- 2 files changed, 40 insertions(+), 44 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java index b15d474..e320a6a 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java @@ -33,23 +33,23 @@ public class DocumentController { public DocumentService documentService; @PutMapping(value ="/{id}/srfinding/update") - public SRDomainFinding updateFinding(@PathVariable(value="id") Long id,@RequestBody SRDomainFinding srDomainFinding) { - return documentService.saveFinding(id, srDomainFinding); + public ResponseEntity updateFinding(@PathVariable(value="id") Long id,@RequestBody SRDomainFinding srDomainFinding) { + return new ResponseEntity(documentService.saveFinding(id, srDomainFinding), HttpStatus.OK); } @GetMapping - public List findAll() { - return documentService.findAll(); + public ResponseEntity> findAll() { + return new ResponseEntity>(documentService.findAll(), HttpStatus.OK); } @GetMapping(value ="/{id}") - public DocumentAnnotations find(@PathVariable(value="id") Long id) { - return documentService.findDocumentAnnotationsByDocumentId(id); + public ResponseEntity find(@PathVariable(value="id") Long id) { + return new ResponseEntity(documentService.findDocumentAnnotationsByDocumentId(id), HttpStatus.OK); } @GetMapping(value = "/srdomain/{id}") - public DocumentAnnotations findSRDomainDocument(@PathVariable(value="id") Long id) { - return documentService.findDocumentSRDomainByDocumentId(id); + public ResponseEntity findSRDomainDocument(@PathVariable(value="id") Long id) { + return new ResponseEntity(documentService.findDocumentSRDomainByDocumentId(id), HttpStatus.OK); } // @GetMapping(value = "/document_data/{id}") @@ -58,28 +58,28 @@ public class DocumentController { // } @GetMapping(value = "/{id}/srdomain") - public DocumentAnnotations findDocumentSRDomain(@PathVariable(value="id") Long id) { - return documentService.findDocumentSRDomainByDocumentId(id); + public ResponseEntity findDocumentSRDomain(@PathVariable(value="id") Long id) { + return new ResponseEntity(documentService.findDocumentSRDomainByDocumentId(id), HttpStatus.OK); } @PutMapping(value = "/{id}/move/{status}") - public String moveDocument(@PathVariable(value="id") Long id, @PathVariable(value="status") Status status) { + public ResponseEntity moveDocument(@PathVariable(value="id") Long id, @PathVariable(value="status") Status status) { documentService.moveDocument(id, status); - return "true"; + return new ResponseEntity(HttpStatus.OK); } @PutMapping(value = "/{id}/srfinding/{srFindingId}/export/{export}") - public String setExportFinding(@PathVariable(value="id") Long id, @PathVariable(value="srFindingId") Integer srDomainId, @PathVariable(value="export") Boolean export_srDomain) { + public ResponseEntity setExportFinding(@PathVariable(value="id") Long id, @PathVariable(value="srFindingId") Integer srDomainId, @PathVariable(value="export") Boolean export_srDomain) { documentService.setExportSRDomainFinding(id, srDomainId, export_srDomain); - return "true"; + return new ResponseEntity(HttpStatus.OK); } @PutMapping(value = "/{id}/srfinding/{srFindingId}/validation/{status}") - public String setSRFindingValidation(@PathVariable(value="id") Long id, @PathVariable(value="srFindingId") Integer srDomainId, @PathVariable(value="status") String status) { + public ResponseEntity setSRFindingValidation(@PathVariable(value="id") Long id, @PathVariable(value="srFindingId") Integer srDomainId, @PathVariable(value="status") String status) { documentService.setValidationSRDomainFinding(id, srDomainId, status); - return "true"; + return new ResponseEntity(HttpStatus.OK); } // @RequestMapping(value = "/{id}/findingValidation/{findingId}/{status}") @@ -91,41 +91,41 @@ public class DocumentController { @GetMapping(value = "/{id}/evidence/sentences") - public String findSentencesEvidence(@PathVariable(value="id") Long id) { + public ResponseEntity findSentencesEvidence(@PathVariable(value="id") Long id) { String snippet = documentService.findSentencesEvidenceByDocumentId(id); - return snippet; + return new ResponseEntity(snippet, HttpStatus.OK); } @GetMapping(value = "/{id}/evidence/sentence/{sentenceId}") - public String findSentence(@PathVariable(value="id") Long id, @PathVariable(value="sentenceId") Integer sentenceId) { + public ResponseEntity findSentence(@PathVariable(value="id") Long id, @PathVariable(value="sentenceId") Integer sentenceId) { String snippet = documentService.findSentenceEvidenceByDocumentIdAndSentenceId(id, sentenceId); - return snippet; + return new ResponseEntity(snippet, HttpStatus.OK); } @GetMapping(value = "/{id}/evidence/findings") - public String findAllFindingEvidence(@PathVariable(value="id") Long id) { + public ResponseEntity findAllFindingEvidence(@PathVariable(value="id") Long id) { String snippet = documentService.findFindingsEvidenceByDocumentId(id); - return snippet; + return new ResponseEntity(snippet, HttpStatus.OK); } @GetMapping(value = "/{id}/evidence/finding/{findingId}") - public String findFinding(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId) { + public ResponseEntity findFinding(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId) { String snippet = documentService.findFindingEvidenceByDocumentIdAndFindingId(id, findingId); - return snippet; + return new ResponseEntity(snippet, HttpStatus.OK); } @GetMapping(value = "/{id}/evidence/all") - public String findAllEvidence(@PathVariable(value="id") Long id) { + public ResponseEntity findAllEvidence(@PathVariable(value="id") Long id) { String snippet = documentService.findAllEvidenceByDocumentId(id); - return snippet; + return new ResponseEntity(snippet, HttpStatus.OK); } @GetMapping(value = "/{id}/text") - public String findDocumentText(@PathVariable(value="id") Long id) { + public ResponseEntity findDocumentText(@PathVariable(value="id") Long id) { String snippet = documentService.findTextByDocumentId(id); - return snippet; + return new ResponseEntity(snippet, HttpStatus.OK); } @@ -142,25 +142,19 @@ public class DocumentController { } @DeleteMapping(value = "/remove/{id}") - public String removeDocument(@PathVariable("id") long documentId){ + public ResponseEntity removeDocument(@PathVariable("id") long documentId){ documentService.removeDocument(documentId); - return "true"; + return new ResponseEntity(HttpStatus.OK); } @GetMapping(value = "/restore/{id}") - public String restoreDocument(@PathVariable("id") long documentId){ + public ResponseEntity restoreDocument(@PathVariable("id") long documentId){ documentService.restoreDocument(documentId); - return "true"; + return new ResponseEntity(HttpStatus.OK); } @GetMapping(value = "/{id}/tracking") - public DocumentTracking findTrackings(@PathVariable(value="id") Long id) { - return documentService.findTrackings(id); + public ResponseEntity findTrackings(@PathVariable(value="id") Long id) { + return new ResponseEntity(documentService.findTrackings(id), HttpStatus.OK); } - - - - - - } \ No newline at end of file diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LivenessController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LivenessController.java index 9a93907..3e265d4 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LivenessController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LivenessController.java @@ -1,5 +1,7 @@ package es.bsc.inb.etransafe.pretox.rest.api.controllers; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @@ -9,13 +11,13 @@ import org.springframework.web.bind.annotation.RestController; public class LivenessController { @GetMapping(path = "/liveness") - public String liveness() { - return "true"; + public ResponseEntity liveness() { + return new ResponseEntity(HttpStatus.OK); } @GetMapping(path = "/readiness") - public String readeness() { - return "true"; + public ResponseEntity readeness() { + return new ResponseEntity(HttpStatus.OK); } } -- GitLab From 80f1a13105b6953bdaec6e06a5cf4e77a76f332c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20D=C3=ADaz=20Roussel?= Date: Tue, 30 Aug 2022 13:49:47 +0200 Subject: [PATCH 13/26] Add new finding to the document annotations --- .../rest/api/controllers/DocumentController.java | 5 +++++ .../pretox/rest/api/services/DocumentService.java | 2 ++ .../rest/api/services/DocumentServiceImpl.java | 15 +++++++++++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java index 020268e..e5f1637 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java @@ -37,6 +37,11 @@ public class DocumentController { return documentService.saveFinding(id, srDomainFinding); } + @PutMapping(value ="/{id}/srfinding/add") + public SRDomainFinding addFinding(@PathVariable(value="id") Long id, @RequestBody SRDomainFinding srDomainFinding) { + return documentService.addFinding(id, srDomainFinding); + } + @GetMapping public List findAll() { return documentService.findAll(); diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java index 15ed76f..571d0b9 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java @@ -54,4 +54,6 @@ public interface DocumentService { void restoreDocument(long documentId); SRDomainFinding saveFinding(Long documentId, SRDomainFinding srDomainFinding); + + SRDomainFinding addFinding(Long documentId, SRDomainFinding srDomainFinding); } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java index e049f8b..6f509d1 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java @@ -878,6 +878,17 @@ public class DocumentServiceImpl implements DocumentService { return null; } - - + @Override + public SRDomainFinding addFinding(Long documentId, SRDomainFinding srDomainFinding) { + DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(documentId); + List srdomainfindings = documentAnnotations.getSrdomainfindings(); + if (srdomainfindings == null) { + srdomainfindings = new ArrayList<>(); + documentAnnotations.setSrdomainfindings(srdomainfindings); + } + + srdomainfindings.add(srDomainFinding); + documentAnnotationsRepository.save(documentAnnotations); + return srDomainFinding; + } } -- GitLab From 63884be13c7fca53149d0f73423e15f5b514849c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20D=C3=ADaz=20Roussel?= Date: Tue, 30 Aug 2022 17:36:32 +0200 Subject: [PATCH 14/26] Fix srdomain attribute name --- .../rest/api/model/SRDomainFinding.java | 34 ++++++------------- .../api/services/DocumentServiceImpl.java | 7 +--- 2 files changed, 11 insertions(+), 30 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java index e9273bf..8a94dff 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java @@ -1,7 +1,5 @@ package es.bsc.inb.etransafe.pretox.rest.api.model; -import es.bsc.inb.etransafe.pretox.rest.api.util.Constants; - /** * This class describes a finding in SR-Domain format. No textual evidence. * @@ -15,7 +13,7 @@ public class SRDomainFinding implements Cloneable { private String SRSEQ = ""; // Sequence number private String SRRISK = ""; // Risk Level Associated with this Group/Sex private String SPGRPCD = ""; // Sponsor-Defined Group Code - private String GRPLBL = ""; // Sponsor-Defined Group Name + private String SRGRPNAM = ""; // Group Name private String SRGRPDOS = ""; // Group Dose Level private String SRSEX = ""; // Sex private String SRSTDY = ""; // Study Day of Start of Finding @@ -50,17 +48,6 @@ public class SRDomainFinding implements Cloneable { this.status = status; } - public String getSrdomain_value() { - if (Constants.SEND_DOMAIN_NAMES.get(SRDOMAIN) != null) { - return Constants.SEND_DOMAIN_NAMES.get(SRDOMAIN) + "(" + SRDOMAIN + ")"; - } else if (SRDOMAIN == null || SRDOMAIN.equals("")) { - return ""; - } else { - return SRDOMAIN; - } - - } - public String getSTUDYID() { return STUDYID; } @@ -101,14 +88,6 @@ public class SRDomainFinding implements Cloneable { SPGRPCD = sPGRPCD; } - public String getGRPLBL() { - return GRPLBL; - } - - public void setGRPLBL(String gRPLBL) { - GRPLBL = gRPLBL; - } - public String getSRGRPDOS() { return SRGRPDOS; } @@ -301,9 +280,16 @@ public class SRDomainFinding implements Cloneable { return null; } + public String getSRGRPNAM() { + return SRGRPNAM; + } + + public void setSRGRPNAM(String sRGRPNAM) { + SRGRPNAM = sRGRPNAM; + } + public String getTrackingSummary() { - String summary = SRSEQ; - return summary; + return SRSEQ; } } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java index 339280f..7b776ec 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java @@ -12,9 +12,6 @@ import javax.servlet.http.HttpServletRequest; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken; import org.springframework.stereotype.Service; @@ -22,7 +19,6 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import com.nimbusds.jwt.JWT; import es.bsc.inb.etransafe.pretox.rest.api.model.Action; import es.bsc.inb.etransafe.pretox.rest.api.model.Annotation; @@ -30,7 +26,6 @@ import es.bsc.inb.etransafe.pretox.rest.api.model.Document; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; import es.bsc.inb.etransafe.pretox.rest.api.model.Finding; -import es.bsc.inb.etransafe.pretox.rest.api.model.FindingSR; import es.bsc.inb.etransafe.pretox.rest.api.model.RecordState; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding; import es.bsc.inb.etransafe.pretox.rest.api.model.Status; @@ -346,7 +341,7 @@ public class DocumentServiceImpl implements DocumentService { retStr.append(srDomainFinding.getSPGRPCD()==null?"":srDomainFinding.getSPGRPCD()); retStr.append("|"); //GRPLBL --> Sponsor-defined Group Name, "low dose", "mid dose" - retStr.append(srDomainFinding.getGRPLBL()==null?"":srDomainFinding.getGRPLBL()); + retStr.append(srDomainFinding.getSRGRPNAM()==null?"":srDomainFinding.getSRGRPNAM()); retStr.append("|"); //SRGRPDOS --> Group Dose Level, "20 mg/kg" retStr.append(srDomainFinding.getSRGRPDOS()==null?"":srDomainFinding.getSRGRPDOS()); -- GitLab From d0534238e8a60d5808f84090aef92ace381d6f50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20D=C3=ADaz=20Roussel?= Date: Wed, 31 Aug 2022 10:10:16 +0200 Subject: [PATCH 15/26] Return ResponseEntity in new controller --- .../pretox/rest/api/controllers/DocumentController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java index 49fc922..7666f70 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java @@ -38,8 +38,8 @@ public class DocumentController { } @PutMapping(value ="/{id}/srfinding/add") - public SRDomainFinding addFinding(@PathVariable(value="id") Long id, @RequestBody SRDomainFinding srDomainFinding) { - return documentService.addFinding(id, srDomainFinding); + public ResponseEntity addFinding(@PathVariable(value="id") Long id, @RequestBody SRDomainFinding srDomainFinding) { + return new ResponseEntity(documentService.addFinding(id, srDomainFinding), HttpStatus.OK); } @GetMapping -- GitLab From 14a486d27322b80fcec420775030a247909772f6 Mon Sep 17 00:00:00 2001 From: jcorvi Date: Wed, 31 Aug 2022 12:25:00 +0200 Subject: [PATCH 16/26] merge method with conflict removing setFindings(). --- .../rest/api/services/DocumentServiceImpl.java | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java index bbc1995..996f355 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java @@ -73,23 +73,6 @@ public class DocumentServiceImpl implements DocumentService { return documentAnnotationsRepository.findByDocumentId(id); } - public DocumentAnnotations findDocumentSRDomainByDocumentId(Long id) { - DocumentAnnotations docAnno = documentAnnotationsRepository.findByDocumentId(id); - List srdomains = new ArrayList(); - for (Annotation sentence : docAnno.getRelevantSentences()) { - for (Finding finding : sentence.getFindings()) { - for (SRDomainFinding sr : finding.getSrDomainFindings()) { - srdomains.add(sr); - } - } - } - docAnno.setSrdomainfindings(srdomains); - docAnno.setRelevantSentences(null); - docAnno.setFindings(null); - return docAnno; - } - - public DocumentAnnotations findDocumentSRDomainByDocumentId(Long id) { DocumentAnnotations docAnno = documentAnnotationsRepository.findByDocumentId(id); @@ -103,7 +86,6 @@ public class DocumentServiceImpl implements DocumentService { } docAnno.setSrdomainfindings(srdomainfindings); docAnno.setRelevantSentences(null); - docAnno.setFindings(null); return docAnno; } -- GitLab From 273d124e5a1d9dd59515b1fb554264315ac2fdd2 Mon Sep 17 00:00:00 2001 From: jcorvi Date: Wed, 31 Aug 2022 16:19:17 +0200 Subject: [PATCH 17/26] dev link section --- .../pretox/rest/api/model/Report.java | 28 +++++++ .../pretox/rest/api/model/Section.java | 76 +++++++++++++++++++ .../rest/api/services/ReportServiceImpl.java | 3 +- 3 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java index 41a34b3..d42601c 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java @@ -1,8 +1,11 @@ package es.bsc.inb.etransafe.pretox.rest.api.model; import java.util.Date; +import java.util.List; import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.DBRef; + @org.springframework.data.mongodb.core.mapping.Document(collection="reports") public class Report { @@ -14,6 +17,8 @@ public class Report { private String fileName; + private String name; + private String fileType; private String fileSize; @@ -27,6 +32,9 @@ public class Report { private RecordState recordState; + @DBRef + private List
sections; + public String getId() { return id; } @@ -98,5 +106,25 @@ public class Report { public void setRecordState(RecordState recordState) { this.recordState = recordState; } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List
getSections() { + return sections; + } + + public void setSections(List
sections) { + this.sections = sections; + } + + + + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java new file mode 100644 index 0000000..681360e --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java @@ -0,0 +1,76 @@ +package es.bsc.inb.etransafe.pretox.rest.api.model; + +import org.bson.types.ObjectId; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Field; + +@org.springframework.data.mongodb.core.mapping.Document(collection="sections") +public class Section{ + @Field("_id") + @Id + private ObjectId _id; + + @Field("id") + private Long id; + + private String name; + + private String text; + + private String processDate; + + private String fileName; + + + public Section() { + super(); + } + + public ObjectId get_id() { + return _id; + } + + public void set_id(ObjectId _id) { + this._id = _id; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + + public String getProcessDate() { + return processDate; + } + + public void setProcessDate(String processDate) { + this.processDate = processDate; + } + + public String getFileName() { + return fileName; + } + + + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + + + + +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java index af5f123..59b6103 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java @@ -57,7 +57,8 @@ public class ReportServiceImpl implements ReportService { GridFSFile gridFSFile = gridFsTemplate.findOne( new Query(Criteria.where("_id").is(fileID)) ); Report report = new Report(); if (gridFSFile != null && gridFSFile.getMetadata() != null) { - report.setFileName( gridFSFile.getFilename() ); + report.setFileName( gridFSFile.getFilename()); + report.setName( gridFSFile.getFilename().replace(".pdf", "")); report.setFileType( gridFSFile.getMetadata().get("_contentType").toString() ); report.setFileSize( gridFSFile.getMetadata().get("fileSize").toString() ); report.setGridFSId(fileID.toString()); -- GitLab From 36a22fd4f98cbed77989afd8af6e4531b136b855 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20D=C3=ADaz=20Roussel?= Date: Fri, 2 Sep 2022 11:13:41 +0200 Subject: [PATCH 18/26] Add srdomain status enum and attribute setter --- .../pretox/rest/api/model/SRDomainFinding.java | 10 +++++++--- .../pretox/rest/api/model/SRDomainFindingStatus.java | 5 +++++ .../pretox/rest/api/services/DocumentServiceImpl.java | 3 ++- 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFindingStatus.java diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java index 8a94dff..014e51d 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java @@ -38,13 +38,13 @@ public class SRDomainFinding implements Cloneable { private Boolean export; private Integer findingId; private Integer srDomainId; - private String status = "non_curated"; + private SRDomainFindingStatus status = SRDomainFindingStatus.non_curated; - public String getStatus() { + public SRDomainFindingStatus getStatus() { return status; } - public void setStatus(String status) { + public void setStatus(SRDomainFindingStatus status) { this.status = status; } @@ -195,6 +195,10 @@ public class SRDomainFinding implements Cloneable { public String getSROBSV() { return SROBSV; } + + public void setSROBSV(String sROBSV) { + SROBSV = sROBSV; + } public String getSROBSQ() { return SROBSQ; diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFindingStatus.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFindingStatus.java new file mode 100644 index 0000000..d5878b5 --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFindingStatus.java @@ -0,0 +1,5 @@ +package es.bsc.inb.etransafe.pretox.rest.api.model; + +public enum SRDomainFindingStatus { + non_curated, rejected, accepted, added; +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java index 996f355..6f1ed38 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java @@ -28,6 +28,7 @@ import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; import es.bsc.inb.etransafe.pretox.rest.api.model.Finding; import es.bsc.inb.etransafe.pretox.rest.api.model.RecordState; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding; +import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFindingStatus; import es.bsc.inb.etransafe.pretox.rest.api.model.Status; import es.bsc.inb.etransafe.pretox.rest.api.model.Tracking; import es.bsc.inb.etransafe.pretox.rest.api.repository.DocumentAnnotationsRepository; @@ -137,7 +138,7 @@ public class DocumentServiceImpl implements DocumentService { } if(srDomainFindingelected!=null) { //https://stackoverflow.com/questions/47699646/updating-replacing-a-deeply-nested-object-in-mongodb-with-spring-data-mongodb - srDomainFindingelected.setStatus(status); + srDomainFindingelected.setStatus(SRDomainFindingStatus.valueOf(status)); documentAnnotationsRepository.save(documentAnnotations); createTracking(id, Action.ACCEPT, srDomainFindingelected.getTrackingSummary()); return true; -- GitLab From 8ba1af995a9090c789d7de8c1407459678275b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20D=C3=ADaz=20Roussel?= Date: Wed, 7 Sep 2022 10:14:13 +0200 Subject: [PATCH 19/26] Return SRDomain document when looking for it --- .../api/controllers/DocumentController.java | 5 +- .../rest/api/model/DocumentAnnotations.java | 10 +- .../rest/api/model/SRDomainDocument.java | 91 +++++++++++++++++++ .../rest/api/services/DocumentService.java | 3 +- .../api/services/DocumentServiceImpl.java | 29 ++++-- 5 files changed, 120 insertions(+), 18 deletions(-) create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainDocument.java diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java index 7666f70..b483654 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java @@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController; import es.bsc.inb.etransafe.pretox.rest.api.model.Document; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; +import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainDocument; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding; import es.bsc.inb.etransafe.pretox.rest.api.model.Status; import es.bsc.inb.etransafe.pretox.rest.api.services.DocumentService; @@ -53,8 +54,8 @@ public class DocumentController { } @GetMapping(value = "/srdomain/{id}") - public ResponseEntity findSRDomainDocument(@PathVariable(value="id") Long id) { - return new ResponseEntity(documentService.findDocumentSRDomainByDocumentId(id), HttpStatus.OK); + public ResponseEntity findSRDomainDocument(@PathVariable(value="id") Long id) { + return new ResponseEntity(documentService.findSRDomainDocumentByDocumentId(id), HttpStatus.OK); } // @GetMapping(value = "/document_data/{id}") diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java index bb84c87..43d685a 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java @@ -21,7 +21,7 @@ public class DocumentAnnotations { @Field("relevant_sentences") private ArrayList relevantSentences; - private List srdomainfindings; + private List srDomainFindings; private Status status; @@ -60,12 +60,12 @@ public class DocumentAnnotations { this.documentId = documentId; } - public List getSrdomainfindings() { - return srdomainfindings; + public List getSrDomainFindings() { + return srDomainFindings; } - public void setSrdomainfindings(List srdomainfindings) { - this.srdomainfindings = srdomainfindings; + public void setSrDomainFindings(List srDomainFindings) { + this.srDomainFindings = srDomainFindings; } public Status getStatus() { diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainDocument.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainDocument.java new file mode 100644 index 0000000..8a2025e --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainDocument.java @@ -0,0 +1,91 @@ +package es.bsc.inb.etransafe.pretox.rest.api.model; + +import java.util.List; + +public class SRDomainDocument { + + private Long documentId; + + private String name; + + private String processDate; + + private String fileName; + + private Status status; + + private List srDomainFindings; + + private RecordState recordState; + + private Long pretoxDocumentId; + + public SRDomainDocument() { + super(); + } + + public Long getDocumentId() { + return documentId; + } + + public void setDocumentId(Long documentId) { + this.documentId = documentId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Status getStatus() { + if(status==null)return Status.DRAFT; + return status; + } + + public void setStatus(Status status) { + this.status = status; + } + + public String getProcessDate() { + return processDate; + } + + public void setProcessDate(String processDate) { + this.processDate = processDate; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public RecordState getRecordState() { + return recordState; + } + + public void setRecordState(RecordState recordState) { + this.recordState = recordState; + } + + public List getSrDomainFindings() { + return srDomainFindings; + } + + public void setSrDomainFindings(List srDomainFindings) { + this.srDomainFindings = srDomainFindings; + } + + public Long getPretoxDocumentId() { + return pretoxDocumentId; + } + + public void setPretoxDocumentId(Long pretoxDocumentId) { + this.pretoxDocumentId = pretoxDocumentId; + } +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java index 571d0b9..7733e21 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java @@ -5,6 +5,7 @@ import java.util.List; import es.bsc.inb.etransafe.pretox.rest.api.model.Document; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; +import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainDocument; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding; import es.bsc.inb.etransafe.pretox.rest.api.model.Status; @@ -25,7 +26,7 @@ public interface DocumentService { DocumentAnnotations findDocumentAnnotationsByDocumentId(Long id); - DocumentAnnotations findDocumentSRDomainByDocumentId(Long id); + SRDomainDocument findSRDomainDocumentByDocumentId(Long id); String findSentenceEvidenceByDocumentIdAndSentenceId(Long id, Integer sentenceId); diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java index 6f1ed38..e32167b 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java @@ -27,6 +27,7 @@ import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; import es.bsc.inb.etransafe.pretox.rest.api.model.Finding; import es.bsc.inb.etransafe.pretox.rest.api.model.RecordState; +import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainDocument; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFindingStatus; import es.bsc.inb.etransafe.pretox.rest.api.model.Status; @@ -75,19 +76,27 @@ public class DocumentServiceImpl implements DocumentService { } - public DocumentAnnotations findDocumentSRDomainByDocumentId(Long id) { - DocumentAnnotations docAnno = documentAnnotationsRepository.findByDocumentId(id); - List srdomainfindings = new ArrayList<>(); - for (Annotation sentence : docAnno.getRelevantSentences()) { + public SRDomainDocument findSRDomainDocumentByDocumentId(Long id) { + DocumentAnnotations documentAnnotations = documentAnnotationsRepository.findByDocumentId(id); + SRDomainDocument srdomainDocument = new SRDomainDocument(); + List srDomainFindings = documentAnnotations.getSrDomainFindings(); + if (srDomainFindings == null) { + srDomainFindings = new ArrayList<>(); + } + + for (Annotation sentence : documentAnnotations.getRelevantSentences()) { for (Finding finding : sentence.getFindings()) { for (SRDomainFinding srFinding : finding.getSrDomainFindings()) { - srdomainfindings.add(srFinding); + srDomainFindings.add(srFinding); } } } - docAnno.setSrdomainfindings(srdomainfindings); - docAnno.setRelevantSentences(null); - return docAnno; + + srdomainDocument.setName(documentAnnotations.getName()); + srdomainDocument.setStatus(documentAnnotations.getStatus()); + srdomainDocument.setSrDomainFindings(srDomainFindings); + srdomainDocument.setPretoxDocumentId(documentAnnotations.getDocumentId()); + return srdomainDocument; } public Document findByDocumentId2(Long id) { @@ -883,10 +892,10 @@ public class DocumentServiceImpl implements DocumentService { @Override public SRDomainFinding addFinding(Long documentId, SRDomainFinding srDomainFinding) { DocumentAnnotations documentAnnotations = this.findDocumentAnnotationsByDocumentId(documentId); - List srdomainfindings = documentAnnotations.getSrdomainfindings(); + List srdomainfindings = documentAnnotations.getSrDomainFindings(); if (srdomainfindings == null) { srdomainfindings = new ArrayList<>(); - documentAnnotations.setSrdomainfindings(srdomainfindings); + documentAnnotations.setSrDomainFindings(srdomainfindings); } srdomainfindings.add(srDomainFinding); -- GitLab From 6ca514f965e5fd5b8f127a4c4198578f20088d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20D=C3=ADaz=20Roussel?= Date: Wed, 7 Sep 2022 13:06:59 +0200 Subject: [PATCH 20/26] Allow uploading same report with same name if old one was removed --- .../api/services/DocumentServiceImpl.java | 2 +- .../rest/api/services/ReportServiceImpl.java | 88 +++++++++---------- 2 files changed, 43 insertions(+), 47 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java index e32167b..1049575 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java @@ -805,7 +805,7 @@ public class DocumentServiceImpl implements DocumentService { documentAnnotation.setStatus(status); documentRepository.save(document); documentAnnotationsRepository.save(documentAnnotation); - createTracking(id, Action.MOVE, status.toString()); + createTracking(id, Action.MOVE, status.toString()); return status; } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java index 59b6103..9a1b1fb 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java @@ -1,7 +1,5 @@ package es.bsc.inb.etransafe.pretox.rest.api.services; - - import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -28,86 +26,85 @@ import es.bsc.inb.etransafe.pretox.rest.api.repository.ReportRepository; @Service public class ReportServiceImpl implements ReportService { - - - @Autowired - ReportRepository reportRepository; - - @Autowired - private GridFsOperations operations; - - @Autowired - private GridFsTemplate gridFsTemplate; - - + + @Autowired + ReportRepository reportRepository; + + @Autowired + private GridFsOperations operations; + + @Autowired + private GridFsTemplate gridFsTemplate; + /** * Execute process in a document + * * @param file * @param outputGATEFile * @throws ResourceInstantiationException - * @throws IOException - * @throws JsonGenerationException + * @throws IOException + * @throws JsonGenerationException * @throws InvalidOffsetException */ - public Report upload(MultipartFile file) throws IOException{ + public Report upload(MultipartFile file) throws IOException { DBObject metadata = new BasicDBObject(); - metadata.put("fileSize", file.getSize()); - metadata.put("type", "legacy_report"); - ObjectId fileID = gridFsTemplate.store(file.getInputStream(), file.getOriginalFilename(), file.getContentType(), metadata); - GridFSFile gridFSFile = gridFsTemplate.findOne( new Query(Criteria.where("_id").is(fileID)) ); + metadata.put("fileSize", file.getSize()); + metadata.put("type", "legacy_report"); + ObjectId fileID = gridFsTemplate.store(file.getInputStream(), file.getOriginalFilename(), file.getContentType(), + metadata); + GridFSFile gridFSFile = gridFsTemplate.findOne(new Query(Criteria.where("_id").is(fileID))); Report report = new Report(); if (gridFSFile != null && gridFSFile.getMetadata() != null) { - report.setFileName( gridFSFile.getFilename()); - report.setName( gridFSFile.getFilename().replace(".pdf", "")); - report.setFileType( gridFSFile.getMetadata().get("_contentType").toString() ); - report.setFileSize( gridFSFile.getMetadata().get("fileSize").toString() ); + report.setFileName(gridFSFile.getFilename()); + report.setName(gridFSFile.getFilename().replace(".pdf", "")); + report.setFileType(gridFSFile.getMetadata().get("_contentType").toString()); + report.setFileSize(gridFSFile.getMetadata().get("fileSize").toString()); report.setGridFSId(fileID.toString()); report.setUploadDate(gridFSFile.getUploadDate()); report.setStatus(Status.READY); report.setRecordState(RecordState.ACTIVE); } reportRepository.save(report); - return report; + return report; } - - + @Override public List validateUpload(MultipartFile[] files) { List errors = new ArrayList(); for (MultipartFile multipartFile : files) { - if(!multipartFile.getOriginalFilename().endsWith(".pdf")) { + if (!multipartFile.getOriginalFilename().endsWith(".pdf")) { errors.add("Only pdf files are allowed to upload" + multipartFile.getOriginalFilename() + "."); - }else { - - } - List reports = reportRepository.findByFileName(multipartFile.getOriginalFilename()); - if(reports!=null && reports.size()>0) { - errors.add("There is a report with the file name already in the database: " + multipartFile.getOriginalFilename() + "."); + } else { + List reports = reportRepository.findByFileName(multipartFile.getOriginalFilename()); + boolean isRepeated = reports != null && reports.stream().anyMatch(report -> report.getRecordState() == RecordState.ACTIVE); + if (isRepeated) { + errors.add("There is an active report with the file name already in the database: " + + multipartFile.getOriginalFilename() + "."); + } } } - return errors; + return errors; } @Override public Report download(String id) throws IllegalStateException, IOException { - GridFSFile gridFSFile = gridFsTemplate.findOne( new Query(Criteria.where("_id").is(id)) ); + GridFSFile gridFSFile = gridFsTemplate.findOne(new Query(Criteria.where("_id").is(id))); Report loadFile = new Report(); if (gridFSFile != null && gridFSFile.getMetadata() != null) { - loadFile.setFileName( gridFSFile.getFilename() ); - loadFile.setFileType( gridFSFile.getMetadata().get("_contentType").toString() ); - loadFile.setFileSize( gridFSFile.getMetadata().get("fileSize").toString() ); - loadFile.setFile( IOUtils.toByteArray(operations.getResource(gridFSFile).getInputStream()) ); - } + loadFile.setFileName(gridFSFile.getFilename()); + loadFile.setFileType(gridFSFile.getMetadata().get("_contentType").toString()); + loadFile.setFileSize(gridFSFile.getMetadata().get("fileSize").toString()); + loadFile.setFile(IOUtils.toByteArray(operations.getResource(gridFSFile).getInputStream())); + } return loadFile; } - @Override public List list() { return reportRepository.findAllActiveReports(); } - + @Override public Report remove(String reportId) { Report report = this.findById(reportId); @@ -119,12 +116,11 @@ public class ReportServiceImpl implements ReportService { return reportRepository.findById(reportId).get(); } - @Override public Report restore(String reportId) { Report report = this.findById(reportId); report.setRecordState(RecordState.ACTIVE); return reportRepository.save(report); } - + } -- GitLab From d810a1cb1b25b3d2c78a0226866439be3aa7f0b1 Mon Sep 17 00:00:00 2001 From: jcorvi Date: Wed, 7 Sep 2022 16:19:35 +0200 Subject: [PATCH 21/26] development --- .../rest/api/controllers/ReportController.java | 6 +++++- .../etransafe/pretox/rest/api/model/Finding.java | 2 +- .../inb/etransafe/pretox/rest/api/model/Report.java | 10 ++++++++++ .../etransafe/pretox/rest/api/model/Section.java | 13 +++++++++---- .../rest/api/repository/ReportRepositoryImpl.java | 1 + .../rest/api/security/pkce/SecurityConfig.java | 1 + .../pretox/rest/api/services/ReportService.java | 8 ++++++++ .../pretox/rest/api/services/ReportServiceImpl.java | 6 ++++-- 8 files changed, 39 insertions(+), 8 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java index 46fc24d..adb3fec 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java @@ -67,7 +67,6 @@ public class ReportController { } } - @GetMapping("/download/{gridFSId}") public ResponseEntity download(@PathVariable String gridFSId) throws IOException { Report legacyReport = reportService.download(gridFSId); @@ -92,5 +91,10 @@ public class ReportController { public ResponseEntity restoreDocument(@PathVariable("id") String reportId){ return ResponseEntity.ok().body(reportService.restore(reportId)); } + + @GetMapping(value ="/{id}") + public ResponseEntity find(@PathVariable(value="id") String id) { + return new ResponseEntity(reportService.findById(id), HttpStatus.OK); + } } \ No newline at end of file diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Finding.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Finding.java index d89434f..d4f4019 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Finding.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Finding.java @@ -436,7 +436,7 @@ public class Finding { public String getTrackingSummary() { - return findingId.toString(); + return findingId==null?"":findingId.toString(); } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java index d42601c..066bbb3 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java @@ -32,6 +32,8 @@ public class Report { private RecordState recordState; + private Boolean hasSections; + @DBRef private List
sections; @@ -123,6 +125,14 @@ public class Report { this.sections = sections; } + public Boolean getHasSections() { + return hasSections; + } + + public void setHasSections(Boolean hasSections) { + this.hasSections = hasSections; + } + diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java index 681360e..33999f7 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java @@ -2,6 +2,7 @@ package es.bsc.inb.etransafe.pretox.rest.api.model; import org.bson.types.ObjectId; import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.DBRef; import org.springframework.data.mongodb.core.mapping.Field; @org.springframework.data.mongodb.core.mapping.Document(collection="sections") @@ -21,6 +22,8 @@ public class Section{ private String fileName; + @DBRef + private DocumentAnnotations annotations; public Section() { super(); @@ -63,14 +66,16 @@ public class Section{ return fileName; } - - public void setFileName(String fileName) { this.fileName = fileName; } + public DocumentAnnotations getAnnotations() { + return annotations; + } - - + public void setAnnotations(DocumentAnnotations annotations) { + this.annotations = annotations; + } } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryImpl.java index 754cecb..01a79e9 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryImpl.java @@ -27,6 +27,7 @@ public class ReportRepositoryImpl implements ReportRepositoryCustom{ query.fields().include("uploadDate"); query.fields().include("status"); query.fields().include("recordState"); + query.fields().include("hasSections"); query.addCriteria(Criteria.where("recordState").ne("DELETED")); //Sort sort = new Sort(Sort.Direction.ASC, "name"); //query.with(sort); diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java index 8a81b9f..5f1363b 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java @@ -19,6 +19,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .authorizeRequests() .antMatchers(HttpMethod.GET, "/liveness").permitAll() .antMatchers(HttpMethod.GET, "/readiness").permitAll() + .antMatchers(HttpMethod.GET, "/reports/**").permitAll() .antMatchers(HttpMethod.GET, "/documents/restore/*").permitAll() .antMatchers(HttpMethod.GET, "/reports/restore/*").permitAll() .antMatchers(HttpMethod.GET, "/api-docs").permitAll() diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java index fb6717b..4dae592 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java @@ -48,4 +48,12 @@ public interface ReportService { * @return */ public Report restore(String reportId); + /** + * + * @param id + * @return + */ + public Report findById(String id); + + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java index 9a1b1fb..67d086c 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java @@ -111,8 +111,9 @@ public class ReportServiceImpl implements ReportService { report.setRecordState(RecordState.DELETED); return reportRepository.save(report); } - - private Report findById(String reportId) { + + @Override + public Report findById(String reportId) { return reportRepository.findById(reportId).get(); } @@ -123,4 +124,5 @@ public class ReportServiceImpl implements ReportService { return reportRepository.save(report); } + } -- GitLab From 49b63d9ba3acb254c1822642e456199fafd84357 Mon Sep 17 00:00:00 2001 From: jcorvi Date: Wed, 21 Sep 2022 15:55:07 +0200 Subject: [PATCH 22/26] report textual evidence --- .../api/controllers/DocumentController.java | 4 +- .../api/controllers/ReportController.java | 27 ++ .../pretox/rest/api/model/Document.java | 8 +- .../rest/api/model/DocumentAnnotations.java | 8 +- .../pretox/rest/api/model/Report.java | 6 +- .../pretox/rest/api/model/ReportStatus.java | 13 + .../rest/api/model/SRDomainDocument.java | 8 +- .../pretox/rest/api/model/Status.java | 8 - .../DocumentAnnotationsRepository.java | 2 + .../repository/DocumentRepositoryCustom.java | 14 - .../repository/DocumentRepositoryImpl.java | 27 +- .../api/repository/SectionRepository.java | 16 ++ .../repository/SectionRepositoryCustom.java | 12 + .../api/repository/SectionRepositoryImpl.java | 36 +++ .../rest/api/services/DocumentService.java | 4 +- .../api/services/DocumentServiceImpl.java | 9 +- .../rest/api/services/ReportServiceImpl.java | 4 +- .../api/services/TextualEvidenceService.java | 11 + .../services/TextualEvidenceServiceImpl.java | 247 ++++++++++++++++++ 19 files changed, 394 insertions(+), 70 deletions(-) create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/ReportStatus.java delete mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Status.java create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepository.java create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepositoryCustom.java create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepositoryImpl.java create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java create mode 100644 src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java index b483654..0f86156 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java @@ -21,7 +21,7 @@ import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainDocument; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding; -import es.bsc.inb.etransafe.pretox.rest.api.model.Status; +import es.bsc.inb.etransafe.pretox.rest.api.model.ReportStatus; import es.bsc.inb.etransafe.pretox.rest.api.services.DocumentService; @@ -69,7 +69,7 @@ public class DocumentController { // } @PutMapping(value = "/{id}/move/{status}") - public ResponseEntity moveDocument(@PathVariable(value="id") Long id, @PathVariable(value="status") Status status) { + public ResponseEntity moveDocument(@PathVariable(value="id") Long id, @PathVariable(value="status") ReportStatus status) { documentService.moveDocument(id, status); return new ResponseEntity(HttpStatus.OK); } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java index adb3fec..12aa774 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java @@ -22,7 +22,9 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import es.bsc.inb.etransafe.pretox.rest.api.model.Report; +import es.bsc.inb.etransafe.pretox.rest.api.services.DocumentService; import es.bsc.inb.etransafe.pretox.rest.api.services.ReportService; +import es.bsc.inb.etransafe.pretox.rest.api.services.TextualEvidenceService; @RestController @@ -33,6 +35,12 @@ public class ReportController { @Autowired ReportService reportService; + @Autowired + DocumentService documentService; + + @Autowired + TextualEvidenceService textualEvidenceService; + @PostMapping("/upload") public ResponseEntity uploadLegacyReports(@RequestParam("files")MultipartFile[] files){ List messages = new ArrayList(); @@ -96,5 +104,24 @@ public class ReportController { public ResponseEntity find(@PathVariable(value="id") String id) { return new ResponseEntity(reportService.findById(id), HttpStatus.OK); } + + @GetMapping(value = "/{id}/text") + public ResponseEntity findReportText(@PathVariable(value="id") String id) { + String snippet = textualEvidenceService.findTextByReportId(id); + return new ResponseEntity(snippet, HttpStatus.OK); + } + + @GetMapping(value = "/{documentAnnotationsId}/evidence/finding/{findingId}") + public ResponseEntity findFinding(@PathVariable(value="documentAnnotationsId") Long documentAnnotationsId, @PathVariable(value="findingId") Integer findingId) { + String snippet = textualEvidenceService.findFindingEvidenceByDocumentAnnotationsIdAndFindingId(documentAnnotationsId, findingId); + return new ResponseEntity(snippet, HttpStatus.OK); + } + + @GetMapping(value = "/{documentAnnotationsId}/evidence/sentence/{sentenceId}") + public ResponseEntity findSentence(@PathVariable(value="documentAnnotationsId") Long documentAnnotationsId, @PathVariable(value="sentenceId") Integer sentenceId) { + String snippet = textualEvidenceService.findSentenceEvidenceByDocumentAnnotationsIdAndSentenceId(documentAnnotationsId, sentenceId); + return new ResponseEntity(snippet, HttpStatus.OK); + } + } \ No newline at end of file diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Document.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Document.java index 01696cd..754b6b7 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Document.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Document.java @@ -21,7 +21,7 @@ public class Document{ private String fileName; - private Status status; + private ReportStatus status; private RecordState recordState; @@ -62,12 +62,12 @@ public class Document{ this.name = name; } - public Status getStatus() { - if(status==null)return Status.DRAFT; + public ReportStatus getStatus() { + if(status==null)return ReportStatus.CURATION_DRAFT; return status; } - public void setStatus(Status status) { + public void setStatus(ReportStatus status) { this.status = status; } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java index 43d685a..dceadf3 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java @@ -23,7 +23,7 @@ public class DocumentAnnotations { private List srDomainFindings; - private Status status; + private ReportStatus status; public DocumentAnnotations() {} @@ -68,12 +68,12 @@ public class DocumentAnnotations { this.srDomainFindings = srDomainFindings; } - public Status getStatus() { - if(status==null)return Status.DRAFT; + public ReportStatus getStatus() { + if(status==null)return ReportStatus.CURATION_DRAFT; return status; } - public void setStatus(Status status) { + public void setStatus(ReportStatus status) { this.status = status; } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java index 066bbb3..0857ac8 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java @@ -28,7 +28,7 @@ public class Report { private String gridFSId; - private Status status; + private ReportStatus status; private RecordState recordState; @@ -93,11 +93,11 @@ public class Report { this.gridFSId = gridFSId; } - public Status getStatus() { + public ReportStatus getStatus() { return status; } - public void setStatus(Status status) { + public void setStatus(ReportStatus status) { this.status = status; } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/ReportStatus.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/ReportStatus.java new file mode 100644 index 0000000..142b1a0 --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/ReportStatus.java @@ -0,0 +1,13 @@ +package es.bsc.inb.etransafe.pretox.rest.api.model; + +public enum ReportStatus { + //workflow + WORKFLOW_WAITING,WORKFLOW_READY,WORKFLOW_RUNNING,WORKFLOW_COMPLETED,WORKFLOW_FAIL, + //curation + CURATION_DRAFT, CURATION_IN_PROGRESS, CURATION_FINISHED, CURATION_CLOSED, + + //just for old data that is already stored in mongo database, should not be used and has to be removed + DRAFT, IN_PROGRESS, FINISHED, CLOSED, + WAITING,READY,RUNNING,COMPLETED,FAIL, + +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainDocument.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainDocument.java index 8a2025e..ed0a0e1 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainDocument.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainDocument.java @@ -12,7 +12,7 @@ public class SRDomainDocument { private String fileName; - private Status status; + private ReportStatus status; private List srDomainFindings; @@ -40,12 +40,12 @@ public class SRDomainDocument { this.name = name; } - public Status getStatus() { - if(status==null)return Status.DRAFT; + public ReportStatus getStatus() { + if(status==null)return ReportStatus.CURATION_DRAFT; return status; } - public void setStatus(Status status) { + public void setStatus(ReportStatus status) { this.status = status; } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Status.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Status.java deleted file mode 100644 index 9ba495e..0000000 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Status.java +++ /dev/null @@ -1,8 +0,0 @@ -package es.bsc.inb.etransafe.pretox.rest.api.model; - -public enum Status { - //workflow - WAITING,READY,RUNNING,COMPLETED,FAIL, - - DRAFT, IN_PROGRESS, FINISHED, CLOSED, -} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentAnnotationsRepository.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentAnnotationsRepository.java index 3259e0f..d0f4a46 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentAnnotationsRepository.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentAnnotationsRepository.java @@ -8,6 +8,8 @@ import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; @Repository public interface DocumentAnnotationsRepository extends DocumentAnnotationsRepositoryCustom, MongoRepository { + DocumentAnnotations findByDocumentId(String id); + DocumentAnnotations findByDocumentId(Long id); } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryCustom.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryCustom.java index f2e8c16..1937003 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryCustom.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryCustom.java @@ -1,24 +1,10 @@ package es.bsc.inb.etransafe.pretox.rest.api.repository; -import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; -import es.bsc.inb.etransafe.pretox.rest.api.model.Finding; - /** * Custom Interface for Document * @author jcorvi * */ public interface DocumentRepositoryCustom { - /** - * - * @return - */ - Finding findByDocumentIdAndFindingId(Long id); - /** - * - * @return - */ - DocumentAnnotations findByDocumentDataById(Long id); - } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryImpl.java index cfc1611..4b86c8b 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryImpl.java @@ -3,7 +3,6 @@ package es.bsc.inb.etransafe.pretox.rest.api.repository; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.aggregation.Aggregation; import org.springframework.data.mongodb.core.aggregation.AggregationResults; @@ -13,8 +12,7 @@ import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import es.bsc.inb.etransafe.pretox.rest.api.model.Document; -import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; -import es.bsc.inb.etransafe.pretox.rest.api.model.Finding; +import es.bsc.inb.etransafe.pretox.rest.api.model.Section; /** * Custom implementation of DocumentRepository @@ -40,19 +38,6 @@ public class DocumentRepositoryImpl implements DocumentRepositoryCustom{ List documents = mongoTemplate.find(query, Document.class); return documents; } - - - public DocumentAnnotations findByDocumentDataById(Long id) { - Query query = new Query(); - query.addCriteria(Criteria.where("name").is("0370138_pub-for-GGA.tei.xml")); - query.fields().include("annotations"); - List annotations = mongoTemplate.find(query, DocumentAnnotations.class); - return annotations.get(0); - } - - public Finding findByDocumentIdAndFindingId(Long id) { - return null; - } public String findDocumentTextSubstringByDocumentId(Long id, Integer start, Integer end) { @@ -66,15 +51,11 @@ public class DocumentRepositoryImpl implements DocumentRepositoryCustom{ Aggregation aggregation = Aggregation .newAggregation(matchOperation, projectionOperation); - AggregationResults aggregationResults - = mongoTemplate.aggregate(aggregation, "documents", Document.class); + AggregationResults
aggregationResults + = mongoTemplate.aggregate(aggregation, "sections", Section.class); return aggregationResults.getMappedResults().get(0).getText(); - -// BasicQuery query = new BasicQuery("{ age : { $lt : 50 }, accounts.balance : { $gt : 1000.00 }}"); -// List result = mongoTemplate.find(query, Person.class); - } - + } } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepository.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepository.java new file mode 100644 index 0000000..8e4dbb2 --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepository.java @@ -0,0 +1,16 @@ +package es.bsc.inb.etransafe.pretox.rest.api.repository; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +import es.bsc.inb.etransafe.pretox.rest.api.model.Section; + + + +@Repository +public interface SectionRepository extends SectionRepositoryCustom, MongoRepository { + + + + +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepositoryCustom.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepositoryCustom.java new file mode 100644 index 0000000..f4f8818 --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepositoryCustom.java @@ -0,0 +1,12 @@ +package es.bsc.inb.etransafe.pretox.rest.api.repository; + +/** + * Custom Interface for Document + * @author jcorvi + * + */ +public interface SectionRepositoryCustom { + + String findSectionTextSubstringByDocumentId(Long id, Integer start, Integer end); + +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepositoryImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepositoryImpl.java new file mode 100644 index 0000000..4f1d31e --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepositoryImpl.java @@ -0,0 +1,36 @@ +package es.bsc.inb.etransafe.pretox.rest.api.repository; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.aggregation.Aggregation; +import org.springframework.data.mongodb.core.aggregation.AggregationResults; +import org.springframework.data.mongodb.core.aggregation.MatchOperation; +import org.springframework.data.mongodb.core.aggregation.ProjectionOperation; +import org.springframework.data.mongodb.core.query.Criteria; + +import es.bsc.inb.etransafe.pretox.rest.api.model.Section; + +public class SectionRepositoryImpl implements SectionRepositoryCustom{ + + @Autowired + MongoTemplate mongoTemplate; + + public String findSectionTextSubstringByDocumentId(Long id, Integer start, Integer end) { + MatchOperation matchOperation = Aggregation + .match(new Criteria("id").is(id)); + + ProjectionOperation projectionOperation = Aggregation + .project("text") + .andExpression("substr(text, " + start + " ," + end + ")").as("text"); + + Aggregation aggregation = Aggregation + .newAggregation(matchOperation, projectionOperation); + + AggregationResults
aggregationResults + = mongoTemplate.aggregate(aggregation, "sections", Section.class); + + return aggregationResults.getMappedResults().get(0).getText(); + + } + +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java index 7733e21..5dc1a76 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentService.java @@ -7,7 +7,7 @@ import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentTracking; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainDocument; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding; -import es.bsc.inb.etransafe.pretox.rest.api.model.Status; +import es.bsc.inb.etransafe.pretox.rest.api.model.ReportStatus; public interface DocumentService { @@ -46,7 +46,7 @@ public interface DocumentService { Boolean setFindingValidation(Long id, Integer findingId,String status); - Status moveDocument(Long id, Status status); + ReportStatus moveDocument(Long id, ReportStatus status); DocumentTracking findTrackings(Long documentId); diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java index 1049575..fadeb3d 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java @@ -30,7 +30,7 @@ import es.bsc.inb.etransafe.pretox.rest.api.model.RecordState; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainDocument; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding; import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFindingStatus; -import es.bsc.inb.etransafe.pretox.rest.api.model.Status; +import es.bsc.inb.etransafe.pretox.rest.api.model.ReportStatus; import es.bsc.inb.etransafe.pretox.rest.api.model.Tracking; import es.bsc.inb.etransafe.pretox.rest.api.repository.DocumentAnnotationsRepository; import es.bsc.inb.etransafe.pretox.rest.api.repository.DocumentRepository; @@ -70,9 +70,10 @@ public class DocumentServiceImpl implements DocumentService { public String findDocumentTextSubstringByDocumentId(Long id, Integer start, Integer end) { return documentRepository.findDocumentTextSubstringByDocumentId(id, start, end); } - + //not used anymore public DocumentAnnotations findDocumentAnnotationsByDocumentId(Long id) { - return documentAnnotationsRepository.findByDocumentId(id); + //return documentAnnotationsRepository.findByDocumentId(id); + return null; } @@ -798,7 +799,7 @@ public class DocumentServiceImpl implements DocumentService { } @Override - public Status moveDocument(Long id, Status status) { + public ReportStatus moveDocument(Long id, ReportStatus status) { Document document = this.findByDocumentId(id); DocumentAnnotations documentAnnotation = this.findDocumentAnnotationsByDocumentId(id); document.setStatus(status); diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java index 67d086c..0b63885 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java @@ -21,7 +21,7 @@ import com.mongodb.client.gridfs.model.GridFSFile; import es.bsc.inb.etransafe.pretox.rest.api.model.RecordState; import es.bsc.inb.etransafe.pretox.rest.api.model.Report; -import es.bsc.inb.etransafe.pretox.rest.api.model.Status; +import es.bsc.inb.etransafe.pretox.rest.api.model.ReportStatus; import es.bsc.inb.etransafe.pretox.rest.api.repository.ReportRepository; @Service @@ -61,7 +61,7 @@ public class ReportServiceImpl implements ReportService { report.setFileSize(gridFSFile.getMetadata().get("fileSize").toString()); report.setGridFSId(fileID.toString()); report.setUploadDate(gridFSFile.getUploadDate()); - report.setStatus(Status.READY); + report.setStatus(ReportStatus.WORKFLOW_READY); report.setRecordState(RecordState.ACTIVE); } reportRepository.save(report); diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java new file mode 100644 index 0000000..6a0d017 --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java @@ -0,0 +1,11 @@ +package es.bsc.inb.etransafe.pretox.rest.api.services; + +public interface TextualEvidenceService { + + String findTextByReportId(String id); + + String findFindingEvidenceByDocumentAnnotationsIdAndFindingId(Long documentAnnotationsId, Integer findingId); + + String findSentenceEvidenceByDocumentAnnotationsIdAndSentenceId(Long documentAnnotationsId, Integer sentenceId); + +} diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java new file mode 100644 index 0000000..f4dd75b --- /dev/null +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java @@ -0,0 +1,247 @@ +package es.bsc.inb.etransafe.pretox.rest.api.services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; + +import es.bsc.inb.etransafe.pretox.rest.api.model.Annotation; +import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; +import es.bsc.inb.etransafe.pretox.rest.api.model.Finding; +import es.bsc.inb.etransafe.pretox.rest.api.model.Report; +import es.bsc.inb.etransafe.pretox.rest.api.repository.DocumentAnnotationsRepository; +import es.bsc.inb.etransafe.pretox.rest.api.repository.ReportRepository; +import es.bsc.inb.etransafe.pretox.rest.api.repository.SectionRepository; +import es.bsc.inb.etransafe.pretox.rest.api.util.Constants; + +@Service +public class TextualEvidenceServiceImpl implements TextualEvidenceService{ + + @Autowired + ReportRepository reportRepository; + @Autowired + DocumentAnnotationsRepository documentAnnotationsRepository; + @Autowired + SectionRepository sectionRepository; + + /** + * Return plain text of the report + */ + @Override + public String findTextByReportId(String reportId) { + Report report = reportRepository.findById(reportId).get(); + if(report.getSections()!=null && report.getSections().size()>0) { + return generateOnlyTextSnippet(report.getSections().get(0).getText()); + } + return null; + } + + + /** + * Generate the snippet only of the text without annotations. + * @param text + * @return + */ + private String generateOnlyTextSnippet(String text) { + Gson gsonBuilder = new GsonBuilder().create(); + JsonObject findings_evidence = new JsonObject(); + findings_evidence.addProperty("text", text); + JsonArray entities = new JsonArray(); + JsonArray attributes = new JsonArray(); + JsonArray relations = new JsonArray(); + findings_evidence.add("entities", entities); + findings_evidence.add("attributes", attributes); + findings_evidence.add("relations", relations); + return gsonBuilder.toJson(findings_evidence).toString(); + } + + + @Override + public String findFindingEvidenceByDocumentAnnotationsIdAndFindingId(Long documentAnnotationsId, Integer findingId) { + DocumentAnnotations documentAnnotations = documentAnnotationsRepository.findByDocumentId(documentAnnotationsId); + Finding findingSelected = null; + Annotation sentenceRelevantText = null; + for (Annotation annotation : documentAnnotations.getRelevantSentences()) { + for (Finding finding : annotation.getFindings()) { + if(finding.getFindingId().equals(findingId)) { + findingSelected = finding; + sentenceRelevantText = annotation; + break; + } + } + } + if(findingSelected!=null) { + //I removed relevant text as atribute so ... + //Annotation annotation = findingSelected.getRelevant_text(); + Annotation annotation = sentenceRelevantText; + int text_size = annotation.getEndOffset() - annotation.getStartOffset(); + int start_ = 0; + int start_off = 0; + if(annotation.getStartOffset()-Constants.SLICE_START >= 0) { + start_ = annotation.getStartOffset()-Constants.SLICE_START; + start_off = Constants.SLICE_START; + }else { + start_off = annotation.getStartOffset(); + } + String subtext = this.findDocumentTextSubstringByDocumentId(documentAnnotationsId, start_, text_size + Constants.SLICE_END); + subtext = Constants.POINTS + subtext + Constants.POINTS; + int start_annotation_aux = annotation.getStartOffset(); + annotation.setStartOffset(Constants.SLICE_START + Constants.POINTS_INT); + annotation.setEndOffset(Constants.SLICE_START + Constants.POINTS_INT + text_size); + return this.generateFindingSnippet(subtext, findingSelected, start_off, start_annotation_aux); + } + return ""; + } + + public String findDocumentTextSubstringByDocumentId(Long id, Integer start, Integer end) { + return sectionRepository.findSectionTextSubstringByDocumentId(id, start, end); + } + + + + + /** + * Generate finding snippet + * @param text + * @param findingSelected + * @return + */ + private String generateFindingSnippet(String text, Finding findingSelected,int start_off ,int start_annotation_aux) { + Gson gsonBuilder = new GsonBuilder().create(); + JsonObject finding = new JsonObject(); + finding.addProperty("text", text); + List all = findingSelected.generateSortedAnnotationsAll(); + JsonArray entities = new JsonArray(); + JsonArray attributes = new JsonArray(); + JsonArray relations = new JsonArray(); + int t = 1; + int a = 1; + int r = 1; + String id_finding = ""; + for (Annotation annotation : all) { + JsonArray values = new JsonArray(); + String type = annotation.getFeature("ANNOTATION_TYPE"); + + //working add features to comment + String id = "T"+t; + String source = annotation.getFeature("SOURCES"); + if(source!=null && !source.equals("")) { + id = id + " - SOURCE: " + source; + } + //values.add(id); + + values.add("T"+t); + values.add(type); + JsonArray offste = new JsonArray(); + JsonArray offste2 = new JsonArray(); + + //slice for subtext manipulation + int annotation_text_size = annotation.getEndOffset() - annotation.getStartOffset(); + annotation.setStartOffset(start_off + Constants.POINTS_INT + (annotation.getStartOffset()-start_annotation_aux)); + annotation.setEndOffset(annotation.getStartOffset() + annotation_text_size); + + offste.add(annotation.getStartOffset()); + offste.add(annotation.getEndOffset()); + offste2.add(offste); + values.add(offste2); + entities.add(values); + if(type.equals("FINDING") || type.equals("STUDY_TESTCD") ) { + id_finding = "T"+t; + JsonArray values_a = new JsonArray(); + values_a.add("A"+a); + values_a.add("Notorious"); + values_a.add(id_finding); + attributes.add(values_a); + a++; + }else { + JsonArray values_r = new JsonArray(); + values_r.add("R"+r); + values_r.add("Relation"); + JsonArray values_r_e = new JsonArray(); + JsonArray values_r_e_v = new JsonArray(); + values_r_e_v.add("Entity"); + values_r_e_v.add(id_finding); + values_r_e.add(values_r_e_v); + JsonArray values_r_e_v_2 = new JsonArray(); + values_r_e_v_2.add("Subentity"); + values_r_e_v_2.add("T"+t); + values_r_e.add(values_r_e_v_2); + values_r.add(values_r_e); + relations.add(values_r); + r++; + } + t++; + } + finding.add("entities", entities); + finding.add("attributes", attributes); + finding.add("relations", relations); + return gsonBuilder.toJson(finding).toString(); + } + + + @Override + public String findSentenceEvidenceByDocumentAnnotationsIdAndSentenceId(Long documentAnnotationId, Integer sentenceId) { + DocumentAnnotations documentAnnotations = documentAnnotationsRepository.findByDocumentId(documentAnnotationId); + Annotation annotation = null; + for (Annotation sentence : documentAnnotations.getRelevantSentences()) { + if(sentence.getId().equals(sentenceId)) { + annotation = sentence; + break; + } + } + if(annotation!=null) { + int text_size = annotation.getEndOffset() - annotation.getStartOffset(); + int start_ = 0; + int start_off = 0; + if(annotation.getStartOffset()-Constants.SLICE_START >= 0) { + start_ = annotation.getStartOffset()-Constants.SLICE_START; + start_off = Constants.SLICE_START; + }else { + start_off = annotation.getStartOffset(); + } + String subtext = this.findDocumentTextSubstringByDocumentId(documentAnnotationId, start_ , text_size + Constants.SLICE_END); + subtext = Constants.POINTS + subtext + Constants.POINTS; + annotation.setStartOffset(start_off + Constants.POINTS_INT); + annotation.setEndOffset(start_off + Constants.POINTS_INT + text_size); + return this.generateSentenceSnippet(subtext, annotation); + } + return ""; + } + + /** + * Generate the evidence snippet for a sentence + * + * @param text + * @param findingSelected + * @return + */ + private String generateSentenceSnippet(String text, Annotation sentence) { + Gson gsonBuilder = new GsonBuilder().create(); + JsonObject json_to_return = new JsonObject(); + json_to_return.addProperty("text", text); + JsonArray entities = new JsonArray(); + String id_sentence = "T"+sentence.getId()+ " - SCORE: " + sentence.getFeature("PRETOX_REL_SCORE"); + JsonArray values = new JsonArray(); + values.add(id_sentence); + values.add("RELEVANT_SENTENCE"); + JsonArray offste = new JsonArray(); + JsonArray offste2 = new JsonArray(); + offste.add(sentence.getStartOffset()); + offste.add(sentence.getEndOffset()); + offste2.add(offste); + values.add(offste2); + entities.add(values); + json_to_return.add("entities", entities); + return gsonBuilder.toJson(json_to_return).toString(); + } + + + + + +} -- GitLab From 35f6fcfd69f8d9031da783000d712c344fb05bac Mon Sep 17 00:00:00 2001 From: jcorvi Date: Wed, 21 Sep 2022 16:44:40 +0200 Subject: [PATCH 23/26] textual evidence in report --- .../api/controllers/ReportController.java | 18 ++- .../api/services/TextualEvidenceService.java | 4 + .../services/TextualEvidenceServiceImpl.java | 136 ++++++++++++++++++ 3 files changed, 155 insertions(+), 3 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java index 12aa774..22e8aa9 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java @@ -105,9 +105,9 @@ public class ReportController { return new ResponseEntity(reportService.findById(id), HttpStatus.OK); } - @GetMapping(value = "/{id}/text") - public ResponseEntity findReportText(@PathVariable(value="id") String id) { - String snippet = textualEvidenceService.findTextByReportId(id); + @GetMapping(value = "/{reportId}/text") + public ResponseEntity findReportText(@PathVariable(value="reportId") String reportId) { + String snippet = textualEvidenceService.findTextByReportId(reportId); return new ResponseEntity(snippet, HttpStatus.OK); } @@ -123,5 +123,17 @@ public class ReportController { return new ResponseEntity(snippet, HttpStatus.OK); } + @GetMapping(value = "/{reportId}/evidence/findings") + public ResponseEntity findAllFindingEvidence(@PathVariable(value="reportId") String reportId) { + String snippet = textualEvidenceService.findFindingsEvidenceByReportId(reportId); + return new ResponseEntity(snippet, HttpStatus.OK); + } + + @GetMapping(value = "/{reportId}/evidence/sentences") + public ResponseEntity findSentencesEvidence(@PathVariable(value="reportId") String reportId) { + String snippet = textualEvidenceService.findSentencesEvidenceByReportId(reportId); + return new ResponseEntity(snippet, HttpStatus.OK); + } + } \ No newline at end of file diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java index 6a0d017..f715d1d 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java @@ -8,4 +8,8 @@ public interface TextualEvidenceService { String findSentenceEvidenceByDocumentAnnotationsIdAndSentenceId(Long documentAnnotationsId, Integer sentenceId); + String findFindingsEvidenceByReportId(String reportId); + + String findSentencesEvidenceByReportId(String reportId); + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java index f4dd75b..c88f8d1 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java @@ -11,9 +11,11 @@ import com.google.gson.JsonArray; import com.google.gson.JsonObject; import es.bsc.inb.etransafe.pretox.rest.api.model.Annotation; +import es.bsc.inb.etransafe.pretox.rest.api.model.Document; import es.bsc.inb.etransafe.pretox.rest.api.model.DocumentAnnotations; import es.bsc.inb.etransafe.pretox.rest.api.model.Finding; import es.bsc.inb.etransafe.pretox.rest.api.model.Report; +import es.bsc.inb.etransafe.pretox.rest.api.model.Section; import es.bsc.inb.etransafe.pretox.rest.api.repository.DocumentAnnotationsRepository; import es.bsc.inb.etransafe.pretox.rest.api.repository.ReportRepository; import es.bsc.inb.etransafe.pretox.rest.api.repository.SectionRepository; @@ -239,8 +241,142 @@ public class TextualEvidenceServiceImpl implements TextualEvidenceService{ json_to_return.add("entities", entities); return gsonBuilder.toJson(json_to_return).toString(); } + + + @Override + public String findFindingsEvidenceByReportId(String reportId) { + Report report = reportRepository.findById(reportId).get(); + if(report.getSections()!=null && report.getSections().size()>0) { + Section section = report.getSections().get(0); + return this.generateAllFindingsEvidenceSnippet(section.getText(), section.getAnnotations().getRelevantSentences()); + } + return ""; + } + @Override + public String findSentencesEvidenceByReportId(String reportId) { + Report report = reportRepository.findById(reportId).get(); + if(report.getSections()!=null && report.getSections().size()>0) { + Section section = report.getSections().get(0); + return this.generateAllRelevantSentenceEvidenceSnippet(section.getText(), section.getAnnotations().getRelevantSentences()); + } + return ""; + } + /** + * Generate the evidence of view all button. + * @param text + * @param findingSelected + * @return + */ + private String generateAllFindingsEvidenceSnippet(String text, List sentences) { + Gson gsonBuilder = new GsonBuilder().create(); + JsonObject findings_evidence = new JsonObject(); + findings_evidence.addProperty("text", text); + JsonArray entities = new JsonArray(); + JsonArray attributes = new JsonArray(); + JsonArray relations = new JsonArray(); + int t = 1; + int a = 1; + int r = 1; + for (Annotation sentenceAnnotation : sentences) { + if(sentenceAnnotation.getFindings()!=null) { + for (Finding findingSelected : sentenceAnnotation.getFindings()) { + List all = findingSelected.generateSortedAnnotationsAll(); + String id_finding = ""; + for (Annotation annotation : all) { + JsonArray values = new JsonArray(); + String type = annotation.getFeature("ANNOTATION_TYPE"); + String id = "T"+t; + + //TODO source +// String source = annotation.getFeature("SOURCES"); +// if(source!=null && !source.equals("")) { +// id = id + " - SOURCE: " + source; +// } +// values.add("T"+t+ " - SOURCE: " + source); + + values.add(id); + values.add(type); + JsonArray offste = new JsonArray(); + JsonArray offste2 = new JsonArray(); + offste.add(annotation.getStartOffset()); + offste.add(annotation.getEndOffset()); + offste2.add(offste); + values.add(offste2); + entities.add(values); + if(type.equals("FINDING") || type.equals("STUDY_TESTCD") ) { + id_finding = "T"+t; + JsonArray values_a = new JsonArray(); + values_a.add("A"+a); + values_a.add("Notorious"); + values_a.add(id_finding); + attributes.add(values_a); + a++; + }else { + JsonArray values_r = new JsonArray(); + values_r.add("R"+r); + values_r.add("Relation"); + JsonArray values_r_e = new JsonArray(); + JsonArray values_r_e_v = new JsonArray(); + values_r_e_v.add("Entity"); + values_r_e_v.add(id_finding); + values_r_e.add(values_r_e_v); + JsonArray values_r_e_v_2 = new JsonArray(); + values_r_e_v_2.add("Subentity"); + values_r_e_v_2.add("T"+t); + values_r_e.add(values_r_e_v_2); + values_r.add(values_r_e); + relations.add(values_r); + r++; + } + t++; + } + } + } + + } + findings_evidence.add("entities", entities); + findings_evidence.add("attributes", attributes); + findings_evidence.add("relations", relations); + return gsonBuilder.toJson(findings_evidence).toString(); + } + + + /** + * Generate the relevant sentences snippet + * @param text + * @param sentences + * @return + */ + private String generateAllRelevantSentenceEvidenceSnippet(String text, List sentences) { + Gson gsonBuilder = new GsonBuilder().create(); + JsonObject relevant_evidence = new JsonObject(); + relevant_evidence.addProperty("text", text); + JsonArray entities = new JsonArray(); + //JsonArray attributes = new JsonArray(); + //JsonArray comments = new JsonArray(); + int t = 1; + for (Annotation sentenceAnnotation : sentences) { + JsonArray values_sentence = new JsonArray(); + values_sentence.add("T"+t + " - SCORE: " + sentenceAnnotation.getFeature("PRETOX_REL_SCORE")); + values_sentence.add("RELEVANT_SENTENCE"); + JsonArray offste_sentence = new JsonArray(); + JsonArray offste2_sentence = new JsonArray(); + offste_sentence.add(sentenceAnnotation.getStartOffset()); + offste_sentence.add(sentenceAnnotation.getEndOffset()); + offste2_sentence.add(offste_sentence); + values_sentence.add(offste2_sentence); + entities.add(values_sentence); + //entities.add("other thing"); + t++; + relevant_evidence.add("entities", entities); + //relevant_evidence.add("attributes", attributes); + //relevant_evidence.add("comments", comments); + } + + return gsonBuilder.toJson(relevant_evidence).toString(); + } -- GitLab From 00d4bd83d912f2070a60ea801565378d4f42b36e Mon Sep 17 00:00:00 2001 From: jcorvi Date: Wed, 21 Sep 2022 17:04:51 +0200 Subject: [PATCH 24/26] textual evidence by section draft dev --- .../api/controllers/ReportController.java | 16 +- .../api/services/TextualEvidenceService.java | 4 + .../services/TextualEvidenceServiceImpl.java | 156 ++++++++++-------- 3 files changed, 104 insertions(+), 72 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java index 22e8aa9..77957e9 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java @@ -124,16 +124,28 @@ public class ReportController { } @GetMapping(value = "/{reportId}/evidence/findings") - public ResponseEntity findAllFindingEvidence(@PathVariable(value="reportId") String reportId) { + public ResponseEntity findAllFindingEvidenceByReport(@PathVariable(value="reportId") String reportId) { String snippet = textualEvidenceService.findFindingsEvidenceByReportId(reportId); return new ResponseEntity(snippet, HttpStatus.OK); } + @GetMapping(value = "/{reportId}/{sectionId}/evidence/findings") + public ResponseEntity findAllFindingEvidenceByDocumentAnnotations(@PathVariable(value="reportId") String reportId, @PathVariable(value="sectionId") Long sectionId) { + String snippet = textualEvidenceService.findFindingsEvidenceByDocumentAnnotationsId(sectionId); + return new ResponseEntity(snippet, HttpStatus.OK); + } + @GetMapping(value = "/{reportId}/evidence/sentences") - public ResponseEntity findSentencesEvidence(@PathVariable(value="reportId") String reportId) { + public ResponseEntity findSentencesEvidenceByReport(@PathVariable(value="reportId") String reportId) { String snippet = textualEvidenceService.findSentencesEvidenceByReportId(reportId); return new ResponseEntity(snippet, HttpStatus.OK); } + @GetMapping(value = "/{reportId}/{sectionId}/evidence/sentences") + public ResponseEntity findSentencesEvidenceBySection(@PathVariable(value="reportId") String reportId, @PathVariable(value="sectionId") Long sectionId) { + String snippet = textualEvidenceService.findSentencesEvidenceByDocumentAnnotationsId(sectionId); + return new ResponseEntity(snippet, HttpStatus.OK); + } + } \ No newline at end of file diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java index f715d1d..cd48152 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java @@ -12,4 +12,8 @@ public interface TextualEvidenceService { String findSentencesEvidenceByReportId(String reportId); + String findFindingsEvidenceByDocumentAnnotationsId(Long documentAnnotationsId); + + String findSentencesEvidenceByDocumentAnnotationsId(Long documentAnnotationsId); + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java index c88f8d1..02d4b86 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java @@ -44,67 +44,45 @@ public class TextualEvidenceServiceImpl implements TextualEvidenceService{ } - /** - * Generate the snippet only of the text without annotations. - * @param text - * @return - */ - private String generateOnlyTextSnippet(String text) { - Gson gsonBuilder = new GsonBuilder().create(); - JsonObject findings_evidence = new JsonObject(); - findings_evidence.addProperty("text", text); - JsonArray entities = new JsonArray(); - JsonArray attributes = new JsonArray(); - JsonArray relations = new JsonArray(); - findings_evidence.add("entities", entities); - findings_evidence.add("attributes", attributes); - findings_evidence.add("relations", relations); - return gsonBuilder.toJson(findings_evidence).toString(); + + + public String findDocumentTextSubstringByDocumentId(Long id, Integer start, Integer end) { + return sectionRepository.findSectionTextSubstringByDocumentId(id, start, end); } + @Override - public String findFindingEvidenceByDocumentAnnotationsIdAndFindingId(Long documentAnnotationsId, Integer findingId) { - DocumentAnnotations documentAnnotations = documentAnnotationsRepository.findByDocumentId(documentAnnotationsId); - Finding findingSelected = null; - Annotation sentenceRelevantText = null; - for (Annotation annotation : documentAnnotations.getRelevantSentences()) { - for (Finding finding : annotation.getFindings()) { - if(finding.getFindingId().equals(findingId)) { - findingSelected = finding; - sentenceRelevantText = annotation; - break; - } - } - } - if(findingSelected!=null) { - //I removed relevant text as atribute so ... - //Annotation annotation = findingSelected.getRelevant_text(); - Annotation annotation = sentenceRelevantText; - int text_size = annotation.getEndOffset() - annotation.getStartOffset(); - int start_ = 0; - int start_off = 0; - if(annotation.getStartOffset()-Constants.SLICE_START >= 0) { - start_ = annotation.getStartOffset()-Constants.SLICE_START; - start_off = Constants.SLICE_START; - }else { - start_off = annotation.getStartOffset(); - } - String subtext = this.findDocumentTextSubstringByDocumentId(documentAnnotationsId, start_, text_size + Constants.SLICE_END); - subtext = Constants.POINTS + subtext + Constants.POINTS; - int start_annotation_aux = annotation.getStartOffset(); - annotation.setStartOffset(Constants.SLICE_START + Constants.POINTS_INT); - annotation.setEndOffset(Constants.SLICE_START + Constants.POINTS_INT + text_size); - return this.generateFindingSnippet(subtext, findingSelected, start_off, start_annotation_aux); + public String findFindingsEvidenceByReportId(String reportId) { + Report report = reportRepository.findById(reportId).get(); + if(report.getSections()!=null && report.getSections().size()>0) { + Section section = report.getSections().get(0); + return this.generateAllFindingsEvidenceSnippet(section.getText(), section.getAnnotations().getRelevantSentences()); } return ""; } - public String findDocumentTextSubstringByDocumentId(Long id, Integer start, Integer end) { - return sectionRepository.findSectionTextSubstringByDocumentId(id, start, end); + @Override + public String findSentencesEvidenceByReportId(String reportId) { + Report report = reportRepository.findById(reportId).get(); + if(report.getSections()!=null && report.getSections().size()>0) { + Section section = report.getSections().get(0); + return this.generateAllRelevantSentenceEvidenceSnippet(section.getText(), section.getAnnotations().getRelevantSentences()); + } + return ""; } - + @Override + public String findFindingsEvidenceByDocumentAnnotationsId(Long documentAnnotationsId) { + Section section = sectionRepository.findById(documentAnnotationsId.toString()).get(); + return this.generateAllFindingsEvidenceSnippet(section.getText(), section.getAnnotations().getRelevantSentences()); + } + + @Override + public String findSentencesEvidenceByDocumentAnnotationsId(Long documentAnnotationsId) { + Section section = sectionRepository.findById(documentAnnotationsId.toString()).get(); + return this.generateAllRelevantSentenceEvidenceSnippet(section.getText(), section.getAnnotations().getRelevantSentences()); + } /** @@ -242,26 +220,7 @@ public class TextualEvidenceServiceImpl implements TextualEvidenceService{ return gsonBuilder.toJson(json_to_return).toString(); } - - @Override - public String findFindingsEvidenceByReportId(String reportId) { - Report report = reportRepository.findById(reportId).get(); - if(report.getSections()!=null && report.getSections().size()>0) { - Section section = report.getSections().get(0); - return this.generateAllFindingsEvidenceSnippet(section.getText(), section.getAnnotations().getRelevantSentences()); - } - return ""; - } - @Override - public String findSentencesEvidenceByReportId(String reportId) { - Report report = reportRepository.findById(reportId).get(); - if(report.getSections()!=null && report.getSections().size()>0) { - Section section = report.getSections().get(0); - return this.generateAllRelevantSentenceEvidenceSnippet(section.getText(), section.getAnnotations().getRelevantSentences()); - } - return ""; - } /** * Generate the evidence of view all button. @@ -377,7 +336,64 @@ public class TextualEvidenceServiceImpl implements TextualEvidenceService{ return gsonBuilder.toJson(relevant_evidence).toString(); } + + + /** + * Generate the snippet only of the text without annotations. + * @param text + * @return + */ + private String generateOnlyTextSnippet(String text) { + Gson gsonBuilder = new GsonBuilder().create(); + JsonObject findings_evidence = new JsonObject(); + findings_evidence.addProperty("text", text); + JsonArray entities = new JsonArray(); + JsonArray attributes = new JsonArray(); + JsonArray relations = new JsonArray(); + findings_evidence.add("entities", entities); + findings_evidence.add("attributes", attributes); + findings_evidence.add("relations", relations); + return gsonBuilder.toJson(findings_evidence).toString(); + } + + + @Override + public String findFindingEvidenceByDocumentAnnotationsIdAndFindingId(Long documentAnnotationsId, Integer findingId) { + DocumentAnnotations documentAnnotations = documentAnnotationsRepository.findByDocumentId(documentAnnotationsId); + Finding findingSelected = null; + Annotation sentenceRelevantText = null; + for (Annotation annotation : documentAnnotations.getRelevantSentences()) { + for (Finding finding : annotation.getFindings()) { + if(finding.getFindingId().equals(findingId)) { + findingSelected = finding; + sentenceRelevantText = annotation; + break; + } + } + } + if(findingSelected!=null) { + //I removed relevant text as atribute so ... + //Annotation annotation = findingSelected.getRelevant_text(); + Annotation annotation = sentenceRelevantText; + int text_size = annotation.getEndOffset() - annotation.getStartOffset(); + int start_ = 0; + int start_off = 0; + if(annotation.getStartOffset()-Constants.SLICE_START >= 0) { + start_ = annotation.getStartOffset()-Constants.SLICE_START; + start_off = Constants.SLICE_START; + }else { + start_off = annotation.getStartOffset(); + } + String subtext = this.findDocumentTextSubstringByDocumentId(documentAnnotationsId, start_, text_size + Constants.SLICE_END); + subtext = Constants.POINTS + subtext + Constants.POINTS; + int start_annotation_aux = annotation.getStartOffset(); + annotation.setStartOffset(Constants.SLICE_START + Constants.POINTS_INT); + annotation.setEndOffset(Constants.SLICE_START + Constants.POINTS_INT + text_size); + return this.generateFindingSnippet(subtext, findingSelected, start_off, start_annotation_aux); + } + return ""; + } } -- GitLab From c2f24696bff584273e8ad86d0c5c28caacebece8 Mon Sep 17 00:00:00 2001 From: Javi Corvi Date: Thu, 22 Sep 2022 12:33:54 +0200 Subject: [PATCH 25/26] new entry points --- .../api/controllers/ReportController.java | 27 +++++++++++-------- .../pretox/rest/api/model/Section.java | 10 +++++++ .../api/repository/SectionRepository.java | 5 +++- .../rest/api/services/ReportService.java | 7 +++++ .../rest/api/services/ReportServiceImpl.java | 15 +++++++++++ .../services/TextualEvidenceServiceImpl.java | 11 ++++---- 6 files changed, 58 insertions(+), 17 deletions(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java index 77957e9..a93e562 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java @@ -100,9 +100,14 @@ public class ReportController { return ResponseEntity.ok().body(reportService.restore(reportId)); } - @GetMapping(value ="/{id}") - public ResponseEntity find(@PathVariable(value="id") String id) { - return new ResponseEntity(reportService.findById(id), HttpStatus.OK); + @GetMapping(value ="/{reportId}") + public ResponseEntity find(@PathVariable(value="reportId") String reportId) { + return new ResponseEntity(reportService.findById(reportId), HttpStatus.OK); + } + + @GetMapping(value ="/{reportId}/section/{sectionId}") + public ResponseEntity findBySectionId(@PathVariable(value="reportId") String reportId, @PathVariable(value="sectionId") Long sectionId) { + return new ResponseEntity(reportService.findReportByIdAndSectionById(reportId, sectionId), HttpStatus.OK); } @GetMapping(value = "/{reportId}/text") @@ -111,15 +116,15 @@ public class ReportController { return new ResponseEntity(snippet, HttpStatus.OK); } - @GetMapping(value = "/{documentAnnotationsId}/evidence/finding/{findingId}") - public ResponseEntity findFinding(@PathVariable(value="documentAnnotationsId") Long documentAnnotationsId, @PathVariable(value="findingId") Integer findingId) { - String snippet = textualEvidenceService.findFindingEvidenceByDocumentAnnotationsIdAndFindingId(documentAnnotationsId, findingId); + @GetMapping(value = "/{sectionId}/evidence/finding/{findingId}") + public ResponseEntity findFinding(@PathVariable(value="sectionId") Long sectionId, @PathVariable(value="findingId") Integer findingId) { + String snippet = textualEvidenceService.findFindingEvidenceByDocumentAnnotationsIdAndFindingId(sectionId, findingId); return new ResponseEntity(snippet, HttpStatus.OK); } - @GetMapping(value = "/{documentAnnotationsId}/evidence/sentence/{sentenceId}") - public ResponseEntity findSentence(@PathVariable(value="documentAnnotationsId") Long documentAnnotationsId, @PathVariable(value="sentenceId") Integer sentenceId) { - String snippet = textualEvidenceService.findSentenceEvidenceByDocumentAnnotationsIdAndSentenceId(documentAnnotationsId, sentenceId); + @GetMapping(value = "/{sectionId}/evidence/sentence/{sentenceId}") + public ResponseEntity findSentence(@PathVariable(value="documentAnnotationsId") Long sectionId, @PathVariable(value="sentenceId") Integer sentenceId) { + String snippet = textualEvidenceService.findSentenceEvidenceByDocumentAnnotationsIdAndSentenceId(sectionId, sentenceId); return new ResponseEntity(snippet, HttpStatus.OK); } @@ -129,7 +134,7 @@ public class ReportController { return new ResponseEntity(snippet, HttpStatus.OK); } - @GetMapping(value = "/{reportId}/{sectionId}/evidence/findings") + @GetMapping(value = "/{reportId}/section/{sectionId}/evidence/findings") public ResponseEntity findAllFindingEvidenceByDocumentAnnotations(@PathVariable(value="reportId") String reportId, @PathVariable(value="sectionId") Long sectionId) { String snippet = textualEvidenceService.findFindingsEvidenceByDocumentAnnotationsId(sectionId); return new ResponseEntity(snippet, HttpStatus.OK); @@ -141,7 +146,7 @@ public class ReportController { return new ResponseEntity(snippet, HttpStatus.OK); } - @GetMapping(value = "/{reportId}/{sectionId}/evidence/sentences") + @GetMapping(value = "/{reportId}/section/{sectionId}/evidence/sentences") public ResponseEntity findSentencesEvidenceBySection(@PathVariable(value="reportId") String reportId, @PathVariable(value="sectionId") Long sectionId) { String snippet = textualEvidenceService.findSentencesEvidenceByDocumentAnnotationsId(sectionId); return new ResponseEntity(snippet, HttpStatus.OK); diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java index 33999f7..ed39ac9 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java @@ -78,4 +78,14 @@ public class Section{ this.annotations = annotations; } + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepository.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepository.java index 8e4dbb2..f47a410 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepository.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepository.java @@ -1,8 +1,11 @@ package es.bsc.inb.etransafe.pretox.rest.api.repository; +import java.util.Optional; + import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; +import es.bsc.inb.etransafe.pretox.rest.api.model.Report; import es.bsc.inb.etransafe.pretox.rest.api.model.Section; @@ -10,7 +13,7 @@ import es.bsc.inb.etransafe.pretox.rest.api.model.Section; @Repository public interface SectionRepository extends SectionRepositoryCustom, MongoRepository { - + Optional
findById(Long sectionId); } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java index 4dae592..b9a596b 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java @@ -54,6 +54,13 @@ public interface ReportService { * @return */ public Report findById(String id); + /** + * + * @param reportId + * @param sectionId + * @return + */ + public Report findReportByIdAndSectionById(String reportId, Long sectionId); } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java index 0b63885..35de1b0 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java @@ -22,6 +22,7 @@ import com.mongodb.client.gridfs.model.GridFSFile; import es.bsc.inb.etransafe.pretox.rest.api.model.RecordState; import es.bsc.inb.etransafe.pretox.rest.api.model.Report; import es.bsc.inb.etransafe.pretox.rest.api.model.ReportStatus; +import es.bsc.inb.etransafe.pretox.rest.api.model.Section; import es.bsc.inb.etransafe.pretox.rest.api.repository.ReportRepository; @Service @@ -124,5 +125,19 @@ public class ReportServiceImpl implements ReportService { return reportRepository.save(report); } + @Override + public Report findReportByIdAndSectionById(String reportId, Long sectionId) { + Report report = reportRepository.findById(reportId).get(); + Section selected = null; + for (Section section : report.getSections()) { + if(section.getId().equals(sectionId)) { + selected = section; + } + } + report.getSections().clear(); + report.getSections().add(selected); + return report; + } + } diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java index 02d4b86..355071c 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java @@ -73,14 +73,14 @@ public class TextualEvidenceServiceImpl implements TextualEvidenceService{ } @Override - public String findFindingsEvidenceByDocumentAnnotationsId(Long documentAnnotationsId) { - Section section = sectionRepository.findById(documentAnnotationsId.toString()).get(); + public String findFindingsEvidenceByDocumentAnnotationsId(Long sectionId) { + Section section = sectionRepository.findById(sectionId).get(); return this.generateAllFindingsEvidenceSnippet(section.getText(), section.getAnnotations().getRelevantSentences()); } @Override - public String findSentencesEvidenceByDocumentAnnotationsId(Long documentAnnotationsId) { - Section section = sectionRepository.findById(documentAnnotationsId.toString()).get(); + public String findSentencesEvidenceByDocumentAnnotationsId(Long sectionId) { + Section section = sectionRepository.findById(sectionId).get(); return this.generateAllRelevantSentenceEvidenceSnippet(section.getText(), section.getAnnotations().getRelevantSentences()); } @@ -318,7 +318,8 @@ public class TextualEvidenceServiceImpl implements TextualEvidenceService{ int t = 1; for (Annotation sentenceAnnotation : sentences) { JsonArray values_sentence = new JsonArray(); - values_sentence.add("T"+t + " - SCORE: " + sentenceAnnotation.getFeature("PRETOX_REL_SCORE")); + values_sentence.add("T"+t); + //values_sentence.add("T"+t + " - SCORE: " + sentenceAnnotation.getFeature("PRETOX_REL_SCORE")); values_sentence.add("RELEVANT_SENTENCE"); JsonArray offste_sentence = new JsonArray(); JsonArray offste2_sentence = new JsonArray(); -- GitLab From cbd6c4eccd06f15b967149524bd3f4f47637aac2 Mon Sep 17 00:00:00 2001 From: jcorvi Date: Fri, 23 Sep 2022 12:49:46 +0200 Subject: [PATCH 26/26] fig sentence evidence bug --- .../etransafe/pretox/rest/api/controllers/ReportController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java index a93e562..987fe12 100644 --- a/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java +++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java @@ -123,7 +123,7 @@ public class ReportController { } @GetMapping(value = "/{sectionId}/evidence/sentence/{sentenceId}") - public ResponseEntity findSentence(@PathVariable(value="documentAnnotationsId") Long sectionId, @PathVariable(value="sentenceId") Integer sentenceId) { + public ResponseEntity findSentence(@PathVariable(value="sectionId") Long sectionId, @PathVariable(value="sentenceId") Integer sentenceId) { String snippet = textualEvidenceService.findSentenceEvidenceByDocumentAnnotationsIdAndSentenceId(sectionId, sentenceId); return new ResponseEntity(snippet, HttpStatus.OK); } -- GitLab