Se realizan los servicios de ModelUzyTavInstituc

parent bc787285
package ec.edu.espe.movilidad.MovilidadWS.Controller;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavInstProy;
import ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavInstProy.IServiceUzyTavInstProy;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
import static ec.edu.espe.movilidad.MovilidadWS.Constant.GlobalConstants.V1_API_VERSION;
@RestController
@CrossOrigin(origins = "*")
@RequestMapping(V1_API_VERSION + "/instproy")
public class UzyTavInstProyController {
private final IServiceUzyTavInstProy serviceUzyTavInstProy;
public UzyTavInstProyController(IServiceUzyTavInstProy serviceUzyTavInstProy) {
this.serviceUzyTavInstProy = serviceUzyTavInstProy;
}
@GetMapping("/exampleFindId/{id}")
public DtoUzyTavInstProy ListarPorID(@PathVariable Long id) {
return serviceUzyTavInstProy.ListarPorID(id);
}
@GetMapping("/getAll")
public List<DtoUzyTavInstProy> ListarRegistros() {
return serviceUzyTavInstProy.ListarRegistros();
}
@GetMapping("/obtenerRegistrosTavInsituc/{uzytavinstituc_id}")
public List<DtoUzyTavInstProy> obtenerRegistrosTavInsituc(@PathVariable Long uzytavinstituc_id) {
return serviceUzyTavInstProy.obtenerRegistrosTavInsituc(uzytavinstituc_id);
}
@PostMapping("/guardar")
public DtoUzyTavInstProy guardar(@Valid @RequestBody DtoUzyTavInstProy dtoUzyTavInstProy) {
return serviceUzyTavInstProy.guardar(dtoUzyTavInstProy);
}
@PutMapping("/editar/{id}")
public DtoUzyTavInstProy editar(@PathVariable Long id, @Valid @RequestBody DtoUzyTavInstProy dtoUzyTavInstProy) {
return serviceUzyTavInstProy.editar(id, dtoUzyTavInstProy);
}
@DeleteMapping("/eliminar/{id}")
public ResponseEntity<String> eliminar(@PathVariable Long id) {
boolean eliminado = serviceUzyTavInstProy.eliminar(id);
if (eliminado) {
return ResponseEntity.ok("El registro se eliminó exitosamente.");
} else {
return ResponseEntity.notFound().build();
}
}
}
...@@ -2,8 +2,15 @@ package ec.edu.espe.movilidad.MovilidadWS.Dao; ...@@ -2,8 +2,15 @@ package ec.edu.espe.movilidad.MovilidadWS.Dao;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavInstProy; import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavInstProy;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface DaoUzyTavInstProy extends JpaRepository<ModelUzyTavInstProy, Long> { public interface DaoUzyTavInstProy extends JpaRepository<ModelUzyTavInstProy, Long> {
@Query("SELECT ti FROM ModelUzyTavInstProy ti JOIN ti.uzytavinstituc tic WHERE tic.uzytavinstituc_id = :uzytavinstituc_id")
List<ModelUzyTavInstProy> obtenerRegistrosTavInsituc(@Param("uzytavinstituc_id") Long uzytavinstituc_id);
} }
...@@ -3,24 +3,38 @@ package ec.edu.espe.movilidad.MovilidadWS.Dto; ...@@ -3,24 +3,38 @@ package ec.edu.espe.movilidad.MovilidadWS.Dto;
import lombok.Data; import lombok.Data;
import java.util.Date; import javax.validation.constraints.Positive;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
@Data @Data
public class DtoUzyTavInstProy { public class DtoUzyTavInstProy {
@Positive(message = "El campo uzytavinstproy_id debe ser un número positivo")
private Long UZYTAVINSTPROY_ID; private Long uzytavinstproy_id;
private Long UZYTAVPROYEC_ID; @Positive(message = "El campo uzytavproyec_id debe ser un número positivo")
private Long UZYTAVINSTITUC_ID; private Long uzytavproyec_id;
private Long UZYTPARAMETROS_DET_ID_ORGANIZACION; @Positive(message = "El campo uzytavinstituc_id debe ser un número positivo")
private Long UZYTPARAMETROS_DET_ID_ENTIDAD; private Long uzytavinstituc_id;
private String UZYTAVINSTPROY_DETAOTRO; @Positive(message = "El campo uzytparametros_det_id_organizacion debe ser un número positivo")
private String UZYTAVINSTPROY_DECLARACION; private Long uzytparametros_det_id_organizacion;
private Date UZYTAVINSTPROY_FECHA_CREA; @Positive(message = "El campo uzytparametros_det_id_entidad debe ser un número positivo")
private Integer UZYTAVINSTPROY_DIR_HOMBRES; private Long uzytparametros_det_id_entidad;
private Integer UZYTAVINSTPROY_DIR_MUJERES; @Size(max = 100)
private Integer UZYTAVINSTPROY_DIR_NINIOS; private String uzytavinstproy_detaotro;
private Integer UZYTAVINSTPROY_DIR_DISCAPACIDAD; @Size(max = 2000)
private Integer UZYTAVINSTPROY_INDIRECTOS; private String uzytavinstproy_declaracion;
private String UZYTAVINSTPROY_DESC_BENEFIC; private LocalDateTime uzytavinstproy_fecha_crea;
@Positive(message = "El campo uzytavinstproy_dir_hombres debe ser un número positivo")
private Integer uzytavinstproy_dir_hombres;
@Positive(message = "El campo uzytavinstproy_dir_mujeres debe ser un número positivo")
private Integer uzytavinstproy_dir_mujeres;
@Positive(message = "El campo uzytavinstproy_dir_ninios debe ser un número positivo")
private Integer uzytavinstproy_dir_ninios;
@Positive(message = "El campo uzytavinstproy_dir_discapacidad debe ser un número positivo")
private Integer uzytavinstproy_dir_discapacidad;
@Positive(message = "El campo uzytavinstproy_indirectos debe ser un número positivo")
private Integer uzytavinstproy_indirectos;
@Size(max = 150)
private String uzytavinstproy_desc_benefic;
} }
...@@ -37,6 +37,8 @@ public class GlobalExceptionHandler { ...@@ -37,6 +37,8 @@ public class GlobalExceptionHandler {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage()); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
} }
@ExceptionHandler(NoSuchElementException.class) @ExceptionHandler(NoSuchElementException.class)
public ResponseEntity<String> handleNoSuchElementException(NoSuchElementException ex) { public ResponseEntity<String> handleNoSuchElementException(NoSuchElementException ex) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage()); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
......
package ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavInstProy;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavInstProy;
import org.modelmapper.ModelMapper;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class UzyTavInstProyMapper {
private final ModelMapper mapper;
public UzyTavInstProyMapper(ModelMapper mapper) {
this.mapper = mapper;
}
public DtoUzyTavInstProy entityToDto(ModelUzyTavInstProy entity) {
return mapper.map(entity, DtoUzyTavInstProy.class);
}
public ModelUzyTavInstProy dtoToEntity(DtoUzyTavInstProy dto) {
return mapper.map(dto, ModelUzyTavInstProy.class);
}
public List<DtoUzyTavInstProy> entitiesToDtos(List<ModelUzyTavInstProy> entities) {
return entities.stream()
.map(this::entityToDto)
.collect(Collectors.toList());
}
}
...@@ -7,66 +7,71 @@ import lombok.Setter; ...@@ -7,66 +7,71 @@ import lombok.Setter;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import java.util.Date; import java.time.LocalDateTime;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Set; import java.util.Set;
@Getter @Getter
@Setter @Setter
@Entity @Entity
@Table(name = "UZYTAVINSTPROY", schema = "UTIC1") @Table(name = "uzytavinstproy", schema = "UTIC1")
public class ModelUzyTavInstProy { public class ModelUzyTavInstProy {
@Id @Id
@Column(name = "UZYTAVINSTPROY_ID") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "uzytavinstproy_seq")
private Long UZYTAVINSTPROY_ID; @SequenceGenerator(name = "uzytavinstproy_seq", sequenceName = "SEQ_UZYTAVINSTPROY", allocationSize = 1)
@Column(name = "uzytavinstproy_id")
private Long uzytavinstproy_id;
//RELACION CON PROYECTO- TABLA PADRE //RELACION CON PROYECTO- TABLA PADRE
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "UZYTAVPROYEC_ID") @JoinColumn(name = "uzytavproyec_id")
private ModelUzyTavProyec uzytavproyec; private ModelUzyTavProyec uzytavproyec;
@Column(name = "UZYTAVINSTITUC_ID")
private Long UZYTAVINSTITUC_ID; //RELACION CON TavInstituc- TABLA PADRE
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "uzytavinstituc_id")
private ModelUzyTavInstituc uzytavinstituc;
//RELACIÓN CON PARAMETROS_DET- TABLA PADRE //RELACIÓN CON PARAMETROS_DET- TABLA PADRE
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "UZYTPARAMETROS_DET_ID_ORGANIZACION") @JoinColumn(name = "uzytparametros_det_id_organizacion")
private ModelUzyTavParametros_Det uzytparametrosDetIdOrganizacion; private ModelUzyTavParametros_Det uzytparametrosDetIdOrganizacion;
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "UZYTPARAMETROS_DET_ID_ENTIDAD") @JoinColumn(name = "uzytparametros_det_id_entidad")
private ModelUzyTavParametros_Det uzytparametrosDetIdEntidad; private ModelUzyTavParametros_Det uzytparametrosDetIdEntidad;
@Size(max = 100) @Size(max = 100)
@Column(name = "UZYTAVINSTPROY_DETAOTRO", length = 100) @Column(name = "uzytavinstproy_detaotro", length = 100)
private String UZYTAVINSTPROY_DETAOTRO; private String uzytavinstproy_detaotro;
@Size(max = 2000) @Size(max = 2000)
@Column(name = "UZYTAVINSTPROY_DECLARACION", length = 2000) @Column(name = "uzytavinstproy_declaracion", length = 2000)
private String UZYTAVINSTPROY_DECLARACION; private String uzytavinstproy_declaracion;
@Column(name = "UZYTAVINSTPROY_FECHA_CREA") @Column(name = "uzytavinstproy_fecha_crea")
private Date UZYTAVINSTPROY_FECHA_CREA; private LocalDateTime uzytavinstproy_fecha_crea;
@Column(name = "UZYTAVINSTPROY_DIR_HOMBRES") @Column(name = "uzytavinstproy_dir_hombres")
private Integer UZYTAVINSTPROY_DIR_HOMBRES; private Integer uzytavinstproy_dir_hombres;
@Column(name = "UZYTAVINSTPROY_DIR_MUJERES") @Column(name = "uzytavinstproy_dir_mujeres")
private Integer UZYTAVINSTPROY_DIR_MUJERES; private Integer uzytavinstproy_dir_mujeres;
@Column(name = "UZYTAVINSTPROY_DIR_NINIOS") @Column(name = "uzytavinstproy_dir_ninios")
private Integer UZYTAVINSTPROY_DIR_NINIOS; private Integer uzytavinstproy_dir_ninios;
@Column(name = "UZYTAVINSTPROY_DIR_DISCAPACIDAD") @Column(name = "uzytavinstproy_dir_discapacidad")
private Integer UZYTAVINSTPROY_DIR_DISCAPACIDAD; private Integer uzytavinstproy_dir_discapacidad;
@Column(name = "UZYTAVINSTPROY_INDIRECTOS") @Column(name = "uzytavinstproy_indirectos")
private Integer UZYTAVINSTPROY_INDIRECTOS; private Integer uzytavinstproy_indirectos;
@Size(max = 150) @Size(max = 150)
@Column(name = "UZYTAVINSTPROY_DESC_BENEFIC", length = 150) @Column(name = "uzytavinstproy_desc_benefic", length = 150)
private String UZYTAVINSTPROY_DESC_BENEFIC; private String uzytavinstproy_desc_benefic;
//RELACIÓN CON uzytavinstproy- TABLA HIJA //RELACIÓN CON uzytavinstproy- TABLA HIJA
......
package ec.edu.espe.movilidad.MovilidadWS.Model; package ec.edu.espe.movilidad.MovilidadWS.Model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import javax.persistence.*; import javax.persistence.*;
import java.util.Date; import java.util.Date;
import java.util.LinkedHashSet;
import java.util.Set;
@Getter @Getter
@Setter @Setter
...@@ -47,4 +50,11 @@ public class ModelUzyTavInstituc { ...@@ -47,4 +50,11 @@ public class ModelUzyTavInstituc {
@ManyToOne(fetch = FetchType.EAGER) @ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "uzytparroquia_id", referencedColumnName = "uzytparroquia_id") @JoinColumn(name = "uzytparroquia_id", referencedColumnName = "uzytparroquia_id")
private ModelUzyTParroquia uzytparroquia; private ModelUzyTParroquia uzytparroquia;
//RELACIÓN CON ModelUzyTavInstProy TABLA HIJA
@JsonIgnore
@OneToMany(mappedBy = "uzytavinstituc")
private Set<ModelUzyTavInstProy> modelUzyTavInstProySet = new LinkedHashSet<>();
} }
package ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavInstProy;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavInstProy;
import java.util.List;
public interface IServiceUzyTavInstProy {
DtoUzyTavInstProy ListarPorID(Long id);
List<DtoUzyTavInstProy> ListarRegistros();
List<DtoUzyTavInstProy> obtenerRegistrosTavInsituc( Long uzytavinstituc_id);
DtoUzyTavInstProy guardar(DtoUzyTavInstProy dtoUzyTavInstProy);
DtoUzyTavInstProy editar(Long id, DtoUzyTavInstProy dtoUzyTavInstProy);
boolean eliminar(Long id);
}
package ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavInstProy;
import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTavInstProy;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavInstProy;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException;
import ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class.UzyTavInstProyMapper;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavInstProy;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ServiceUzyTavInstProy implements IServiceUzyTavInstProy {
private final UzyTavInstProyMapper mapper;
private final DaoUzyTavInstProy daoUzyTavInstProy;
private static final String MESSAGE = "No se encontró el registro con ID: ";
public ServiceUzyTavInstProy(UzyTavInstProyMapper mapper, DaoUzyTavInstProy daoUzyTavInstProy) {
this.mapper = mapper;
this.daoUzyTavInstProy = daoUzyTavInstProy;
}
@Override
public DtoUzyTavInstProy ListarPorID(Long id) {
if (id <= 0) {
throw new IllegalArgumentException("El parámetro 'id' debe ser un valor positivo.");
}
try {
ModelUzyTavInstProy entity = daoUzyTavInstProy.findById(id)
.orElseThrow(() -> new ResourceNotFoundException(MESSAGE + id));
return mapper.entityToDto(entity);
} catch (ResourceNotFoundException ex) {
throw ex;
} catch (Exception ex) { // Manejo de cualquier error en el servidor
throw new RuntimeException("Error al buscar el registro con ID: " + id);
}
}
@Override
public List<DtoUzyTavInstProy> ListarRegistros() {
try {
List<ModelUzyTavInstProy> entities = daoUzyTavInstProy.findAll();
return mapper.entitiesToDtos(entities);
} catch (Exception ex) {
throw new RuntimeException("Error al listar los registros: " + ex.getMessage());
}
}
@Override
public List<DtoUzyTavInstProy> obtenerRegistrosTavInsituc(Long uzytavinstituc_id) {
try {
List<ModelUzyTavInstProy> entities = daoUzyTavInstProy.obtenerRegistrosTavInsituc(uzytavinstituc_id);
return mapper.entitiesToDtos(entities);
} catch (Exception ex) {
throw new RuntimeException("Error al listar los registros: " + ex.getMessage());
}
}
@Override
public DtoUzyTavInstProy guardar(DtoUzyTavInstProy dtoUzyTavInstProy) {
try {
ModelUzyTavInstProy entity = mapper.dtoToEntity(dtoUzyTavInstProy);
ModelUzyTavInstProy nuevoEntity = daoUzyTavInstProy.save(entity);
return mapper.entityToDto(nuevoEntity);
} catch (DataIntegrityViolationException ex) {
throw ex;
} catch (Exception ex) {
// Manejo para otras excepciones
throw new RuntimeException("Error al guardar el registro: " + ex.getMessage());
}
}
@Override
public DtoUzyTavInstProy editar(Long id, DtoUzyTavInstProy dtoUzyTavInstProy) {
if (id <= 0) {
throw new IllegalArgumentException("El ID del registro debe ser válido y mayor que cero.");
}
try {
ModelUzyTavInstProy entity = daoUzyTavInstProy.findById(id)
.orElseThrow(() -> new ResourceNotFoundException(MESSAGE + id));
if (entity != null) {
if (dtoUzyTavInstProy.getUzytavinstproy_detaotro() != null) {
entity.setUzytavinstproy_detaotro(dtoUzyTavInstProy.getUzytavinstproy_detaotro());
}
if (dtoUzyTavInstProy.getUzytavinstproy_declaracion() != null) {
entity.setUzytavinstproy_declaracion(dtoUzyTavInstProy.getUzytavinstproy_declaracion());
}
if (dtoUzyTavInstProy.getUzytavinstproy_fecha_crea() != null) {
entity.setUzytavinstproy_fecha_crea(dtoUzyTavInstProy.getUzytavinstproy_fecha_crea());
}
if (dtoUzyTavInstProy.getUzytavinstproy_dir_hombres() != null) {
entity.setUzytavinstproy_dir_hombres(dtoUzyTavInstProy.getUzytavinstproy_dir_hombres());
}
if (dtoUzyTavInstProy.getUzytavinstproy_dir_mujeres() != null) {
entity.setUzytavinstproy_dir_mujeres(dtoUzyTavInstProy.getUzytavinstproy_dir_mujeres());
}
if (dtoUzyTavInstProy.getUzytavinstproy_dir_ninios() != null) {
entity.setUzytavinstproy_dir_ninios(dtoUzyTavInstProy.getUzytavinstproy_dir_ninios());
}
if (dtoUzyTavInstProy.getUzytavinstproy_dir_discapacidad() != null) {
entity.setUzytavinstproy_dir_discapacidad(dtoUzyTavInstProy.getUzytavinstproy_dir_discapacidad());
}
if (dtoUzyTavInstProy.getUzytavinstproy_indirectos() != null) {
entity.setUzytavinstproy_indirectos(dtoUzyTavInstProy.getUzytavinstproy_indirectos());
}
if (dtoUzyTavInstProy.getUzytavinstproy_desc_benefic() != null) {
entity.setUzytavinstproy_desc_benefic(dtoUzyTavInstProy.getUzytavinstproy_desc_benefic());
}
ModelUzyTavInstProy updatedEntity = daoUzyTavInstProy.save(entity);
return mapper.entityToDto(updatedEntity);
} else {
throw new ResourceNotFoundException(MESSAGE + id);
}
} catch (Exception e) {
throw new RuntimeException("Error al editar el registro: " + e.getMessage());
}
}
@Override
public boolean eliminar(Long id) {
if (id == null || id <= 0) {
throw new IllegalArgumentException("El ID del registro debe ser válido y mayor que cero.");
}
try {
ModelUzyTavInstProy entity = daoUzyTavInstProy.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Registro no encontrado con ID: " + id));
if (entity != null) {
daoUzyTavInstProy.delete(entity);
return true;
}
return false;
} catch (ResourceNotFoundException ex) {
throw ex;
} catch (Exception ex) {
throw new RuntimeException("Error al eliminar el registro: " + ex.getMessage());
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment