Commit af43c1b4 by Billy Larru

modificando DAOHelper

parent f6b7360a
......@@ -14,7 +14,7 @@ import org.apache.logging.log4j.Logger;
import org.json.JSONArray;
import org.json.JSONObject;
import salidasautomaticas.dao.SalidasDAO;
import salidasautomaticas.util.EstandarDAO;
import salidasautomaticas.util.DAOHelper;
/**
*
......@@ -67,7 +67,7 @@ public class SalidasMysqlDAO implements SalidasDAO {
JSONArray parametrosQuery = new JSONArray();
parametrosQuery.put(getFechaHoy());
jsonArray = EstandarDAO.getInstance().consultar(cn, query, parametrosQuery);
jsonArray = DAOHelper.getInstance().consultar(cn, query, parametrosQuery);
return jsonArray;
}
......@@ -155,7 +155,7 @@ public class SalidasMysqlDAO implements SalidasDAO {
JSONArray parametros = new JSONArray();
parametros.put(horaProgramada);
JSONArray jsonArray = EstandarDAO.getInstance().consultar(cn, query, parametros);
JSONArray jsonArray = DAOHelper.getInstance().consultar(cn, query, parametros);
return jsonArray;
}
......@@ -196,7 +196,7 @@ public class SalidasMysqlDAO implements SalidasDAO {
.put(aleatorioMin)
.put(asistencia.getString("codasis"));
resultado = EstandarDAO.getInstance().ejecutar(cn, queryPersonal, parametros);
resultado = DAOHelper.getInstance().ejecutar(cn, queryPersonal, parametros);
updateCounts[i] = resultado.getInt("msg");
i++;
......
/*
* 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 salidasautomaticas.util;
import java.sql.Connection;
......@@ -20,86 +15,81 @@ import org.json.JSONObject;
*
* @author sistem19user
*/
public class EstandarDAO {
private static final Logger log = LogManager.getLogger(EstandarDAO.class);
public class DAOHelper {
private static final Logger log = LogManager.getLogger(DAOHelper.class);
private static DAOHelper instance;
private static EstandarDAO instance;
private EstandarDAO() {
private DAOHelper() {
}
public static EstandarDAO getInstance() {
public static DAOHelper getInstance() {
if (instance == null) {
instance = new EstandarDAO();
instance = new DAOHelper();
}
return instance;
}
public JSONObject listar(Connection cn, String query, JSONArray... parametros) throws Exception {
JSONObject obj = new JSONObject();
JSONArray jsonArray = consultar(cn, query, parametros);
int length = jsonArray.length();
obj.put("data", jsonArray);
obj.put("recordsFiltered", length);
obj.put("recordsTotal", length);
obj.put("draw", "1");
return obj;
}
/**
* Este metodo ejecuta una sentencia sql de consulta(solamente selects) en
* la base de datos y devuelve como resultado en un JSONArray los registros
* obtenidos
* Este metodo ejecuta una sentencia sql de consulta(solamente selects) en la
* base de datos y devuelve como resultado en un JSONArray los registros
* obtenidos.
*
* Ejemplo de uso con parametros:
*
* Connection cn = (aqui obtengo la conexion)
* String query = "select * from personal where codpersonal = ? and fecha_ingreso = ? and retirado = ?";
* JSONArray parametros = new JSONArray();
* parametros
* .put(939) //codpersonal es entero
* .put("2018-01-12") //fecha de ingreso es un String
* .put(true); // retirado es un booleano
*
* JSONArray resultado = DAOHelper.getInstance().consultar(cn, query, parametros);
*
*
* Ejemplo de uso sin parametros
* String query = "select * from personal";
* JSONArray resultado = DAOHelper.getInstance().consultar(cn, query,);
*
* @param cn objeto que representa la conexion a la base de datos
* @param query sentencia sql que se desea ejecutar en la base de datos
* @param parametros parametros que vamos a pasar al query, *es opcional
* @return Devuelve como resultado los registros obtenidos por el query en
* un objeto JSONArray
* @return Devuelve como resultado los registros obtenidos por el query en un
* objeto JSONArray
* @throws Exception
*/
public JSONArray consultar(Connection cn, String query, JSONArray... parametros) throws Exception {
//objeto que almacena todos las filas obtenidas por el query
JSONArray jsonArray = new JSONArray();
PreparedStatement ps = null;
ResultSet rs = null;
try {
if (cn == null) {
jsonArray = null;
} else {
PreparedStatement ps = cn.prepareStatement(query);
ps = cn.prepareStatement(query);
//validamos si existen parametros
if (parametros != null && parametros.length > 0) {
JSONArray params = parametros[0];
int cont = 1;
int index = 1;
//Recorremos la lista de parametros y lo seteamos en el preparedstatement
for (Object parametro : params) {
setPreparedStatement(ps, cont, parametro);
cont++;
setPreparedStatement(ps, index++, parametro);
}
}
log.trace("query [SELECT] =" + ps);
ResultSet rs = ps.executeQuery();
rs = ps.executeQuery();
ResultSetMetaData rm = rs.getMetaData();
int numCols = rm.getColumnCount();
while (rs.next()) {
JSONObject obj = new JSONObject();
for (int i = 1; i <= numCols; i++) {
castColumn(rs, rm, i, obj);
setJSONObject(rs, rm, i, obj);
}
jsonArray.put(obj);
}
// rs.close();
// cn.close();
}
} catch (Exception ex) {
log.error("error", ex);
throw ex;
......@@ -109,8 +99,24 @@ public class EstandarDAO {
/**
* Este metodo nos permite ejecutar una sentencia sql en la base de datos y
* devuelve como resultado en un JSONObject las filas afectadas por el
* query.
* devuelve como resultado en un JSONObject las filas afectadas por el query.
*
* Ejemplo de uso con parametros:
*
* Connection cn = (aqui obtengo la conexion)
* String query = "update personal set fecha_ingreso = ? and retirado = ? where codpersonal = ?";
* JSONArray parametros = new JSONArray();
* parametros
* .put("2018-01-12") //fecha de ingreso es un String
* .put(true) //retirado es un boolean
* .put(923); // codpersonal es un entero
*
* JSONObject resultado = DAOHelper.getInstance().ejecutar(cn, query, parametros);
*
*
* Ejemplo de uso sin parametros
* String query = "delete from personal";
* JSONObject resultado = DAOHelper.getInstance().ejecutar(cn, query);
*
* @param cn objeto que representa la conexion a la base de datos
* @param query sentencia sql que se desea ejecutar en la base de datos
......@@ -122,27 +128,19 @@ public class EstandarDAO {
public JSONObject ejecutar(Connection cn, String query, JSONArray... parametros) throws Exception {
JSONObject obj = new JSONObject();
try {
if (cn == null) {
obj.put("msg", 0);
} else {
PreparedStatement ps = cn.prepareStatement(query);
if (parametros != null && parametros.length > 0) {
JSONArray params = parametros[0];
int cont = 1;
int index = 1;
for (Object parametro : params) {
setPreparedStatement(ps, cont, parametro);
cont++;
setPreparedStatement(ps, index++, parametro);
}
}
log.trace("query [ExecuteUpdate]= " + ps);
int filas = ps.executeUpdate();
if (filas > 0) {
obj.put("msg", filas);
} else {
obj.put("msg", 0);
}
}
} catch (Exception ex) {
log.error("error", ex);
throw ex;
......@@ -168,6 +166,8 @@ public class EstandarDAO {
ps.setDouble(index, (double) p);
} else if (p instanceof Boolean) {
ps.setBoolean(index, (boolean) p);
} else if (p instanceof byte[]) {
ps.setBytes(index, (byte[]) p);
}
}
......@@ -183,7 +183,7 @@ public class EstandarDAO {
* @param obj Representa a un registro de la base de datos
* @throws SQLException
*/
private void castColumn(ResultSet rs, ResultSetMetaData rsmd, int columnIndex, JSONObject obj) throws SQLException {
private void setJSONObject(ResultSet rs, ResultSetMetaData rsmd, int columnIndex, JSONObject obj) throws SQLException {
//obtenemos el tipo de dato de la columna de la tabla
int type = rsmd.getColumnType(columnIndex);
......@@ -191,7 +191,7 @@ public class EstandarDAO {
switch (type) {
case Types.VARCHAR:
case Types.CHAR:
obj.put(rsmd.getColumnName(columnIndex), rs.getString(columnIndex));
obj.put(rsmd.getColumnName(columnIndex), rs.getString(columnIndex) == null ? JSONObject.NULL : rs.getString(columnIndex));
break;
case Types.INTEGER:
obj.put(rsmd.getColumnName(columnIndex), rs.getInt(columnIndex));
......@@ -199,8 +199,11 @@ public class EstandarDAO {
case Types.BIT:
obj.put(rsmd.getColumnName(columnIndex), rs.getBoolean(columnIndex));
break;
case Types.BINARY:
obj.put(rsmd.getColumnName(columnIndex), rs.getBytes(columnIndex));
break;
default:
obj.put(rsmd.getColumnName(columnIndex), rs.getString(columnIndex));
obj.put(rsmd.getColumnName(columnIndex), rs.getString(columnIndex) == null ? JSONObject.NULL : rs.getString(columnIndex));
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment