Explorar o código

Implementación feing

Mario Martínez Hernández hai 4 semanas
pai
achega
bc21f47950

+ 14 - 0
src/main/java/es/uv/saic/dto/OrganDTOImp.java

@@ -31,6 +31,20 @@ public class OrganDTOImp implements OrganDTO{
         this.ruct2 = ruct2;
     }
 
+    public OrganDTOImp(OrganDTO organDTO) {
+        this.lugar = organDTO.getLugar();
+        this.tlugar = organDTO.getTlugar();
+        this.lugar2 = organDTO.getLugar2();
+        this.tlugar2 = organDTO.getTlugar2();  
+        this.nomCas = organDTO.getNomCas();
+        this.nomVal = organDTO.getNomVal();
+        this.ruct = organDTO.getRuct();
+        this.tambit = organDTO.getTambit();
+        this.nomCas2 = organDTO.getNomCas2();
+        this.nomVal2 = organDTO.getNomVal2();
+        this.ruct2 = organDTO.getRuct2();
+    }
+
     public String getLugar() {
         return lugar;
     }

+ 45 - 0
src/main/java/es/uv/saic/feign/CoreClient.java

@@ -0,0 +1,45 @@
+package es.uv.saic.feign;
+
+import java.util.List;
+
+import org.springframework.cloud.openfeign.FeignClient;
+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.RequestBody;
+
+import es.uv.saic.domain.IndicadorEnquesta;
+import es.uv.saic.dto.EnquestaDTO;
+import es.uv.saic.dto.OrganDTO;
+
+@FeignClient(value = "core-service", url = "${saic.url.domain}")
+public interface CoreClient {
+    
+    @GetMapping("/getTitulacionsWithCentre")
+    public List<OrganDTO> getTitulacionsWithCentre();
+    
+    @GetMapping("/getAllIndsByRuct/{ruct}/{curs}")
+    public List<IndicadorEnquesta> getAllIndsByRuct(@PathVariable Integer ruct, @PathVariable Integer curs);
+
+    @PostMapping("/findByEnquestaCursAmbitEstudi")
+    public List<IndicadorEnquesta> findByEnquestaCursAmbitEstudi(@RequestBody EnquestaDTO enquestaDTO);
+    
+    @PostMapping("/findByEnquestaCursAmbitEstudiCentre")
+    public List<IndicadorEnquesta> findByEnquestaCursAmbitEstudiCentre(@RequestBody EnquestaDTO enquestaDTO);
+    
+    @PostMapping("/findByEnquestaCursAmbitEstudiCentreTitulacio")
+    public List<IndicadorEnquesta> findByEnquestaCursAmbitEstudiCentreTitulacio(@RequestBody EnquestaDTO enquestaDTO);
+    
+    @DeleteMapping("/delete/ByEnquestaCursAmbitEstudi")
+    public Integer deleteByEnquestaCursAmbitEstudi(@RequestBody EnquestaDTO enquestaDTO);
+    
+    @DeleteMapping("/delete/current/{enquesta}")
+    public Integer deleteFromCurrent(@PathVariable String enquesta);
+    
+    @DeleteMapping("/delete/pending/{enquesta}")
+    public Integer deleteFromPending(@PathVariable String enquesta);
+    
+    @DeleteMapping("/delete/duplicates/{enquesta}")
+    public Integer deleteDuplicates(@PathVariable String enquesta);
+}

+ 41 - 0
src/main/java/es/uv/saic/feign/DataClient.java

@@ -0,0 +1,41 @@
+package es.uv.saic.feign;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import es.uv.saic.domain.Datasource;
+import es.uv.saic.dto.ImportDTO;
+import es.uv.saic.dto.IndicadorEnquestaTmpDup;
+import es.uv.saic.dto.TablaDTO;
+
+@FeignClient(value = "data-service", url = "${saic.url.data.domain}")
+public interface DataClient {
+
+    @PostMapping("/data/import")
+    public List<Datasource> renderImport();
+
+    @PostMapping("/data/import")
+    public String uploadFile(ImportDTO importDto) throws IOException;
+
+    @PostMapping("/data/view/columns")
+    public List<String> listTableColumns(@RequestBody TablaDTO tablaDTO);
+
+    @PostMapping("/data/check/{type}")
+    public List<IndicadorEnquestaTmpDup> check(@RequestBody String enquesta, @PathVariable Integer type) throws IOException;
+
+    @GetMapping("/data/sources")
+	public List<Datasource> getDatasources() throws IOException;
+
+    @PostMapping("/data/count")
+	public Integer countByEnquesta(@RequestBody String enquesta) throws IOException;
+
+    @PostMapping("/data/consolidate")
+	public Integer consolidate(@RequestBody String enquesta) throws IOException;
+    
+}

+ 61 - 3
src/main/java/es/uv/saic/feign/DocumentClient.java

@@ -1,23 +1,81 @@
 package es.uv.saic.feign;
 
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.math.BigInteger;
+
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.ResponseBody;
 
 import es.uv.saic.domain.Document;
+import es.uv.saic.dto.ArchiveOrganDTO;
 import es.uv.saic.dto.CategoriaDTO;
