br.com.great.dao.JogosDAO.java Source code

Java tutorial

Introduction

Here is the source code for br.com.great.dao.JogosDAO.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.com.great.dao;

import br.com.great.contexto.Jogo;
import br.com.great.contexto.Posicao;
import br.com.great.factory.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * Classe responsavel realizar toda a interao com banco de dados relacionado com entidade jogo
 * @author carleandro
 */
public class JogosDAO extends ConnectionFactory {

    private static JogosDAO instance;

    /**
    * 
    * Mtodo responsvel por criar uma instancia da classe JogosDAO (Singleton)
    *
    * @return static
    * @author Carleandro Noleto
    * @since 27/11/2014
    * @version 1.0
    */
    public static JogosDAO getInstance() {
        if (instance == null)
            instance = new JogosDAO();
        return instance;
    }

    /**
    * Mtodo responsvel por listar todos os jogos perto de um local com distancia definida
     *
     * @param latitude String
     * @param longitude String
     * @param distancia String
    * @return JSONArray lista de jogos
    * @author Carleandro Noleto
    * @since 27/11/2014
    * @version 1.0
    */
    public JSONArray getJogos(double latitude, double longitude, int distancia) {
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        JSONArray jogos = null;
        Connection conexao = criarConexao();
        try {
            jogos = new JSONArray();
            //distancia em KM
            String sql = "SELECT  ((3956 * 2 * ASIN(SQRT(POWER(SIN((abs(" + latitude + ") - abs(latitude)) *  "
                    + " pi()/180 / 2),2) + COS(abs(" + latitude + ") * pi()/180 ) * COS(abs(latitude) * pi()/180) "
                    + "* POWER(SIN((abs(" + longitude
                    + ") - abs(longitude)) *    pi()/180 / 2), 2)))) * 1.609344) as "
                    + "distancia, nome, id, icone FROM jogos  having distancia < " + distancia
                    + " ORDER BY distancia limit 100";
            pstmt = conexao.prepareStatement(sql);
            rs = pstmt.executeQuery();

            while (rs.next()) {

                JSONObject jogo = new JSONObject();
                jogo.put("id", rs.getInt("id"));
                jogo.put("nome", rs.getString("nome"));
                jogo.put("icone", rs.getString("icone"));
                jogos.put(jogo);
            }

        } catch (SQLException | JSONException e) {
            System.out.println("Erro ao listar todos os jogos em uma distancia em KM: " + e.getMessage());
        } finally {
            fecharConexao(conexao, pstmt, rs);
        }
        return jogos;
    }

    /**
     * Retorna um jogo com todos os seus dados
     * @return JSONArray lista de todos os jogos
     */
    public Jogo getJogo(int jogo_id) {
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        Connection conexao = criarConexao();
        try {
            String sql = "select * from jogos where id=" + jogo_id;
            pstmt = conexao.prepareStatement(sql);
            rs = pstmt.executeQuery();
            while (rs.next()) {
                Jogo jogo = new Jogo();
                jogo.setId(rs.getInt("id"));
                jogo.setNome(rs.getString("nome"));
                jogo.setIcone(rs.getString("icone"));
                jogo.setPosicao(new Posicao(rs.getDouble("latitude"), rs.getDouble("longitude")));
                jogo.setNomeficticio(rs.getString("nomeficticio"));
                jogo.setStatus(rs.getInt("status"));
                return jogo;
            }
        } catch (SQLException e) {
            System.out.println("Erro no getJogo: " + e.getMessage());
        } finally {
            fecharConexao(conexao, pstmt, rs);
        }
        return null;
    }

}