Browse Source

JsonIgnores fuera xd

Mario Martínez Hernández 4 days ago
parent
commit
7eb64e8f63

+ 1 - 1
.gitignore

@@ -2,4 +2,4 @@
 .deployables
 .settings
 markdonwGen.py
-/target/
+/target/

+ 0 - 7
src/main/java/es/uv/saic/domain/Instancia.java

@@ -8,10 +8,6 @@ import jakarta.persistence.*;
 import java.util.Date;
 import java.util.List;
 
-import com.fasterxml.jackson.annotation.JsonBackReference;
-import com.fasterxml.jackson.annotation.JsonManagedReference;
-
-
 /**
  * The persistent class for the instancies database table.
  * 
@@ -42,18 +38,15 @@ public class Instancia implements Serializable {
 		@JoinColumn(name="lugar", referencedColumnName="lugar"),
 		@JoinColumn(name="tlugar", referencedColumnName="tlugar")
 		})
-	@JsonBackReference
 	private Organ organ;
 
 	//bi-directional many-to-one association to Proces
 	@ManyToOne
 	@JoinColumn(name="id_proces")
-	@JsonBackReference
 	private Proces proces;
 
 	//bi-directional many-to-one association to InstanciaTasca
 	@OneToMany(mappedBy="instancia")
-	@JsonManagedReference
 	private List<InstanciaTasca> instanciesTasques;
 
 	public Instancia() {

+ 0 - 7
src/main/java/es/uv/saic/domain/InstanciaTasca.java

@@ -6,10 +6,6 @@ import java.math.BigInteger;
 import jakarta.persistence.*;
 import java.util.Date;
 
-import com.fasterxml.jackson.annotation.JsonBackReference;
-import com.fasterxml.jackson.annotation.JsonManagedReference;
-
-
 /**
  * The persistent class for the tasquesi database table.
  * 
@@ -47,19 +43,16 @@ public class InstanciaTasca implements Serializable {
 	//bi-directional many-to-one association to Instancia
 	@ManyToOne
 	@JoinColumn(name="id_instancia")
-	@JsonBackReference
 	private Instancia instancia;
 
 	//bi-directional many-to-one association to Tasca
 	@ManyToOne
 	@JoinColumn(name="id_tasca")
-	@JsonBackReference
 	private Tasca tasca;
 
 	//bi-directional many-to-one association to Usuari
 	@ManyToOne
 	@JoinColumn(name="usuari_fet")
-	@JsonBackReference
 	private Usuari usuari;
 
 	public InstanciaTasca() {

+ 2 - 12
src/main/java/es/uv/saic/domain/Organ.java

@@ -4,12 +4,6 @@ import java.io.Serializable;
 import jakarta.persistence.*;
 import java.util.List;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import com.fasterxml.jackson.annotation.JsonBackReference;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonManagedReference;
-
 
 @Entity
 @Table(name="organs")
@@ -28,14 +22,12 @@ public class Organ implements Serializable {
 	@Column(name="nom_val")
 	private String nomVal;
 
-	@JsonIgnore
 	private Integer ruct;
 	
 	private String tambit;
 
 	//bi-directional many-to-one association to Instancia
 	@OneToMany(mappedBy="organ")
-	@JsonIgnore
 	private List<Instancia> instancias;
 	
 	//bi-directional many-to-one association to Organ
@@ -44,12 +36,10 @@ public class Organ implements Serializable {
 		@JoinColumn(name="lugar2", referencedColumnName="lugar"),
 		@JoinColumn(name="tlugar2", referencedColumnName="tlugar")
 		})
-	@JsonBackReference
 	private Organ organ;
 
 	//bi-directional many-to-one association to Organ
 	@OneToMany(mappedBy="organ")
-	@JsonBackReference
 	private List<Organ> organsFill;
 	
 	@OneToMany()
@@ -61,7 +51,7 @@ public class Organ implements Serializable {
 
 	//bi-directional many-to-one association to UsuarisRol
 	@OneToMany(mappedBy="organ")
-	@JsonBackReference
+	
 	private List<UsuarisRol> usuarisRols;
 	
 	@OneToOne()
@@ -123,7 +113,7 @@ public class Organ implements Serializable {
 	public void setTambit(String tambit) {
 		this.tambit = tambit;
 	}
-	
+
 	public Organ getOrgan() {
 		return this.organ;
 	}

+ 22 - 1
src/main/java/es/uv/saic/domain/OrganRepository.java

@@ -1,5 +1,6 @@
 package es.uv.saic.domain;
 
+import java.math.BigInteger;
 import java.util.List;
 
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -72,5 +73,25 @@ public interface OrganRepository extends JpaRepository<Organ, OrganPK> {
 	
 	@Query(value=("SELECT lugar_eq FROM organs_equivalents WHERE lugar = ?1 AND tlugar = ?2 AND tlugar_eq = ?2 ORDER BY lugar_eq DESC"), nativeQuery=true)
 	public List<Integer> getEquivalents(Integer lugar, String tlugar);
-	
+
+	@Query(value=("SELECT o1.lugar AS lugar, o1.tlugar AS tlugar," + 
+				"o1.lugar2 AS lugar2, o1.tlugar2 AS tlugar2, " + 
+				"o1.nom_cas AS nomCas, o1.nom_val AS nomVal," + 
+				"o1.ruct AS ruct, o1.tambit AS tambit," + 
+				"o2.nom_cas AS nomCentroCas, o2.nom_val AS nomCentroVal " + 
+				"FROM organs AS o1 JOIN organs AS o2 on o1.tlugar2 = o2.tlugar AND o1.lugar2 = o2.lugar WHERE o1.actiu = true;"), nativeQuery=true)
+	public List<OrganDTO> findAllTitulacionsWithCentre();
+	
+	public static interface OrganDTO {
+    	String getLugar();
+		String getTlugar();
+		String getLugar2();
+		String getTlugar2();
+		String getNomCas();
+		String getNomVal();
+		Integer getRuct();
+		String getTambit();
+		String getNomCentroCas();
+		String getNomCentroVal();
+	}
 }

+ 0 - 4
src/main/java/es/uv/saic/domain/UsuarisRol.java

@@ -5,9 +5,6 @@ import java.io.Serializable;
 import jakarta.persistence.*;
 import java.util.Date;
 
-import com.fasterxml.jackson.annotation.JsonBackReference;
-
-
 /**
  * The persistent class for the usuaris_rols database table.
  * 
@@ -40,7 +37,6 @@ public class UsuarisRol implements Serializable {
 		@JoinColumn(name="lugar", referencedColumnName="lugar"),
 		@JoinColumn(name="tlugar", referencedColumnName="tlugar")
 		})
-	@JsonBackReference
 	private Organ organ;
 
 	//bi-directional many-to-one association to Rol

+ 5 - 0
src/main/java/es/uv/saic/service/OrganService.java

@@ -8,6 +8,7 @@ import org.springframework.stereotype.Service;
 
 import es.uv.saic.domain.Organ;
 import es.uv.saic.domain.OrganRepository;
+import es.uv.saic.domain.OrganRepository.OrganDTO;
 
 
 @Service
@@ -100,6 +101,10 @@ public class OrganService {
 	public List<Integer> getEquivalents(Integer lugar, String tlugar){
 		return this.organRepository.getEquivalents(lugar, tlugar);
 	}
+
+	public List<OrganDTO> findAllTitulacionsWithCentre() {
+		return this.organRepository.findAllTitulacionsWithCentre();
+	}
 	
 	
 }

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

@@ -2,6 +2,10 @@ 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.HttpResponse;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
@@ -9,6 +13,7 @@ import java.util.List;
 import jakarta.mail.MessagingException;
 
 import org.springframework.beans.factory.annotation.Autowired;
+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;
@@ -21,6 +26,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.Datasource;
 import es.uv.saic.domain.IndicadorEnquesta;
 import es.uv.saic.domain.IndicadorEnquestaTmp;
@@ -50,6 +59,9 @@ public class DataController {
 
 	@Autowired
 	private DatasourceService das;
+
+	@Value("${saic.url.domain}")
+	private String uri;
 	
 	// GET que carga la interfaz relacionada con toda la importación de datos
 	@GetMapping("/data/import")
@@ -110,11 +122,44 @@ public class DataController {
 	// 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 {    
-		List<Organ> centres = os.getActiveCentres();
-		List<Organ> titulacions = os.getTitulacions();
-		model.addAttribute("centres", centres);
-		model.addAttribute("titulacions", titulacions);
+	public String current(Model model, Authentication auth) throws IOException {
+		URI uriobjUri = URI.create(uri + "/getActiveCentres");
+		URI uriobjUri2 = URI.create(uri + "/getTitulacions");
+
+		try {
+			HttpClient httpClient = HttpClient.newHttpClient();
+			java.net.http.HttpRequest request = java.net.http.HttpRequest.newBuilder()
+					.uri(uriobjUri)
+					.GET()
+					.build();
+
+			HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
+
+			HttpClient httpClient2 = HttpClient.newHttpClient();
+			java.net.http.HttpRequest request2 = java.net.http.HttpRequest.newBuilder()
+					.uri(uriobjUri2)
+					.GET()
+					.build();
+
+			HttpResponse<String> response2 = httpClient2.send(request2, 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<Organ> centres = mapper.readValue(response.body(), new TypeReference<List<Organ>>() {});
+				List<Organ> titulacions = mapper.readValue(response2.body(), new TypeReference<List<Organ>>() {});
+
+				model.addAttribute("centres", centres);
+				model.addAttribute("titulacions", titulacions);
+			} 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 "dataCurrent";
 	}
 	

+ 0 - 1
src/main/java/es/uv/saic/web/IndicadorController.java

@@ -13,7 +13,6 @@ import org.springframework.web.bind.annotation.RestController;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
 
 import es.uv.saic.domain.Organ;
 import es.uv.saic.service.IndicadorService;

+ 6 - 25
src/main/java/es/uv/saic/web/OrganController.java

@@ -10,9 +10,9 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
 
 import es.uv.saic.domain.Organ;
+import es.uv.saic.domain.OrganRepository.OrganDTO;
 import es.uv.saic.service.OrganService;
 
 @RestController
@@ -25,19 +25,11 @@ public class OrganController {
      * Endopint for getActiveCentres
      */ 
     @GetMapping("/getActiveCentres")
