Advertisement
Guest User

TubeRepositoryImpl

a guest
Feb 12th, 2019
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.58 KB | None | 0 0
  1. package metubeV2.repository;
  2.  
  3. import metubeV2.domain.entities.Tube;
  4. import metubeV2.repository.interfaces.TubeRepository;
  5.  
  6. import javax.inject.Inject;
  7. import javax.persistence.EntityManager;
  8. import javax.persistence.NoResultException;
  9. import javax.persistence.criteria.CriteriaBuilder;
  10. import javax.persistence.criteria.CriteriaQuery;
  11. import javax.persistence.criteria.Root;
  12. import java.util.List;
  13. import java.util.Optional;
  14.  
  15. import static metubeV2.constants.Constants.PARAMETER_ID;
  16.  
  17. public class TubeRepositoryImpl implements TubeRepository {
  18.  
  19.     private final EntityManager entityManager;
  20.  
  21.     @Inject
  22.     public TubeRepositoryImpl(EntityManager entityManager) {
  23.         this.entityManager = entityManager;
  24.     }
  25.  
  26.     @Override
  27.     public Tube save(Tube entity) {
  28.         this.entityManager.getTransaction().begin();
  29.         this.entityManager.persist(entity);
  30.         this.entityManager.getTransaction().commit();
  31.  
  32.         return entity;
  33.     }
  34.  
  35.     @Override
  36.     public List<Tube> findAll() {
  37.         CriteriaBuilder criteriaBuilder = this.entityManager
  38.                 .getCriteriaBuilder();
  39.         CriteriaQuery<Tube> criteriaQuery = criteriaBuilder
  40.                 .createQuery(Tube.class);
  41.         Root<Tube> root = criteriaQuery.from(Tube.class);
  42.  
  43.         criteriaQuery.select(root);
  44.  
  45.         return this.entityManager
  46.                 .createQuery(criteriaQuery)
  47.                 .getResultList();
  48.     }
  49.  
  50.     @Override
  51.     public Optional<Tube> findById(String id) {
  52.         return getEntityByParameter(id, PARAMETER_ID);
  53.     }
  54.  
  55.     @Override
  56.     public Tube update(Tube tube) {
  57.         this.entityManager.getTransaction().begin();
  58.         this.entityManager.merge(tube);
  59.         this.entityManager.getTransaction().commit();
  60.  
  61.         return tube;
  62.     }
  63.  
  64.     private Optional<Tube> getEntityByParameter(String name,
  65.                                                 String parameterName) {
  66.         CriteriaBuilder criteriaBuilder = this.entityManager
  67.                 .getCriteriaBuilder();
  68.         CriteriaQuery<Tube> criteriaQuery = criteriaBuilder
  69.                 .createQuery(Tube.class);
  70.         Root<Tube> root = criteriaQuery.from(Tube.class);
  71.  
  72.         criteriaQuery.select(root)
  73.                 .where(criteriaBuilder
  74.                         .equal(root.get(parameterName), name));
  75.  
  76.         try {
  77.             return Optional.ofNullable(this.entityManager
  78.                     .createQuery(criteriaQuery)
  79.                     .getSingleResult());
  80.  
  81.         } catch (NoResultException ignored) {
  82.             return Optional.empty();
  83.         }
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement