瀏覽代碼

DocumentController.java llamadas

Drowsito 1 月之前
父節點
當前提交
3ac4a83959

+ 25 - 0
src/main/java/es/uv/saic/dto/ArchiveOrganDTO.java

@@ -0,0 +1,25 @@
+package es.uv.saic.dto;
+
+public class ArchiveOrganDTO {
+    private Integer lugar;
+    private String tlugar;
+
+    
+    public ArchiveOrganDTO(Integer lugar, String tlugar) {
+        this.lugar = lugar;
+        this.tlugar = tlugar;
+    }
+    
+    public Integer getLugar() {
+        return lugar;
+    }
+    public void setLugar(Integer lugar) {
+        this.lugar = lugar;
+    }
+    public String getTlugar() {
+        return tlugar;
+    }
+    public void setTlugar(String tlugar) {
+        this.tlugar = tlugar;
+    }
+}

+ 0 - 87
src/main/java/es/uv/saic/service/DocumentService.java

@@ -1,87 +0,0 @@
-package es.uv.saic.service;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.Optional;
-
-import org.apache.commons.io.FilenameUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import es.uv.saic.domain.Document;
-import es.uv.saic.domain.DocumentRepository;
-
-@Service
-public class DocumentService {
-	
-	@Autowired
-	private DocumentRepository dr;
-	
-	@Value("${saic.data.docsPath}")
-	private String docsPath;
-
-	
-	public List<Document> getAll() {
-		return this.dr.findAll();
-	}
-	
-	public Document findById(Integer id) {
-		Optional<Document> c = this.dr.findById(id);
-		if(!c.isEmpty()) {
-			return c.get();
-		}
-		return null;
-	}
-	
-	public List<Document> findAllByCategoriaOrgan(Integer categoria, Integer lugar, String tlugar){
-		return this.dr.findAllByCategoriaOrgan(categoria, lugar, tlugar);
-	}
-	
-	public Document findByCategoriaOrgan(Integer categoria, Integer lugar, String tlugar){
-		return this.dr.findByCategoriaOrgan(categoria, lugar, tlugar);
-	}
-	
-	public List<Document> findByCategoriaNom(String nom){
-		return this.dr.findByCategoriaNom(nom);
-	}
-	
-	public List<Document> findByCategoriaTipus(String tipus){
-		return this.dr.findByCategoriaTipus(tipus);
-	}
-	
-	public Document archive(Document d) {
-		d.setVisible(false);
-		d = this.dr.save(d);
-		return d;
-	}
-	
-	public void archiveByOrgan(Integer lugar, String tlugar) {
-		this.dr.archiveByOrgan(lugar, tlugar);
-	}
-	
-	public boolean exists(Integer idCategoria, Integer lugar, String tlugar) {
-		Document d = this.dr.findByCategoriaOrgan(idCategoria, lugar, tlugar);
-		if(d == null) {
-			return false;
-		}
-		return true;
-	}
-	
-	public Document save(Document d) {
-		return this.dr.saveAndFlush(d);
-	}
-	
-	public void delete(Document d) {
-		this.dr.delete(d);
-	}
-	
-	public String upload(Integer idDocument, Integer idCategoria, Integer lugar, String tlugar, MultipartFile file) throws IllegalStateException, IOException {
-		String ext = FilenameUtils.getExtension(file.getOriginalFilename());
-		String fname = lugar.toString()+"_"+tlugar+"_"+idCategoria.toString()+"_"+idDocument.toString()+"."+ext;
-		file.transferTo(new File(docsPath+fname));
-		return docsPath+fname;
-	}
-}

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

@@ -3,6 +3,11 @@ 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;
@@ -15,6 +20,10 @@ 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;
@@ -25,6 +34,7 @@ import es.uv.saic.domain.Plantilla;
 import es.uv.saic.domain.TascaVersioTransfer;
 import es.uv.saic.domain.Organ;
 import es.uv.saic.domain.Usuari;
+import es.uv.saic.dto.CategoriaDTO;
 import es.uv.saic.dto.InstanciaTascaDTO;
 import es.uv.saic.dto.TascaInformeTransferDTO;
 
@@ -43,10 +53,10 @@ public class InstanciaTascaService {
 	private InstanciaService instanciaService;
 	@Autowired
 	private EmailService es;
-	@Autowired
-	private DocumentService documentService;
 	@Value("${saic.data.filePath}")
 	private String filePath;
+	@Value("${saic.url.docs.domain}")
+	private String uriDocs;
 	
 	
 	public List<InstanciaTasca> findByInstancia(BigInteger i_id) {
@@ -299,7 +309,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.documentService.findByCategoriaOrgan(Integer.parseInt(options), o.getId().getLugar(), o.getId().getTlugar());
+			Document d = this.findByCategoriaOrgan(Integer.parseInt(options), o.getId().getLugar(),  o.getId().getTlugar());
 			it.setEvidencia(d.getRuta());
 			it.setEstat("E");
 			this.saveChanges(user, it);
@@ -471,5 +481,37 @@ 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;
+	}
 	
 }

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

@@ -58,6 +58,7 @@ 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.ArchiveOrganDTO;
 import es.uv.saic.dto.CategoriaDTO;
 import es.uv.saic.dto.CategoriaDocumentDTO;
 import es.uv.saic.dto.DimensioInstanciesDTO;
@@ -71,7 +72,6 @@ import es.uv.saic.dto.TreeDTODimensio;
 import es.uv.saic.dto.TreeDTOInstancia;
 import es.uv.saic.dto.TreeDTOOrgan;
 import es.uv.saic.service.CategoriaService;
-import es.uv.saic.service.DocumentService;
 import es.uv.saic.service.GraficaService;
 import es.uv.saic.service.IndicadorEnquestaService;
 import es.uv.saic.service.IndicadorService;
@@ -95,8 +95,6 @@ public class DashboardController {
 	@Autowired
 	private CategoriaService cs;
 	@Autowired
-	private DocumentService ds;
-	@Autowired
 	private IndicadorService ids;
 	@Autowired
 	private IndicadorEnquestaService ies;
@@ -444,7 +442,7 @@ public class DashboardController {
 		Organ org = this.os.findByID(tlugar, lugar);
 		Document doc = findByCategoriaOrgan(idCategoria, lugar, tlugar);
 		if(doc != null) {
-			this.ds.archive(doc);
+			this.archive(doc);
 		}
 		doc = new Document();
 		doc.setCategoria(cat);
@@ -462,9 +460,9 @@ public class DashboardController {
 	@PostMapping("/dashboard/documents/archive")
 	@ResponseBody
 	public void archiveDocuments(Model model, @RequestParam("lugar") Integer lugar, @RequestParam("tlugar") String tlugar) {
-		this.ds.archiveByOrgan(lugar, tlugar);
+		this.archiveByOrgan(lugar, tlugar);
 	}
-	
+
 	// GET para conseguir todos los graficos a partir de un RUCT
 	@GetMapping("/dashboard/graphs/list/{ruct}")
 	@ResponseBody
@@ -721,7 +719,7 @@ public class DashboardController {
 		return doc;
 	}
 
-		private Document save(Document doc) {
+	private Document save(Document doc) {
 		URI uriobjUri = URI.create(uriDocs + "/document/save");
 		ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 		
@@ -751,6 +749,65 @@ public class DashboardController {
 		return 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 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();
+		}
+	}
+
 	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);