Jelajahi Sumber

Mejoras en el generación de JSON, implementación del organController y cambios varios

Mario Martínez Hernández 5 hari lalu
induk
melakukan
8b6e8cd463

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

@@ -8,6 +8,9 @@ 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.
@@ -39,15 +42,18 @@ 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() {

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

@@ -6,6 +6,9 @@ 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.
@@ -44,16 +47,19 @@ 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() {

+ 9 - 1
src/main/java/es/uv/saic/domain/Organ.java

@@ -4,6 +4,11 @@ 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
@@ -23,6 +28,7 @@ public class Organ implements Serializable {
 	@Column(name="nom_val")
 	private String nomVal;
 
+	@JsonIgnore
 	private Integer ruct;
 	
 	private String tambit;
@@ -37,10 +43,12 @@ 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()
@@ -52,6 +60,7 @@ public class Organ implements Serializable {
 
 	//bi-directional many-to-one association to UsuarisRol
 	@OneToMany(mappedBy="organ")
+	@JsonBackReference
 	private List<UsuarisRol> usuarisRols;
 	
 	@OneToOne()
@@ -209,5 +218,4 @@ public class Organ implements Serializable {
 			this.codis = this.getId().getLugar().toString() +", "+ this.codis;
 		}
 	}
-
 }

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

@@ -5,6 +5,8 @@ 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.
@@ -38,6 +40,7 @@ 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

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

@@ -139,7 +139,7 @@ public class IndicadorController {
             Integer curs = jsonNode.get("curs").asInt();
             List<IndicadorEnquesta> list = ies.getAllInds(organ, curs);
 
-            final ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+            final ObjectMapper mapper = new ObjectMapper();
 
             String response = mapper.writeValueAsString(list);
 
@@ -167,8 +167,8 @@ public class IndicadorController {
             Integer idCentre = jsonNode.get("idCentre").asInt();
             Integer curs = jsonNode.get("curs").asInt();
 
-            List<IndicadorEnquestaValor>  list = ies.getAllInds(idTitulacio, idCentre, curs);
-            final ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+            List<IndicadorEnquestaValor> list = ies.getAllInds(idTitulacio, idCentre, curs);
+            final ObjectMapper mapper = new ObjectMapper();
             String response = mapper.writeValueAsString(list);
 
             return ResponseEntity.ok(response);
@@ -197,7 +197,7 @@ public class IndicadorController {
 
             List<IndicadorEnquesta> list = ies.findByEnquestaCursAmbitEstudi(enquesta, curs, ambit, estudi);
 
-            final ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+            final ObjectMapper mapper = new ObjectMapper();
 
             String response = mapper.writeValueAsString(list);
 
@@ -229,7 +229,7 @@ public class IndicadorController {
 
             List<IndicadorEnquesta> list = ies.findByEnquestaCursAmbitEstudiCentre(enquesta, curs, ambit, estudi, centre);
 
-            final ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+            final ObjectMapper mapper = new ObjectMapper();
 
             String response = mapper.writeValueAsString(list);
 
@@ -258,7 +258,7 @@ public class IndicadorController {
 
             List<IndicadorEnquesta> list = ies.findByEnquestaCursAmbitEstudiCentreTitulacio(enquesta, curs, ambit, estudi, centre, titulacio);
 
-            final ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+            final ObjectMapper mapper = new ObjectMapper();
 
             String response = mapper.writeValueAsString(list);
 
@@ -286,7 +286,7 @@ public class IndicadorController {
 
             List<Indicador> list = is.getFromTitulacion(idTitulacio, curs);
 
-            final ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+            final ObjectMapper mapper = new ObjectMapper();
 
             String response = mapper.writeValueAsString(list);
 

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

@@ -2,13 +2,13 @@ package es.uv.saic.web;
 
 import java.util.List;
 
-import org.aspectj.weaver.ast.Or;
 import org.springframework.beans.factory.annotation.Autowired;
 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.RestController;
 
-import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
 
@@ -26,12 +26,15 @@ public class OrganController {
      */ 
     @GetMapping("/getActiveCentres")
     public ResponseEntity<String> getActiveCentres() {
-        ObjectMapper mapper = null;
         try {
-            mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+            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);
@@ -40,4 +43,46 @@ public class OrganController {
             return ResponseEntity.badRequest().body("Error al obtener los centros activos: " + e.getMessage());
         }
     }
+
+    @GetMapping("/getTitulacions")
+    public ResponseEntity<String> getTitulacions() {
+        try {
+            final ObjectMapper mapper = new ObjectMapper();
+            
+            List<Organ> list = organService.getTitulacions();
+
+            for (Organ organ : list) {
+                organ.setInstancies(null);
+            }
+
+            String response = mapper.writeValueAsString(list);
+            return ResponseEntity.ok(response);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResponseEntity.badRequest().body("Error al obtener los centros activos: " + e.getMessage());
+        }
+    }
+
+    /*
+     * Endopint for findByRuct
+     */
+    @PostMapping("/findByRuct/{ruct}")
+    public ResponseEntity<String> findByRuct7(@PathVariable Integer ruct) {
+        try {
+            final ObjectMapper mapper = new ObjectMapper();
+            
+            Organ organ = organService.findByRuct(ruct);
+
+            String response = mapper.writeValueAsString(organ);
+
+            return ResponseEntity.ok(response);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResponseEntity.badRequest().body("Error al obtener el organo por ruct: " + e.getMessage());
+        }
+    }
+
+    /*
+     * End
+     */
 }