diff --git "a/Parcial Pr\303\241ctico 1.pdf" "b/Parcial Pr\303\241ctico 1.pdf" new file mode 100644 index 0000000..d9dcaab Binary files /dev/null and "b/Parcial Pr\303\241ctico 1.pdf" differ diff --git a/src/main/java/co/edu/uniandes/dse/parcialejemplo/entities/HabitacionEntity.java b/src/main/java/co/edu/uniandes/dse/parcialejemplo/entities/HabitacionEntity.java new file mode 100644 index 0000000..6784110 --- /dev/null +++ b/src/main/java/co/edu/uniandes/dse/parcialejemplo/entities/HabitacionEntity.java @@ -0,0 +1,24 @@ +package co.edu.uniandes.dse.parcialejemplo.entities; + +import javax.persistence.Entity; +import javax.persistence.ManyToOne; + +import lombok.Getter; +import lombok.Setter; +import uk.co.jemos.podam.common.PodamExclude; + +@Getter +@Setter +@Entity +public class HabitacionEntity extends BaseEntity { + + private int identificacion; + private int num_personas; + private int num_camas; + private int num_banos; + + @PodamExclude + @ManyToOne + private HotelEntity hotel; + +} diff --git a/src/main/java/co/edu/uniandes/dse/parcialejemplo/entities/HotelEntity.java b/src/main/java/co/edu/uniandes/dse/parcialejemplo/entities/HotelEntity.java new file mode 100644 index 0000000..9140e85 --- /dev/null +++ b/src/main/java/co/edu/uniandes/dse/parcialejemplo/entities/HotelEntity.java @@ -0,0 +1,26 @@ +package co.edu.uniandes.dse.parcialejemplo.entities; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.*; + + +import lombok.Getter; +import lombok.Setter; +import uk.co.jemos.podam.common.PodamExclude; + +@Getter +@Setter +@Entity +public class HotelEntity extends BaseEntity{ + + private String nombre; + private String direccion; + private Float estrellas; + + @PodamExclude + @OneToMany(mappedBy = "hotel", fetch = FetchType.LAZY, cascade = CascadeType.PERSIST, orphanRemoval = true) + private List habitaciones = new ArrayList<>(); + +} diff --git a/src/main/java/co/edu/uniandes/dse/parcialejemplo/repositories/HabitacionRepository.java b/src/main/java/co/edu/uniandes/dse/parcialejemplo/repositories/HabitacionRepository.java new file mode 100644 index 0000000..516ee5e --- /dev/null +++ b/src/main/java/co/edu/uniandes/dse/parcialejemplo/repositories/HabitacionRepository.java @@ -0,0 +1,13 @@ +package co.edu.uniandes.dse.parcialejemplo.repositories; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import co.edu.uniandes.dse.parcialejemplo.entities.HabitacionEntity; + +@Repository +public interface HabitacionRepository extends JpaRepository{ + List findById(long id); +} diff --git a/src/main/java/co/edu/uniandes/dse/parcialejemplo/repositories/HotelRepository.java b/src/main/java/co/edu/uniandes/dse/parcialejemplo/repositories/HotelRepository.java new file mode 100644 index 0000000..96c2eaa --- /dev/null +++ b/src/main/java/co/edu/uniandes/dse/parcialejemplo/repositories/HotelRepository.java @@ -0,0 +1,13 @@ +package co.edu.uniandes.dse.parcialejemplo.repositories; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import co.edu.uniandes.dse.parcialejemplo.entities.HotelEntity; + +@Repository +public interface HotelRepository extends JpaRepository { + List findById(long id); +} diff --git a/src/main/java/co/edu/uniandes/dse/parcialejemplo/services/HabitacionService.java b/src/main/java/co/edu/uniandes/dse/parcialejemplo/services/HabitacionService.java new file mode 100644 index 0000000..4d671a5 --- /dev/null +++ b/src/main/java/co/edu/uniandes/dse/parcialejemplo/services/HabitacionService.java @@ -0,0 +1,37 @@ +package co.edu.uniandes.dse.parcialejemplo.services; +import org.springframework.beans.factory.annotation.Autowired; +import java.util.Optional; + +import javax.persistence.EntityNotFoundException; + +import org.springframework.stereotype.Service; + +import co.edu.uniandes.dse.parcialejemplo.entities.*; +import co.edu.uniandes.dse.parcialejemplo.exceptions.IllegalOperationException; +import co.edu.uniandes.dse.parcialejemplo.repositories.HabitacionRepository; +import co.edu.uniandes.dse.parcialejemplo.repositories.HotelRepository; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class HabitacionService { + + @Autowired + HabitacionRepository habitacionRepository; + + @Autowired + HotelRepository hotelRepository; + + public HabitacionEntity createHabitacion(Long hotelId, HabitacionEntity habitacionEntity ) throws EntityNotFoundException, IllegalOperationException{ + log.info("Inicia proceso de creacion de habitacion"); + Optional hotelEntity = hotelRepository.findById(hotelId); + if (hotelEntity.isEmpty()) + throw new EntityNotFoundException("Hotel no encontrado"); + + if(habitacionEntity.getIdentificacion() > habitacionEntity.getNum_camas()) + throw new IllegalOperationException("El numero de identificion es mayor al numero de camas"); + + log.info("Termina el proceso de creacion de habitacion"); + return habitacionRepository.save(habitacionEntity); + } +} diff --git a/src/main/java/co/edu/uniandes/dse/parcialejemplo/services/HotelHabitacionService.java b/src/main/java/co/edu/uniandes/dse/parcialejemplo/services/HotelHabitacionService.java new file mode 100644 index 0000000..59acfc1 --- /dev/null +++ b/src/main/java/co/edu/uniandes/dse/parcialejemplo/services/HotelHabitacionService.java @@ -0,0 +1,5 @@ +package co.edu.uniandes.dse.parcialejemplo.services; + +public class HotelHabitacionService { + +} diff --git a/src/main/java/co/edu/uniandes/dse/parcialejemplo/services/HotelService.java b/src/main/java/co/edu/uniandes/dse/parcialejemplo/services/HotelService.java new file mode 100644 index 0000000..9c69066 --- /dev/null +++ b/src/main/java/co/edu/uniandes/dse/parcialejemplo/services/HotelService.java @@ -0,0 +1,32 @@ +package co.edu.uniandes.dse.parcialejemplo.services; + +import javax.persistence.EntityNotFoundException; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import co.edu.uniandes.dse.parcialejemplo.entities.HotelEntity; +import co.edu.uniandes.dse.parcialejemplo.exceptions.IllegalOperationException; +import co.edu.uniandes.dse.parcialejemplo.repositories.HotelRepository; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class HotelService { + + @Autowired + HotelRepository hotelRepository; + + @Transactional + public HotelEntity createHotel(HotelEntity hotelEntity) throws IllegalOperationException{ + log.info("Comienza el proceso de creacion de hotel"); + if (hotelEntity.getEstrellas()< 1 || hotelEntity.getEstrellas() >5){ + throw new IllegalOperationException("El numero de estrellas no es valido"); + } + + return hotelRepository.save(hotelEntity); + } + + +}