/*
* 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.tables;
import java.util.*;
/**
* Clase que representa una fila de una tabla de la BD
*/
public class RowTable implements java.io.Serializable {
protected ArrayList values;
protected ArrayList<String> columnNames;
/**
*
*/
public RowTable() {
values = new ArrayList();
columnNames = new ArrayList<>();
}
/**
* Constructor de copia
* @param row
*/
public RowTable(RowTable row) {
this(row.getColumnNames().toArray(), row.getValues().toArray());
}
/**
*
* @param columnNames
* @param values
*/
public RowTable(Object[] columnNames, Object[] values) {
this();
for (int i = 0; i < columnNames.length; i++)
setValue(columnNames[i].toString(),values[i]);
}
/**
*
* @param columnIndex
* @param value
* @return
*/
public boolean setValue(int columnIndex, Object value){
if (columnIndex < 0 || columnIndex >= values.size()) return false;
if (value == null) value = new Object();
values.set(columnIndex,value);
return true;
}
/**
* Cambiar el tipo de dato de una columna
* @param columnName nombre de la columna
* @param value nuevo valor
* @return true si se puede modificar el valor o false en caso contrario
*/
public boolean setValue(String columnName, Object value){
if (value == null) value = new Object();
try{
if(columnNames.contains(columnName))
values.set(columnNames.indexOf(columnName),value);
else {
columnNames.add(columnName);
values.add(value);
}
} catch(java.lang.IndexOutOfBoundsException e){
return false;
}
return true;
}
/**
*
* @param columnNames
* @param values
* @return
*/
public boolean setValues(ArrayList<String> columnNames, ArrayList values){
try{
if(columnNames.size() == values.size()){
values.clear();
columnNames.clear();
for (int i=0; i<values.size(); i++)
this.setValue(columnNames.get(i),values.get(i));
}
} catch(java.lang.NullPointerException e){
return false;
}
return true;
}
/**
*
* @return
*/
public ArrayList getValues(){
return values;
}
/**
*
* @param index
* @return
*/
public Object getValue(int index){
return (index>-1 && index<values.size())?values.get(index):null;
}
/**
*
* @param columnName
* @return
*/
public Object getValue(String columnName){
return (columnNames.contains(columnName))?this.getValue(columnNames.indexOf(columnName)):null;
}
/**
*
* @param index
* @return
*/
public boolean remove(int index){
if (index>-1 && index<values.size() && index<columnNames.size()){
values.remove(index);
columnNames.remove(index);
return true;
}
return false;
}
/**
*
* @param columnName
* @return
*/
public boolean remove(String columnName){
if (columnNames.contains(columnName)){
if (columnNames.indexOf(columnName)<values.size()) values.remove(columnNames.indexOf(columnName));
columnNames.remove(columnName);
return true;
}
return false;
}
/**
*
* @return
*/
public int size(){
return values.size();
}
/**
*
*/
public void clear(){
values.clear();
columnNames.clear();
}
/**
*
* @param index
* @return
*/
public String getColumnName(int index){
return (index>-1 && index<columnNames.size())?columnNames.get(index):"";
}
/**
*
* @return
*/
public ArrayList<String> getColumnNames(){
return columnNames;
}
/**
*
* @param columnName
* @return
*/
public boolean contains(String columnName){
return columnNames.contains(columnName);
}
/**
*
* @return true si el ArrayList values esta vacio o false en caso contrario
*/
public boolean isEmpty(){
return (values != null)?values.isEmpty():true;
}
@Override
public String toString(){
StringBuilder result = new StringBuilder(80);
try{
for (int i = 0; i<values.size(); i++)
result.append("[".concat(columnNames.get(i))).append(":".concat(values.get(i).toString())).append("]");
} catch(java.lang.IndexOutOfBoundsException e){
return "[]";
}
String toString = result.toString();
return (toString != "")?toString:"[]";
}
@Override
public boolean equals(Object anObject){
if (anObject == null || values == null) return false;
if (values.isEmpty()) return false;
String id = anObject.toString();
return id == values.get(0).toString();
}
}