+import es.uv.saic.dto.DocumentTmpDTO;
+import es.uv.saic.dto.PdfDTO;
+import fr.opensagres.xdocreport.core.XDocReportException;
 
 @FeignClient(value = "document-service", url = "${saic.url.docs.domain}")
 public interface DocumentClient {
+
     @PostMapping("/document/save")
-    Document save(@RequestBody Document doc);
+    public Document save(@RequestBody Document doc);
 
     @PostMapping("/findByCategoriaOrgan")
-    ResponseEntity<?> findByCategoriaOrgan(@RequestBody CategoriaDTO categoria);
+    public Document findByCategoriaOrgan(@RequestBody CategoriaDTO categoria);
 
     @GetMapping("/document/{idDocument}")
-    ResponseEntity<?> findByID(@PathVariable("idDocument") Integer idDocument);
+    public Document findByID(@PathVariable("idDocument") Integer idDocument);
+
+    @PostMapping("/document/upload")
+    public String upload(@RequestBody DocumentTmpDTO documentTmpDTO);
+
+    @PostMapping("/document/archive")
+    public Document archive(@RequestBody Document doc);
+
+    @PostMapping("/archiveByOrgan")
+    public void archiveByOrgan(@RequestBody ArchiveOrganDTO organ);
+
+    @GetMapping("/download/{fileName}")
+    @ResponseBody
+	public byte[] download(@PathVariable("fileName") BigInteger idInstanciaTasca) throws FileNotFoundException;		
+
+    @GetMapping(value="/download/document/{id}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
+	@ResponseBody
+	public ResponseEntity<FileSystemResource> downloadDocument(@PathVariable("id") Integer idDocument) throws FileNotFoundException;
+
+   	@GetMapping(value="/download/report/{t}/{p}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
+	@ResponseBody 
+	public ResponseEntity<FileSystemResource> downloadReport(@PathVariable("t") Integer idTitulacio, @PathVariable("p") String nomProces) throws IOException, XDocReportException;
+
+    @GetMapping(value="/download/template/{id}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
+	@ResponseBody 
+	public byte[] downloadTemplate(@PathVariable("id") BigInteger idTascai) throws IOException, XDocReportException;
+
+    @GetMapping(value="/test/template/{titulacio}/{centre}/{idProces}/{idTascap}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
+	@ResponseBody
+	public byte[] testTemplate(@PathVariable("titulacio") Integer idTitulacio, @PathVariable("centre") Integer idCentre,
+		@PathVariable("idTascap") Integer idTascap, @PathVariable("idProces") Integer idProces) 
+		throws IOException, XDocReportException;
+
+    @GetMapping(value="/test/template2/{titulacio}/{centre}/{evidencia}/{curs}/{tipusTasca}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
+	@ResponseBody
+	public byte[] testTemplate(@PathVariable("titulacio") Integer idTitulacio, @PathVariable("centre") Integer idCentre,
+			@PathVariable("evidencia") String evidencia, @PathVariable("curs") Integer curs,
+            @PathVariable("tipusTasca") Integer tipusTasca) throws IOException, XDocReportException;
+
+    @GetMapping(value="/pdf/download/{idTascai}")
+	@ResponseBody
+	public byte[] downloadTemplatePdf(@PathVariable("idTascai") BigInteger idTascai) throws IOException, InterruptedException;
+
+    @PostMapping(value="/pdf/preview")
+	@ResponseBody
+	public byte[] downloadTemplatePdf(@RequestBody PdfDTO pdf) throws IOException, InterruptedException;
+
 }

+ 4 - 45
src/main/java/es/uv/saic/service/InstanciaTascaService.java

@@ -3,11 +3,6 @@ package es.uv.saic.service;
 import java.io.File;
 import java.io.IOException;
 import java.math.BigInteger;
-import java.net.HttpURLConnection;
-import java.net.URI;
-import java.net.http.HttpClient;
-import java.net.http.HttpRequest;
-import java.net.http.HttpResponse;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -20,10 +15,6 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
 import es.uv.saic.domain.Document;
 import es.uv.saic.domain.Email;
 import es.uv.saic.domain.EvidenciaTransfer;
@@ -38,6 +29,7 @@ import es.uv.saic.dto.CategoriaDTO;
 import es.uv.saic.dto.InstanciaTascaDTO;
 import es.uv.saic.dto.TascaInformeTransferDTO;
 import es.uv.saic.feign.PlantillaClient;
+import es.uv.saic.feign.DocumentClient;
 
 @Service
 public class InstanciaTascaService {
@@ -58,9 +50,9 @@ public class InstanciaTascaService {
 	private PlantillaClient plc;
 	@Value("${saic.data.filePath}")
 	private String filePath;
-	@Value("${saic.url.docs.domain}")
-	private String uriDocs;
 	
+	@Autowired
+	private DocumentClient dc;
 	
 	public List<InstanciaTasca> findByInstancia(BigInteger i_id) {
 		return this.instanciaTascaRepository.findByInstancia(i_id);
@@ -312,7 +304,7 @@ public class InstanciaTascaService {
 		else if(tipus == 22){ /* Link document from documents as evidence */
 			String options = it.getTasca().getOpcions();
 			Organ o = it.getInstancia().getOrgan();
-			Document d = this.findByCategoriaOrgan(Integer.parseInt(options), o.getId().getLugar(),  o.getId().getTlugar());
+			Document d = dc.findByCategoriaOrgan(new CategoriaDTO(Integer.parseInt(options), o.getId().getLugar(), o.getId().getTlugar()));
 			it.setEvidencia(d.getRuta());
 			it.setEstat("E");
 			this.saveChanges(user, it);
@@ -484,37 +476,4 @@ public class InstanciaTascaService {
 		this.instanciaTascaRepository.save(i);
 		this.instanciaTascaRepository.flush();
 	}
-
-	private Document findByCategoriaOrgan(Integer idCategoria, Integer lugar, String tlugar) {
-		Document doc = null;
-		URI uriobjUri = URI.create(uriDocs + "/findByCategoriaOrgan");
-		ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-		
-		try {
-			CategoriaDTO categoriaDTO = new CategoriaDTO(idCategoria, lugar, tlugar);
-			String requestBody = mapper.writeValueAsString(categoriaDTO);
-
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobjUri)
-					.header("Content-Type", "application/json")
-					.POST(HttpRequest.BodyPublishers.ofString(requestBody))
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			// Create the json with the response body
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				doc = mapper.readValue(response.body(), new TypeReference<Document>() {});
-			} else {
-				System.err.println("Failed to find Document. HTTP error code: " + response.statusCode());
-			}			
-				
-		} catch (Exception e) {
-			System.err.println("Failed to find Document: " + e.getMessage());
-		}
-
-		return doc;
-	}
-	
 }

+ 11 - 153
src/main/java/es/uv/saic/web/DashboardController.java

@@ -1,11 +1,6 @@
 package es.uv.saic.web;
 
 import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.URI;
-import java.net.http.HttpClient;
-import java.net.http.HttpRequest;
-import java.net.http.HttpResponse;
 import java.text.CharacterIterator;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -42,10 +37,6 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.multipart.MultipartFile;
 
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
 import es.uv.saic.domain.Informe;
 import es.uv.saic.domain.InformeProcessos;
 import es.uv.saic.domain.Instancia;
@@ -71,6 +62,7 @@ import es.uv.saic.dto.TreeDTOAny;
 import es.uv.saic.dto.TreeDTODimensio;
 import es.uv.saic.dto.TreeDTOInstancia;
 import es.uv.saic.dto.TreeDTOOrgan;
+import es.uv.saic.feign.DocumentClient;
 import es.uv.saic.service.CategoriaService;
 import es.uv.saic.service.GraficaService;
 import es.uv.saic.service.IndicadorEnquestaService;
@@ -106,15 +98,12 @@ public class DashboardController {
 	@Value("${saic.data.filePath}")
 	private String filePath;
 
+	@Autowired
+	private DocumentClient dc;
+
 	@Value("${saic.url.public}")
 	private String publicUrl;
 
-	@Value("${saic.url.domain}")
-	private String uri;
-	
-	@Value("${saic.url.docs.domain}")
-	private String uriDocs;
-
 	@Value("${saic.data.templates.fileNotFound}")
 	private String fileNotFound;
 	
@@ -688,156 +677,25 @@ public class DashboardController {
 	}
 	
 	private Document findByCategoriaOrgan(Integer idCategoria, Integer lugar, String tlugar) {
-		Document doc = null;
-		URI uriobjUri = URI.create(uriDocs + "/findByCategoriaOrgan");
-		ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-		
-		try {
-			CategoriaDTO categoriaDTO = new CategoriaDTO(idCategoria, lugar, tlugar);
-			String requestBody = mapper.writeValueAsString(categoriaDTO);
-
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobjUri)
-					.header("Content-Type", "application/json")
-					.POST(HttpRequest.BodyPublishers.ofString(requestBody))
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			// Create the json with the response body
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				doc = mapper.readValue(response.body(), new TypeReference<Document>() {});
-			} else {
-				System.err.println("Failed to find Document. HTTP error code: " + response.statusCode());
-			}			
-				
-		} catch (Exception e) {
-			System.err.println("Failed to find Document: " + e.getMessage());
-		}
-
-		return doc;
+		CategoriaDTO categoriaDTO = new CategoriaDTO(idCategoria, lugar, tlugar);
+		return dc.findByCategoriaOrgan(categoriaDTO);
 	}
 
 	private Document save(Document doc) {
-		URI uriobjUri = URI.create(uriDocs + "/document/save");
-		ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-		
-		try {
-			String requestBody = mapper.writeValueAsString(doc);
-
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobjUri)
-					.header("Content-Type", "application/json")
-					.POST(HttpRequest.BodyPublishers.ofString(requestBody))
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			// Create the json with the response body
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				doc = mapper.readValue(response.body(), new TypeReference<Document>() {});
-			} else {
-				System.err.println("Failed to save Document. HTTP error code: " + response.statusCode());
-			}			
-				
-		} catch (Exception e) {
-			System.err.println("Failed to save Document: " + e.getMessage());
-		}
-
-		return doc;
+		return dc.save(doc);
 	}
 
-	private Document archive(Document doc ){
-		Document archivedDoc = null;
-		URI uriArchive = URI.create(uriDocs + "/document/archive");
-		ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-
-		try {
-			String requestBody = mapper.writeValueAsString(doc);
-
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriArchive)
-					.header("Content-Type", "application/json")
-					.POST(HttpRequest.BodyPublishers.ofString(requestBody))
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				archivedDoc = mapper.readValue(response.body(), new TypeReference<Document>() {});
-			} else {
-				System.err.println("Failed to archive Document. HTTP error code: " + response.statusCode());
-				System.err.println("Response body: " + response.body());
-			}
-
-		} catch (Exception e) {
-			System.err.println("Error archiving Document: " + e.getMessage());
-			e.printStackTrace();
-		}
-
-		return archivedDoc;
+	private Document archive(Document doc){
+		return dc.archive(doc);
 	}
 
 	private void archiveByOrgan(Integer lugar, String tlugar) {
-		URI uriArchive = URI.create(uriDocs + "/archiveByOrgan");
 		ArchiveOrganDTO organ = new ArchiveOrganDTO(lugar, tlugar);
-		ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-
-		try {
-			String requestBody = mapper.writeValueAsString(organ);
-
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriArchive)
-					.header("Content-Type", "application/json")
-					.POST(HttpRequest.BodyPublishers.ofString(requestBody))
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			if (response.statusCode() != HttpURLConnection.HTTP_OK) {
-				System.err.println("Failed to archive Document by org. HTTP error code: " + response.statusCode());
-				System.err.println("Response body: " + response.body());
-			} 
-		} catch (Exception e) {
-			System.err.println("Error archiving Document: " + e.getMessage());
-			e.printStackTrace();
-		}
+		dc.archiveByOrgan(organ);
 	}
 
 	private String upload(Integer idDocument, Integer idCategoria, Integer lugar, String tlugar, MultipartFile file) {
-		URI uriobjUri = URI.create(uriDocs + "/document/upload");
-		ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-		HttpResponse<String> response = null;
-		
-		try {
 			DocumentTmpDTO doc = new DocumentTmpDTO(idDocument, idCategoria, lugar, tlugar, file);
-			String requestBody = mapper.writeValueAsString(doc);
-
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobjUri)
-					.header("Content-Type", "application/json")
-					.POST(HttpRequest.BodyPublishers.ofString(requestBody))
-					.build();
-
-			response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			// Create the json with the response body
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				return response.body();
-			} else {
-				System.err.println("Failed to save Document. HTTP error code: " + response.statusCode());
-			}			
-				
-		} catch (Exception e) {
-			System.err.println("Failed to save Document: " + e.getMessage());
-		}
-		
-		return fileNotFound;
-	
+			return dc.upload(doc);
 	}
 }