-    public ResponseEntity<String> getActiveCentres() {
+    public ResponseEntity<?> getActiveCentres() {
         try {
-            final ObjectMapper mapper = new ObjectMapper();
-            
             List<Organ> list = organService.getActiveCentres();
 
-            for (Organ organ : list) {
-                organ.setInstancies(null);
-            }
-
-            String response = mapper.writeValueAsString(list);
-
-            return ResponseEntity.ok(response);
+            return ResponseEntity.ok(list);
         } catch (Exception e) {
             e.printStackTrace();
             return ResponseEntity.badRequest().body("Error al obtener los centros activos: " + e.getMessage());
@@ -45,18 +37,11 @@ public class OrganController {
     }
 
     @GetMapping("/getTitulacions")
-    public ResponseEntity<String> getTitulacions() {
+    public ResponseEntity<?> getTitulacions() {
         try {
-            final ObjectMapper mapper = new ObjectMapper();
-            
-            List<Organ> list = organService.getTitulacions();
-
-            for (Organ organ : list) {
-                organ.setInstancies(null);
-            }
+            List<OrganDTO> list = organService.findAllTitulacionsWithCentre();
 
-            String response = mapper.writeValueAsString(list);
-            return ResponseEntity.ok(response);
+            return ResponseEntity.ok(list);
         } catch (Exception e) {
             e.printStackTrace();
             return ResponseEntity.badRequest().body("Error al obtener los centros activos: " + e.getMessage());
@@ -81,8 +66,4 @@ public class OrganController {
             return ResponseEntity.badRequest().body("Error al obtener el organo por ruct: " + e.getMessage());
         }
     }
-
-    /*
-     * End
-     */
 }

+ 2 - 2
src/main/resources/templates/dataCurrent.html

@@ -85,13 +85,13 @@
 						<div class="col-6">
 							<label th:text="#{data.input.cen}">Centre(s)</label>
 							<select class="selectpicker" id="centresSelector" name="centre" data-live-search="true" data-width="100%" data-actions-box="true" th:attr="data-none-selected-text=#{global.selectors.noData}" required>
-						        <option th:each="item : ${centres}" th:if="${item.id.tlugar == 'C'}" th:text="${#locale.language} == 'es' ? ${item.nomCas}:${item.nomVal}" th:attr="value=${item.ruct}, data-tlugar=${item.id.tlugar}, data-parent=${item.ruct}"></option>
+						        <option th:each="item : ${centres}" th:if="${item.tlugar == 'C'}" th:text="${#locale.language} == 'es' ? ${item.nomCas}:${item.nomVal}" th:attr="value=${item.ruct}, data-tlugar=${item.tlugar}, data-parent=${item.ruct}"></option>
 						    </select>
 						</div>
 						<div class="col-6">
 							<label th:text="#{data.input.tit}">Titulació(ns)</label>
 							<select class="selectpicker" id="titulacionsSelector" name="titulacio" data-live-search="true" data-width="100%" data-actions-box="true" required>
-						        <option th:each="item : ${titulacions}" th:if="${item.id.tlugar == 'T'}" th:text="${#locale.language} == 'es' ? ${item.nomCas}:${item.nomVal}" th:attr="value=${item.ruct}, data-tlugar=${item.id.tlugar}, data-parent=${item.organ.ruct}"></option>
+						        <option th:each="item : ${titulacions}" th:if="${item.tlugar == 'T'}" th:text="${#locale.language} == 'es' ? ${item.nomCas}:${item.nomVal}" th:attr="value=${item.ruct}, data-tlugar=${item.tlugar}, data-parent=${item.ruct}"></option>
 						    </select>
 						</div>
 					</div>