Commit e614664f by Billy Larru

Revert "modificando DAOHelper"

This reverts commit af43c1b4.
parent 54f2e783
...@@ -17,38 +17,27 @@ import salidasautomaticas.util.Metodos; ...@@ -17,38 +17,27 @@ import salidasautomaticas.util.Metodos;
public class Main { public class Main {
private static final Logger log = LogManager.getLogger(Main.class); private static final Logger log = LogManager.getLogger(Main.class);
public static void main(String[] args) { public static void main(String[] args) {
// setLogLevel(Level.TRACE);//DESARROLLO setLogLevel(Level.TRACE);//DESARROLLO
//// setLogLevel(Level.INFO);//PRODUCCION // setLogLevel(Level.INFO);//PRODUCCION
// log.info("Inicializando programa [Salidas Automaticas]..."); log.info("Inicializando programa [Salidas Automaticas]...");
//
// Date horaInicio = Metodos.getHoraEjecucion("11:30"); Date horaInicio = Metodos.getHoraEjecucion("11:30");
// int periodo = 86400000;//El codigo se ejecutará cada 24h, 86400000 representa 24h en milisegundos int periodo = 86400000;//El codigo se ejecutará cada 24h, 86400000 representa 24h en milisegundos
//
// TimerTask task = new ProgramarSalidasTask(); TimerTask task = new ProgramarSalidasTask();
// Timer timer = new Timer(); Timer timer = new Timer();
// timer.schedule(task, horaInicio, periodo); timer.schedule(task , horaInicio, periodo);
int i = 1; }
for (int j = 0; j < 10; j++) { private static void setLogLevel(Level l) {
sss(i++); log.info("Setting log level to " + l.name());
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
} Configuration conf = ctx.getConfiguration();
conf.getLoggerConfig(LogManager.ROOT_LOGGER_NAME).setLevel(l);
} ctx.updateLoggers(conf);
}
private static void setLogLevel(Level l) {
log.info("Setting log level to " + l.name());
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration conf = ctx.getConfiguration();
conf.getLoggerConfig(LogManager.ROOT_LOGGER_NAME).setLevel(l);
ctx.updateLoggers(conf);
}
private static void sss(int numero) {
System.out.println("valor en sss=" + numero);
}
} }
...@@ -14,7 +14,7 @@ import org.apache.logging.log4j.Logger; ...@@ -14,7 +14,7 @@ import org.apache.logging.log4j.Logger;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
import salidasautomaticas.dao.SalidasDAO; import salidasautomaticas.dao.SalidasDAO;
import salidasautomaticas.util.DAOHelper; import salidasautomaticas.util.EstandarDAO;
/** /**
* *
...@@ -67,7 +67,7 @@ public class SalidasMysqlDAO implements SalidasDAO { ...@@ -67,7 +67,7 @@ public class SalidasMysqlDAO implements SalidasDAO {
JSONArray parametrosQuery = new JSONArray(); JSONArray parametrosQuery = new JSONArray();
parametrosQuery.put(getFechaHoy()); parametrosQuery.put(getFechaHoy());
jsonArray = DAOHelper.getInstance().consultar(cn, query, parametrosQuery); jsonArray = EstandarDAO.getInstance().consultar(cn, query, parametrosQuery);
return jsonArray; return jsonArray;
} }
...@@ -155,7 +155,7 @@ public class SalidasMysqlDAO implements SalidasDAO { ...@@ -155,7 +155,7 @@ public class SalidasMysqlDAO implements SalidasDAO {
JSONArray parametros = new JSONArray(); JSONArray parametros = new JSONArray();
parametros.put(horaProgramada); parametros.put(horaProgramada);
JSONArray jsonArray = DAOHelper.getInstance().consultar(cn, query, parametros); JSONArray jsonArray = EstandarDAO.getInstance().consultar(cn, query, parametros);
return jsonArray; return jsonArray;
} }
...@@ -196,7 +196,7 @@ public class SalidasMysqlDAO implements SalidasDAO { ...@@ -196,7 +196,7 @@ public class SalidasMysqlDAO implements SalidasDAO {
.put(aleatorioMin) .put(aleatorioMin)
.put(asistencia.getString("codasis")); .put(asistencia.getString("codasis"));
resultado = DAOHelper.getInstance().ejecutar(cn, queryPersonal, parametros); resultado = EstandarDAO.getInstance().ejecutar(cn, queryPersonal, parametros);
updateCounts[i] = resultado.getInt("msg"); updateCounts[i] = resultado.getInt("msg");
i++; 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; package salidasautomaticas.util;
import java.sql.Connection; import java.sql.Connection;
...@@ -15,195 +20,187 @@ import org.json.JSONObject; ...@@ -15,195 +20,187 @@ import org.json.JSONObject;
* *
* @author sistem19user * @author sistem19user
*/ */
public class DAOHelper { public class EstandarDAO {
private static final Logger log = LogManager.getLogger(DAOHelper.class);
private static DAOHelper instance; private static final Logger log = LogManager.getLogger(EstandarDAO.class);
private DAOHelper() { private static EstandarDAO instance;
}
private EstandarDAO() {
public static DAOHelper getInstance() { }
if (instance == null) {
instance = new DAOHelper(); public static EstandarDAO getInstance() {
} if (instance == null) {
return instance; instance = new EstandarDAO();
} }
return instance;
/** }
* Este metodo ejecuta una sentencia sql de consulta(solamente selects) en la
* base de datos y devuelve como resultado en un JSONArray los registros public JSONObject listar(Connection cn, String query, JSONArray... parametros) throws Exception {
* obtenidos. JSONObject obj = new JSONObject();
* JSONArray jsonArray = consultar(cn, query, parametros);
* Ejemplo de uso con parametros:
* int length = jsonArray.length();
* Connection cn = (aqui obtengo la conexion)
* String query = "select * from personal where codpersonal = ? and fecha_ingreso = ? and retirado = ?"; obj.put("data", jsonArray);
* JSONArray parametros = new JSONArray(); obj.put("recordsFiltered", length);
* parametros obj.put("recordsTotal", length);
* .put(939) //codpersonal es entero obj.put("draw", "1");
* .put("2018-01-12") //fecha de ingreso es un String
* .put(true); // retirado es un booleano return obj;
* }
* JSONArray resultado = DAOHelper.getInstance().consultar(cn, query, parametros);
* /**
* * Este metodo ejecuta una sentencia sql de consulta(solamente selects) en
* Ejemplo de uso sin parametros * la base de datos y devuelve como resultado en un JSONArray los registros
* String query = "select * from personal"; * obtenidos
* JSONArray resultado = DAOHelper.getInstance().consultar(cn, query,); *
* *
* @param cn objeto que representa la conexion a la base de datos * @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 query sentencia sql que se desea ejecutar en la base de datos
* @param parametros parametros que vamos a pasar al query, *es opcional * @param parametros parametros que vamos a pasar al query, *es opcional
* @return Devuelve como resultado los registros obtenidos por el query en un * @return Devuelve como resultado los registros obtenidos por el query en
* objeto JSONArray * un objeto JSONArray
* @throws Exception * @throws Exception
*/ */
public JSONArray consultar(Connection cn, String query, JSONArray... parametros) throws Exception { public JSONArray consultar(Connection cn, String query, JSONArray... parametros) throws Exception {
//objeto que almacena todos las filas obtenidas por el query //objeto que almacena todos las filas obtenidas por el query
JSONArray jsonArray = new JSONArray(); JSONArray jsonArray = new JSONArray();
PreparedStatement ps = null; try {
ResultSet rs = null; if (cn == null) {
try { jsonArray = null;
ps = cn.prepareStatement(query); } else {
PreparedStatement ps = cn.prepareStatement(query);
//validamos si existen parametros
if (parametros != null && parametros.length > 0) { //validamos si existen parametros
JSONArray params = parametros[0]; if (parametros != null && parametros.length > 0) {
int index = 1; JSONArray params = parametros[0];
int cont = 1;
//Recorremos la lista de parametros y lo seteamos en el preparedstatement
for (Object parametro : params) { //Recorremos la lista de parametros y lo seteamos en el preparedstatement
setPreparedStatement(ps, index++, parametro); for (Object parametro : params) {
} setPreparedStatement(ps, cont, parametro);
cont++;
} }
log.trace("query [SELECT] =" + ps); }
log.trace("query [SELECT] =" + ps);
rs = ps.executeQuery();
ResultSetMetaData rm = rs.getMetaData(); ResultSet rs = ps.executeQuery();
int numCols = rm.getColumnCount(); ResultSetMetaData rm = rs.getMetaData();
int numCols = rm.getColumnCount();
while (rs.next()) {
JSONObject obj = new JSONObject(); while (rs.next()) {
for (int i = 1; i <= numCols; i++) { JSONObject obj = new JSONObject();
setJSONObject(rs, rm, i, obj); for (int i = 1; i <= numCols; i++) {
} castColumn(rs, rm, i, obj);
jsonArray.put(obj); }
} jsonArray.put(obj);
} catch (Exception ex) { }
log.error("error", ex);
throw ex; // rs.close();
} // cn.close();
return jsonArray; }
} } catch (Exception ex) {
log.error("error", ex);
/** throw ex;
* 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. return jsonArray;
* }
* Ejemplo de uso con parametros:
* /**
* Connection cn = (aqui obtengo la conexion) * Este metodo nos permite ejecutar una sentencia sql en la base de datos y
* String query = "update personal set fecha_ingreso = ? and retirado = ? where codpersonal = ?"; * devuelve como resultado en un JSONObject las filas afectadas por el
* JSONArray parametros = new JSONArray(); * query.
* parametros *
* .put("2018-01-12") //fecha de ingreso es un String * @param cn objeto que representa la conexion a la base de datos
* .put(true) //retirado es un boolean * @param query sentencia sql que se desea ejecutar en la base de datos
* .put(923); // codpersonal es un entero * @param parametros parametros que vamos a pasar al query, *es opcional
* * @return Devuelve la cantidad de filas afectadas por el query en un
* JSONObject resultado = DAOHelper.getInstance().ejecutar(cn, query, parametros); * JSONObject.
* * @throws Exception
* */
* Ejemplo de uso sin parametros public JSONObject ejecutar(Connection cn, String query, JSONArray... parametros) throws Exception {
* String query = "delete from personal"; JSONObject obj = new JSONObject();
* JSONObject resultado = DAOHelper.getInstance().ejecutar(cn, query); try {
* if (cn == null) {
* @param cn objeto que representa la conexion a la base de datos obj.put("msg", 0);
* @param query sentencia sql que se desea ejecutar en la base de datos } else {
* @param parametros parametros que vamos a pasar al query, *es opcional PreparedStatement ps = cn.prepareStatement(query);
* @return Devuelve la cantidad de filas afectadas por el query en un if (parametros != null && parametros.length > 0) {
* JSONObject. JSONArray params = parametros[0];
* @throws Exception int cont = 1;
*/ for (Object parametro : params) {
public JSONObject ejecutar(Connection cn, String query, JSONArray... parametros) throws Exception { setPreparedStatement(ps, cont, parametro);
JSONObject obj = new JSONObject(); cont++;
try { }
PreparedStatement ps = cn.prepareStatement(query); }
if (parametros != null && parametros.length > 0) { log.trace("query [ExecuteUpdate]= " + ps);
JSONArray params = parametros[0]; int filas = ps.executeUpdate();
int index = 1; if (filas > 0) {
for (Object parametro : params) { obj.put("msg", filas);
setPreparedStatement(ps, index++, parametro); } else {
} obj.put("msg", 0);
} }
}
log.trace("query [ExecuteUpdate]= " + ps); } catch (Exception ex) {
int filas = ps.executeUpdate(); log.error("error", ex);
obj.put("msg", filas); throw ex;
} catch (Exception ex) { }
log.error("error", ex); return obj;
throw ex; }
}
return obj; /**
} * Setea en el prepared statement el valor del parametro segun su tipo de
* dato.
/** *
* Setea en el prepared statement el valor del parametro segun su tipo de * @param ps representa el objeto PreparedStatement
* dato. * @param index indica la posicion del parametro en la consulta sql
* * @param p parametro de la consulta sql
* @param ps representa el objeto PreparedStatement * @throws SQLException
* @param index indica la posicion del parametro en la consulta sql */
* @param p parametro de la consulta sql private void setPreparedStatement(PreparedStatement ps, int index, Object p) throws SQLException {
* @throws SQLException if (p instanceof Integer) {
*/ ps.setInt(index, (int) p);
private void setPreparedStatement(PreparedStatement ps, int index, Object p) throws SQLException { } else if (p instanceof String) {
if (p instanceof Integer) { ps.setString(index, p.toString());
ps.setInt(index, (int) p); } else if (p instanceof Double) {
} else if (p instanceof String) { ps.setDouble(index, (double) p);
ps.setString(index, p.toString()); } else if (p instanceof Boolean) {
} else if (p instanceof Double) { ps.setBoolean(index, (boolean) p);
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); * Obtiene el valor de una columna de una tabla y lo guarda en el objeto
} * JSONObject con el tipo de dato que le corresponde.
} *
* @param rs Objeto ResultSet para obtener el valor de una columna de una
/** * tabla
* Obtiene el valor de una columna de una tabla y lo guarda en el objeto * @param rsmd Objeto ResultSetMetaData nos permite obtener el nombre y tipo
* JSONObject con el tipo de dato que le corresponde. * de columna
* * @param columnIndex Posicion de la columna en la sentencia sql
* @param rs Objeto ResultSet para obtener el valor de una columna de una * @param obj Representa a un registro de la base de datos
* tabla * @throws SQLException
* @param rsmd Objeto ResultSetMetaData nos permite obtener el nombre y tipo */
* de columna private void castColumn(ResultSet rs, ResultSetMetaData rsmd, int columnIndex, JSONObject obj) throws SQLException {
* @param columnIndex Posicion de la columna en la sentencia sql //obtenemos el tipo de dato de la columna de la tabla
* @param obj Representa a un registro de la base de datos int type = rsmd.getColumnType(columnIndex);
* @throws SQLException
*/ //evaluamos el tipo
private void setJSONObject(ResultSet rs, ResultSetMetaData rsmd, int columnIndex, JSONObject obj) throws SQLException { switch (type) {
//obtenemos el tipo de dato de la columna de la tabla case Types.VARCHAR:
int type = rsmd.getColumnType(columnIndex); case Types.CHAR:
obj.put(rsmd.getColumnName(columnIndex), rs.getString(columnIndex));
//evaluamos el tipo break;
switch (type) { case Types.INTEGER:
case Types.VARCHAR: obj.put(rsmd.getColumnName(columnIndex), rs.getInt(columnIndex));
case Types.CHAR: break;
obj.put(rsmd.getColumnName(columnIndex), rs.getString(columnIndex) == null ? JSONObject.NULL : rs.getString(columnIndex)); case Types.BIT:
break; obj.put(rsmd.getColumnName(columnIndex), rs.getBoolean(columnIndex));
case Types.INTEGER: break;
obj.put(rsmd.getColumnName(columnIndex), rs.getInt(columnIndex)); default:
break; obj.put(rsmd.getColumnName(columnIndex), rs.getString(columnIndex));
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) == null ? JSONObject.NULL : rs.getString(columnIndex));
}
}
} }
...@@ -7,65 +7,37 @@ package salidasautomaticas.util; ...@@ -7,65 +7,37 @@ package salidasautomaticas.util;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import org.json.JSONArray;
/** /**
* *
* @author sistem19user * @author sistem19user
*/ */
public class Metodos { public class Metodos {
/** /**
* Devuelve un objeto Date con la fecha de hoy y con la hora que le pasamos * Devuelve un objeto Date con la fecha de hoy y con la hora
* como parametro(en formato hh:mm en 24 horas). * que le pasamos como parametro(en formato hh:mm en 24 horas).
* *
* @param horaEjecucion hora que se va a setear al Date del dia de hoy. * @param horaEjecucion hora que se va a setear al Date del dia de hoy.
* @return * @return
*/ */
public static Date getHoraEjecucion(String horaEjecucion) { public static Date getHoraEjecucion(String horaEjecucion) {
Date date = new Date(System.currentTimeMillis()); Date date = new Date(System.currentTimeMillis());
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.setTime(date); calendar.setTime(date);
String[] splitHoraSalida = horaEjecucion.split(":"); String[] splitHoraSalida = horaEjecucion.split(":");
int hora = Integer.parseInt(splitHoraSalida[0]); int hora = Integer.parseInt(splitHoraSalida[0]);
int minuto = Integer.parseInt(splitHoraSalida[1]); int minuto = Integer.parseInt(splitHoraSalida[1]);
calendar.set(Calendar.HOUR_OF_DAY, hora); calendar.set(Calendar.HOUR_OF_DAY, hora);
calendar.set(Calendar.MINUTE, minuto); calendar.set(Calendar.MINUTE, minuto);
calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.SECOND, 0);
date = calendar.getTime(); date = calendar.getTime();
return date; return date;
} }
public static void main(String[] args) {
JSONArray array = new JSONArray();
array
.put(Integer.class)
.put(String.class)
.put(Boolean.class);
f(Integer.class);
// System.out.println(array);
// ss(array);
// System.out.println(array.get(0));
// System.out.println(array);
}
private static void f(Class c) {
System.out.println(c.getName());
switch (c.getName()) {
case "java.lang.Integer":
System.out.println("entero");
}
}
private static void ss(JSONArray arr) {
System.out.println(arr.get(0));
arr.put(0, 1);
arr.put(1, "hello");
arr.put(2, true);
}
} }
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