*/
package org.tizen.dynamicanalyzer.database;
-import java.sql.Array;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
private static BlockingQueue<Connection> queryConnections = null;
private static int realUpdateConnCount = 0;
private static int realQueryConnCount = 0;
- private static Connection conn = null;
+
// DATABASE state
private enum State {
- NOT_CONNECTED,
- CONNECTED,
- TO_BE_CLOSED
+ NOT_CONNECTED, CONNECTED, TO_BE_CLOSED
}
private static State state = State.NOT_CONNECTED;
public static boolean establishConnection(String dbFilePath) {
boolean result = true;
+ Connection conn = null;
try {
synchronized (SqlConnectionManager.class) {
if (updateConnections == null && queryConnections == null) {
realQueryConnCount = 0;
Class.forName("org.hsqldb.jdbcDriver");
- String dbUrl = "jdbc:hsqldb:"
- + dbFilePath
+ String dbUrl = "jdbc:hsqldb:" + dbFilePath
+ ";shutdown=false;hsqldb.default_table_type=cached"
+ ";hsqldb.tx=mvcc;hsqldb.large_data=true;hdqldb.log_data=false"; //$NON-NLS-1$
SQLWarning warning = conn.getWarnings();
while (warning != null) {
- Logger.debug("[DB][" + i + "] Message: "
- + warning.getMessage());
- Logger.debug("[DB][" + i + "] SQL state: "
- + warning.getSQLState());
- Logger.debug("[DB][" + i + "] Vendor code: "
- + warning.getErrorCode());
+ Logger.debug("[DB][" + i + "] Message: " + warning.getMessage());
+ Logger.debug("[DB][" + i + "] SQL state: " + warning.getSQLState());
+ Logger.debug("[DB][" + i + "] Vendor code: " + warning.getErrorCode());
warning = warning.getNextWarning();
}
}
SQLWarning warning = conn.getWarnings();
while (warning != null) {
- Logger.debug("[DB][" + i + "] Message: "
- + warning.getMessage());
- Logger.debug("[DB][" + i + "] SQL state: "
- + warning.getSQLState());
- Logger.debug("[DB][" + i + "] Vendor code: "
- + warning.getErrorCode());
+ Logger.debug("[DB][" + i + "] Message: " + warning.getMessage());
+ Logger.debug("[DB][" + i + "] SQL state: " + warning.getSQLState());
+ Logger.debug("[DB][" + i + "] Vendor code: " + warning.getErrorCode());
warning = warning.getNextWarning();
}
}
}
}
- public static void executePreparedWithType(String query,
- List<List<Object>> data, List<String> columnType) {
+ public static void executePreparedWithType(String query, List<List<Object>> data,
+ List<String> columnType) {
Connection conn = null;
PreparedStatement prep = null;
if (columnType.get(i).equals(DBConstants.TEXT)) {
String colstr = (String) col;
if (colstr.length() > DBConstants.TEXT_LEN)
- colstr = colstr.substring(0,
- DBConstants.TEXT_LEN);
+ colstr = colstr.substring(0, DBConstants.TEXT_LEN);
prep.setString(i + 1, colstr);
- } else if (columnType.get(i).equals(
- DBConstants.BIG_TEXT)) {
+ } else if (columnType.get(i).equals(DBConstants.BIG_TEXT)) {
String colstr = (String) col;
if (colstr.length() > DBConstants.BIG_TEXT_LEN)
- colstr = colstr.substring(0,
- DBConstants.BIG_TEXT_LEN);
+ colstr = colstr.substring(0, DBConstants.BIG_TEXT_LEN);
prep.setString(i + 1, colstr);
- } else if (columnType.get(i).equals(
- DBConstants.BIGBIG_TEXT)) {
+ } else if (columnType.get(i).equals(DBConstants.BIGBIG_TEXT)) {
String colstr = (String) col;
if (colstr.length() > DBConstants.BIGBIG_TEXT_LEN)
- colstr = colstr.substring(0,
- DBConstants.BIGBIG_TEXT_LEN);
+ colstr = colstr.substring(0, DBConstants.BIGBIG_TEXT_LEN);
prep.setString(i + 1, colstr);
- } else if (columnType.get(i).equals(
- DBConstants.INTEGER)) {
+ } else if (columnType.get(i).equals(DBConstants.INTEGER)) {
if (col == null) {
Logger.error("Integer column data is null !!");
isPrepared = false;
} else {
prep.setInt(i + 1, (Integer) col);
}
- } else if (columnType.get(i).equals(
- DBConstants.LONG)) {
+ } else if (columnType.get(i).equals(DBConstants.LONG)) {
if (col == null) {
Logger.error("Long column data is null !!");
isPrepared = false;
} else {
prep.setLong(i + 1, (Long) col);
}
- } else if (columnType.get(i).equals(
- DBConstants.FLOAT)) {
+ } else if (columnType.get(i).equals(DBConstants.FLOAT)) {
if (col == null) {
- Logger.error("[ERR] FLOAT column data is null !!");
+ Logger.error("FLOAT column data is null !!");
isPrepared = false;
break;
} else {
// to get preparedStatement of given query.
// this change improve the performance of preparing of query statement.
// (no need to check the type of each column)
- public static void executePreparedWithInterface(String query,
- List<List<Object>> data, IPreparedStatement ip) {
+ public static void executePreparedWithInterface(String query, List<List<Object>> data,
+ IPreparedStatement ip) {
Connection conn = null;
PreparedStatement prep = null;
}
}
- public static List<List<Object>> executeQuery(String query) {
+ public static ResultSet executeQueryRS(String query) {
Connection conn = null;
Statement sm = null;
ResultSet rs = null;
- List<List<Object>> result = null;
try {
conn = getQueryConnection();
if (conn != null) {
sm = conn.createStatement();
rs = sm.executeQuery(query);
- if (rs != null) {
- result = new ArrayList<List<Object>>();
- ResultSetMetaData rsMetaData = rs.getMetaData();
- int columnCount = rsMetaData.getColumnCount();
- while (rs.next()) {
+ }
+ } catch (SQLSyntaxErrorException e) {
+ String message = e.getMessage();
+ String state = e.getSQLState();
+ Logger.warning(message + " : state(" + state + ")");
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } finally {
+ if (rs == null) {
+ CommonUtil.tryClose(sm);
+ if (conn != null)
+ putQueryConnection(conn);
+ }
+ }
+
+ return rs;
+ }
+
+ public static void releaseResultSet(ResultSet rs) {
+ Connection conn = null;
+ Statement sm = null;
+
+ if (rs != null) {
+ try {
+ sm = rs.getStatement();
+ if (sm != null) {
+ conn = sm.getConnection();
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } finally {
+ CommonUtil.tryClose(rs, sm);
+ if (conn != null)
+ putQueryConnection(conn);
+ }
+ }
+ }
+
+ public static List<List<Object>> executeQuery(String query) {
+ ResultSet rs = null;
+ List<List<Object>> result = null;
+
+ rs = executeQueryRS(query);
+ if (rs != null) {
+ result = convertResultSet(rs);
+ releaseResultSet(rs);
+ }
+
+ return result;
+ }
+
+ @SuppressWarnings("unchecked")
+ private static <T> List<Object> addArray(int index, ResultSet rs, T type) {
+ List<Object> returnData = new ArrayList<Object>();
+ try {
+ if (null == rs.getArray(index)) {
+ returnData.add(null);
+ } else {
+ Object[] objectArray = (Object[]) rs.getArray(index).getArray();
+ for (int j = 0; j < objectArray.length; j++) {
+ returnData.add((T) objectArray[j]);
+ }
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return returnData;
+ }
+
+ private static List<List<Object>> convertResultSet(ResultSet rs) {
+ List<List<Object>> result = null;
+
+ if (rs != null) {
+ try {
+ result = new ArrayList<List<Object>>();
+ ResultSetMetaData rsMetaData = rs.getMetaData();
+ int columnCount = rsMetaData.getColumnCount();
+ while (rs.next()) {
+ try {
List<Object> rowData = new ArrayList<Object>();
// ResultSet index starts from 1
// Interger.valueOf(int) is faster than new Integer(int)
DBConstants.DBTYPE_INT1)) {
rowData.add(Byte.valueOf(rs.getByte(i)));
} else {
- Logger.error("undefined type : "
- + rsMetaData.getColumnTypeName(i));
+ Logger.error("undefined type : " + rsMetaData.getColumnTypeName(i));
}
}
result.add(rowData);
+ } catch (SQLException e) {
+ e.printStackTrace();
}
}
+ } catch (SQLException e) {
+ e.printStackTrace();
}
- } catch (SQLSyntaxErrorException e) {
- String message = e.getMessage();
- String state = e.getSQLState();
- Logger.warning(message + " : state(" + state + ")");
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- CommonUtil.tryClose(sm);
- if (conn != null)
- putQueryConnection(conn);
}
return result;
}
-
- @SuppressWarnings("unchecked")
- private static <T> List<Object> addArray(int index, ResultSet rs, T type) {
- List<Object> returnData = new ArrayList<Object>();
- try {
- if (null == rs.getArray(index)) {
- returnData.add(null);
- } else {
- Object[] objectArray = (Object[]) rs.getArray(index).getArray();
- for (int j = 0; j < objectArray.length; j++) {
- returnData.add((T) objectArray[j]);
- }
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return returnData;
- }
-
- public static void setArrayToPreparedStatement(int index, String type, PreparedStatement prep,
- List<Object> rowData) {
- try {
- if (null == rowData.get(index)) {
- prep.setArray(index + 1, null);
- } else {
- List<?> objectArray = (List<?>) (rowData.get(index));
- Array sqlArray = conn.createArrayOf(type, objectArray.toArray());
- prep.setArray(index + 1, sqlArray);
- sqlArray.free();
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
}
import org.tizen.dynamicanalyzer.database.DBColumn;
import org.tizen.dynamicanalyzer.database.DBConstants;
import org.tizen.dynamicanalyzer.database.DBTable;
-import org.tizen.dynamicanalyzer.database.SqlConnectionManager;
public class SystemDataDBTable extends DBTable {
private static final String TABLENAME = "TIMELINE_SYSTEM_DATA";
public static enum COLUMN {
- TIME,
+ TIME,
CPU_LOAD_TOTAL,
PROCESS_COUNT_OTHER,
PROCESS_COUNT_TARGET,
prep.setLong(index++, (Long) (rowData.get(COLUMN.DISK_IO_READ_OP_COUNT.ordinal())));
prep.setLong(index++, (Long) (rowData.get(COLUMN.DISK_IO_READ_BYTE_SIZE.ordinal())));
prep.setLong(index++, (Long) (rowData.get(COLUMN.DISK_IO_WRITE_OP_COUNT.ordinal())));
- prep.setLong(index++, (Long) (rowData.get(COLUMN.DISK_IO_WRITE_BYTE_SIZE.ordinal())));
+ prep.setLong(index++,
+ (Long) (rowData.get(COLUMN.DISK_IO_WRITE_BYTE_SIZE.ordinal())));
prep.setLong(index++, (Long) (rowData.get(COLUMN.ENERGY_USAGE.ordinal())));
- SqlConnectionManager.setArrayToPreparedStatement(COLUMN.ENERGY_USAGE_DEVICE.ordinal(),
- DBConstants.LONG, prep, rowData);
- SqlConnectionManager.setArrayToPreparedStatement(COLUMN.ENERGY_USAGE_APP.ordinal(),
- DBConstants.LONG, prep, rowData);
- SqlConnectionManager.setArrayToPreparedStatement(COLUMN.CPU_LOAD.ordinal(),
- DBConstants.FLOAT, prep, rowData);
- SqlConnectionManager.setArrayToPreparedStatement(COLUMN.CPU_FREQUENCY.ordinal(),
- DBConstants.FLOAT, prep, rowData);
- SqlConnectionManager.setArrayToPreparedStatement(COLUMN.PROCESS_PID_OTHER.ordinal(),
- DBConstants.INTEGER, prep, rowData);
- SqlConnectionManager.setArrayToPreparedStatement(COLUMN.PROCESS_LOAD_OTHER.ordinal(),
- DBConstants.FLOAT, prep, rowData);
- SqlConnectionManager.setArrayToPreparedStatement(COLUMN.DEVICE_STATUS.ordinal(),
+ setArrayToPreparedStatement(COLUMN.ENERGY_USAGE_DEVICE.ordinal(), DBConstants.LONG,
+ prep, rowData);
+ setArrayToPreparedStatement(COLUMN.ENERGY_USAGE_APP.ordinal(), DBConstants.LONG,
+ prep, rowData);
+ setArrayToPreparedStatement(COLUMN.CPU_LOAD.ordinal(), DBConstants.FLOAT, prep,
+ rowData);
+ setArrayToPreparedStatement(COLUMN.CPU_FREQUENCY.ordinal(), DBConstants.FLOAT,
+ prep, rowData);
+ setArrayToPreparedStatement(COLUMN.PROCESS_PID_OTHER.ordinal(),
DBConstants.INTEGER, prep, rowData);
+ setArrayToPreparedStatement(COLUMN.PROCESS_LOAD_OTHER.ordinal(), DBConstants.FLOAT,
+ prep, rowData);
+ setArrayToPreparedStatement(COLUMN.DEVICE_STATUS.ordinal(), DBConstants.INTEGER,
+ prep, rowData);
} catch (SQLException e) {
e.printStackTrace();
isPrepared = false;