Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
SalidasAutomaticas
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Billy Larru
SalidasAutomaticas
Commits
e614664f
Commit
e614664f
authored
Sep 21, 2018
by
Billy Larru
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "modificando DAOHelper"
This reverts commit
af43c1b4
.
parent
54f2e783
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
241 additions
and
283 deletions
+241
-283
Main.java
src/salidasautomaticas/main/Main.java
+22
-33
SalidasMysqlDAO.java
src/salidasautomaticas/mysqldao/SalidasMysqlDAO.java
+4
-4
EstandarDAO.java
src/salidasautomaticas/util/EstandarDAO.java
+188
-191
Metodos.java
src/salidasautomaticas/util/Metodos.java
+27
-55
No files found.
src/salidasautomaticas/main/Main.java
View file @
e614664f
...
...
@@ -17,38 +17,27 @@ import salidasautomaticas.util.Metodos;
public
class
Main
{
private
static
final
Logger
log
=
LogManager
.
getLogger
(
Main
.
class
);
public
static
void
main
(
String
[]
args
)
{
// setLogLevel(Level.TRACE);//DESARROLLO
//// setLogLevel(Level.INFO);//PRODUCCION
// log.info("Inicializando programa [Salidas Automaticas]...");
//
// Date horaInicio = Metodos.getHoraEjecucion("11:30");
// int periodo = 86400000;//El codigo se ejecutará cada 24h, 86400000 representa 24h en milisegundos
//
// TimerTask task = new ProgramarSalidasTask();
// Timer timer = new Timer();
// timer.schedule(task, horaInicio, periodo);
int
i
=
1
;
for
(
int
j
=
0
;
j
<
10
;
j
++)
{
sss
(
i
++);
}
}
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
);
}
private
static
final
Logger
log
=
LogManager
.
getLogger
(
Main
.
class
);
public
static
void
main
(
String
[]
args
)
{
setLogLevel
(
Level
.
TRACE
);
//DESARROLLO
// setLogLevel(Level.INFO);//PRODUCCION
log
.
info
(
"Inicializando programa [Salidas Automaticas]..."
);
Date
horaInicio
=
Metodos
.
getHoraEjecucion
(
"11:30"
);
int
periodo
=
86400000
;
//El codigo se ejecutará cada 24h, 86400000 representa 24h en milisegundos
TimerTask
task
=
new
ProgramarSalidasTask
();
Timer
timer
=
new
Timer
();
timer
.
schedule
(
task
,
horaInicio
,
periodo
);
}
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
);
}
}
src/salidasautomaticas/mysqldao/SalidasMysqlDAO.java
View file @
e614664f
...
...
@@ -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.
DAOHelper
;
import
salidasautomaticas.util.
EstandarDAO
;
/**
*
...
...
@@ -67,7 +67,7 @@ public class SalidasMysqlDAO implements SalidasDAO {
JSONArray
parametrosQuery
=
new
JSONArray
();
parametrosQuery
.
put
(
getFechaHoy
());
jsonArray
=
DAOHelper
.
getInstance
().
consultar
(
cn
,
query
,
parametrosQuery
);
jsonArray
=
EstandarDAO
.
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
=
DAOHelper
.
getInstance
().
consultar
(
cn
,
query
,
parametros
);
JSONArray
jsonArray
=
EstandarDAO
.
getInstance
().
consultar
(
cn
,
query
,
parametros
);
return
jsonArray
;
}
...
...
@@ -196,7 +196,7 @@ public class SalidasMysqlDAO implements SalidasDAO {
.
put
(
aleatorioMin
)
.
put
(
asistencia
.
getString
(
"codasis"
));
resultado
=
DAOHelper
.
getInstance
().
ejecutar
(
cn
,
queryPersonal
,
parametros
);
resultado
=
EstandarDAO
.
getInstance
().
ejecutar
(
cn
,
queryPersonal
,
parametros
);
updateCounts
[
i
]
=
resultado
.
getInt
(
"msg"
);
i
++;
...
...
src/salidasautomaticas/util/
DAOHelper
.java
→
src/salidasautomaticas/util/
EstandarDAO
.java
View file @
e614664f
/*
* 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
;
...
...
@@ -15,195 +20,187 @@ import org.json.JSONObject;
*
* @author sistem19user
*/
public
class
DAOHelper
{
private
static
final
Logger
log
=
LogManager
.
getLogger
(
DAOHelper
.
class
);
private
static
DAOHelper
instance
;
private
DAOHelper
()
{
}
public
static
DAOHelper
getInstance
()
{
if
(
instance
==
null
)
{
instance
=
new
DAOHelper
();
}
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
* 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
* @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
{
ps
=
cn
.
prepareStatement
(
query
);
//validamos si existen parametros
if
(
parametros
!=
null
&&
parametros
.
length
>
0
)
{
JSONArray
params
=
parametros
[
0
];
int
index
=
1
;
//Recorremos la lista de parametros y lo seteamos en el preparedstatement
for
(
Object
parametro
:
params
)
{
setPreparedStatement
(
ps
,
index
++,
parametro
);
}
}
log
.
trace
(
"query [SELECT] ="
+
ps
);
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
++)
{
setJSONObject
(
rs
,
rm
,
i
,
obj
);
}
jsonArray
.
put
(
obj
);
}
}
catch
(
Exception
ex
)
{
log
.
error
(
"error"
,
ex
);
throw
ex
;
}
return
jsonArray
;
}
/**
* 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.
*
* 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
* @param parametros parametros que vamos a pasar al query, *es opcional
* @return Devuelve la cantidad de filas afectadas por el query en un
* JSONObject.
* @throws Exception
*/
public
JSONObject
ejecutar
(
Connection
cn
,
String
query
,
JSONArray
...
parametros
)
throws
Exception
{
JSONObject
obj
=
new
JSONObject
();
try
{
PreparedStatement
ps
=
cn
.
prepareStatement
(
query
);
if
(
parametros
!=
null
&&
parametros
.
length
>
0
)
{
JSONArray
params
=
parametros
[
0
];
int
index
=
1
;
for
(
Object
parametro
:
params
)
{
setPreparedStatement
(
ps
,
index
++,
parametro
);
}
}
log
.
trace
(
"query [ExecuteUpdate]= "
+
ps
);
int
filas
=
ps
.
executeUpdate
();
obj
.
put
(
"msg"
,
filas
);
}
catch
(
Exception
ex
)
{
log
.
error
(
"error"
,
ex
);
throw
ex
;
}
return
obj
;
}
/**
* Setea en el prepared statement el valor del parametro segun su tipo de
* dato.
*
* @param ps representa el objeto PreparedStatement
* @param index indica la posicion del parametro en la consulta sql
* @param p parametro de la consulta sql
* @throws SQLException
*/
private
void
setPreparedStatement
(
PreparedStatement
ps
,
int
index
,
Object
p
)
throws
SQLException
{
if
(
p
instanceof
Integer
)
{
ps
.
setInt
(
index
,
(
int
)
p
);
}
else
if
(
p
instanceof
String
)
{
ps
.
setString
(
index
,
p
.
toString
());
}
else
if
(
p
instanceof
Double
)
{
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
* @param rsmd Objeto ResultSetMetaData nos permite obtener el nombre y tipo
* de columna
* @param columnIndex Posicion de la columna en la sentencia sql
* @param obj Representa a un registro de la base de datos
* @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
);
//evaluamos el tipo
switch
(
type
)
{
case
Types
.
VARCHAR
:
case
Types
.
CHAR
:
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
));
break
;
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
));
}
}
public
class
EstandarDAO
{
private
static
final
Logger
log
=
LogManager
.
getLogger
(
EstandarDAO
.
class
);
private
static
EstandarDAO
instance
;
private
EstandarDAO
()
{
}
public
static
EstandarDAO
getInstance
()
{
if
(
instance
==
null
)
{
instance
=
new
EstandarDAO
();
}
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
*
*
* @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
* @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
();
try
{
if
(
cn
==
null
)
{
jsonArray
=
null
;
}
else
{
PreparedStatement
ps
=
cn
.
prepareStatement
(
query
);
//validamos si existen parametros
if
(
parametros
!=
null
&&
parametros
.
length
>
0
)
{
JSONArray
params
=
parametros
[
0
];
int
cont
=
1
;
//Recorremos la lista de parametros y lo seteamos en el preparedstatement
for
(
Object
parametro
:
params
)
{
setPreparedStatement
(
ps
,
cont
,
parametro
);
cont
++;
}
}
log
.
trace
(
"query [SELECT] ="
+
ps
);
ResultSet
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
);
}
jsonArray
.
put
(
obj
);
}
// rs.close();
// cn.close();
}
}
catch
(
Exception
ex
)
{
log
.
error
(
"error"
,
ex
);
throw
ex
;
}
return
jsonArray
;
}
/**
* 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.
*
* @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 la cantidad de filas afectadas por el query en un
* JSONObject.
* @throws Exception
*/
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
;
for
(
Object
parametro
:
params
)
{
setPreparedStatement
(
ps
,
cont
,
parametro
);
cont
++;
}
}
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
;
}
return
obj
;
}
/**
* Setea en el prepared statement el valor del parametro segun su tipo de
* dato.
*
* @param ps representa el objeto PreparedStatement
* @param index indica la posicion del parametro en la consulta sql
* @param p parametro de la consulta sql
* @throws SQLException
*/
private
void
setPreparedStatement
(
PreparedStatement
ps
,
int
index
,
Object
p
)
throws
SQLException
{
if
(
p
instanceof
Integer
)
{
ps
.
setInt
(
index
,
(
int
)
p
);
}
else
if
(
p
instanceof
String
)
{
ps
.
setString
(
index
,
p
.
toString
());
}
else
if
(
p
instanceof
Double
)
{
ps
.
setDouble
(
index
,
(
double
)
p
);
}
else
if
(
p
instanceof
Boolean
)
{
ps
.
setBoolean
(
index
,
(
boolean
)
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
* @param rsmd Objeto ResultSetMetaData nos permite obtener el nombre y tipo
* de columna
* @param columnIndex Posicion de la columna en la sentencia sql
* @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
{
//obtenemos el tipo de dato de la columna de la tabla
int
type
=
rsmd
.
getColumnType
(
columnIndex
);
//evaluamos el tipo
switch
(
type
)
{
case
Types
.
VARCHAR
:
case
Types
.
CHAR
:
obj
.
put
(
rsmd
.
getColumnName
(
columnIndex
),
rs
.
getString
(
columnIndex
));
break
;
case
Types
.
INTEGER
:
obj
.
put
(
rsmd
.
getColumnName
(
columnIndex
),
rs
.
getInt
(
columnIndex
));
break
;
case
Types
.
BIT
:
obj
.
put
(
rsmd
.
getColumnName
(
columnIndex
),
rs
.
getBoolean
(
columnIndex
));
break
;
default
:
obj
.
put
(
rsmd
.
getColumnName
(
columnIndex
),
rs
.
getString
(
columnIndex
));
}
}
}
src/salidasautomaticas/util/Metodos.java
View file @
e614664f
...
...
@@ -7,65 +7,37 @@ package salidasautomaticas.util;
import
java.util.Calendar
;
import
java.util.Date
;
import
org.json.JSONArray
;
/**
*
* @author sistem19user
*/
public
class
Metodos
{
/**
* Devuelve un objeto Date con la fecha de hoy y con la hora 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.
* @return
*/
public
static
Date
getHoraEjecucion
(
String
horaEjecucion
)
{
Date
date
=
new
Date
(
System
.
currentTimeMillis
());
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
String
[]
splitHoraSalida
=
horaEjecucion
.
split
(
":"
);
int
hora
=
Integer
.
parseInt
(
splitHoraSalida
[
0
]);
int
minuto
=
Integer
.
parseInt
(
splitHoraSalida
[
1
]);
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
hora
);
calendar
.
set
(
Calendar
.
MINUTE
,
minuto
);
calendar
.
set
(
Calendar
.
SECOND
,
0
);
date
=
calendar
.
getTime
();
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
);
}
/**
* Devuelve un objeto Date con la fecha de hoy y con la hora
* 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.
* @return
*/
public
static
Date
getHoraEjecucion
(
String
horaEjecucion
)
{
Date
date
=
new
Date
(
System
.
currentTimeMillis
());
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
String
[]
splitHoraSalida
=
horaEjecucion
.
split
(
":"
);
int
hora
=
Integer
.
parseInt
(
splitHoraSalida
[
0
]);
int
minuto
=
Integer
.
parseInt
(
splitHoraSalida
[
1
]);
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
hora
);
calendar
.
set
(
Calendar
.
MINUTE
,
minuto
);
calendar
.
set
(
Calendar
.
SECOND
,
0
);
date
=
calendar
.
getTime
();
return
date
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment