Ver código fonte

Modificado DocumentController

Mario Martínez Hernández 1 mês atrás
pai
commit
b2f1f7570d

+ 11 - 6
notas.md

@@ -35,11 +35,12 @@
  - LinkService -> SAIC_CORE
 
  ### Llamadas a DocumentService a convertir
-    - ln 335 findByCategoriaOrgan(Integer idCategoria, Integer lugar, String tlugar) POST
-    - ln 425 findByCategoriaOrgan(Integer idCategoria, Integer lugar, String tlugar) POST
-    - ln 435 save(Document doc) POST
-    - ln 436 upload(Integer idDocument, Integer idCategoria, Integer lugar, String tlugar, MultipartFile file) POST
-    - ln 438 save(Document doc) POST
+    - ln 335 findByCategoriaOrgan(Integer idCategoria, Integer lugar, String tlugar) POST - ✅
+    - ln 425 findByCategoriaOrgan(Integer idCategoria, Integer lugar, String tlugar) POST - ✅
+    - ln 435 save(Document doc) POST - ✅
+    - ln 436 upload(Integer idDocument, Integer idCategoria, Integer lugar, String tlugar, MultipartFile file) POST - ✅
+    - ln 438 save(Document doc) POST - ✅
+    - ln ??? archive(Document doc) POST - ✅
 ## DownloadController -> SAIC_DOCS
  - InstanciaTascaService -> SAIC_CORE
  - IndicadorEnquestaService -> SAIC_CORE
@@ -83,7 +84,11 @@
     - ln 460 findByID(String tlugar, Integer idTitulacio) POST
     - ln 461 findByID(String tlugar, Integer idTutulacio) POST
     - ln 503 getTitulacionsByTypeCentre(Integer lugar, Integer ambit) POST
-
+ ### Llamadas a DocumentService a convertir
+   -
+   -
+   -
+   
 # Servicios que necesitan un nuevo controlador: 
 ## IndicadorController -> ASIC_CORE
  ### IndicadorEnquestaTmpService endpoints:

+ 1 - 1
src/main/java/es/uv/saic/dto/CategoriaDTO.java