+ 29 - 330
src/main/java/es/uv/saic/web/DataController.java

@@ -1,19 +1,12 @@
 package es.uv.saic.web;
 
 import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.URI;
-import java.net.http.HttpClient;
-import java.net.http.HttpRequest;
-import java.net.http.HttpResponse;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 
 import jakarta.mail.MessagingException;
 
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.security.access.annotation.Secured;
 import org.springframework.security.core.Authentication;
@@ -26,34 +19,28 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.multipart.MultipartFile;
 
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
 import es.uv.saic.domain.Datasource;
 import es.uv.saic.domain.IndicadorEnquesta;
-import es.uv.saic.domain.IndicadorEnquestaTmp;
 import es.uv.saic.domain.Usuari;
 import es.uv.saic.dto.EnquestaDTO;
 import es.uv.saic.dto.ImportDTO;
 import es.uv.saic.dto.IndicadorEnquestaTmpDup;
-import es.uv.saic.dto.OrganDTOImp;
 import es.uv.saic.dto.TablaDTO;
+import es.uv.saic.feign.CoreClient;
+import es.uv.saic.feign.DataClient;
 
 @Controller
 public class DataController {
 
-	@Value("${saic.url.domain}")
-	private String uriCore;
-
-	@Value("${saic.url.data.domain}")
-	private String uriData;
+	private CoreClient cc;
+	
+	private DataClient dc;
 	
 	// GET que carga la interfaz relacionada con toda la importación de datos
 	@GetMapping("/data/import")
 	@Secured({"ROLE_ADMIN", "ROLE_TESTER"})
 	public String renderImport(Model model, Authentication auth) {
-		List<Datasource> sources = findAll("import");
+		List<Datasource> sources = dc.renderImport();
 		for(Datasource d : sources){
 			d.setConn(null);
 		}
@@ -73,28 +60,8 @@ public class DataController {
 		String locale = LocaleContextHolder.getLocale().getLanguage();
 		ImportDTO importDto = new ImportDTO(file, tipus, (Usuari)auth.getPrincipal(), enquesta, ambit, estudi, locale, delim, clau, ignoredColumns, dbOrigen, vista, curs, dstCurs);
 		
-		URI uriobjUri = URI.create(uriData + "/data/import");
-		ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-		
 		try {
-			String requestBody = mapper.writeValueAsString(importDto);
-
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobjUri)
-					.header("Content-Type", "application/json")
-					.POST(HttpRequest.BodyPublishers.ofString(requestBody))
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			// Create the json with the response body
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				return response.body();
-			} else {
-				System.err.println("Failed to import document. HTTP error code: " + response.statusCode());
-			}			
-				
+			return dc.uploadFile(importDto);
 		} catch (Exception e) {
 			System.err.println("Failed to find Document: " + e.getMessage());
 		}
@@ -109,37 +76,14 @@ public class DataController {
 	@ResponseBody
 	public String delete(Model model, Authentication auth, @RequestParam String enquesta,
 			@RequestParam Integer curs, @RequestParam String ambit, @RequestParam String estudi) throws IOException {  
-		
-		URI uriobj = URI.create(uriCore + "/delete/ByEnquestaCursAmbitEstudi");
-		String retval = "";
 
-		try {
-			ObjectMapper objectMapper = new ObjectMapper();
-			EnquestaDTO enquestaDTO = new EnquestaDTO(enquesta, curs, ambit, estudi); 
-			String requestBody = objectMapper.writeValueAsString(enquestaDTO);
-
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobj)
-					.header("Content-Type", "application/json")
-					.method("DELETE", HttpRequest.BodyPublishers.ofString(requestBody))
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
+		String retval = "";
+		EnquestaDTO enquestaDTO = new EnquestaDTO(enquesta, curs, ambit, estudi); 
+	
+		Integer r = cc.deleteByEnquestaCursAmbitEstudi(enquestaDTO);
+		String locale = LocaleContextHolder.getLocale().getLanguage();
+		retval = locale.equals("es") ? "[INFO] Se han eliminado "+r+" registros" : "[INFO] S'han esborrat "+r+" registres";			
 
-			// Create the json with the response body
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				String r = response.body();
-				String locale = LocaleContextHolder.getLocale().getLanguage();
-				retval = locale.equals("es") ? "[INFO] Se han eliminado "+r+" registros" : "[INFO] S'han esborrat "+r+" registres";
-			} else {
-				System.err.println("Failed to load centres. HTTP error code: " + response.statusCode());
-			}			
-				
-		} catch (Exception e) {
-			System.err.println("Failed to load centres: " + e.getMessage());
-		}
-		
         return retval;
 	}
 	
