Hola, vamos a hacer un análisis de este algoritmo que a simple vista no entiendo nada xD
Esta línea obtiene los campos ID1, ID2 de la tabla TB_CIV_TEMP cuando el ID1 es desconocido, es decir luego se seteará el parámetro de condición.
String sql
= "SELECT ID1, ID2 FROM TB_CIV_TMP WHERE ID1 = ?";
Luego hace uso de un método del cual no podemos ver nada pero al parecer devuelve fechas en milisegundos (para poder compararse luego). Este método recibe 3 parámetros: La query, un array String y un array Object.
Dado que no puedo ver el código de éste método, creo que no hace falta decirte que no entiendo ni un carajo para qué sirve xD
List
<Map
> obj
= findMapBySQLParam
(sql,
new String[] { "id1",
"id2" },
new Object[] { "202cb962ac59075b964b07152d234b70" });
Ahora, podemos deducir que el método
findMapBySQLParam() concatenerá algún valor (alguna fecha en milisegundos quizás) con la query y hará la consulta. Por otro lado, si no se puede realizar la consulta o no hay coincidencias con la consulta, la lista puede ser nula (si no se ha podido realizar la consulta) o vacía (si no hay coincidencias). Si ésto llegara a pasar, devuelve false y termina el método.
Crea un objeto Object y le asigna el valor de la llave "id2" del primer Map de la lista recibida.
// obj.get(0) -> obtiene el primer elemento de la lista. En este caso el primer Map
// .get("id2") -> obtiene el valor asociado a la llave "id2"
Si el valor es nulo, es decir no hay una llave con ese identificador lo crea:
// el primer parametro debe ser una constante. 5 equivale a Calendar.DAY
// el segundo parametro le suma 80 al tipo de dato de la constante. Ej.,
// si es Calendar.DAY y hoy estamos 20, adelanta la fecha en 80 dias.
call.add(5,80);
// Obtiene la fecha avanzada en milisegundos
Long var1
= Long.
valueOf(cal.
getTime().
getTime()); // actualiza el campo ID2 con la fecha avanzada en milisegundos (al parecer)
sql = "UPDATE TB_CIV_TMP SET ID2 = ?";
executeUpdateSQLParam
(sql,
new Object[] { var1
});return true; // devuelve true y termina el metodo
En caso el valor no sea nulo, es decir, si el primer Map de la lista si tiene un valor asociado a la llave "id2", obtiene el "id2" en milisegundos (al parecer es una fecha) y la fecha actual también en milisegundos. Luego los compara: Si la fecha en milisegundos de hoy es mayor que id2 en milisegundos, se elimina el usuario de la tabla.
// Fecha ID2 (avanzada) en milisegundos en la base de datos
// Fecha actual en milisegundos
Long var2
= Long.
valueOf(cal.
getTime().
getTime()); // si la actual es mayor que la avanzada: FIN DE LICENCIA!
if (var2.longValue() > var1.longValue()) {
sql = "DELETE FROM TB_CIV_TMP"; // elimina al user de la DB
executeUpdateSQL(sql); // ejecuta la sentencia sql
return false; // fin del metodo y devuelve false
}
De lo anterior podemos resumir que:Hace una consulta a la base de datos para obtener los campos ID1 e ID2 que al parecer son un fechas, de acuerdo a un valor para ID1.
Calculamos la fecha en milisegundos que está en la base de datos (id2) con la fecha en milisegundos actual. Si la actual es mayor, se elimina el usuario de la base de datos.
Si ID2 no tiene un campo establecido en la base de datos, se obtiene la fecha 80 días en adelante en milisegundos y se guarda en la base de datos.
Conclusión:Al parecer éste algoritmo trata sobre verificación de licencias de usuario de algún software.
PD: Creo que no es necesario que te diga dónde tienes que manejar las fechas (ya lo he explicado en el análisis). Salu2.