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
af43c1b4
Commit
af43c1b4
authored
Aug 28, 2018
by
Billy Larru
1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
modificando DAOHelper
parent
f6b7360a
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
195 additions
and
192 deletions
+195
-192
SalidasMysqlDAO.java
src/salidasautomaticas/mysqldao/SalidasMysqlDAO.java
+4
-4
DAOHelper.java
src/salidasautomaticas/util/DAOHelper.java
+191
-188
No files found.
src/salidasautomaticas/mysqldao/SalidasMysqlDAO.java
View file @
af43c1b4
...
...
@@ -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
++;
...
...
src/salidasautomaticas/util/
EstandarDAO
.java
→
src/salidasautomaticas/util/
DAOHelper
.java
View file @
af43c1b4
/*
* 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,187 +15,195 @@ import org.json.JSONObject;
*
* @author sistem19user
*/
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
));
}
}
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
));
}
}
}
Billy Larru
@blarru
mentioned in commit
e614664f
Sep 21, 2018
mentioned in commit
e614664f
mentioned in commit e614664f57dc184cf5f1c6560a75645dca1daea8
Toggle commit list
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