@@ -7,7 +7,7 @@ public class CategoriaDTO {
  
     CategoriaDTO() {}
 
-    CategoriaDTO(Integer categoria, Integer lugar, String tlugar) {
+    public CategoriaDTO(Integer categoria, Integer lugar, String tlugar) {
         this.categoria = categoria;
         this.lugar = lugar;
         this.tlugar = tlugar;

+ 1 - 1
src/main/java/es/uv/saic/dto/DocumentTmpDTO.java

@@ -11,7 +11,7 @@ public class DocumentTmpDTO {
 
     DocumentTmpDTO() {}
 
-    DocumentTmpDTO(Integer idDocument, Integer idCategoria, Integer lugar,
+    public DocumentTmpDTO(Integer idDocument, Integer idCategoria, Integer lugar,
         String tlugar, MultipartFile file) {
         this.idDocument = idDocument;
         this.idCategoria = idCategoria;

+ 115 - 7
src/main/java/es/uv/saic/web/DashboardController.java

@@ -1,6 +1,11 @@
 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;
@@ -37,6 +42,10 @@ 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;
@@ -49,9 +58,11 @@ import es.uv.saic.domain.Organ;
 import es.uv.saic.domain.Usuari;
 import es.uv.saic.domain.UsuarisRol;
 import es.uv.saic.dto.AnyDimensioDTO;
+import es.uv.saic.dto.CategoriaDTO;
 import es.uv.saic.dto.CategoriaDocumentDTO;
 import es.uv.saic.dto.DimensioInstanciesDTO;
 import es.uv.saic.dto.DocumentDTO;
+import es.uv.saic.dto.DocumentTmpDTO;
 import es.uv.saic.dto.IndicadorDTO;
 import es.uv.saic.dto.InstanciaDTO;
 import es.uv.saic.dto.InstanciaGanttDTO;
@@ -99,6 +110,9 @@ public class DashboardController {
 
 	@Value("${saic.url.public}")
 	private String publicUrl;
+
+	@Value("${saic.url.domain}")
+	private String uri;
 	
 	// GET para cargar el dashboard con toda su información
 	@GetMapping("/dashboard")
@@ -332,7 +346,7 @@ public class DashboardController {
 			
 			List<Categoria> catChilds = cs.findByPareTambitAndU(c.getIdCategoria(), o.getTambit());
 			for(Categoria cc : catChilds) {
-				Document doc = ds.findByCategoriaOrgan(cc.getIdCategoria(), o.getId().getLugar(), o.getId().getTlugar());
+				Document doc = findByCategoriaOrgan(cc.getIdCategoria(), o.getId().getLugar(), o.getId().getTlugar());
 				if(doc != null) {
 					DocumentDTO docdto = new DocumentDTO(locale.equals("es") ? cc.getNomCas() : cc.getNomVal(), 
 														 doc.getIdDocument().toString(), 
@@ -352,7 +366,7 @@ public class DashboardController {
 				
 		return data;
 	}
-	
+
 	// GET para conseguir el diagrama de gantt a partir del ruct
 	@GetMapping("/dashboard/gantt/{ruct}")
 	@ResponseBody
@@ -422,7 +436,7 @@ public class DashboardController {
 		
 		Categoria cat = this.cs.findById(idCategoria);
 		Organ org = this.os.findByID(tlugar, lugar);
-		Document doc = this.ds.findByCategoriaOrgan(idCategoria, lugar, tlugar);
+		Document doc = findByCategoriaOrgan(idCategoria, lugar, tlugar);
 		if(doc != null) {
 			this.ds.archive(doc);
 		}
@@ -432,12 +446,12 @@ public class DashboardController {
 		doc.setData(new Date(System.currentTimeMillis()));
 		doc.setNom(cat.getNomCas());
 		doc.setVisible(true);
-		doc = this.ds.save(doc);
-		String path = this.ds.upload(doc.getIdDocument(), cat.getIdCategoria(), lugar, tlugar, file);
+		doc = save(doc);
+		String path = upload(doc.getIdDocument(), cat.getIdCategoria(), lugar, tlugar, file);
 		doc.setRuta(path);
-		this.ds.save(doc);
+		save(doc);
 	}
-	
+
 	// POST para añadir un documento a un centro cocncreto
 	@PostMapping("/dashboard/documents/archive")
 	@ResponseBody
@@ -669,4 +683,98 @@ public class DashboardController {
 	    return String.format("%.1f %ciB", value / 1024.0, ci.current());
 	}
 	
+	private Document findByCategoriaOrgan(Integer idCategoria, Integer lugar, String tlugar) {
+		Document doc = null;
+		URI uriobjUri = URI.create(uri + "/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;
+	}
+
+		private Document save(Document doc) {
+		URI uriobjUri = URI.create(uri + "/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;
+	}
+
+	private String upload(Integer idDocument, Integer idCategoria, Integer lugar, String tlugar, MultipartFile file) {
+		URI uriobjUri = URI.create(uri + "/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 "";
+	
+	}
 }

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

@@ -40,7 +40,7 @@ import es.uv.saic.dto.IndicadorEnquestaTmpDup;
 import es.uv.saic.dto.OrganDTOImp;
 import es.uv.saic.service.DataService;
 import es.uv.saic.service.DatasourceService;
-import es.uv.saic.service.IndicadorEnquestaService;
+
 @Controller
 public class DataController {
 
@@ -326,7 +326,8 @@ public class DataController {
 			
 		URI uriobjUri = URI.create(uri + "/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()
@@ -337,8 +338,6 @@ public class DataController {
 			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
 
 			if (response.statusCode() == HttpURLConnection.HTTP_OK) {
-				ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-	
 				inds = mapper.readValue(response.body(), new TypeReference<List<IndicadorEnquesta>>() {});
 			} else {
 				System.err.println("Failed to load List<IndicadorEnquesta>. HTTP response code: " + response.statusCode());
@@ -358,6 +357,7 @@ public class DataController {
 	public List<IndicadorEnquesta> currentShow(Model model, Authentication auth, @RequestParam String enquesta,
 			@RequestParam Integer curs, @RequestParam String ambit, @RequestParam String estudi,
 			@RequestParam Integer centre, @RequestParam Integer titulacio) throws IOException {   
+		
 		List<IndicadorEnquesta> inds = new ArrayList<IndicadorEnquesta>();
 		EnquestaDTO enquestaDTO = new EnquestaDTO(enquesta, curs, ambit, estudi, centre, titulacio);
 		URI uriobjUri = null;

+ 16 - 5
src/main/java/es/uv/saic/web/DocumentController.java

@@ -2,12 +2,11 @@ package es.uv.saic.web;
 
 import java.io.IOException;
 
+import org.springframework.beans.factory.annotation.Autowired;
 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.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
 
 import es.uv.saic.dto.CategoriaDTO;
 import es.uv.saic.dto.DocumentTmpDTO;
@@ -16,8 +15,8 @@ import es.uv.saic.service.DocumentService;
 
 @RestController
 public class DocumentController {
+    @Autowired
     private DocumentService ds;
-
     /*
      * endpoint para save
      */
@@ -30,8 +29,7 @@ public class DocumentController {
         } catch (Exception e) {
             e.printStackTrace();
             return ResponseEntity.badRequest().body("Hubo un error al procesar el documento: " + e.getMessage());
-        }
-        
+        }   
     }
 
     /*
@@ -65,4 +63,17 @@ public class DocumentController {
             return ResponseEntity.badRequest().body("Error: " + e.getMessage());
         }
     }
+
+    @PostMapping("/document/archive")
+    public ResponseEntity<?> archive(@RequestBody Document doc) {
+        try {
+            Document auxDocument = ds.archive(doc);        
+            return (auxDocument != null) ? ResponseEntity.ok(auxDocument) : 
+                ResponseEntity.badRequest().body("El documento no se a podido archivar correctamente.") ; 
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResponseEntity.badRequest().body("Hubo un error al procesar el documento: " + e.getMessage());
+        }
+        
+    }
 }