Browse Source

ExportController adapted

Drowsito 2 weeks ago
parent
commit
fd26c7c456

+ 16 - 0
src/main/java/es/uv/saic/feign/ExportClient.java

@@ -0,0 +1,16 @@
+package es.uv.saic.feign;
+
+import java.util.List;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+@FeignClient(value = "export-controller", url = "${saic.url.domain}")
+public interface ExportClient {
+    @GetMapping("/export/{id_p}/{id_t}")
+    List<String[]> exportData(@PathVariable Integer id_p, @PathVariable Integer id_t);
+
+    @GetMapping("/export2/{id_p}/{id_t}")
+     List<String[]> exportData2(@PathVariable Integer id_p, @PathVariable Integer id_t);
+}

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

@@ -2,17 +2,12 @@ package es.uv.saic.web;
 
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import jakarta.servlet.http.HttpServletResponse;
 
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.jsoup.nodes.Element;
-import org.jsoup.select.Elements;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.Authentication;
 import org.springframework.stereotype.Controller;
@@ -20,17 +15,14 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 
-import es.uv.saic.domain.Instancia;
-import es.uv.saic.domain.InstanciaTasca;
-import es.uv.saic.domain.Proces;
 import es.uv.saic.domain.Usuari;
-import es.uv.saic.service.ProcesService;
+import es.uv.saic.feign.ExportClient;
 
 @Controller
 public class ExportController {
 	
 	@Autowired
-	private ProcesService ps;
+	private ExportClient ec;
 	
 	/*
 	 * Export data for a given process and task as CSV
@@ -47,54 +39,12 @@ public class ExportController {
 			return;
 		}
 		
+		List<String[]> lines = ec.exportData(id_p, id_t);
 		response.setContentType("text/csv");
         response.setCharacterEncoding("UTF-8");
         response.setHeader("Content-Disposition", "attachment; filename=data_export.csv");
 		
 		PrintWriter pw = response.getWriter();
-		Proces p = this.ps.findByID(id_p);
-		List<Instancia> ins = p.getInstancies();
-		List<String[]> lines = new ArrayList<>();
-		if(p.getNomProces().equals("SAEM")) {
-			String[] header = {"centre", "titulacio", "codi", "nom", "obs", "per"};
-			lines.add(header);
-		}
-		else {
-			String[] header = {"centre", "titulacio", "cod_assignatura_1er", "nom_assignatura_1er", "obs_assignatura_1er", "cod_assignatura_3er", "nom_assignatura_3er", "obs_assignatura_3er"};
-			lines.add(header);
-		}
-				
-		for(Instancia i : ins) {
-			InstanciaTasca it = i.getInstanciaTasca().stream()
-												     .filter(c -> id_t.equals(c.getTasca().getIdTascap()))
-												     .findAny()
-												     .orElse(null);
-			if(it == null) {
-				continue;
-			}
-			if(it.getEstat() == null){
-				continue;
-			}
-			if(!it.getEstat().equals("E")){
-				continue;
-			}
-			
-			Document doc = Jsoup.parseBodyFragment(it.getText());
-			
-			Elements elements = doc.select("p.western.mceEditable");
-			int j = 2;
-			int size = lines.get(0).length;
-	        String[] line = new String[size];
-        	line[0] = i.getCentre().toString();
-			line[1] = i.getTitulacio().toString();
-			for(Element e : elements) {
-				line[j] = e.text();
-				j++;
-			}
-			
-			lines.add(line);    
-			
-		}
 		
 		lines.stream()
 	         .map(this::convertToCSV)
@@ -205,54 +155,13 @@ public class ExportController {
 			return;
 		}
 		
+		List<String[]> lines = ec.exportData2(id_p, id_t);
 		response.setContentType("text/csv");
         response.setCharacterEncoding("UTF-8");
         response.setHeader("Content-Disposition", "attachment; filename=data_export.csv");
 		
 		PrintWriter pw = response.getWriter();
-		Proces p = this.ps.findByID(id_p);
-		List<Instancia> ins = p.getInstancies();
-		List<String[]> lines = new ArrayList<>();
-		String[] header = {"centre", "titulacio", "nom", "cognoms", "email"};
-		lines.add(header);
-				
-		for(Instancia i : ins) {
-			InstanciaTasca it = i.getInstanciaTasca().stream()
-												     .filter(c -> c.getTasca().getIdTascap().compareTo(id_t) == 0)
-												     .findAny()
-												     .orElse(null);
-			
-			if(it == null) {
-				continue;
-			}
-			if(it.getEstat().isEmpty() || it.getEstat().isBlank()){
-				continue;
-			}
-			if(!it.getEstat().equals("E")){
-				continue;
-			}
-			
-			Document doc = Jsoup.parseBodyFragment(it.getText());
-	        int size = lines.get(0).length;   
 
-			Elements rows = doc.getElementsByTag("tr");
-			for(Element row : rows) {
-				Elements cells = row.getElementsByTag("td");
-				if(cells.get(0).text().equals("NOM")) {
-					continue;
-				}
-				String[] line = new String[size];
-				if(!cells.get(1).text().isEmpty()) {
-					line[0] = i.getCentre().toString();
-					line[1] = i.getTitulacio().toString();
-					line[2] = cells.get(0).text();
-					line[3] = cells.get(1).text();
-					line[4] = cells.get(2).text();
-					lines.add(line); 
-				}
-			}		
-		}
-		
 		lines.stream()
 	         .map(this::convertToCSV)
 	         .forEach(pw::println);