Se realizan los servicios de ModelUzyTavDetActproy

parent e93683e5
package ec.edu.espe.movilidad.MovilidadWS.Controller;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavDetActproy;
import ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavDetActproy.IServiceUzyTavDetActproy;
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 + "/detactproy")
public class UzyTavDetActproyController {
private final IServiceUzyTavDetActproy serviceUzyTavDetActproy;
public UzyTavDetActproyController(IServiceUzyTavDetActproy serviceUzyTavDetActproy) {
this.serviceUzyTavDetActproy = serviceUzyTavDetActproy;
}
@GetMapping("/exampleFindId/{id}")
public DtoUzyTavDetActproy ListarPorID(@PathVariable Long id) {
return serviceUzyTavDetActproy.ListarPorID(id);
}
@GetMapping("/getAll")
public List<DtoUzyTavDetActproy> ListarRegistros() {
return serviceUzyTavDetActproy.ListarRegistros();
}
@PostMapping("/guardar")
public DtoUzyTavDetActproy guardar(@Valid @RequestBody DtoUzyTavDetActproy dtoUzyTavDetActproy) {
return serviceUzyTavDetActproy.guardar(dtoUzyTavDetActproy);
}
@PutMapping("/editar/{id}")
public DtoUzyTavDetActproy editar(@PathVariable Long id, @Valid @RequestBody DtoUzyTavDetActproy dtoUzyTavDetActproy) {
return serviceUzyTavDetActproy.editar(id, dtoUzyTavDetActproy);
}
@DeleteMapping("/eliminar/{id}")
public ResponseEntity<String> eliminar(@PathVariable Long id) {
boolean eliminado = serviceUzyTavDetActproy.eliminar(id);
if (eliminado) {
return ResponseEntity.ok("El registro se eliminó exitosamente.");
} else {
return ResponseEntity.notFound().build();
}
}
}
package ec.edu.espe.movilidad.MovilidadWS.Dto; package ec.edu.espe.movilidad.MovilidadWS.Dto;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.Positive;
import javax.validation.constraints.Size;
@Data @Data
public class DtoUzyTavDetActproy { public class DtoUzyTavDetActproy {
private Long UZYTAVDETACTPROY_ID; @Positive(message = "El campo uzytavdetactproy_id debe ser un número positivo")
private Long UZYTAVACTPROY_ID; private Long uzytavdetactproy_id;
private Long UZYTAVOBJETIVO_PROGRAMA_ID; @Positive(message = "El campo uzytavactproy_id debe ser un número positivo")
private Short UZYTAVDETACTPROYPORCENT; private Long uzytavactproy_id;
private String UZYTAVDETACTPROYOBSERVA; @Positive(message = "El campo uzytavobjetivo_programa_id debe ser un número positivo")
private String UZYTAVDETACTPROYRESULTADO; private Long uzytavobjetivo_programa_id;
private Short uzytavdetactproyporcent;
@Size(max = 500)
private String uzytavdetactproyobserva;
@Size(max = 500)
private String uzytavdetactproyresultado;
} }
package ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavDetActproy;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavDetActproy;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzytavObjetivoPrograma;
import org.modelmapper.ModelMapper;
import org.modelmapper.PropertyMap;
import org.springframework.stereotype.Component;
import javax.persistence.EntityManager;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class UzyTavDetActproyMapper {
private final ModelMapper modelMapper;
private final EntityManager entityManager;
public UzyTavDetActproyMapper(ModelMapper modelMapper, EntityManager entityManager) {
this.modelMapper = modelMapper;
this.entityManager = entityManager;
configureMappings();
}
public DtoUzyTavDetActproy entityToDto(ModelUzyTavDetActproy entity) {
return modelMapper.map(entity, DtoUzyTavDetActproy.class);
}
public ModelUzyTavDetActproy dtoToEntity(DtoUzyTavDetActproy dto) {
ModelUzyTavDetActproy entity = modelMapper.map(dto, ModelUzyTavDetActproy.class);
Long ObjetivoID = dto.getUzytavobjetivo_programa_id();
if(ObjetivoID != null){
ModelUzytavObjetivoPrograma objetivoPrograma = entityManager.find(ModelUzytavObjetivoPrograma.class, ObjetivoID );
entity.setUzytavobjetivoPrograma(objetivoPrograma);
}
return entity;
}
public List<DtoUzyTavDetActproy> entitiesToDtos(List<ModelUzyTavDetActproy> entities) {
return entities.stream()
.map(this::entityToDto)
.collect(Collectors.toList());
}
private void configureMappings() {
modelMapper.addMappings(new PropertyMap<ModelUzyTavDetActproy, DtoUzyTavDetActproy>() {
@Override
protected void configure() {
map().setUzytavobjetivo_programa_id(source.getUzytavobjetivoPrograma().getUzytavobjetivo_programa_id());
map().setUzytavactproy_id(source.getUzytavactproy().getUzytavactproy_id());
}
});
}
}
...@@ -12,27 +12,29 @@ import javax.validation.constraints.Size; ...@@ -12,27 +12,29 @@ import javax.validation.constraints.Size;
public class ModelUzyTavDetActproy { public class ModelUzyTavDetActproy {
@Id @Id
@Column(name = "UZYTAVDETACTPROY_ID") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "uzytavdetactproy_seq")
private Long UZYTAVDETACTPROY_ID; @SequenceGenerator(name = "uzytavdetactproy_seq", sequenceName = "SEQ_UZYTAVDETACTPROY", allocationSize = 1)
@Column(name = "uzytavdetactproy_id")
private Long uzytavdetactproy_id;
//RELACIÓN CON ModelUzyTavActProy- TABLA PADRE //RELACIÓN CON ModelUzyTavActProy- TABLA PADRE
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "UZYTAVACTPROY_ID") @JoinColumn(name = "uzytavactproy_id")
private ModelUzyTavActProy uzytavactproy; private ModelUzyTavActProy uzytavactproy;
//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 = "UZYTAVDETACTPROYPORCENT") @Column(name = "uzytavdetactproyporcent")
private Short UZYTAVDETACTPROYPORCENT; private Short uzytavdetactproyporcent;
@Size(max = 500) @Size(max = 500)
@Column(name = "UZYTAVDETACTPROYOBSERVA", length = 500) @Column(name = "uzytavdetactproyobserva", length = 500)
private String UZYTAVDETACTPROYOBSERVA; private String uzytavdetactproyobserva;
@Size(max = 500) @Size(max = 500)
@Column(name = "UZYTAVDETACTPROYRESULTADO", length = 500) @Column(name = "uzytavdetactproyresultado", length = 500)
private String UZYTAVDETACTPROYRESULTADO; private String uzytavdetactproyresultado;
} }
package ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavDetActproy;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavDetActproy;
import java.util.List;
public interface IServiceUzyTavDetActproy {
DtoUzyTavDetActproy ListarPorID(Long id);
List<DtoUzyTavDetActproy> ListarRegistros();
DtoUzyTavDetActproy guardar(DtoUzyTavDetActproy dtoUzyTavDetActproy);
DtoUzyTavDetActproy editar( Long id, DtoUzyTavDetActproy dtoUzyTavDetActproy);
boolean eliminar(Long id);
}
package ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavDetActproy;
import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTavDetActproy;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavDetActproy;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException;
import ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class.UzyTavDetActproyMapper;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavDetActproy;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ServiceUzyTavDetActproy implements IServiceUzyTavDetActproy {
private static final String MESSAGE = "No se encontró el registro con ID: ";
private final DaoUzyTavDetActproy daoUzyTavDetActproy;
private final UzyTavDetActproyMapper mapper;
public ServiceUzyTavDetActproy(DaoUzyTavDetActproy daoUzyTavDetActproy, UzyTavDetActproyMapper mapper) {
this.daoUzyTavDetActproy = daoUzyTavDetActproy;
this.mapper = mapper;
}
@Override
public DtoUzyTavDetActproy ListarPorID(Long id) {
if (id <= 0) {
throw new IllegalArgumentException("El parámetro 'id' debe ser un valor positivo.");
}
try {
ModelUzyTavDetActproy entity = daoUzyTavDetActproy.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<DtoUzyTavDetActproy> ListarRegistros() {
try {
List<ModelUzyTavDetActproy> entities = daoUzyTavDetActproy.findAll();
return mapper.entitiesToDtos(entities);
} catch (Exception ex) {
throw new RuntimeException("Error al listar los registros: " + ex.getMessage());
}
}
@Override
public DtoUzyTavDetActproy guardar(DtoUzyTavDetActproy dtoUzyTavDetActproy) {
try {
ModelUzyTavDetActproy entity = mapper.dtoToEntity(dtoUzyTavDetActproy);
ModelUzyTavDetActproy nuevoEntity = daoUzyTavDetActproy.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 DtoUzyTavDetActproy editar(Long id, DtoUzyTavDetActproy dtoUzyTavDetActproy) {
if (id <= 0) {
throw new IllegalArgumentException("El ID del registro debe ser válido y mayor que cero.");
}
try {
ModelUzyTavDetActproy entity = daoUzyTavDetActproy.findById(id)
.orElseThrow(() -> new ResourceNotFoundException(MESSAGE + id));
if (entity != null) {
if (dtoUzyTavDetActproy.getUzytavdetactproyporcent() != null) {
entity.setUzytavdetactproyporcent(dtoUzyTavDetActproy.getUzytavdetactproyporcent());
}
if (dtoUzyTavDetActproy.getUzytavdetactproyobserva() != null) {
entity.setUzytavdetactproyobserva(dtoUzyTavDetActproy.getUzytavdetactproyobserva());
}
if (dtoUzyTavDetActproy.getUzytavdetactproyresultado() != null) {
entity.setUzytavdetactproyresultado(dtoUzyTavDetActproy.getUzytavdetactproyresultado());
}
ModelUzyTavDetActproy updatedEntity = daoUzyTavDetActproy.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 {
ModelUzyTavDetActproy entity = daoUzyTavDetActproy.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Registro no encontrado con ID: " + id));
if (entity != null) {
daoUzyTavDetActproy.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