From 364324e3506ddad8d2a66c5f40fa9a2ded2159b6 Mon Sep 17 00:00:00 2001 From: "Hyunjong,park" Date: Fri, 20 Dec 2013 14:47:43 +0900 Subject: [PATCH] [Title] improve windowing table [Desc.] refactoring common function [Issue] - --- .../org/tizen/dynamicanalyzer/sql/SqlManager.java | 101 ++++++--------------- .../ui/timeline/calltrace/CallTraceTable.java | 47 +++------- .../widgets/table/DAWindowingTableComposite.java | 53 ++++++++--- 3 files changed, 81 insertions(+), 120 deletions(-) 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 3de8d0a..f05e01c 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java @@ -892,19 +892,18 @@ public class SqlManager { public void saveProfilingData() { List pids = FunctionUsageProfiler.getInstance() .getPidsOfProfileDataMakerMap(); - for(int i = 0; i < pids.size(); i++) - { + for (int i = 0; i < pids.size(); i++) { ProfileDataMaker profiler = FunctionUsageProfiler.getInstance() .getProfileDataMakerByPid(pids.get(i)); HashMap profilingDataMap = profiler .getProfilingDataMap(); List pDataList = new ArrayList(); pDataList.addAll(profilingDataMap.values()); - - DBTableInfo profilingData = DBTableManager.getInstance().getTableInfo( - DBTableManager.TABLE_INDEX_PROFILING_DATA); + + DBTableInfo profilingData = DBTableManager.getInstance() + .getTableInfo(DBTableManager.TABLE_INDEX_PROFILING_DATA); String insertQuery = profilingData.insertQuery(); - + List> insetData = new ArrayList>(); int size = profilingData.getColumnNames().length; int count = pDataList.size(); @@ -928,18 +927,18 @@ public class SqlManager { public void saveProfilingChildData() { List pids = FunctionUsageProfiler.getInstance() .getPidsOfProfileDataMakerMap(); - for(int i = 0; i < pids.size(); i++) - { + for (int i = 0; i < pids.size(); i++) { ProfileDataMaker profiler = FunctionUsageProfiler.getInstance() .getProfileDataMakerByPid(pids.get(i)); HashMap profilingDataMap = profiler .getChildListMap(); List pDataList = new ArrayList(); pDataList.addAll(profilingDataMap.values()); - + DBTableInfo profilingChildData = DBTableManager.getInstance() - .getTableInfo(DBTableManager.TABLE_INDEX_PROFILING_CHILD_DATA); - + .getTableInfo( + DBTableManager.TABLE_INDEX_PROFILING_CHILD_DATA); + List> insetData = new ArrayList>(); int count = pDataList.size(); for (int j = 0; j < count; j++) { @@ -1498,11 +1497,25 @@ public class SqlManager { return dbInfo; } - public synchronized List selectTableData(int logId, int from, - int to, String option) { - String tableName = LogDataFactory.getLogFormatById(logId).getName(); - List tableNames = LogDataFactory.getLogFormatById(logId) - .getDBColumnNames(); +// public synchronized List selectTableData(int logId, int from, +// int to, String option) { +// String tableName = LogDataFactory.getLogFormatById(logId).getName(); +// List tableNames = LogDataFactory.getLogFormatById(logId) +// .getDBColumnNames(); +// String[] columnName = new String[tableNames.size()]; +// for (int i = 0; i < tableNames.size(); i++) { +// columnName[i] = tableNames.get(i); +// } +// String preQueryOption = " limit " + from + " " + to;//$NON-NLS-1$ //$NON-NLS-2$ +// String postQueryOption = " where " + option;//$NON-NLS-1$ //$NON-NLS-2$ +// +// List dbInfo = newSelectQuery2(null, columnName, tableName, +// preQueryOption, postQueryOption); +// return dbInfo; +// } + + public synchronized List selectTableData(String tableName, + List tableNames, int from, int to, String option) { String[] columnName = new String[tableNames.size()]; for (int i = 0; i < tableNames.size(); i++) { columnName[i] = tableNames.get(i); @@ -1515,62 +1528,6 @@ public class SqlManager { return dbInfo; } - public synchronized List getSelectionInfo(String tableName, - long startTime, String option) { - String query = null; - Statement stat = null; - ResultSet rs = null; - Connection conn = null; - List returnInfo = new ArrayList(); - try { - conn = getConnection(); - if (null == conn) { - return null; - } - semaphoreAcquire(); - if (null == tableName || tableName.length() < 1) { - System.out.println("tableName is null"); - return null; - } - - query = String - .format("select time, rid, seqnumber from %s where time = (select max(time) from %s where time <= %s",//$NON-NLS-1$ - tableName, tableName, Long.toString(startTime) - + ")"); - if (!option.equals(CommonConstants.EMPTY)) { - query += " and " + option;//$NON-NLS-1$ - } - stat = conn.createStatement(); - if (isQueryPrint) { - System.out.println("query : " + query); - } - rs = stat.executeQuery(query); - if (null == rs) { - return null; - } - while (rs.next()) { - returnInfo.add(rs.getInt(1)); - returnInfo.add(rs.getInt(2)); - returnInfo.add(rs.getInt(3)); - return returnInfo; - } - } catch (SQLException e) { - do { - System.out.println("query: " + query); - System.out.println("Message: " + e.getMessage()); - System.out.println("SQL state: " + e.getSQLState()); - System.out.println("Vendor code: " + e.getErrorCode()); - e.printStackTrace(); - } while ((e = e.getNextException()) != null); - } finally { - AnalyzerUtil.tryClose(stat, rs); - if (null != conn) { - semaphoreRelease(); - } - } - return null; - } - public synchronized long getSelectionTime(String tableName, long startTime, String option) { String query = null; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceTable.java index 0179598..518991b 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceTable.java @@ -30,8 +30,8 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; +import java.util.Map.Entry; import org.eclipse.nebula.widgets.grid.Grid; import org.eclipse.nebula.widgets.grid.GridItem; @@ -42,10 +42,10 @@ import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.DASelectionData; import org.tizen.dynamicanalyzer.model.TableInput; -import org.tizen.dynamicanalyzer.sql.SqlManager; import org.tizen.dynamicanalyzer.swap.channel.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.channel.data.ProcessInfoPackage; import org.tizen.dynamicanalyzer.swap.model.data.LogData; +import org.tizen.dynamicanalyzer.swap.model.data.LogDataFactory; import org.tizen.dynamicanalyzer.swap.model.data.ProfileData; import org.tizen.dynamicanalyzer.swap.model.data.UserFunctionData; import org.tizen.dynamicanalyzer.ui.range.RangeDataManager; @@ -55,8 +55,6 @@ import org.tizen.dynamicanalyzer.ui.widgets.table.DAWindowingTableComposite; import org.tizen.dynamicanalyzer.utils.Formatter; public class CallTraceTable extends DAWindowingTableComposite { - private String selectOptionQuery = " messageid = " + DataChannelConstants.MSG_FUNCTION_ENTRY;//$NON-NLS-1$ - public CallTraceTable(Composite parent, int compStyle, int tableStyle) { super(parent, compStyle, tableStyle); setRangePopup(); @@ -146,26 +144,17 @@ public class CallTraceTable extends DAWindowingTableComposite { return input; } - protected int getTableLogId() { - return DataChannelConstants.MSG_FUNCTION_ENTRY; + protected String getDBTableName() { + return LogDataFactory.getLogFormatById( + DataChannelConstants.MSG_FUNCTION_ENTRY).getName(); } - protected int getItemCount() { - if (AnalyzerManager.isRunning()) { // trace - setDbInsetedItemCount(getItemCountByPid()); - } else { - if (getDbInsetedItemCount() == 0) { // open - setDbInsetedItemCount(SqlManager.getInstance() - .getTableItemCount(getDBTableName(), - getSelectQueryCountOption())); - } else if (getItemCountByPid() > 0) { // stop - setDbInsetedItemCount(getItemCountByPid()); - } - } - return getDbInsetedItemCount(); + protected List getDBTableColumnNames() { + return LogDataFactory.getLogFormatById( + DataChannelConstants.MSG_FUNCTION_ENTRY).getDBColumnNames(); } - private int getItemCountByPid() { + public int getItemCountByPid() { if (null == AnalyzerManager.getProject()) { return 0; } @@ -189,22 +178,8 @@ public class CallTraceTable extends DAWindowingTableComposite { return itemCount; } - public void setSelectionByTime(long startTime, long endTime) { - selectionStartTime = SqlManager.getInstance().getSelectionTime( - getDBTableName(), startTime, getSelectQueryCountOption()); - if (startTime == endTime) { - selectionEndTime = selectionStartTime; - } else { - selectionEndTime = endTime; - } - int selectionIndex = SqlManager.getInstance().getSelectionIndex( - getDBTableName(), selectionStartTime, - getSelectQueryCountOption()); - getScrollBar().setSelection(selectionIndex - 1); - } - protected String getSelectQueryOption() { - String query = selectOptionQuery; + String query = " messageid = " + DataChannelConstants.MSG_FUNCTION_ENTRY;//$NON-NLS-1$ int selectedPid = ToolbarArea.getInstance().getSelectedPid(); if (selectedPid != 0) { query += " and pid =" + selectedPid;//$NON-NLS-1$ @@ -214,7 +189,7 @@ public class CallTraceTable extends DAWindowingTableComposite { } protected String getSelectQueryCountOption() { - String query = selectOptionQuery; + String query = " messageid = " + DataChannelConstants.MSG_FUNCTION_ENTRY;//$NON-NLS-1$ int selectedPid = ToolbarArea.getInstance().getSelectedPid(); if (selectedPid != 0) { query += " and pid =" + selectedPid;//$NON-NLS-1$ 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 bf0b478..bea50ab 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 @@ -51,6 +51,7 @@ import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.ScrollBar; import org.eclipse.swt.widgets.Shell; +import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.CommonConstants; import org.tizen.dynamicanalyzer.listeners.TableTooltipListener; import org.tizen.dynamicanalyzer.model.FindProperty; @@ -60,7 +61,6 @@ import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.sql.SqlManager; import org.tizen.dynamicanalyzer.swap.model.data.LogData; -import org.tizen.dynamicanalyzer.swap.model.data.LogDataFactory; import org.tizen.dynamicanalyzer.ui.common.PopupAnalysisMenuItemClickListener; import org.tizen.dynamicanalyzer.ui.range.RangeDataManager; import org.tizen.dynamicanalyzer.ui.widgets.DAGrid; @@ -252,13 +252,13 @@ public abstract class DAWindowingTableComposite extends Composite { } else if (e.keyCode == SWT.PAGE_UP) { int nowScrollBar = scrollbar.getSelection(); int pageChagneInde = getTableLenght(); - scrollbar.setSelection(nowScrollBar - pageChagneInde+1); + scrollbar.setSelection(nowScrollBar - pageChagneInde + 1); setTableSeqNumber(0); } else if (e.keyCode == SWT.PAGE_DOWN) { int nowScrollBar = scrollbar.getSelection(); int pageChagneInde = getTableLenght() - 1; scrollbar.setSelection(nowScrollBar + pageChagneInde); - setTableSeqNumber(getTableLenght()-1); + setTableSeqNumber(getTableLenght() - 1); } } }); @@ -295,12 +295,16 @@ public abstract class DAWindowingTableComposite extends Composite { protected abstract List makeTableInput(List userLog); - protected abstract int getItemCount(); + protected abstract int getItemCountByPid(); - protected abstract int getTableLogId(); + protected abstract List getDBTableColumnNames(); + + protected abstract String getDBTableName(); protected abstract String getSelectQueryOption(); + protected abstract String getSelectQueryCountOption(); + public void clean() { getTable().removeAll(); scrollbar.setMaximum(0); @@ -388,7 +392,8 @@ public abstract class DAWindowingTableComposite extends Composite { scrollEndSelection = scrollSelection + additionalSelectCount; } List outputList = SqlManager.getInstance().selectTableData( - getTableLogId(), scrollStartSelection, scrollEndSelection + 1, + getDBTableName(), getDBTableColumnNames(), + scrollStartSelection, scrollEndSelection + 1, getSelectQueryOption()); return outputList; } @@ -425,7 +430,7 @@ public abstract class DAWindowingTableComposite extends Composite { private List getItemListFromDB() { int scrollSelection = scrollbar.getSelection(); - if(scrollSelection > getItemCount()){ // change PID + if (scrollSelection > getItemCount()) { // change PID scrollSelection = 0; } int selectedEndIndex = getTableLenght() + 1; @@ -433,8 +438,8 @@ public abstract class DAWindowingTableComposite extends Composite { selectedEndIndex = getItemCount(); } List outputList = SqlManager.getInstance().selectTableData( - getTableLogId(), scrollSelection, selectedEndIndex + 1, - getSelectQueryOption()); + getDBTableName(), getDBTableColumnNames(), scrollSelection, + selectedEndIndex + 1, getSelectQueryOption()); return outputList; } @@ -453,8 +458,33 @@ public abstract class DAWindowingTableComposite extends Composite { / (itemHeight + 1); } - public String getDBTableName() { - return LogDataFactory.getLogFormatById(getTableLogId()).getName(); + protected int getItemCount() { + if (AnalyzerManager.isRunning()) { // trace + setDbInsetedItemCount(getItemCountByPid()); + } else { + if (getDbInsetedItemCount() == 0) { // open + setDbInsetedItemCount(SqlManager.getInstance() + .getTableItemCount(getDBTableName(), + getSelectQueryCountOption())); + } else if (getItemCountByPid() > 0) { // stop + setDbInsetedItemCount(getItemCountByPid()); + } + } + return getDbInsetedItemCount(); + } + + public void setSelectionByTime(long startTime, long endTime) { + selectionStartTime = SqlManager.getInstance().getSelectionTime( + getDBTableName(), startTime, getSelectQueryCountOption()); + if (startTime == endTime) { + selectionEndTime = selectionStartTime; + } else { + selectionEndTime = endTime; + } + int selectionIndex = SqlManager.getInstance().getSelectionIndex( + getDBTableName(), selectionStartTime, + getSelectQueryCountOption()); + getScrollBar().setSelection(selectionIndex - 1); } public void updateTable() { @@ -599,7 +629,6 @@ public abstract class DAWindowingTableComposite extends Composite { if (null != comparator && null != sortTypes) { final int type = sortTypes[i]; - // final int sourceColumn = sourceColumns[i]; final int columnIndex = i; column.addSelectionListener(new SelectionAdapter() { -- 2.7.4