proyectodavid.Negocio.Pregunta.SA.SAPreguntaImp.java Source code

Java tutorial

Introduction

Here is the source code for proyectodavid.Negocio.Pregunta.SA.SAPreguntaImp.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 proyectodavid.Negocio.Pregunta.SA;

import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import proyectodavid.Negocio.Categoria.Categoria;
import proyectodavid.Negocio.Categoria.SA.SACategoria;
import proyectodavid.Negocio.FactoriaSA.FactoriaSA;
import proyectodavid.Negocio.Pregunta.Pregunta;

/**
 *
 * @author jorgerueda
 */
public class SAPreguntaImp implements SAPregunta {

    protected EntityManager entityManager;

    public SAPreguntaImp() {

        EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("ProyectoDavidPU");

        this.entityManager = entityManagerFactory.createEntityManager();

    }

    @Override
    public int altaPregunta(Pregunta pregunta) {

        int exit = 1;
        try {

            entityManager.getTransaction().begin();
            entityManager.persist(pregunta);
            entityManager.getTransaction().commit();

        } catch (Exception e) {

            exit = 0;

        } finally {
            entityManager.close();
            return exit;
        }

    }

    @Override
    public int bajaPregunta(Pregunta pregunta) {
        int exit = 1;
        try {
            Pregunta p = entityManager.find(Pregunta.class, pregunta.getId());
            entityManager.getTransaction().begin();
            entityManager.remove(p);
            entityManager.getTransaction().commit();
        } catch (Exception e) {

            exit = 0;

        } finally {
            entityManager.close();
            return exit;
        }

    }

    @Override
    public Pregunta mostrarPregunta(int id) {
        entityManager.getTransaction().begin();
        Pregunta p = entityManager.find(Pregunta.class, id);
        entityManager.close();
        return p;
    }

    @Override
    public Collection<Pregunta> mostrarPreguntas() {
        entityManager.getTransaction().begin();
        Query query = entityManager.createNamedQuery("Pregunta.findAll");
        List<Pregunta> list = query.getResultList();
        entityManager.close();
        return list;

    }

    @Override
    public int editarPregunta(Pregunta pregunta) {
        int exit = 1;
        try {
            entityManager.getTransaction().begin();

            Pregunta prg = entityManager.find(Pregunta.class, pregunta.getId());

            prg.setA(pregunta.getA());
            prg.setB(pregunta.getB());
            prg.setC(pregunta.getC());
            prg.setD(pregunta.getD());
            prg.setCategoria(pregunta.getCategoria());
            prg.setSolucion(pregunta.getSolucion());
            prg.setPregunta(pregunta.getPregunta());

            if (pregunta.getNamePhoto1() != null) {

                prg.setNamePhoto1(pregunta.getNamePhoto1());
                prg.setPhoto1(pregunta.getPhoto1());

            }
            if (pregunta.getNamePhoto2() != null) {

                prg.setNamePhoto2(pregunta.getNamePhoto2());
                prg.setPhoto2(pregunta.getPhoto2());

            }
            entityManager.getTransaction().commit();
        } catch (Exception e) {

            exit = 0;

        } finally {
            entityManager.close();
            return exit;
        }
    }

    @Override
    public Collection<Pregunta> mostrarPreguntasRandom(String categoria, int numeroPreguntas) {
        entityManager.getTransaction().begin();
        Query query1 = entityManager.createNamedQuery("Pregunta.findMaxId");
        query1.setParameter("categoria", categoria);
        int max = (int) query1.getSingleResult();

        String listaIndices = generarNumerosAleatorios(numeroPreguntas, max);
        Query query2 = entityManager.createNamedQuery("Pregunta.findRandom");
        query2.setParameter("lista", listaIndices);
        query2.setParameter("categoria", categoria);
        List<Pregunta> list = query2.setMaxResults(numeroPreguntas).getResultList();
        entityManager.close();
        return list;

    }

    public void prueba() {

        System.out.print(generarNumerosAleatorios(2, 10));

    }

    public void prueba2() {
        CriteriaBuilder cb = entityManager.getCriteriaBuilder();
        CriteriaQuery<Pregunta> q = cb.createQuery(Pregunta.class);

    }

    private String generarNumerosAleatorios(int cantidad, int max) {
        cantidad = cantidad * 10;

        if (cantidad > max) {
            cantidad = max;
        }
        System.out.println(cantidad);
        List<Integer> lista = new ArrayList<Integer>();

        for (int i = 0; i < cantidad; i++) {

            int random = (int) (Math.random() * max) + 1;
            while (lista.contains(random)) {
                random = (int) (Math.random() * max) + 1;
            }

            lista.add(random);
            System.out.println(lista.toString());

        }
        String resultado = StringUtils.join(lista, ',');
        return resultado;
    }

    @Override
    public Collection<Pregunta> PreguntasRandomByCategoria(String categoria, int numeroPreguntas) {
        entityManager.getTransaction().begin();
        Query query1 = entityManager.createNamedQuery("Pregunta.SelectIdByCategoria");
        SACategoria servicioCategoria = FactoriaSA.getInstancia().generaSACategoria();
        Categoria c = servicioCategoria.mostrarCategoriaPorNombre(categoria);
        List<Pregunta> listP = new ArrayList<Pregunta>();
        if (c != null) {
            query1.setParameter("categoria", c);
            List<Integer> list = query1.getResultList();

            for (int i = 0; i < numeroPreguntas; i++) {
                int random = (int) (Math.random() * list.size());

                Pregunta p = new SAPreguntaImp().mostrarPregunta(list.get(random));

                listP.add(p);
                list.remove(random);
            } //endfor
        } //endif
        entityManager.close();
        return listP;
    }

    @Override
    public Collection<Pregunta> mostrarPreguntasByCategoria(Categoria c) {
        entityManager.getTransaction().begin();
        Query query = entityManager.createNamedQuery("Pregunta.findByCategoria");
        query.setParameter("categoria", c);
        List<Pregunta> list = query.getResultList();
        entityManager.close();
        return list;

    }
}