package com.my.blog.website.utils.backup.db;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
public class DataTable extends ArrayList<Row> {
/**
*
*/
private static final long serialVersionUID = -3057968190529400383L;
public static DataTable execute(Connection connection, String query)
throws SQLException {
return parse(connection.prepareStatement(query).executeQuery());
}
public static DataTable parse(ResultSet resultSet) throws SQLException {
ResultSetMetaData metaData = resultSet.getMetaData();
DataTable dataTable = new DataTable();
dataTable.columns = new ColumnCollection();
int colCount = metaData.getColumnCount();
for (int i = 1; i <= colCount; i++) {
Column column = new Column();
column.setCatalogName(metaData.getCatalogName(i));
column.setColumnClassName(metaData.getColumnClassName(i));
column.setDisplaySize(metaData.getColumnDisplaySize(i));
column.setLabel(metaData.getColumnLabel(i));
column.setName(metaData.getColumnName(i));
column.setPrecision(metaData.getPrecision(i));
column.setScale(metaData.getScale(i));
column.setSchemaName(metaData.getSchemaName(i));
column.setTableName(metaData.getTableName(i));
column.setType(metaData.getColumnType(i));
column.setTypeName(metaData.getColumnTypeName(i));
dataTable.columns.add(column);
}
while (resultSet.next()) {
Object[] data = new Object[colCount];
for (int i = 1; i <= data.length; i++) {
data[i - 1] = resultSet.getObject(i);
}
dataTable.add(new Row(dataTable, data));
}
resultSet.close();
return dataTable;
}
private ColumnCollection columns;
public ColumnCollection getColumns() {
return columns;
}
@Override
public String toString() {
String s = columns.toString() + "\n";
if (size() == 0) {
s += "Rows is empty\n";
} else {
s += "Rows : {" + String.valueOf(get(0));
for (int i = 1; i < size(); i++) {
s += "\n" + String.valueOf(get(i));
}
s += "}\n";
}
return s;
}
}