From 117d118fa1d0c7d4f3f2e332faa1ab522e2561b5 Mon Sep 17 00:00:00 2001 From: greatim Date: Thu, 10 Apr 2014 19:49:08 +0900 Subject: [PATCH] [Title] bug fix of connection to database [Desc.] [Issue] --- .../database/SqlConnectionManager.java | 2 +- .../dynamicanalyzer/nl/KernelPageLabels.properties | 2 +- .../org/tizen/dynamicanalyzer/sql/SqlManager.java | 8 ++-- .../dynamicanalyzer/ui/kernel/KernelListView.java | 4 +- .../ui/kernel/data/KernelDataMaker.java | 31 +++++++++----- .../widgets/table/DAWindowingTableComposite.java | 50 ++++++++++++++++------ 6 files changed, 66 insertions(+), 31 deletions(-) diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/database/SqlConnectionManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/database/SqlConnectionManager.java index de91aed..b5e4f2d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/database/SqlConnectionManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/database/SqlConnectionManager.java @@ -25,7 +25,7 @@ public class SqlConnectionManager { Class.forName("org.hsqldb.jdbcDriver"); String dbUrl = "jdbc:hsqldb:" + dbFilePath - + ";shutdown=true;hsqldb.default_table_type=cached;hsqldb.large_data=true;hdqldb.log_data=false"; //$NON-NLS-1$ + + ";shutdown=false;hsqldb.default_table_type=cached;hsqldb.large_data=true;hdqldb.log_data=false"; //$NON-NLS-1$ connection = DriverManager.getConnection(dbUrl, "SA", ""); SQLWarning warning = connection.getWarnings(); while (warning != null) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/KernelPageLabels.properties b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/KernelPageLabels.properties index 17fe816..b66c516 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/KernelPageLabels.properties +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/KernelPageLabels.properties @@ -33,7 +33,7 @@ KERNEL_LIST_VIEW_START_PC=Start pc addr KERNEL_LIST_VIEW_END_PC=End pc addr KERNEL_LIST_VIEW_ENTRY=Entry of func. KERNEL_LIST_VIEW_EXIT=Exit of func. -KERNEL_LIST_VIEW_CORE=Core number +KERNEL_LIST_VIEW_CORE=CPU Core KERNEL_LIST_VIEW_FUNCTION=Function name KERNEL_STATISTIC_TITLE=Kernel Statistics diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java index b4adcbd..99ae6e7 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java @@ -127,7 +127,7 @@ public class SqlManager { + path + File.separator + AnalyzerConstants.DATABASE_NAME - + ";shutdown=true;hsqldb.default_table_type=cached;hsqldb.large_data=true;hdqldb.log_data=false"; //$NON-NLS-1$ + + ";shutdown=false;hsqldb.default_table_type=cached;hsqldb.large_data=true;hdqldb.log_data=false"; //$NON-NLS-1$ connection = DriverManager.getConnection(dbUrl, "SA", ""); SQLWarning warning = connection.getWarnings(); while (warning != null) { @@ -185,9 +185,9 @@ public class SqlManager { return; } else { try { - Statement st = connection.createStatement(); - st.execute("SHUTDOWN"); - CommonUtil.tryClose(st); +// Statement st = connection.createStatement(); +// st.execute("SHUTDOWN"); +// CommonUtil.tryClose(st); connection.close(); } catch (SQLException se) { if (!se.getSQLState().equals("XJ015")) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/KernelListView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/KernelListView.java index 4134df2..0c451b2 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/KernelListView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/KernelListView.java @@ -51,7 +51,7 @@ public class KernelListView extends DAViewComposite { KernelPageLabels.KERNEL_LIST_VIEW_END_PC, KernelPageLabels.KERNEL_LIST_VIEW_FUNCTION }; - private int[] columnSizes = { 40, 40, 40, 40, 90, 90, 90, 120, 120, 250 }; + private int[] columnSizes = { 40, 40, 40, 65, 80, 80, 100, 100, 100, 250 }; private int[] columnAlignment = { SWT.RIGHT, SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT }; @@ -95,7 +95,7 @@ public class KernelListView extends DAViewComposite { public void updateView(DAViewData data) { if (data instanceof DASelectionData) { DASelectionData selData = (DASelectionData) data; - + long start = selData.getStartTime(); long end = selData.getEndTime(); Object odata = selData.getData(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/data/KernelDataMaker.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/data/KernelDataMaker.java index 0ccf02e..9b7432a 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/data/KernelDataMaker.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/data/KernelDataMaker.java @@ -37,6 +37,10 @@ import org.tizen.dynamicanalyzer.swap.model.data.LogData; import org.tizen.dynamicanalyzer.swap.model.data.ProfileData; public class KernelDataMaker { + private static final String queryto_withTime = "where %s < %s and %s > %s order by %s"; + private static final String queryto_withTidAndTime = "where %s = %s and %s < %s and %s > %s order by %s"; + private static final String queryto_withTid = "where %s = %s group by %s"; + public static final int START_TYPE_START = 10; public static final int START_TYPE_RESUME = 20; public static final int START_TYPE_RETURNED = 30; @@ -311,9 +315,9 @@ public class KernelDataMaker { } public List> getContextDataFromDB(long start, long end) { - String where = "where " + ContextDataDBTable.STARTTIME + " < " + end - + " and " + ContextDataDBTable.ENDTIME + " > " + start - + " order by " + ContextDataDBTable.STARTTIME; + String where = String.format(queryto_withTime, + ContextDataDBTable.STARTTIME, end, ContextDataDBTable.ENDTIME, + start, ContextDataDBTable.STARTTIME); DBTable table = KernelDataManager.getInstance().getContextDataTable(); @@ -322,13 +326,20 @@ public class KernelDataMaker { public List> getFunctionDataFromDB(long start, long end, int tid) { - String where = "where "; + String where; + if (tid >= 0) { - where = where + FunctionDataDBTable.TID + " = " + tid + " and "; + where = String.format(queryto_withTidAndTime, + FunctionDataDBTable.TID, tid, + FunctionDataDBTable.STARTTIME, end, + FunctionDataDBTable.ENDTIME, start, + FunctionDataDBTable.STARTTIME); + } else { + where = String.format(queryto_withTime, + FunctionDataDBTable.STARTTIME, end, + FunctionDataDBTable.ENDTIME, start, + FunctionDataDBTable.STARTTIME); } - where = where + FunctionDataDBTable.STARTTIME + " < " + end + " and " - + FunctionDataDBTable.ENDTIME + " > " + start + " order by " - + FunctionDataDBTable.STARTTIME; DBTable table = KernelDataManager.getInstance().getFunctionDataTable(); @@ -336,8 +347,8 @@ public class KernelDataMaker { } public List> getFuncnameFromDB(int tid) { - String where = "where " + FunctionDataDBTable.TID + " = " - + tid + " group by " + FunctionDataDBTable.FUNCNAME; + String where = String.format(queryto_withTid, FunctionDataDBTable.TID, + tid, FunctionDataDBTable.FUNCNAME); List selectColumn = new ArrayList(); selectColumn.add(FunctionDataDBTable.FUNCNAME); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DAWindowingTableComposite.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DAWindowingTableComposite.java index 2dd0d3b..592a0bb 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DAWindowingTableComposite.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DAWindowingTableComposite.java @@ -391,13 +391,24 @@ public abstract class DAWindowingTableComposite extends DATableComposite { totalItemCount = getItemCountByPid(); } else { if (totalItemCount == 0) { // open or never trace - if (SqlConnectionManager.isConnected()) { + String tablename = getDBTableName(); + if (tablename != null && !tablename.isEmpty()) { String query = String.format(queryto_GetItemCount, getDBTableName(), getSelectQueryCountOption()); List> result = SqlConnectionManager .executeQuery(query); - if(result != null) - totalItemCount = (Integer) result.get(0).get(0); + if (result != null) { + Object object = result.get(0).get(0); + if (object instanceof Integer) { + totalItemCount = (Integer) object; + } else if (object instanceof Long) { + totalItemCount = ((Long) object).intValue(); + } else { + System.out + .println("[ERR] result of item count query is not expected!!"); + totalItemCount = 0; + } + } } } else { // stop totalItemCount = getItemCountByPid(); @@ -443,6 +454,11 @@ public abstract class DAWindowingTableComposite extends DATableComposite { } private List> getObjectDataFromDB(int itemCount) { + String tableName = getDBTableName(); + if (tableName == null || tableName.isEmpty()) { + return null; + } + int scrollSelection = vScrollbar.getSelection(); if (scrollSelection > itemCount) { // change PID scrollSelection = 0; @@ -462,13 +478,18 @@ public abstract class DAWindowingTableComposite extends DATableComposite { } String query = String.format(queryto_GetLimitedItem, scrollSelection, - selectedEndIndex + 1, columnString.toString(), - getDBTableName(), getSelectQueryOption()); + selectedEndIndex + 1, columnString.toString(), tableName, + getSelectQueryOption()); return SqlConnectionManager.executeQuery(query); } private List getLogDataFromDB(int itemCount) { + String tableName = getDBTableName(); + if (tableName == null || tableName.isEmpty()) { + return null; + } + int scrollSelection = vScrollbar.getSelection(); if (scrollSelection > itemCount) { // change PID scrollSelection = 0; @@ -478,7 +499,7 @@ public abstract class DAWindowingTableComposite extends DATableComposite { selectedEndIndex = itemCount; } List outputList = SqlManager.getInstance().selectTableData( - getDBTableName(), getDBTableColumnNames(), scrollSelection, + tableName, getDBTableColumnNames(), scrollSelection, selectedEndIndex + 1, getSelectQueryOption()); return outputList; } @@ -527,13 +548,16 @@ public abstract class DAWindowingTableComposite extends DATableComposite { } public void setSelectionByTime(long startTime, long endTime) { - selectionStartTime = startTime; - selectionEndTime = endTime; - - int selectionIndex = SqlManager.getInstance().getSelectionIndex( - getDBTableName(), getTimeColumnName(), selectionStartTime, - getSelectQueryCountOption()); - vScrollbar.setSelection(selectionIndex - 1); + String tableName = getDBTableName(); + if (tableName != null && !tableName.isEmpty()) { + selectionStartTime = startTime; + selectionEndTime = endTime; + + int selectionIndex = SqlManager.getInstance().getSelectionIndex( + tableName, getTimeColumnName(), selectionStartTime, + getSelectQueryCountOption()); + vScrollbar.setSelection(selectionIndex - 1); + } } public void setDataType(boolean isLogData, int timeColumnIndex) { -- 2.7.4