@@ -147,68 +91,18 @@ public class DataController {
 	@PostMapping("/data/show")
 	@Secured({"ROLE_ADMIN", "ROLE_TESTER"})
 	@ResponseBody
-	public List<IndicadorEnquestaTmp> show(Model model, Authentication auth, @RequestParam String enquesta,
+	public List<IndicadorEnquesta> show(Model model, Authentication auth, @RequestParam String enquesta,
 			@RequestParam Integer curs, @RequestParam String ambit, @RequestParam String estudi) throws IOException {    
-		URI uriobj = URI.create(uriCore + "/findByEnquestaCursAmbitEstudi");
-		List<IndicadorEnquestaTmp> inds = new ArrayList<IndicadorEnquestaTmp>();
-		ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 		EnquestaDTO enquestaDTO = new EnquestaDTO(enquesta, curs, ambit, estudi); 
 			
-		try {
-			String requestBody = mapper.writeValueAsString(enquestaDTO);
-
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobj)
-					.header("Content-Type", "application/json")
-					.POST(HttpRequest.BodyPublishers.ofString(requestBody))
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				inds = mapper.readValue(response.body(), new TypeReference<List<IndicadorEnquestaTmp>>() {});
-
-			} else {
-				System.err.println("Failed to find enquesta by Curs, Ambit, Estudi. HTTP error code: " + response.statusCode());
-			}			
-				
-		} catch (Exception e) {
-			System.err.println("Failed to find enquesta by Curs, Ambit, Estudi: " + e.getMessage());
-		}
-		return inds;
+		return cc.findByEnquestaCursAmbitEstudi(enquestaDTO);
 	}
 	
 	// GET para mostrar el formulario de busqueda de datos
 	@GetMapping("/data/current")
 	@Secured({"ROLE_ADMIN", "ROLE_TESTER"})
 	public String current(Model model, Authentication auth) throws IOException {
-		URI uriobj = URI.create(uriCore + "/getTitulacionsWithCentre");
-
-		try {
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobj)
-					.GET()
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			// Create the json with the response body
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-				// Convert JSON array to List<Organ> 
-				List<OrganDTOImp> centres = mapper.readValue(response.body(), new TypeReference<List<OrganDTOImp>>() {});
-
-				model.addAttribute("data", centres);
-			} else {
-				System.err.println("Failed to load centres. HTTP error code: " + response.statusCode());
-			}			
-				
-		} catch (Exception e) {
-			System.err.println("Failed to load centres: " + e.getMessage());
-		}
-		
+		model.addAttribute("data", cc.getTitulacionsWithCentre());			
 		return "dataCurrent";
 	}
 	
@@ -225,35 +119,7 @@ public class DataController {
 	@ResponseBody
 	public List<IndicadorEnquestaTmpDup> check(Model model, Authentication auth, 
 			@RequestParam String enquesta, @PathVariable Integer type) throws IOException {   
-		URI uriobjUri = URI.create(uriData + "/data/check/" + type);
-		ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-		List<IndicadorEnquestaTmpDup> inds = null;
-
-		try {
-			String requestBody = mapper.writeValueAsString(enquesta);
-
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobjUri)
-					.header("Content-Type", "application/json")
-					.POST(HttpRequest.BodyPublishers.ofString(requestBody))
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			// Create the json with the response body
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				inds = mapper.readValue(response.body(), new TypeReference<List<IndicadorEnquestaTmpDup>>() {});
-			} else {
-				System.err.println("Failed to import document. HTTP error code: " + response.statusCode());			
-			}			
-				
-		} catch (Exception e) {
-			System.err.println("Failed to find Document: " + e.getMessage());
-		}
-
-		return inds;
-		
+		return dc.check(enquesta, type);
 	}
 
 	// POST que soluciona problemas de integridad que puedan tener los datos
