/*
* DrakkarKeel - An Enterprise Collaborative Search Platform
*
* The contents of this file are subject under the terms described in the
* DRAKKARKEEL_LICENSE file included in this distribution; you may not use this
* file except in compliance with the License.
*
* 2013-2014 DrakkarKeel Platform.
*/
package drakkar.stern.tracker.persistent;
import drakkar.stern.tracker.persistent.tables.DerbyConnection;
import drakkar.stern.tracker.persistent.tables.PersistentOperations;
import drakkar.stern.tracker.persistent.tables.TableTracker;
import java.sql.Date;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
/**
* Esta clase contiene métodos utilitarios para administrar los datos de la BD
*/
public class DBUtil {
Object[][] values;
Object[] oneValue;
DerbyConnection connection;
/**
* constructor
*
* @param derby
*/
public DBUtil(DerbyConnection derby) {
connection = derby;
}
/**
* Verifica que un valor exista ya en una tabla
*
* @param object valor para verificar
* @param tableName nombre de la tabla
* @param fieldName nombre del campo correspondiente al valor
* @param fieldToReturn campo a devolver
*
* @return
*
* @throws SQLException si ocurre alguna SQLException durante la ejecución de la operación
*/
public boolean alreadyExist(Object object, String tableName, String fieldName, String fieldToReturn) throws SQLException {
String[] fields = new String[1];
fields[0] = fieldToReturn;
TableTracker table = PersistentOperations.load(connection, fields, tableName, fieldName, object);
values = table.getValues();
if (values.length != 0) {
return true;
}
return false;
}
/**
*
* Verifica que exista un valor en una tabla dado varios campos
*
* @param tableName nombre de la tabla
* @param whereFields campos
* @param whereValues valores
* @param fieldToReturn campo a devolver
*
* @return
* @throws SQLException si ocurre alguna SQLException durante la ejecución de la operación
*/
public boolean alreadyExist(String tableName, String[] whereFields, Object[] whereValues, String fieldToReturn) throws SQLException {
String[] fields = new String[1];
fields[0] = fieldToReturn;
TableTracker table = PersistentOperations.load(connection, fields, tableName,whereFields,whereValues);
values = table.getValues();
if (values.length != 0) {
return true;
}
return false;
}
/**
*
* Verifica si en una tabla existen dos campos relacionados dados sus valores
*
* @param tableName nombre de la tabla
* @param fieldName1 campo1
* @param object1 valor1
* @param fieldName2 campo2
* @param object2 valor2
*
* @return
* @throws SQLException si ocurre alguna SQLException durante la ejecución de la operación
*/
public boolean relationExist(String tableName, String fieldName1, Object object1, String fieldName2, Object object2) throws SQLException {
String[] fields = new String[1];
fields[0] = fieldName2;
ArrayList<Object> list = new ArrayList<>();
TableTracker table = PersistentOperations.load(connection, fields, tableName,fieldName1,object1);
values = table.getValues();
if (values.length != 0) {
for (int i = 0; i < values.length; i++) {
list.add(values[i][0]);
}
}
if(!list.isEmpty() && list.contains(object2)){
return true;
}
return false;
}
/**
* Verifica si una tabla está vacía
*
* @param tableName nombre de la tabla
*
* @return
* @throws SQLException si ocurre alguna SQLException durante la ejecución de la operación
*/
public boolean isEmpty(String tableName) throws SQLException {
TableTracker table = PersistentOperations.load(connection, tableName);
if (table.getValues().length == 0) {
return true;
}
return false;
}
/**
* Para obtener java.sql.Date a partir de java.util.Date
*
* @param today fecha actual
*
* @return
*/
public static java.sql.Date getJavaSqlDate(java.util.Date today) {
return new java.sql.Date(today.getTime());
}
/**
* Obtiene la fecha actual
*
* @return
*/
public static Date getCurrentDate(){
java.util.Date today = new java.util.Date();
return new java.sql.Date(today.getTime());
}
/**
* Obtiene la fecha actual
*
* @return
*/
public static Timestamp getCurrentTimeStamp(){
java.util.Date today = new java.util.Date();
return new java.sql.Timestamp(today.getTime());
}
}