br.luck.contar.MegasenaContar.java Source code

Java tutorial

Introduction

Here is the source code for br.luck.contar.MegasenaContar.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 br.luck.contar;

import br.luck.configuracao.HibernateUtil;
import br.luck.interfaces.Contar;
import br.luck.model.ContarModel;
import br.luck.model.MegasenaModel;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author filipi
 */
public class MegasenaContar extends Contar {

    private Session session = HibernateUtil.getSessionFactory().getCurrentSession();

    public Session getSession() {
        return session;
    }

    public void setSession(Session session) {
        this.session = session;
    }

    @Override
    public List<ContarModel> contarNumerosSorteados(long concursoinicio, long concursoFim, int bolaInicio,
            int bolaFim) throws Exception {
        int quantidade;
        List<ContarModel> contar = new ArrayList<ContarModel>();
        try {
            for (int bola = bolaInicio; bola <= bolaFim; bola++) {

                // Recebe a quantidade que o nmero saiu                
                quantidade = obterQuantidade(verificarBola(bola), concursoinicio, concursoFim, 1, 6);

                // Adiciona na lista que ser retornada
                contar.add(new ContarModel(bola, quantidade));
            }
            return contar;
        } catch (Exception e) {
            throw new Exception(e.getMessage());
        }
    }

    @Override
    protected int obterQuantidade(String bola, long concursoinicio, long concursoFim, int colunaInicio,
            int colunaFim) throws Exception {

        List<Long> lista = new ArrayList<Long>();
        long quantidade = 0;

        for (int coluna = colunaInicio; coluna <= colunaFim; coluna++) {
            Criteria criteria = getSession().createCriteria(MegasenaModel.class);
            String col = String.valueOf((coluna < 10) ? "0" + coluna : coluna);

            criteria.setProjection(Projections.count("bola" + col));
            criteria.add(Restrictions.eq("bola" + col, bola));
            criteria.add(Restrictions.between("concurso", concursoinicio, concursoFim));

            try {
                lista.add((Long) criteria.uniqueResult());
            } catch (Exception e) {
                throw new Exception(e.getMessage());
            }
        }
        // Percorre a lista somando os resultados
        for (Long soma : lista) {
            quantidade = quantidade + soma;
        }
        return Integer.parseInt(String.valueOf(quantidade));
    }

    @Override
    protected String verificarBola(int bola) {
        return super.verificarBola(bola); //To change body of generated methods, choose Tools | Templates.
    }
}