@@ -263,34 +129,11 @@ public class DataController {
 	public Integer fixIntegrityIssues(Model model, Authentication auth, 
 			@RequestParam String enquesta, @PathVariable String deleteFrom) throws IOException {   
 		
-		URI uriobj = null;
 		if(deleteFrom.equals("current")) {
-			uriobj = URI.create(uriCore + "/delete/current/" + enquesta);
+			return cc.deleteFromCurrent(enquesta);
 		}
 		else if(deleteFrom.equals("new")) {
-			uriobj = URI.create(uriCore + "/delete/pending/" + enquesta);
-		} else {
-			return 0;
-		}
-
-		try {
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobj)
-					.DELETE()
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			// Create the json with the response body
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				return Integer.parseInt(response.body());
-			} else {
-				System.err.println("Failed  to fix integrity by delete current/duplicated." + 
-				" HTTP error code: " + response.statusCode());
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
+			return cc.deleteFromPending(enquesta);
 		}
 
 		return 0;
@@ -301,29 +144,7 @@ public class DataController {
 	@Secured({"ROLE_ADMIN", "ROLE_TESTER"})
 	@ResponseBody
 	public Integer fixDuplicatesIssues(Model model, Authentication auth, @RequestParam String enquesta) throws IOException {   
-		URI uriobj = URI.create(uriCore + "/delete/duplicates/" + enquesta);
-
-		try {
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobj)
-					.DELETE()
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			// Create the json with the response body
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				return Integer.parseInt(response.body());
-			} else {
-				System.err.println("Failed to delete duplicates from " + enquesta + "." + 
-				" HTTP error code: " + response.statusCode());
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		return 0;
+		return cc.deleteDuplicates(enquesta);
 	}
 	
 	// POST que consolida los datos pasadas por la encuesta
@@ -331,7 +152,7 @@ public class DataController {
 	@Secured({"ROLE_ADMIN", "ROLE_TESTER"})
 	@ResponseBody
 	public Integer consolidate(Model model, Authentication auth, @RequestParam String enquesta) throws IOException {    
-		return byEnquesta("consolidate", enquesta);
+		return dc.countByEnquesta(enquesta);
 	}
 	
 	// POST que comprueba los datos a partir de la encuesta
@@ -339,7 +160,7 @@ public class DataController {
 	@Secured({"ROLE_ADMIN", "ROLE_TESTER"})
 	@ResponseBody
 	public Integer countByEnquesta(Model model, Authentication auth, @RequestParam String enquesta) throws IOException {    
-		return byEnquesta("count", enquesta);
+		return dc.countByEnquesta(enquesta);
 	}
 
 	// POST para mostrar los datos en columnas
@@ -348,30 +169,11 @@ public class DataController {
 	@ResponseBody
 	public List<String> listTableColumns(Model model, Authentication auth, @RequestParam Integer dbOrigen, @RequestParam String vista) {    
 		String locale = LocaleContextHolder.getLocale().getLanguage();
-		URI uriobjUri = URI.create(uriData + "/data/view/columns");
-		ObjectMapper mapper = new ObjectMapper();
 		List<String> list = null;
 
 		try {
 			TablaDTO tablaDTO = new TablaDTO(dbOrigen, vista, locale);
-			String requestBody = mapper.writeValueAsString(tablaDTO);
-
-
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobjUri)
-					.header("Content-Type", "application/json")
-					.POST(HttpRequest.BodyPublishers.ofString(requestBody))
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			// Create the json with the response body
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				list = mapper.readValue(response.body(), new TypeReference<List<String>>() {});
-			} else {
-				System.err.println("Failed to load table. HTTP error code: " + response.statusCode());
-			}			
+			return dc.listTableColumns(tablaDTO);	
 				
 		} catch (Exception e) {
 			System.err.println("Failed to load table: " + e.getMessage());
@@ -386,31 +188,7 @@ public class DataController {
 	@ResponseBody
 	public List<IndicadorEnquesta> show(Model model, Authentication auth, @PathVariable Integer ruct, 
 			@PathVariable Integer curs) throws IOException { 
-			
-		URI uriobj = URI.create(uriCore + "/getAllIndsByRuct/" + ruct.toString() + "/" + curs);
-		List<IndicadorEnquesta> inds = new ArrayList<IndicadorEnquesta>();
-		ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-
-		try {
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobj)
-					.GET()
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				inds = mapper.readValue(response.body(), new TypeReference<List<IndicadorEnquesta>>() {});
-			} else {
-				System.err.println("Failed to load List<IndicadorEnquesta>. HTTP response code: " + response.statusCode());
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-			System.err.println("Error al encontrar el ruct " + ruct + " curso: " + curs);
-		}
-		
-        return inds;
+        return cc.getAllIndsByRuct(ruct, curs);
 	}
 	
 	// POST que muestra los datos del curso actual
@@ -423,39 +201,15 @@ public class DataController {
 		
 		List<IndicadorEnquesta> inds = new ArrayList<IndicadorEnquesta>();
 		EnquestaDTO enquestaDTO = new EnquestaDTO(enquesta, curs, ambit, estudi, centre, titulacio);
-		URI uriobj = null;
-		ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);;
-
+		
 		if(ambit.equals("U")) {
-			uriobj = URI.create(uriCore + "/findByEnquestaCursAmbitEstudi");
+			inds = cc.findByEnquestaCursAmbitEstudi(enquestaDTO);
 		}
 		else if(ambit.equals("C")) {
-			uriobj = URI.create(uriCore + "/findByEnquestaCursAmbitEstudiCentre");
+			inds = cc.findByEnquestaCursAmbitEstudiCentre(enquestaDTO);
 		}
 		if(ambit.equals("T")) {
-			uriobj = URI.create(uriCore + "/findByEnquestaCursAmbitEstudiCentreTitulacio");
-		}
-
-		try {
-			String requestBody = mapper.writeValueAsString(enquestaDTO);
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobj)
-					.header("Content-Type", "application/json")
-					.POST(HttpRequest.BodyPublishers.ofString(requestBody))
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				inds = mapper.readValue(response.body(), new TypeReference<List<IndicadorEnquesta>>() {});
-
-			} else {
-				System.err.println("Failed to find enquesta by Curs, Ambit, Estudi. HTTP error code: " + response.statusCode());
-			}			
-				
-		} catch (Exception e) {
-			System.err.println("Failed to find enquesta by Curs, Ambit, Estudi: " + e.getMessage());
+			inds = cc.findByEnquestaCursAmbitEstudiCentreTitulacio(enquestaDTO);
 		}
 
         return inds;
@@ -465,61 +219,6 @@ public class DataController {
 	@Secured({"ROLE_ADMIN", "ROLE_TESTER"})
 	@ResponseBody
 	public List<Datasource> getDatasources(Model model, Authentication auth) throws IOException {  
-        return findAll("sources");
-	}
-
-	private List<Datasource> findAll(String uString) {
-		URI uriObj = URI.create(uriData + "/data/" + uString);
-		ObjectMapper mapper = new ObjectMapper();
-		List<Datasource> dList = null;
-		try {
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriObj)
-					.GET()
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				dList = mapper.readValue(response.body(), new TypeReference<List<Datasource>>() {});
-			} else {
-				System.err.println("Failed to check integrity of IndicadorEnquestaTmpDup by enquesta. HTTP error code: " + response.statusCode());
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		return dList;
-	}
-
-	private Integer byEnquesta(String uString, String enquesta) {
-
-		URI uriobjUri = URI.create(uriData + "/data/" + uString);
-		
-		try {
-
-			HttpClient httpClient = HttpClient.newHttpClient();
-			HttpRequest request = HttpRequest.newBuilder()
-					.uri(uriobjUri)
-					.header("Content-Type", "application/json")
-					.POST(HttpRequest.BodyPublishers.ofString(enquesta))
-					.build();
-
-			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-
-			// Create the json with the response body
-			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				return Integer.parseInt(response.body());
-			} else {
-				System.err.println("Failed to /data/ " + uString + ". HTTP error code: " + response.statusCode());
-			}			
-				
-		} catch (Exception e) {
-			System.err.println("Failed to /data/ " + uString + ": " + e.getMessage());
-			return 0;
-		}
-
-		return 0;
+    	return dc.getDatasources();
 	}
 }

+ 9 - 66
src/main/java/es/uv/saic/web/DocumentController.java

@@ -1,21 +1,11 @@
 package es.uv.saic.web;
 
-import java.net.URI;
-import java.net.http.HttpClient;
-import java.net.http.HttpRequest;
-import java.net.http.HttpResponse;
-
-import javax.print.Doc;
-
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-
 import es.uv.saic.dto.CategoriaDTO;
 import es.uv.saic.dto.DocumentTmpDTO;
 import es.uv.saic.feign.DocumentClient;
@@ -26,14 +16,9 @@ import org.springframework.web.bind.annotation.PathVariable;
 
 @RestController
 public class DocumentController {
-    @Value("${saic.url.docs.domain}")
-	private String uriDocs;
-
-    private final HttpClient httpClient = HttpClient.newHttpClient();
-    private final ObjectMapper mapper = new ObjectMapper();
 
     @Autowired
-    private DocumentClient dc;
+	private DocumentClient dc;
 
     /*
      * endpoint para save
@@ -41,15 +26,7 @@ public class DocumentController {
     @PostMapping("/document/save")
     public ResponseEntity<?> save(@RequestBody Document doc) {
         try {
-            HttpRequest request = HttpRequest.newBuilder()
-                .uri(URI.create(uriDocs + "/document/save"))
-                .header("Content-Type", "application/json")
-                .POST(HttpRequest.BodyPublishers.ofString(mapper.writeValueAsString(doc)))
-                .build();
-
-            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-            return ResponseEntity.status(response.statusCode()).body(response.body());
-
+            return ResponseEntity.ok(dc.save(doc));
         } catch (Exception e) {
             e.printStackTrace();
             return ResponseEntity.badRequest().body("Error comunicando con el servicio de documentos: " + e.getMessage());
@@ -60,64 +37,30 @@ public class DocumentController {
      * endpoing para findByCategoriaOrgan
      */
     @PostMapping("/findByCategoriaOrgan")
-    public ResponseEntity<?> findByCategoriaOrgan(@RequestBody CategoriaDTO categoria) {
-        try {
-            ResponseEntity<?> doc = dc.findByCategoriaOrgan(categoria);
-            return ResponseEntity.ok(doc);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseEntity.badRequest().body("Error comunicando con servicio de documentos: " + e.getMessage());
-        }
+    public Document findByCategoriaOrgan(@RequestBody CategoriaDTO categoria) {
+        return dc.findByCategoriaOrgan(categoria);
     }
 
     /*
      * endpoint para findByID
      */
     @GetMapping("/document/{idDocument}")
-    public ResponseEntity<?> findByID(@PathVariable Integer idDocument) {
-        try {
-            ResponseEntity<?> doc = dc.findByID(idDocument);
-            return ResponseEntity.ok(doc);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseEntity.badRequest().body("Error comunicando con servicio de documentos: " + e.getMessage());
-        }
+    public Document findByID(@PathVariable Integer idDocument) {
+        return dc.findByID(idDocument);
     }
-    
 
     /*
      * endpoint para upload
      */
     @PostMapping("/document/upload")
-    public ResponseEntity<?> upload(@RequestBody DocumentTmpDTO documentTmpDTO) {
-        try {
-            HttpRequest request = HttpRequest.newBuilder()
-                    .uri(URI.create(uriDocs + "/document/upload"))
-                    .header("Content-Type", "application/json")
-                    .POST(HttpRequest.BodyPublishers.ofString(mapper.writeValueAsString(documentTmpDTO)))
-                    .build();
-
-            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-            return ResponseEntity.status(response.statusCode()).body(response.body());
-
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseEntity.badRequest().body("Error comunicando con servicio de documentos: " + e.getMessage());
-        }
+    public String upload(@RequestBody DocumentTmpDTO documentTmpDTO) {
+        return dc.upload(documentTmpDTO);
     }
 
     @PostMapping("/document/archive")
     public ResponseEntity<?> archive(@RequestBody Document doc) {
         try {
-            HttpRequest request = HttpRequest.newBuilder()
-                    .uri(URI.create(uriDocs + "/document/archive"))
-                    .header("Content-Type", "application/json")
-                    .POST(HttpRequest.BodyPublishers.ofString(mapper.writeValueAsString(doc)))
-                    .build();
-
-            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-            return ResponseEntity.status(response.statusCode()).body(response.body());
-
+            return ResponseEntity.ok(dc.archive(doc));
         } catch (Exception e) {
             e.printStackTrace();
             return ResponseEntity.badRequest().body("Error comunicando con servicio de documentos: " + e.getMessage());

+ 13 - 184
src/main/java/es/uv/saic/web/DownloadController.java

@@ -3,14 +3,9 @@ package es.uv.saic.web;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.math.BigInteger;
-import java.net.HttpURLConnection;
-import java.net.URI;
-import java.net.http.HttpClient;
-import java.net.http.HttpRequest;
-import java.net.http.HttpResponse;
 import java.util.Optional;
 
-import org.springframework.beans.factory.annotation.Value;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.FileSystemResource;
 import org.springframework.http.MediaType;
 import org.springframework.stereotype.Controller;
@@ -21,27 +16,15 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
 import es.uv.saic.dto.PdfDTO;
+import es.uv.saic.feign.DocumentClient;
 import fr.opensagres.xdocreport.core.XDocReportException;
 
-
-
 @Controller
 public class DownloadController {
 
-
-	@Value("${saic.url.domain}")
-	private String uri;
-
-	@Value("${saic.url.docs.domain}")
-	private String uriDocs;
-	
-	private final HttpClient httpClient = HttpClient.newHttpClient();
-    private final ObjectMapper mapper = new ObjectMapper();
-
+	@Autowired
+	private DocumentClient dc;
 	/*
 	 * Download a file associated with a task instance
 	 * @param model
@@ -51,28 +34,8 @@ public class DownloadController {
 	 */
 	@GetMapping(value="/download/{fileName}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
 	@ResponseBody
-	public FileSystemResource download(Model model, @PathVariable("fileName") BigInteger idInstanciaTasca) throws FileNotFoundException {	
-		FileSystemResource file = null;	
-		try {
-            HttpRequest request = HttpRequest.newBuilder()
-                .uri(URI.create(uriDocs + "/download/" + idInstanciaTasca))
-                .header("Content-Type", "application/json")
-                .GET()
-                .build();
-
-            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-            if (response.statusCode() == HttpURLConnection.HTTP_OK){
-				file = mapper.readValue(response.body(), new TypeReference<FileSystemResource>(){});
-
-			} else {
-				System.err.println("Failed to download the files. HTTP error code: " + response.statusCode());
-			}
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-		
-		return file;
+	public byte[] download(Model model, @PathVariable("fileName") BigInteger idInstanciaTasca) throws FileNotFoundException {	
+		return dc.download(idInstanciaTasca);
 	}					
 
 	/*
@@ -85,26 +48,7 @@ public class DownloadController {
 	@GetMapping(value="/download/document/{id}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
 	@ResponseBody
 	public FileSystemResource downloadDocument(Model model, @PathVariable("id") Integer idDocument) throws FileNotFoundException {		
-		FileSystemResource file = null;
-		try {
-            HttpRequest request = HttpRequest.newBuilder()
-                .uri(URI.create(uriDocs + "/download/document/" + idDocument))
-                .header("Content-Type", "application/json")
-                .GET()
-                .build();
-
-            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-            if (response.statusCode() == HttpURLConnection.HTTP_OK){
-				file = mapper.readValue(response.body(), new TypeReference<FileSystemResource>(){});
-
-			} else {
-				System.err.println("Failed to download the files. HTTP error code: " + response.statusCode());
-			}
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-		return file;
+		return dc.downloadDocument(idDocument).getBody();
 	}
 
 	/*
@@ -118,26 +62,7 @@ public class DownloadController {
 	@GetMapping(value="/download/report/{t}/{p}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
 	@ResponseBody 
 	public FileSystemResource downloadReport(Model model, @PathVariable("t") Integer idTitulacio, @PathVariable("p") String nomProces) throws IOException, XDocReportException {
-		FileSystemResource file = null;
-		try {
-            HttpRequest request = HttpRequest.newBuilder()
-                .uri(URI.create(uriDocs + "/download/report/" + idTitulacio + "/" + nomProces))
-                .header("Content-Type", "application/json")
-                .GET()
-                .build();
-
-            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-            if (response.statusCode() == HttpURLConnection.HTTP_OK){
-				file = mapper.readValue(response.body(), new TypeReference<FileSystemResource>(){});
-
-			} else {
-				System.err.println("Failed to download the report. HTTP error code: " + response.statusCode());
-			}
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-		return file;
+		return dc.downloadReport(idTitulacio, nomProces).getBody();
 	}
 
 
@@ -151,26 +76,7 @@ public class DownloadController {
 	@GetMapping(value="/download/template/{id}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
 	@ResponseBody 
 	public byte[] downloadTemplate(Model model, @PathVariable("id") BigInteger idTascai) throws IOException, XDocReportException {
-		byte[] file = null;
-		try {
-            HttpRequest request = HttpRequest.newBuilder()
-                .uri(URI.create(uriDocs + "/download/template/" + idTascai))
-                .header("Content-Type", "application/json")
-                .GET()
-                .build();
-
-            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-            if (response.statusCode() == HttpURLConnection.HTTP_OK){
-				file = mapper.readValue(response.body(), new TypeReference<byte[]>(){});
-
-			} else {
-				System.err.println("Failed to download the template. HTTP error code: " + response.statusCode());
-			}
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-		return file;
+		return dc.downloadTemplate(idTascai);
 	}
 
 	/*
@@ -188,26 +94,7 @@ public class DownloadController {
 	public byte[] testTemplate(Model model, @PathVariable("titulacio") Integer idTitulacio, @PathVariable("centre") Integer idCentre,
 			@PathVariable("idTascap") Integer idTascap, @PathVariable("idProces") Integer idProces) 
 					throws IOException, XDocReportException {
-		byte[] file = null;
-		try {
-            HttpRequest request = HttpRequest.newBuilder()
-                .uri(URI.create(uriDocs + "/test/template/" + idTitulacio + "/" + idCentre + "/" + idProces + "/" + idTascap))
-                .header("Content-Type", "application/json")
-                .GET()
-                .build();
-
-            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-            if (response.statusCode() == HttpURLConnection.HTTP_OK){
-				file = mapper.readValue(response.body(), new TypeReference<byte[]>(){});
-
-			} else {
-				System.err.println("Failed to download the test template. HTTP error code: " + response.statusCode());
-			}
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-		return file;
+		return dc.testTemplate(idTitulacio, idCentre, idProces, idTascap);
 	}
 
 	/*
@@ -225,26 +112,7 @@ public class DownloadController {
 	@ResponseBody
 	public byte[] testTemplate(Model model, @PathVariable("titulacio") Integer idTitulacio, @PathVariable("centre") Integer idCentre,
 			@PathVariable("evidencia") String evidencia, @PathVariable("curs") Integer curs, @PathVariable("tipusTasca") Integer tipusTasca) throws IOException, XDocReportException {
-		byte[] file = null;
-		try {
-            HttpRequest request = HttpRequest.newBuilder()
-                .uri(URI.create(uriDocs + "/test/template2/" + idTitulacio + "/" + idCentre + "/" + evidencia + "/" + curs + "/" + tipusTasca))
-                .header("Content-Type", "application/json")
-                .GET()
-                .build();
-
-            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-            if (response.statusCode() == HttpURLConnection.HTTP_OK){
-				file = mapper.readValue(response.body(), new TypeReference<byte[]>(){});
-
-			} else {
-				System.err.println("Failed to download the test template. HTTP error code: " + response.statusCode());
-			}
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-		return file;
+		return dc.testTemplate(idTitulacio, idCentre, evidencia, curs, tipusTasca);
 	}
 	
 	/*
@@ -257,26 +125,7 @@ public class DownloadController {
 	@GetMapping(value="/pdf/download/{idTascai}")
 	@ResponseBody
 	public byte[] downloadTemplatePdf(Model model, @PathVariable("idTascai") BigInteger idTascai) throws IOException, InterruptedException {
-		byte[] file = null;
-		try {
-            HttpRequest request = HttpRequest.newBuilder()
-                .uri(URI.create(uriDocs + "/pdf/download/" + idTascai))
-                .header("Content-Type", "application/json")
-                .GET()
-                .build();
-
-            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-            if (response.statusCode() == HttpURLConnection.HTTP_OK){
-				file = mapper.readValue(response.body(), new TypeReference<byte[]>(){});
-
-			} else {
-				System.err.println("Failed to download the test template PDF. HTTP error code: " + response.statusCode());
-			}
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-		return file;
+		return dc.downloadTemplatePdf(idTascai);
 	}
 
 	/*
@@ -290,27 +139,7 @@ public class DownloadController {
 	@ResponseBody
 	public byte[] downloadTemplatePdf(Model model,
 			@RequestParam("content") String content, @RequestParam("idtascai") Optional<BigInteger> idtascai) throws IOException, InterruptedException {
-		byte[] file = null;
 		PdfDTO pdf = new PdfDTO(content, idtascai);
-		try {
-			String requestBody = mapper.writeValueAsString(pdf);
-            HttpRequest request = HttpRequest.newBuilder()
-                .uri(URI.create(uriDocs + "/pdf/preview"))
-                .header("Content-Type", "application/json")
-                .POST(HttpRequest.BodyPublishers.ofString(requestBody))
-                .build();
-
-            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-            if (response.statusCode() == HttpURLConnection.HTTP_OK){
-				file = mapper.readValue(response.body(), new TypeReference<byte[]>(){});
-
-			} else {
-				System.err.println("Failed to preview the PDF. HTTP error code: " + response.statusCode());
-			}
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-		return file;
+		return dc.downloadTemplatePdf(pdf);
 	}
 }

+ 17 - 79
src/main/java/es/uv/saic/web/IndicadorController.java

@@ -44,7 +44,7 @@ public class IndicadorController {
     * Endpoint para la funcion deleteByEnquestaCursAmbitEstudi de iets
     */
     @DeleteMapping("/delete/ByEnquestaCursAmbitEstudi")
-    public ResponseEntity<?> deleteByEnquestaCursAmbitEstudi(@RequestBody EnquestaDTO enquestaDTO) {
+    public Integer deleteByEnquestaCursAmbitEstudi(@RequestBody EnquestaDTO enquestaDTO) {
 
         Integer i = 0;
         try {
@@ -53,13 +53,12 @@ public class IndicadorController {
 
         } catch(Exception e) {
             e.printStackTrace();
-            return ResponseEntity.badRequest().body("Error al tramitar la petición de borrar: " + e.getMessage());
         }
-    return ResponseEntity.ok(i);
+    return i;
     }
 
     @DeleteMapping("/delete/by/{enquesta}")
-    public ResponseEntity<?> deleteByEnquestaC(@RequestParam String enquesta) {
+    public ResponseEntity<?> deleteByEnquestaC(@PathVariable String enquesta) {
 
         Integer i = 0;
         try {
@@ -76,68 +75,31 @@ public class IndicadorController {
     * Endpoint para la funcion deleteFromCurrent de iets, dev
     */
     @DeleteMapping("/delete/current/{enquesta}")
-    public ResponseEntity<?> deleteFromCurrent(@PathVariable("enquesta") String enquesta) {
-        //Llamada al servicio, si el resultado es 0 no se ha borrado nada devolvemos error, sino ok
-        Integer i = 0;
-
-        try {
-            //i = iets.deleteFromCurrent(enquesta);
-            if(i == 0) 
-                return ResponseEntity.badRequest().body("No se ha eliminado ninguna enquesta.");
-
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseEntity.badRequest().body("Error al eliminar las enquestas: " + e.getMessage());
-        }
-
-        return ResponseEntity.ok(i);
+    public Integer deleteFromCurrent(@PathVariable("enquesta") String enquesta) {
+        return iets.deleteFromCurrent(enquesta);
     }
 
     /*
     * Endpoint para la funcion deleteFromPending de iets
     */
     @DeleteMapping("/delete/pending/{enquesta}")
-    public ResponseEntity<?> deleteFromPending(@PathVariable("enquesta") String enquesta) {
-        Integer i = 0;
-
-        try {
-            //i = iets.deleteFromPending(enquesta);
-            if(i == 0) 
-                return ResponseEntity.badRequest().body("No se ha eliminado ninguna enquesta pendiente.");
-
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseEntity.badRequest().body("Error al eliminar las enquestas pendientes: " + e.getMessage());
-        }
-
-        return ResponseEntity.ok(i);
+    public Integer deleteFromPending(@PathVariable("enquesta") String enquesta) {
+        return iets.deleteFromPending(enquesta);
     }
 
     /*
     * Endpoint para la funcion deleteDuplicates de iets
     */
     @DeleteMapping("/delete/duplicates/{enquesta}")
-    public ResponseEntity<?> deleteDuplicates(@PathVariable("enquesta") String enquesta) {
-        Integer i = 0;
-
-        try {
-            //i = iets.deleteDuplicates(enquesta);
-            if(i == 0) 
-                return ResponseEntity.badRequest().body("No se ha encontrado ninguna enquesta duplicada.");
-
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseEntity.badRequest().body("Error al eliminar las enquestas duplicadas: " + e.getMessage());
-        }
-
-        return ResponseEntity.ok(i);
+    public Integer deleteDuplicates(@PathVariable("enquesta") String enquesta) {
+       return iets.deleteDuplicates(enquesta);
     }
 
     /*
      * Endpoint1 para la funcion getAllInds de ies
      */
     @GetMapping("/allInds/{ruct}/{curs}")
-    public ResponseEntity<?> getAllInds(@RequestParam Integer ruct, @RequestParam Integer curs) {
+    public ResponseEntity<?> getAllInds(@PathVariable Integer ruct, @PathVariable Integer curs) {
         try {
             
             Organ organ = os.findByRuct(ruct);
@@ -170,56 +132,32 @@ public class IndicadorController {
      * Endpoint para la funcion findByEnquestaCursAmbitEstudi de ies
      */
     @PostMapping("/findByEnquestaCursAmbitEstudi")
-    public ResponseEntity<?> findByEnquestaCursAmbitEstudi(@RequestBody EnquestaDTO enquestaDTO) {
-        try {
-            List<IndicadorEnquesta> list = ies.findByEnquestaCursAmbitEstudi(enquestaDTO.getEnquesta(),
+    public List<IndicadorEnquesta> findByEnquestaCursAmbitEstudi(@RequestBody EnquestaDTO enquestaDTO) {
+        return ies.findByEnquestaCursAmbitEstudi(enquestaDTO.getEnquesta(),
                 enquestaDTO.getCurs(), enquestaDTO.getAmbit(), enquestaDTO.getEstudi());
-
-            return ResponseEntity.ok(list);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseEntity.badRequest().body("Error al obtener los indicadores: " + e.getMessage());
-        }
     }
 
     /*
      * Endpoing para la función findByEnquestaCursAmbitEstudiCentre
      */
-
     @PostMapping("/findByEnquestaCursAmbitEstudiCentre")
-    public ResponseEntity<?> findByEnquestaCursAmbitEstudiCentre(@RequestBody EnquestaDTO enquestaDTO) {
-        try {
-            List<IndicadorEnquesta> list = ies.findByEnquestaCursAmbitEstudiCentre(enquestaDTO.getEnquesta(),
+    public List<IndicadorEnquesta> findByEnquestaCursAmbitEstudiCentre(@RequestBody EnquestaDTO enquestaDTO) {
+        return ies.findByEnquestaCursAmbitEstudiCentre(enquestaDTO.getEnquesta(),
                 enquestaDTO.getCurs(), enquestaDTO.getAmbit(), enquestaDTO.getEstudi(), enquestaDTO.getCentre());
-
-            return ResponseEntity.ok(list);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseEntity.badRequest().body("Error al obtener los indicadores: " + e.getMessage());
-        }
     }
 
     @PostMapping("/findByEnquestaCursAmbitEstudiCentreTitulacio")
-    public ResponseEntity<?> findByEnquestaCursAmbitEstudiCentreTitulacio(@RequestBody EnquestaDTO enquestaDTO) {
-        try {
-            List<IndicadorEnquesta> list = ies.findByEnquestaCursAmbitEstudiCentreTitulacio(enquestaDTO.getEnquesta(),
+    public List<IndicadorEnquesta> findByEnquestaCursAmbitEstudiCentreTitulacio(@RequestBody EnquestaDTO enquestaDTO) {
+        return ies.findByEnquestaCursAmbitEstudiCentreTitulacio(enquestaDTO.getEnquesta(),
                 enquestaDTO.getCurs(), enquestaDTO.getAmbit(), enquestaDTO.getEstudi(), enquestaDTO.getCentre(),
                 enquestaDTO.getTitulacio());
-
-            return ResponseEntity.ok(list);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseEntity.badRequest().body("Error al obtener los indicadores: " + e.getMessage());
-        }
     }
 
     /*
      * Endpoint para la funcion getFromTitulacion de ies
      */
     @GetMapping("/getFromTitulacio/{idTitulacio}/{curs}")
-    public ResponseEntity<?> getFromTitulacion(
-        @PathVariable("idTitulacio") Integer idTitulacio,
-        @PathVariable("curs") Integer curs) {
+    public ResponseEntity<?> getFromTitulacion(@PathVariable Integer idTitulacio, @PathVariable Integer curs) {
         try {
             List<Indicador> list = is.getFromTitulacion(idTitulacio, curs);
 

+ 15 - 18
src/main/java/es/uv/saic/web/OrganController.java

@@ -1,6 +1,8 @@
 package es.uv.saic.web;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -12,6 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
 import es.uv.saic.domain.IndicadorEnquesta;
 import es.uv.saic.domain.Organ;
 import es.uv.saic.dto.OrganDTO;
+import es.uv.saic.dto.OrganDTOImp;
 import es.uv.saic.service.IndicadorEnquestaService;
 import es.uv.saic.service.OrganService;
 
@@ -28,30 +31,24 @@ public class OrganController {
      * Endpoint for getTitulacions
      */
     @GetMapping("/getTitulacionsWithCentre")
-    public ResponseEntity<?> getTitulacionsWithCentre() {
-        try {
-            List<OrganDTO> list = os.findAllTitulacionsWithCentre();
-            return ResponseEntity.ok(list);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseEntity.badRequest().body("Error al obtener los centros activos: " + e.getMessage());
-        }
+    public List<OrganDTOImp> getTitulacionsWithCentre() {
+        List<OrganDTO> organDto = os.findAllTitulacionsWithCentre();
+        List<OrganDTOImp> organDtoImp = organDto.stream()
+        .map(OrganDTOImp::new)
+        .collect(Collectors.toList());
+
+        
+
+        return organDtoImp;
     }
 
     /*
      * Endopint for findByRuct
      */
     @GetMapping("/getAllIndsByRuct/{ruct}/{curs}")
-    public ResponseEntity<?> getAllIndsByRuct(@PathVariable Integer ruct, @PathVariable Integer curs) {
-        try {
-            Organ o = os.findByRuct(ruct); 
-            List<IndicadorEnquesta> inds = ies.getAllInds(o, curs);
-
-            return ResponseEntity.ok(inds);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return ResponseEntity.badRequest().body("Error al obtener el organo por ruct: " + e.getMessage());
-        }
+    public List<IndicadorEnquesta> getAllIndsByRuct(@PathVariable Integer ruct, @PathVariable Integer curs) {
+        Organ o = os.findByRuct(ruct); 
+        return ies.getAllInds(o, curs);
     }
 
     @GetMapping("/getOrgsByRuct/{ruct}")