Se realizan los servicios de ModelUzyTavSeguim

parent 381de82b
package ec.edu.espe.movilidad.MovilidadWS.Controller;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavSeguim;
import ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavSeguim.IServiceUzyTavSeguim;
import org.springframework.web.bind.annotation.*;
import org.springframework.http.ResponseEntity;
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 + "/seguim")
public class UzyTavSeguimController {
private final IServiceUzyTavSeguim serviceUzyTavSeguim;
public UzyTavSeguimController(IServiceUzyTavSeguim serviceUzyTavSeguim) {
this.serviceUzyTavSeguim = serviceUzyTavSeguim;
}
@GetMapping("/exampleFindId/{id}")
public DtoUzyTavSeguim ListarPorID(@PathVariable Long id) {
return serviceUzyTavSeguim.ListarPorID(id);
}
@GetMapping("/getAll")
public List<DtoUzyTavSeguim> ListarRegistros() {
return serviceUzyTavSeguim.ListarRegistros();
}
@PostMapping("/guardar")
public DtoUzyTavSeguim guardar(@Valid @RequestBody DtoUzyTavSeguim dtoUzyTavSeguim) {
return serviceUzyTavSeguim.guardar(dtoUzyTavSeguim);
}
@PutMapping("/editar/{id}")
public DtoUzyTavSeguim editar(@PathVariable Long id, @Valid @RequestBody DtoUzyTavSeguim dtoUzyTavSeguim) {
return serviceUzyTavSeguim.editar(id, dtoUzyTavSeguim);
}
@DeleteMapping("/eliminar/{id}")
public ResponseEntity<String> eliminar(@PathVariable Long id) {
boolean eliminado = serviceUzyTavSeguim.eliminar(id);
if (eliminado) {
return ResponseEntity.ok("El registro se eliminó exitosamente.");
} else {
return ResponseEntity.notFound().build();
}
}
}
...@@ -2,15 +2,21 @@ package ec.edu.espe.movilidad.MovilidadWS.Dto; ...@@ -2,15 +2,21 @@ package ec.edu.espe.movilidad.MovilidadWS.Dto;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.Positive;
import javax.validation.constraints.Size;
import java.util.Date; import java.util.Date;
@Data @Data
public class DtoUzyTavSeguim { public class DtoUzyTavSeguim {
@Positive(message = "El campo uzytavseguim_id debe ser un número positivo")
private Long UZYTAVSEGUIM_ID; private Long uzytavseguim_id;
private Long UZYTAVPROYEC_ID; @Positive(message = "El campo uzytavproyec_id debe ser un número positivo")
private String UZYTAVSEGUIM_DESCRIP; private Long uzytavproyec_id;
private Long UZYTAVOBJETIVO_PROGRAMA_ID; @Size(max = 100)
private Date UZYTAVSEGUIM_FECHA_LOGRO; private String uzytavseguim_descrip;
private String UZYTAVSEGUIM_LOGRO; @Positive(message = "El campo uzytavobjetivo_programa_id debe ser un número positivo")
private Long uzytavobjetivo_programa_id;
private Date uzytavseguim_fecha_logro;
@Size(max = 1000)
private String uzytavseguim_logro;
} }
package ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavSeguim;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavSeguim;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzytavObjetivoPrograma;
import org.modelmapper.ModelMapper;
import org.springframework.stereotype.Component;
import javax.persistence.EntityManager;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class UzyTavSeguimMapper {
private final ModelMapper modelMapper;
private final EntityManager entityManager;
public UzyTavSeguimMapper(ModelMapper modelMapper, EntityManager entityManager) {
this.modelMapper = modelMapper;
this.entityManager = entityManager;
}
public DtoUzyTavSeguim entityToDto(ModelUzyTavSeguim entity) {
return modelMapper.map(entity, DtoUzyTavSeguim.class);
}
public ModelUzyTavSeguim dtoToEntity(DtoUzyTavSeguim dto) {
ModelUzyTavSeguim entity = modelMapper.map(dto, ModelUzyTavSeguim.class);
Long objetivoPID = dto.getUzytavobjetivo_programa_id();
if (objetivoPID != null) {
ModelUzytavObjetivoPrograma objetivoPrograma = entityManager.find(ModelUzytavObjetivoPrograma.class, objetivoPID);
entity.setUzytavobjetivoPrograma(objetivoPrograma);
}
return entity;
}
public List<DtoUzyTavSeguim> entitiesToDtos(List<ModelUzyTavSeguim> entities) {
return entities.stream()
.map(this::entityToDto)
.collect(Collectors.toList());
}
}
...@@ -14,28 +14,30 @@ import java.util.Date; ...@@ -14,28 +14,30 @@ import java.util.Date;
@Table(name = "UZYTAVSEGUIM", schema = "UTIC1") @Table(name = "UZYTAVSEGUIM", schema = "UTIC1")
public class ModelUzyTavSeguim { public class ModelUzyTavSeguim {
@Id @Id
@Column(name = "UZYTAVSEGUIM_ID") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "uzytavseguim_seq")
private Long UZYTAVSEGUIM_ID; @SequenceGenerator(name = "uzytavseguim_seq", sequenceName = "SEQ_UZYTAVSEGUIM", allocationSize = 1)
@Column(name = "uzytavseguim_id")
private Long uzytavseguim_id;
//RELACIÓN CON ModelUzyTavProyec TABLA PADRE //RELACIÓN CON ModelUzyTavProyec TABLA PADRE
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "UZYTAVPROYEC_ID") @JoinColumn(name = "uzytavproyec_id")
private ModelUzyTavProyec uzytavproyec; private ModelUzyTavProyec uzytavproyec;
@Size(max = 100) @Size(max = 100)
@Column(name = "UZYTAVSEGUIM_DESCRIP", length = 100) @Column(name = "uzytavseguim_descrip", length = 100)
private String UZYTAVSEGUIM_DESCRIP; private String uzytavseguim_descrip;
//RELACIÓN CON ModelUzytavObjetivoPrograma TABLA PADRE //RELACIÓN CON ModelUzytavObjetivoPrograma TABLA PADRE
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "UZYTAVOBJETIVO_PROGRAMA_ID") @JoinColumn(name = "uzytavobjetivo_programa_id")
private ModelUzytavObjetivoPrograma uzytavobjetivoPrograma; private ModelUzytavObjetivoPrograma uzytavobjetivoPrograma;
@Column(name = "UZYTAVSEGUIM_FECHA_LOGRO") @Column(name = "uzytavseguim_fecha_logro")
private Date UZYTAVSEGUIM_FECHA_LOGRO; private Date uzytavseguim_fecha_logro;
@Size(max = 1000) @Size(max = 1000)
@Column(name = "UZYTAVSEGUIM_LOGRO", length = 1000) @Column(name = "uzytavseguim_logro", length = 1000)
private String UZYTAVSEGUIM_LOGRO; private String uzytavseguim_logro;
} }
package ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavSeguim;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavSeguim;
import java.util.List;
public interface IServiceUzyTavSeguim {
DtoUzyTavSeguim ListarPorID(Long id);
List<DtoUzyTavSeguim> ListarRegistros();
DtoUzyTavSeguim guardar(DtoUzyTavSeguim dtoUzyTavSeguim);
DtoUzyTavSeguim editar(Long id, DtoUzyTavSeguim dtoUzyTavSeguim);
boolean eliminar(Long id);
}
package ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavSeguim;
import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTavSeguim;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavSeguim;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.InvalidArgumentException;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException;
import ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class.UzyTavSeguimMapper;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavSeguim;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ServiceUzyTavSeguim implements IServiceUzyTavSeguim{
private static final String MESSAGE = "No se encontró el registro con ID: ";
private final DaoUzyTavSeguim daoUzyTavSeguim;
private final UzyTavSeguimMapper mapper;
public ServiceUzyTavSeguim(DaoUzyTavSeguim daoUzyTavSeguim, UzyTavSeguimMapper mapper) {
this.daoUzyTavSeguim = daoUzyTavSeguim;
this.mapper = mapper;
}
@Override
public DtoUzyTavSeguim ListarPorID(Long id) {
if (id <= 0) {
throw new IllegalArgumentException("El parámetro 'id' debe ser un valor positivo.");
}
try {
ModelUzyTavSeguim entity = daoUzyTavSeguim.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<DtoUzyTavSeguim> ListarRegistros() {
try {
List<ModelUzyTavSeguim> entities = daoUzyTavSeguim.findAll();
return mapper.entitiesToDtos(entities);
} catch (Exception ex) {
throw new RuntimeException("Error al listar los registros: " + ex.getMessage());
}
}
@Override
public DtoUzyTavSeguim guardar(DtoUzyTavSeguim dtoUzyTavSeguim) {
try {
ModelUzyTavSeguim entity = mapper.dtoToEntity(dtoUzyTavSeguim);
ModelUzyTavSeguim nuevoEntity = daoUzyTavSeguim.save(entity);
return mapper.entityToDto(nuevoEntity);
}
catch (Exception ex) {
throw new RuntimeException(MESSAGE + ex.getMessage());
}
}
@Override
public DtoUzyTavSeguim editar(Long id, DtoUzyTavSeguim dtoUzyTavSeguim) {
if (id <= 0) {
throw new InvalidArgumentException("El ID del registro debe ser válido y mayor que cero.");
}
try {
ModelUzyTavSeguim entity = daoUzyTavSeguim.findById(id)
.orElseThrow(() -> new ResourceNotFoundException(MESSAGE + id));
if (dtoUzyTavSeguim.getUzytavseguim_descrip() != null) {
entity.setUzytavseguim_descrip(dtoUzyTavSeguim.getUzytavseguim_descrip());
}
if (dtoUzyTavSeguim.getUzytavseguim_fecha_logro() != null) {
entity.setUzytavseguim_fecha_logro(dtoUzyTavSeguim.getUzytavseguim_fecha_logro());
}
if (dtoUzyTavSeguim.getUzytavseguim_logro() != null) {
entity.setUzytavseguim_logro(dtoUzyTavSeguim.getUzytavseguim_logro());
}
ModelUzyTavSeguim registroActualizado = daoUzyTavSeguim.save(entity);
return mapper.entityToDto(registroActualizado);
} catch (ResourceNotFoundException ex) {
throw ex;
} catch (Exception ex) {
throw new RuntimeException("Error al editar el usuario -> " + ex.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 {
ModelUzyTavSeguim entity = daoUzyTavSeguim.findById(id)
.orElseThrow(() -> new ResourceNotFoundException(MESSAGE + id));
if (entity != null) {
daoUzyTavSeguim.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