DAO.DemandeArticlesDAO.java Source code

Java tutorial

Introduction

Here is the source code for DAO.DemandeArticlesDAO.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import Entities.Article;
import Entities.DemandeArticle;
import Utils.HibernateUtil;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.NoResultException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;

/**
 *
 * @author marwen
 */
public class DemandeArticlesDAO implements DemandeArticlesDAOInterface {

    Session session;
    Transaction transaction;

    public DemandeArticlesDAO() {
        session = HibernateUtil.getSessionFactory().getCurrentSession();

        try {
            transaction.isActive();
        } catch (Exception e) {
            transaction = session.beginTransaction();
        }
    }

    @Override
    public void addDemandeArticles(DemandeArticle demandeArticles) {

        session = HibernateUtil.getSessionFactory().getCurrentSession();
        transaction = session.getTransaction();

        session.saveOrUpdate(demandeArticles);
        transaction.commit();
        System.out.println("Successfully inserted");
        session.close();

    }

    @Override
    public List<DemandeArticle> findDemandeArticlesByMarqueArticle(String marqueArticle) {

        session = HibernateUtil.getSessionFactory().getCurrentSession();
        transaction = session.getTransaction();

        List<DemandeArticle> demandesArticles = new ArrayList<>();

        try {

            String hql = "FROM DemandeArticle  da  JOIN FETCH da.articles  das WHERE das.marqueArticle=:marqueArticle";
            Query query = session.createQuery(hql);
            query.setString("marqueArticle", marqueArticle);
            demandesArticles.addAll(query.getResultList());
        } catch (NoResultException e) {
            session.close();
            return null;
        }
        session.close();

        System.out.println("dem article found " + demandesArticles.get(0).getClass().getName());

        return demandesArticles;

    }

    @Override
    public List<DemandeArticle> findDemandeArticlesByResponsable(String responsable) {

        session = HibernateUtil.getSessionFactory().getCurrentSession();
        transaction = session.getTransaction();

        List<DemandeArticle> demandesArticles = new ArrayList<>();

        try {

            String hql = "FROM DemandeArticle  WHERE fixing.responsableMission=:responsableMission";
            Query query = session.createQuery(hql);
            query.setString("responsableMission", responsable);
            demandesArticles.addAll(query.getResultList());
        } catch (NoResultException e) {
            session.close();
            return null;
        }
        session.close();

        System.out.println("dem article found " + demandesArticles.get(0).getClass().getName());

        return demandesArticles;

    }

    @Override
    public List<DemandeArticle> findDemandeArticlesByDate(Date date) {

        session = HibernateUtil.getSessionFactory().getCurrentSession();
        transaction = session.getTransaction();

        List<DemandeArticle> demandesArticles = new ArrayList<>();

        try {

            String hql = "FROM DemandeArticle  WHERE dateDemande=:dateDemande";
            Query query = session.createQuery(hql);
            query.setDate("dateDemande", date);
            demandesArticles.addAll(query.getResultList());
        } catch (NoResultException e) {
            session.close();
            return null;
        }
        session.close();

        System.out.println("dem article found " + demandesArticles.get(0).getClass().getName());

        return demandesArticles;

    }

    @Override
    public void acceptDemandeArticle(DemandeArticle demandeArticle) {

        // close the current session because ArticleDao will start a new one
        session.evict(demandeArticle.getFixing());
        session.flush();
        session.clear();
        session.close();

        System.out.println("demande Article to delete " + demandeArticle.getId());
        ArticleDAO articleDao = new ArticleDAO();
        Article article = articleDao.findArticleByDesignation(demandeArticle.getArticles().get(0).getDesignation())
                .get(0);

        Integer remainingQuantity = article.getQuantity() - demandeArticle.getQuanity();
        article.setQuantity(remainingQuantity);

        if (article.getFixings().indexOf(this) != -1) {
            article.getFixings().set(article.getFixings().indexOf(this), demandeArticle.getFixing());
        } else {
            article.getFixings().add(demandeArticle.getFixing());
        }
        // reopen the session (because ArticleDao has closed it)
        session = HibernateUtil.getSessionFactory().getCurrentSession();
        transaction = session.beginTransaction();

        session.flush();
        session.clear();

        articleDao.addOrMergeArticle(article);

        // reopen the session (because CarDAO has closed it)
        session = HibernateUtil.getSessionFactory().getCurrentSession();
        transaction = session.beginTransaction();

        session.delete(demandeArticle);
        transaction.commit();

        session.close();
    }

    @Override
    public void rejectDemandeArticle(DemandeArticle demandeArticle) {

        // close the current session because ArticleDao will start a new one
        session.evict(demandeArticle.getFixing());
        session.flush();
        session.clear();
        session.close();

        System.out.println("demande Article to delete " + demandeArticle.getId());

        // reopen the session (because CarDAO has closed it)
        session = HibernateUtil.getSessionFactory().getCurrentSession();
        transaction = session.beginTransaction();

        session.delete(demandeArticle);
        transaction.commit();

        session.close();
    }

}