diff --git a/pom.xml b/pom.xml
index f8a0691fb15ab140541fdb859f9a0ad97cba5627..a86343008d8275dbaedd9bb7a5733469467c6e76 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/controllers/DocumentController.java b/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java
deleted file mode 100644
index d1d7d9bcb1d9099729aa64735f19d0b9eee138db..0000000000000000000000000000000000000000
--- a/src/main/java/es/bsc/inb/ades/rest/api/controllers/DocumentController.java
+++ /dev/null
@@ -1,170 +0,0 @@
-package es.bsc.inb.ades.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;
-
-
-@RestController
-@CrossOrigin(origins="*")
-public class DocumentController {
-
-
-
- @Autowired
- public DocumentService documentService;
-
- @RequestMapping("/documents")
- public List findAll() {
- return documentService.findAll();
- }
-
- @RequestMapping("/documents/{id}")
- public DocumentAnnotations find(@PathVariable(value="id") Long id) {
- return documentService.findDocumentAnnotationsByDocumentId(id);
- }
-
- @RequestMapping("/document_data/{id}")
- public Document findDocument(@PathVariable(value="id") Long id) {
- return documentService.findByDocumentId(id);
- }
-
- @RequestMapping("/documents/{id}/srdomain")
- public DocumentAnnotations findDocumentSRDomain(@PathVariable(value="id") Long id) {
- 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);
- 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}")
- 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) {
- 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) {
- 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("/documents/{id}/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")
- 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);
- 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);
- return snippet;
- }
-
- @RequestMapping("/documents/{id}/text")
- public String findDocumentText(@PathVariable(value="id") Long id) {
- 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){
- String filename = "Study_Report_" + documentId +".txt";
- byte[] content = documentService.exportDocumentAnnotation(documentId);
- HttpHeaders head = new HttpHeaders();
- head.setContentType(MediaType.parseMediaType("text/plain"));
- head.add("content-disposition", "attachment; filename="+filename);
- head.setContentDispositionFormData(filename, filename);
- head.setCacheControl("must-revalidate, post-check=0, pre-check=0");
- return new ResponseEntity<>(content, head,HttpStatus.OK);
- }
-
- @RequestMapping(value = "/documents/remove/{id}")
- public String removeDocument(@PathVariable("id") long documentId){
- documentService.removeDocument(documentId);
- return "true";
- }
-
- @RequestMapping(value = "/documents/restore/{id}")
- public String restoreDocument(@PathVariable("id") long documentId){
- documentService.restoreDocument(documentId);
- return "true";
- }
-
- @RequestMapping("/documents/{id}/tracking")
- public DocumentTracking findTrackings(@PathVariable(value="id") Long id) {
- return documentService.findTrackings(id);
- }
-
-
-
-
-
-
-}
\ No newline at end of file
diff --git a/src/main/java/es/bsc/inb/ades/rest/api/controllers/LivenessController.java b/src/main/java/es/bsc/inb/ades/rest/api/controllers/LivenessController.java
deleted file mode 100644
index 05e09822afbecb10b6a377d77adfb38703ac98f5..0000000000000000000000000000000000000000
--- a/src/main/java/es/bsc/inb/ades/rest/api/controllers/LivenessController.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package es.bsc.inb.ades.rest.api.controllers;
-
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@CrossOrigin("*")
-@RestController
-public class LivenessController {
-
- @GetMapping(path = "/liveness")
- public String liveness() {
- return "true";
- }
-
- @GetMapping(path = "/readiness")
- public String readeness() {
- return "true";
- }
-
- @GetMapping(path = "/hello")
- public String hello() {
- return "holita";
- }
-}
diff --git a/src/main/java/es/bsc/inb/ades/rest/api/model/Status.java b/src/main/java/es/bsc/inb/ades/rest/api/model/Status.java
deleted file mode 100644
index afbb3606ded52ed02c0f348ffc0277865251d673..0000000000000000000000000000000000000000
--- a/src/main/java/es/bsc/inb/ades/rest/api/model/Status.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package es.bsc.inb.ades.rest.api.model;
-
-public enum Status {
- DRAFT, IN_PROGRESS, FINISHED, CLOSED
-}
diff --git a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentRepositoryCustom.java b/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentRepositoryCustom.java
deleted file mode 100644
index 4951ad57111eb7cc4ea4108c0c7a7dddef5baad0..0000000000000000000000000000000000000000
--- a/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentRepositoryCustom.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package es.bsc.inb.ades.rest.api.repository;
-
-import es.bsc.inb.ades.rest.api.model.DocumentAnnotations;
-import es.bsc.inb.ades.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/ades/rest/api/repository/DocumentTrackingRepositoryCustom.java b/src/main/java/es/bsc/inb/ades/rest/api/repository/DocumentTrackingRepositoryCustom.java
deleted file mode 100644
index a9c9b6ec197a1f4b286ca6014489d275776b26e0..0000000000000000000000000000000000000000
--- 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/security/SecurityConfig.java b/src/main/java/es/bsc/inb/ades/rest/api/security/SecurityConfig.java
deleted file mode 100644
index 51715bc1b2f8181855103e0a32f895b929fff8a0..0000000000000000000000000000000000000000
--- a/src/main/java/es/bsc/inb/ades/rest/api/security/SecurityConfig.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package es.bsc.inb.ades.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/ades/rest/api/security/SecurityConfiguration.java b/src/main/java/es/bsc/inb/ades/rest/api/security/SecurityConfiguration.java
deleted file mode 100644
index 2a8dfb3372397bcdcbe3b42cf69a86c748a9192e..0000000000000000000000000000000000000000
--- a/src/main/java/es/bsc/inb/ades/rest/api/security/SecurityConfiguration.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package es.bsc.inb.ades.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/ades/rest/api/security/WebController.java b/src/main/java/es/bsc/inb/ades/rest/api/security/WebController.java
deleted file mode 100644
index b675377acfbc09a047fe2695b56caa562ed50e01..0000000000000000000000000000000000000000
--- a/src/main/java/es/bsc/inb/ades/rest/api/security/WebController.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package es.bsc.inb.ades.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/ades/rest/api/security/basic/inmemory/AuthenticationBean.java b/src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/AuthenticationBean.java
deleted file mode 100644
index 7f26752ac3bc33139ca0795d8fd648906007da94..0000000000000000000000000000000000000000
--- a/src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/AuthenticationBean.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package es.bsc.inb.ades.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/ades/rest/api/security/basic/inmemory/BasicAuthenticationController.java b/src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/BasicAuthenticationController.java
deleted file mode 100644
index 014039723efa1dcefca281007b1a47316e5fbb9c..0000000000000000000000000000000000000000
--- a/src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/BasicAuthenticationController.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package es.bsc.inb.ades.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/ades/rest/api/security/basic/inmemory/SecurityConfig.java b/src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/SecurityConfig.java
deleted file mode 100644
index 68ae896b735bf85237f929bab89e48c66060f441..0000000000000000000000000000000000000000
--- a/src/main/java/es/bsc/inb/ades/rest/api/security/basic/inmemory/SecurityConfig.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package es.bsc.inb.ades.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");
- }
- }
-}
diff --git a/src/main/java/es/bsc/inb/ades/rest/api/services/FileService.java b/src/main/java/es/bsc/inb/ades/rest/api/services/FileService.java
deleted file mode 100644
index b9fd2e54749a4e80cc718c9006c19a4cde447969..0000000000000000000000000000000000000000
--- a/src/main/java/es/bsc/inb/ades/rest/api/services/FileService.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package es.bsc.inb.ades.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 {
-
- /*
- Metodo para crear la carpeta donde vamos a guardar los archivos
- */
- public void init();
-
- /*
- 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
- */
- public String deleteFile(String filename);
- /**
- *
- * @param files
- * @return
- */
- public List validate(MultipartFile[] files, Boolean allow_duplicates);
-}
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 8e738bf16ce4b05bea565bfb112a73199e9285f2..5b31e1f0c692aa310a8db00b8c099367a42d89b5 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 892c188c398cf3d14e61b91e5508047795627ea7..76adc7ba379fb66468c7167c6fe36f965fbae4c0 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 7ba7893c9be98d5a466cff598e4906dc6ffd9d24..8e80e7b0d78179a682621e05e240d0c1911c779e 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/etransafe/pretox/rest/api/controllers/DocumentController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java
new file mode 100644
index 0000000000000000000000000000000000000000..0f86156391552656e674b96d3c141142bc651dd6
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/DocumentController.java
@@ -0,0 +1,164 @@
+package es.bsc.inb.etransafe.pretox.rest.api.controllers;
+
+import java.util.List;
+
+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.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.PutMapping;
+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.SRDomainDocument;
+import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding;
+import es.bsc.inb.etransafe.pretox.rest.api.model.ReportStatus;
+import es.bsc.inb.etransafe.pretox.rest.api.services.DocumentService;
+
+
+@RestController
+@CrossOrigin(origins="*")
+@RequestMapping("/documents")
+public class DocumentController {
+
+ @Autowired
+ public DocumentService documentService;
+
+ @PutMapping(value ="/{id}/srfinding/update")
+ public ResponseEntity updateFinding(@PathVariable(value="id") Long id,@RequestBody SRDomainFinding srDomainFinding) {
+ return new ResponseEntity(documentService.saveFinding(id, srDomainFinding), HttpStatus.OK);
+ }
+
+ @PutMapping(value ="/{id}/srfinding/add")
+ public ResponseEntity addFinding(@PathVariable(value="id") Long id, @RequestBody SRDomainFinding srDomainFinding) {
+ return new ResponseEntity(documentService.addFinding(id, srDomainFinding), HttpStatus.OK);
+ }
+
+ @GetMapping
+ public ResponseEntity> findAll() {
+ return new ResponseEntity>(documentService.findAll(), HttpStatus.OK);
+ }
+
+ @GetMapping(value ="/{id}")
+ public ResponseEntity find(@PathVariable(value="id") Long id) {
+ return new ResponseEntity(documentService.findDocumentAnnotationsByDocumentId(id), HttpStatus.OK);
+ }
+
+ @GetMapping(value = "/srdomain/{id}")
+ public ResponseEntity findSRDomainDocument(@PathVariable(value="id") Long id) {
+ return new ResponseEntity(documentService.findSRDomainDocumentByDocumentId(id), HttpStatus.OK);
+ }
+
+// @GetMapping(value = "/document_data/{id}")
+// public Document findDocument(@PathVariable(value="id") Long id) {
+// return documentService.findByDocumentId(id);
+// }
+
+// @GetMapping(value = "/{id}/srdomain")
+// public ResponseEntity findDocumentSRDomain(@PathVariable(value="id") Long id) {
+// return new ResponseEntity(documentService.findDocumentSRDomainByDocumentId(id), HttpStatus.OK);
+// }
+
+ @PutMapping(value = "/{id}/move/{status}")
+ public ResponseEntity moveDocument(@PathVariable(value="id") Long id, @PathVariable(value="status") ReportStatus status) {
+ documentService.moveDocument(id, status);
+ return new ResponseEntity(HttpStatus.OK);
+ }
+
+ @PutMapping(value = "/{id}/srfinding/{srFindingId}/export/{export}")
+ 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 new ResponseEntity(HttpStatus.OK);
+ }
+
+ @PutMapping(value = "/{id}/srfinding/{srFindingId}/validation/{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 new ResponseEntity(HttpStatus.OK);
+ }
+
+// @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 ResponseEntity findSentencesEvidence(@PathVariable(value="id") Long id) {
+ String snippet = documentService.findSentencesEvidenceByDocumentId(id);
+ return new ResponseEntity(snippet, HttpStatus.OK);
+ }
+
+ @GetMapping(value = "/{id}/evidence/sentence/{sentenceId}")
+ public ResponseEntity findSentence(@PathVariable(value="id") Long id, @PathVariable(value="sentenceId") Integer sentenceId) {
+ String snippet = documentService.findSentenceEvidenceByDocumentIdAndSentenceId(id, sentenceId);
+ return new ResponseEntity(snippet, HttpStatus.OK);
+ }
+
+ @GetMapping(value = "/{id}/evidence/findings")
+ public ResponseEntity findAllFindingEvidence(@PathVariable(value="id") Long id) {
+ String snippet = documentService.findFindingsEvidenceByDocumentId(id);
+ return new ResponseEntity(snippet, HttpStatus.OK);
+ }
+
+ @GetMapping(value = "/{id}/evidence/finding/{findingId}")
+ public ResponseEntity findFinding(@PathVariable(value="id") Long id, @PathVariable(value="findingId") Integer findingId) {
+ String snippet = documentService.findFindingEvidenceByDocumentIdAndFindingId(id, findingId);
+ return new ResponseEntity(snippet, HttpStatus.OK);
+ }
+
+
+
+ @GetMapping(value = "/{id}/evidence/all")
+ public ResponseEntity findAllEvidence(@PathVariable(value="id") Long id) {
+ String snippet = documentService.findAllEvidenceByDocumentId(id);
+ return new ResponseEntity(snippet, HttpStatus.OK);
+ }
+
+ @GetMapping(value = "/{id}/text")
+ public ResponseEntity findDocumentText(@PathVariable(value="id") Long id) {
+ String snippet = documentService.findTextByDocumentId(id);
+ return new ResponseEntity(snippet, HttpStatus.OK);
+ }
+
+
+ @GetMapping(value = "/export/{id}")
+ public ResponseEntity generateReport(@PathVariable("id") long documentId){
+ String filename = "Study_Report_" + documentId +".txt";
+ byte[] content = documentService.exportDocumentAnnotation(documentId);
+ HttpHeaders head = new HttpHeaders();
+ head.setContentType(MediaType.parseMediaType("text/plain"));
+ head.add("content-disposition", "attachment; filename="+filename);
+ head.setContentDispositionFormData(filename, filename);
+ head.setCacheControl("must-revalidate, post-check=0, pre-check=0");
+ return new ResponseEntity<>(content, head,HttpStatus.OK);
+ }
+
+ @DeleteMapping(value = "/remove/{id}")
+ public ResponseEntity removeDocument(@PathVariable("id") long documentId){
+ documentService.removeDocument(documentId);
+ return new ResponseEntity(HttpStatus.OK);
+ }
+
+ @GetMapping(value = "/restore/{id}")
+ public ResponseEntity restoreDocument(@PathVariable("id") long documentId){
+ documentService.restoreDocument(documentId);
+ return new ResponseEntity(HttpStatus.OK);
+ }
+
+ @GetMapping(value = "/{id}/tracking")
+ 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/ades/rest/api/controllers/FileController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/FileController.java
similarity index 50%
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 9e10790fc63b609bb1f0383fa8d6ece79fa8e78a..5f28c967922b2254f39fd0c100303d58b3729355 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,29 +1,21 @@
-package es.bsc.inb.ades.rest.api.controllers;
+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.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.services.FileService;
@Controller
@CrossOrigin("*")
@@ -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/LivenessController.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LivenessController.java
new file mode 100644
index 0000000000000000000000000000000000000000..3e265d4eb1d3a41592dee4b47f131bcce6faebdc
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/LivenessController.java
@@ -0,0 +1,23 @@
+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;
+
+@CrossOrigin("*")
+@RestController
+public class LivenessController {
+
+ @GetMapping(path = "/liveness")
+ public ResponseEntity liveness() {
+ return new ResponseEntity(HttpStatus.OK);
+ }
+
+ @GetMapping(path = "/readiness")
+ public ResponseEntity readeness() {
+ 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
new file mode 100644
index 0000000000000000000000000000000000000000..987fe12d7d532068ee618c756f92d37194780317
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/controllers/ReportController.java
@@ -0,0 +1,156 @@
+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.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.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.DocumentService;
+import es.bsc.inb.etransafe.pretox.rest.api.services.ReportService;
+import es.bsc.inb.etransafe.pretox.rest.api.services.TextualEvidenceService;
+
+
+@RestController
+@CrossOrigin(origins="*")
+@RequestMapping("/reports")
+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();
+ 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 {
+ 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());
+ });
+ }
+ if(errors.size()!=0) {
+ errors.add("Validation fail, no legacy report was uploaded.");
+ return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errors);
+ }
+ 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.BAD_REQUEST).body(messages);
+ }
+ }
+
+ @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() + "\"")
+ .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));
+ }
+
+ @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")
+ public ResponseEntity findReportText(@PathVariable(value="reportId") String reportId) {
+ String snippet = textualEvidenceService.findTextByReportId(reportId);
+ return new ResponseEntity(snippet, HttpStatus.OK);
+ }
+
+ @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 = "/{sectionId}/evidence/sentence/{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);
+ }
+
+ @GetMapping(value = "/{reportId}/evidence/findings")
+ public ResponseEntity findAllFindingEvidenceByReport(@PathVariable(value="reportId") String reportId) {
+ String snippet = textualEvidenceService.findFindingsEvidenceByReportId(reportId);
+ return new ResponseEntity(snippet, HttpStatus.OK);
+ }
+
+ @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);
+ }
+
+ @GetMapping(value = "/{reportId}/evidence/sentences")
+ public ResponseEntity findSentencesEvidenceByReport(@PathVariable(value="reportId") String reportId) {
+ String snippet = textualEvidenceService.findSentencesEvidenceByReportId(reportId);
+ return new ResponseEntity(snippet, HttpStatus.OK);
+ }
+
+ @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);
+ }
+
+
+}
\ No newline at end of file
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 7116b1a31e64e0d4109509183b693d0c5fdc4235..c79685046bd24392aec6a7a7cb5d81f8f14419c2 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 33ffa9422d7ef54b38c40c2c8d068cb06369b01f..cd5fe43f0a3a8414b4d76d7576fe447a217d5916 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 85%
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 bff1e3c00a9812c26ea3d7c782e40c12f34c2007..754b6b71882a62f26ca74002a2e26fe26b574187 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,10 +1,7 @@
-package es.bsc.inb.ades.rest.api.model;
-
-import java.util.List;
+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="documents")
@@ -24,7 +21,7 @@ public class Document{
private String fileName;
- private Status status;
+ private ReportStatus status;
private RecordState recordState;
@@ -65,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/ades/rest/api/model/DocumentAnnotations.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/DocumentAnnotations.java
similarity index 65%
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 8552ed6f01b7f2f0c3a94c649afb25188aa75f66..dceadf3eb0da85528093cfe61fa0dadec390aa77 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;
@@ -21,11 +21,9 @@ public class DocumentAnnotations {
@Field("relevant_sentences")
private ArrayList relevantSentences;
- private ArrayList findings;
+ private List srDomainFindings;
- private List srdomainfindings;
-
- private Status status;
+ private ReportStatus status;
public DocumentAnnotations() {}
@@ -62,32 +60,21 @@ public class DocumentAnnotations {
this.documentId = documentId;
}
- public ArrayList getFindings() {
- return findings;
- }
-
- public void setFindings(ArrayList findings) {
- this.findings = findings;
- }
-
- 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() {
- 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/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 69a6d4d0c3243351cc9027d3a77799ac123d585d..bc844488270bb7554c0aad6743a31c3039469679 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 5722fde8976a93f7cfabe4eac991ec338913a26d..49478b5e858eaf940e7ec7a30897dffc28ccd2a8 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 f000e463f40f59f5b18cc135eaa0d5e1a7fbe757..0d51e3e2fee9ccfbc0d7239b5b6cc40bde72da1a 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 8d2c5ae93e8c09c08b5986b4f7bea8d342097016..d9ad2478994b068b2aa016a574d4e3b9b3b702b6 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 98%
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 2834940219cde491d2e442d96159c7a2eb66c6c1..d4f40198192252ae88f5f943bfa8eda1be2fd98c 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;
@@ -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/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 51ab40a5f2f1b42f80138ebdbbd3efbd2db04916..b050f95a1148e83ab3dfa437022e5f15381f9701 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 995de73ef59abfb9e6201771b0bd5982c0df7d5f..7a4afbcc76e745fc984dfae56e9d09cc57753cb8 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/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 0000000000000000000000000000000000000000..0857ac8a90fb44594ab069c90f264c36d3933149
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Report.java
@@ -0,0 +1,140 @@
+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 {
+
+ @Id
+ private String id;
+
+ private Date uploadDate;
+
+ private String fileName;
+
+ private String name;
+
+ private String fileType;
+
+ private String fileSize;
+
+ //This field is only for response, the file is stored in the gridFS object
+ private byte[] file;
+
+ private String gridFSId;
+
+ private ReportStatus status;
+
+ private RecordState recordState;
+
+ private Boolean hasSections;
+
+ @DBRef
+ private List sections;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ 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 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;
+ }
+
+ 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;
+ }
+
+ public ReportStatus getStatus() {
+ return status;
+ }
+
+ public void setStatus(ReportStatus status) {
+ this.status = status;
+ }
+
+ public RecordState getRecordState() {
+ return recordState;
+ }
+
+ 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;
+ }
+
+ 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/ReportStatus.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/ReportStatus.java
new file mode 100644
index 0000000000000000000000000000000000000000..142b1a0b9f94c080ddfb92d96ea67c860f795c9f
--- /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
new file mode 100644
index 0000000000000000000000000000000000000000..ed0a0e1af1c74b16a87b7853138bf4c44adbaaa9
--- /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 ReportStatus 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 ReportStatus getStatus() {
+ if(status==null)return ReportStatus.CURATION_DRAFT;
+ return status;
+ }
+
+ public void setStatus(ReportStatus 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/ades/rest/api/model/SRDomainFinding.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFinding.java
similarity index 53%
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 bd2b6da2a2604182b3bbf854af2a11b9351230cc..014e51d781f63967cda9f1d1f94f13f489cc2f62 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,328 +1,299 @@
-package es.bsc.inb.ades.rest.api.model;
-
-import org.apache.tomcat.util.bcel.classfile.Constant;
-
-import es.bsc.inb.ades.rest.api.util.Constants;
+package es.bsc.inb.etransafe.pretox.rest.api.model;
/**
- * 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 SRGRPNAM = ""; // 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";
-
-
-
-
- public String getStatus() {
+ private SRDomainFindingStatus status = SRDomainFindingStatus.non_curated;
+
+ public SRDomainFindingStatus getStatus() {
return status;
}
- public void setStatus(String status) {
+ public void setStatus(SRDomainFindingStatus status) {
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 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 void setSROBSV(String sROBSV) {
+ SROBSV = 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 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/model/SRDomainFindingStatus.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/SRDomainFindingStatus.java
new file mode 100644
index 0000000000000000000000000000000000000000..d5878b58645f8bda535b1cb9684ef4e2dfe3e8bd
--- /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/model/Section.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java
new file mode 100644
index 0000000000000000000000000000000000000000..ed39ac9ad7725f67f055af83076a38b32949fbb4
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/model/Section.java
@@ -0,0 +1,91 @@
+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")
+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;
+
+ @DBRef
+ private DocumentAnnotations annotations;
+
+ 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;
+ }
+
+ public DocumentAnnotations getAnnotations() {
+ return annotations;
+ }
+
+ public void setAnnotations(DocumentAnnotations annotations) {
+ 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/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 94a6cafdef609d2e63988812757d91a3526f30e6..84bf18bae5e0b9f0be5b638e4429e1f181aaba08 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 64%
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 38a021cb399bc8307422040c0b37248357e86119..d0f4a4612f3b77b3b513a71e2ce423c542124e2e 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,13 +1,15 @@
-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 {
+ DocumentAnnotations findByDocumentId(String id);
+
DocumentAnnotations findByDocumentId(Long id);
}
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 8cddfbe84c237a22d0b47ba77af82b181cc0454f..3c6aa15376a047aa19da2e6f63f17714798d28f9 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 0a7317ad4c15e9aedd4356c758baef7d0a3626db..284629019dc92ecf7cce2f5ab8ab548f75920ce8 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/etransafe/pretox/rest/api/repository/DocumentRepositoryCustom.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryCustom.java
new file mode 100644
index 0000000000000000000000000000000000000000..1937003af64e3d0f97e31b4f88c3f827905191ab
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/DocumentRepositoryCustom.java
@@ -0,0 +1,10 @@
+package es.bsc.inb.etransafe.pretox.rest.api.repository;
+
+/**
+ * Custom Interface for Document
+ * @author jcorvi
+ *
+ */
+public interface DocumentRepositoryCustom {
+
+}
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 65%
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 260542d08814ad4d76de31ca14c18e33830d4a0a..4b86c8b4e7a833cfc9d344ee6596d5f23cb4e000 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,9 +1,8 @@
-package es.bsc.inb.ades.rest.api.repository;
+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;
@@ -12,9 +11,8 @@ 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.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/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 126b1f050475e2ce020c8331145a0e9d2379a9d1..19d7f6dd01cfe1648af1d057f4eab07571d39200 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 0000000000000000000000000000000000000000..d3db001f9165a3fd994c6c3db71d0857ac10f023
--- /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/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 0000000000000000000000000000000000000000..81e0ca20af76b49ad4fc978a272447dd5db32be4
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepository.java
@@ -0,0 +1,17 @@
+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;
+
+import es.bsc.inb.etransafe.pretox.rest.api.model.Report;
+
+@Repository
+public interface ReportRepository extends ReportRepositoryCustom, MongoRepository {
+
+ 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
new file mode 100644
index 0000000000000000000000000000000000000000..ceafc2a35c326d6f6fa0c7b09f4dbcef7c32de90
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryCustom.java
@@ -0,0 +1,16 @@
+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
+ *
+ */
+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 0000000000000000000000000000000000000000..01a79e9fb283ce92d5a075713fd78daa72812f4c
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/ReportRepositoryImpl.java
@@ -0,0 +1,41 @@
+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.fields().include("hasSections");
+ 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/repository/SectionRepository.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..f47a410be886feeff5df5600c3966caf8f241083
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/repository/SectionRepository.java
@@ -0,0 +1,19 @@
+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;
+
+
+
+@Repository
+public interface SectionRepository extends SectionRepositoryCustom, MongoRepository {
+
+ Optional findById(Long sectionId);
+
+
+}
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 0000000000000000000000000000000000000000..f4f8818f26b4732138193498122ad41de62047cb
--- /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 0000000000000000000000000000000000000000..4f1d31ec687ae342e5507c9bd56e5dae9c08551d
--- /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/ades/rest/api/security/pkce/SecurityConfig.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/security/pkce/SecurityConfig.java
similarity index 73%
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 7bfef2b3e9dbb033347acc2396a2db685e57a98b..5f1363b300b8d7e6d02f195f83d6479d2bad54a8 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;
@@ -19,7 +19,13 @@ 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()
+ .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 59%
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 c1d632c460513dc25aa09d821ae32100132aa16c..5dc1a76cff53da7bc0b52b421bc2420ea92a11c0 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,13 @@
-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.SRDomainDocument;
+import es.bsc.inb.etransafe.pretox.rest.api.model.SRDomainFinding;
+import es.bsc.inb.etransafe.pretox.rest.api.model.ReportStatus;
public interface DocumentService {
@@ -24,7 +26,7 @@ public interface DocumentService {
DocumentAnnotations findDocumentAnnotationsByDocumentId(Long id);
- DocumentAnnotations findDocumentSRDomainByDocumentId(Long id);
+ SRDomainDocument findSRDomainDocumentByDocumentId(Long id);
String findSentenceEvidenceByDocumentIdAndSentenceId(Long id, Integer sentenceId);
@@ -44,11 +46,15 @@ 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);
void removeDocument(long documentId);
- void restoreDocument(long documentId);
+ 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/ades/rest/api/services/DocumentServiceImpl.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/DocumentServiceImpl.java
similarity index 78%
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 e007ac084bc428169152fb51063bc6fa1da5f08d..fadeb3d68f34cb56a930547c88bfa4b2106f7ce5 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;
@@ -10,10 +10,8 @@ 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;
-import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
import org.springframework.stereotype.Service;
@@ -21,22 +19,23 @@ 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.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.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.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;
+import es.bsc.inb.etransafe.pretox.rest.api.repository.DocumentTrackingRepository;
+import es.bsc.inb.etransafe.pretox.rest.api.util.Constants;
@Service
@@ -71,25 +70,34 @@ 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;
}
- public DocumentAnnotations findDocumentSRDomainByDocumentId(Long id) {
- DocumentAnnotations docAnno = documentAnnotationsRepository.findByDocumentId(id);
- List srdomains = 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 sr : finding.getSrDomainFindings()) {
- srdomains.add(sr);
+ for (SRDomainFinding srFinding : finding.getSrDomainFindings()) {
+ srDomainFindings.add(srFinding);
}
}
}
- docAnno.setSrdomainfindings(srdomains);
- docAnno.setRelevantSentences(null);
- docAnno.setFindings(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) {
@@ -140,7 +148,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;
@@ -325,7 +333,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());
@@ -421,195 +429,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.
@@ -979,14 +799,14 @@ 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);
documentAnnotation.setStatus(status);
documentRepository.save(document);
documentAnnotationsRepository.save(documentAnnotation);
- createTracking(id, Action.MOVE, status.toString());
+ createTracking(id, Action.MOVE, status.toString());
return status;
}
@@ -1046,5 +866,41 @@ 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;
+ }
+
+ @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;
+ }
}
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
new file mode 100644
index 0000000000000000000000000000000000000000..e1a2a03d14c0fe9f5666155cdfbe2613841b14e2
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/FileService.java
@@ -0,0 +1,26 @@
+package es.bsc.inb.etransafe.pretox.rest.api.services;
+
+import java.util.List;
+
+import org.springframework.web.multipart.MultipartFile;
+
+public interface FileService {
+
+
+ /*
+ Metodo para guardar los archivos
+ */
+ public void save(MultipartFile file);
+
+ /*
+ Metodo para Borrar un archivo
+ */
+ public String deleteFile(String filename);
+ /**
+ *
+ * @param files
+ * @return
+ */
+ public List validate(MultipartFile[] files, Boolean allow_duplicates);
+
+}
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 76%
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 1aafb88b050d6761142478ad40663ed430442245..1474e6ab3e8a69ab116796b7def2f9b4a86b20fb 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,29 +1,9 @@
-package es.bsc.inb.ades.rest.api.services;
+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.ades.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,13 +72,31 @@ 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
*/
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,48 +109,14 @@ 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;
}
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){
@@ -158,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();
@@ -250,4 +223,6 @@ public class FileServiceImp implements FileService {
return new ArrayList(errors);
}
+
+
}
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
new file mode 100644
index 0000000000000000000000000000000000000000..b9a596bf93f45d3ad9347133dcaefc66e6942e96
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportService.java
@@ -0,0 +1,66 @@
+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 ReportService {
+
+
+ /**
+ * Save legacy report
+ * @param file
+ */
+ public Report upload(MultipartFile file) throws IOException;
+ /**
+ * Validate legacy report save
+ * @param files
+ * @param allow_duplicates
+ * @return
+ */
+ public List validateUpload(MultipartFile[] files);
+
+ /**
+ * download legacy report content,
+ * @param id
+ * @return
+ * @throws IOException
+ * @throws IllegalStateException
+ */
+ 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);
+ /**
+ *
+ * @param id
+ * @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
new file mode 100644
index 0000000000000000000000000000000000000000..35de1b0c002dc1bcf4da393bda9578d9983c48a9
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/ReportServiceImpl.java
@@ -0,0 +1,143 @@
+package es.bsc.inb.etransafe.pretox.rest.api.services;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.io.IOUtils;
+import org.bson.types.ObjectId;
+import org.springframework.beans.factory.annotation.Autowired;
+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.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
+public class ReportServiceImpl implements ReportService {
+
+ @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 InvalidOffsetException
+ */
+ 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)));
+ 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.setGridFSId(fileID.toString());
+ report.setUploadDate(gridFSFile.getUploadDate());
+ report.setStatus(ReportStatus.WORKFLOW_READY);
+ report.setRecordState(RecordState.ACTIVE);
+ }
+ reportRepository.save(report);
+ return report;
+ }
+
+ @Override
+ public List validateUpload(MultipartFile[] files) {
+ List errors = new ArrayList();
+ for (MultipartFile multipartFile : files) {
+ if (!multipartFile.getOriginalFilename().endsWith(".pdf")) {
+ errors.add("Only pdf files are allowed to upload" + 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;
+ }
+
+ @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() {
+ return reportRepository.findAllActiveReports();
+ }
+
+ @Override
+ public Report remove(String reportId) {
+ Report report = this.findById(reportId);
+ report.setRecordState(RecordState.DELETED);
+ return reportRepository.save(report);
+ }
+
+ @Override
+ public 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);
+ }
+
+ @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/TextualEvidenceService.java b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java
new file mode 100644
index 0000000000000000000000000000000000000000..cd481521279f6f6cdf6e997b5aa0e9b3470457d3
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceService.java
@@ -0,0 +1,19 @@
+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);
+
+ String findFindingsEvidenceByReportId(String reportId);
+
+ 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
new file mode 100644
index 0000000000000000000000000000000000000000..355071c5bd81aba72796e76be08a34022f1dd403
--- /dev/null
+++ b/src/main/java/es/bsc/inb/etransafe/pretox/rest/api/services/TextualEvidenceServiceImpl.java
@@ -0,0 +1,400 @@
+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.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;
+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;
+ }
+
+
+
+
+ public String findDocumentTextSubstringByDocumentId(Long id, Integer start, Integer end) {
+ return sectionRepository.findSectionTextSubstringByDocumentId(id, start, end);
+ }
+
+
+
+ @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 "";
+ }
+
+ @Override
+ public String findFindingsEvidenceByDocumentAnnotationsId(Long sectionId) {
+ Section section = sectionRepository.findById(sectionId).get();
+ return this.generateAllFindingsEvidenceSnippet(section.getText(), section.getAnnotations().getRelevantSentences());
+ }
+
+ @Override
+ public String findSentencesEvidenceByDocumentAnnotationsId(Long sectionId) {
+ Section section = sectionRepository.findById(sectionId).get();
+ return this.generateAllRelevantSentenceEvidenceSnippet(section.getText(), section.getAnnotations().getRelevantSentences());
+ }
+
+
+ /**
+ * 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();
+ }
+
+
+
+ /**
+ * 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);
+ //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();
+ }
+
+
+
+ /**
+ * 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 "";
+ }
+
+
+}
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 13caede0d343d42a6a70725b70340d8962983686..5a2844dcd2c74b1e7e5b7334a1bef87167af4bdf 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 f81953242783960d589b3c0350f3c86d101edce9..de358e0d8d62263ffc42fea564c30642633b1b59 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 5b31d2b7691cecf6419c7e46346b57514f2ab539..58bf9452995b305f058d8ce657a06116222b8ad2 100644
--- a/src/main/resources/application-prod.properties
+++ b/src/main/resources/application-prod.properties
@@ -1,8 +1,15 @@
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}
+#spring upload configuration
+spring.servlet.multipart.enabled = true
+spring.servlet.multipart.max-file-size = 200MB
+spring.servlet.multipart.max-request-size = 200MB
+