From 85a025a16f7df17ebd0920cd48913799b5eca5d8 Mon Sep 17 00:00:00 2001 From: jooyoul_lee Date: Fri, 18 Oct 2013 17:58:10 +0900 Subject: [PATCH] [Title] swap binary setting dlg added [Desc.] [Issue] --- .../dynamicanalyzer/common/AnalyzerConstants.java | 57 +-- .../dynamicanalyzer/common/AnalyzerManager.java | 9 +- .../dynamicanalyzer/common/AnalyzerPaths.java | 14 +- .../common/AnalyzerShellCommands.java | 1 + .../tizen/dynamicanalyzer/common/PathManager.java | 10 + .../communicator/DACommunicator.java | 42 +- .../dynamicanalyzer/handlers/OpenTraceHandler.java | 51 +- .../listeners/TableTooltipListener.java | 8 +- .../logparser/LogCenterConstants.java | 13 +- .../dynamicanalyzer/logparser/LogInserter.java | 8 - .../tizen/dynamicanalyzer/logparser/LogParser.java | 6 +- .../dynamicanalyzer/logparser/MessageProcess.java | 94 ++-- .../tizen/dynamicanalyzer/project/PackageInfo.java | 9 +- .../org/tizen/dynamicanalyzer/project/Project.java | 64 ++- .../dynamicanalyzer/resources/ImageResources.java | 19 +- .../dynamicanalyzer/shortcut/ShortCutManager.java | 4 +- .../tizen/dynamicanalyzer/sql/DBTableManager.java | 45 +- .../org/tizen/dynamicanalyzer/sql/SqlManager.java | 50 +- .../swap/callstack/SWAPCallStackManager.java | 58 ++- .../swap/communicator/Communicator30.java | 515 +++++++++++++++------ .../swap/logparser/MessageParser.java | 77 +-- .../swap/logparser/SWAPLogParser.java | 93 ++-- .../swap/model/RecordEventObject.java | 6 + .../swap/model/control/ApplicationInst.java | 17 +- .../swap/model/control/BinaryInfo.java | 33 +- .../swap/model/control/TargetInfo.java | 19 +- .../swap/model/data/BasicDataMessage.java | 30 +- .../swap/model/data/DataChannelConstants.java | 34 +- .../swap/model/data/LibraryObject.java | 11 + .../swap/model/data/ProcessInfo.java | 28 +- .../swap/model/probe2/ContextSwitchData.java | 1 + .../dynamicanalyzer/swap/model/probe2/LogData.java | 6 +- .../swap/model/probe2/LogDataFactory.java | 50 +- .../swap/model/probe2/ProfileData.java | 10 +- .../swap/model/probe2/ReplayData.java | 5 + .../swap/model/probe2/SystemData.java | 114 ++++- .../swap/platform/BinarySettingData.java | 35 ++ .../swap/platform/BinarySettingManager.java | 143 ++++++ .../platform/ui/BinaryAnalyzingConfigDialog.java | 381 +++++++++++++++ .../swap/platform/ui/DAFileExplorer.java | 130 ++++++ .../swap/platform/ui/DAFileExplorerRenderer.java | 26 ++ .../platform/ui/DAFileExplorerToggleRenderer.java | 127 +++++ .../swap/platform/ui/FileExplorerDialog.java | 113 +++++ .../dynamicanalyzer/swap/platform/ui/InputRow.java | 227 +++++++++ .../swap/platform/ui/LoadSettingDialog.java | 302 ++++++++++++ .../swap/platform/ui/SaveSettingDialog.java | 244 ++++++++++ .../swap/platform/ui/SettingSaveTable.java | 65 +++ .../dynamicanalyzer/ui/file/FileChartView.java | 4 +- .../ui/info/callstack/CallStackManager.java | 48 +- .../ui/info/callstack/CallStackUnit.java | 22 +- .../ui/info/snapshot/SnapshotView.java | 4 +- .../ui/network/NetworkChartView.java | 4 +- .../tizen/dynamicanalyzer/ui/opengl/ui/GLPage.java | 4 +- .../ui/opengl/ui/apiList/GLAPIListView.java | 59 ++- .../ui/opengl/ui/chart/GLFrameRateChart.java | 4 +- .../ui/opengl/ui/context/GLContextView.java | 60 ++- .../dynamicanalyzer/ui/range/RangeDataManager.java | 29 +- .../ui/summary/leaks/LeakTable.java | 6 +- .../profiling/FunctionUsageProfilingView.java | 3 +- .../ui/summary/profiling/ProfileDataMaker.java | 28 +- .../ui/summary/warning/WarningTable.java | 5 +- .../ui/thread/ThreadChartManager.java | 13 +- .../ui/thread/sync/ThreadPageSyncDataManager.java | 4 +- .../thread/thread/ThreadPageThreadDataManager.java | 12 +- .../ui/timeline/calltrace/CallTraceView.java | 5 +- .../ui/timeline/chart/CPUChart.java | 4 +- .../ui/timeline/chart/CPUCoreChart.java | 4 +- .../ui/timeline/chart/CPUFrequencyChart.java | 4 +- .../ui/timeline/chart/FileChart.java | 11 +- .../ui/timeline/chart/HeapChart.java | 6 +- .../ui/timeline/chart/ProcessMemoryChart.java | 4 +- .../ui/timeline/chart/ScreenshotChart.java | 3 +- .../ui/timeline/chart/SystemMemoryChart.java | 4 +- .../ui/timeline/chart/UIEventChart.java | 4 +- .../timeline/common/TimelineEditItemsDialog.java | 4 +- .../ui/timeline/common/TimelineView.java | 14 +- .../ui/timeline/logparser/CustomLogParser.java | 4 +- .../ui/timeline/logparser/DeviceLogParser.java | 8 +- .../ui/timeline/logparser/LifecycleLogParser.java | 4 +- .../dynamicanalyzer/ui/toolbar/AboutDialog.java | 6 +- .../dynamicanalyzer/ui/toolbar/SaveAsDialog.java | 13 +- .../dynamicanalyzer/ui/toolbar/ToolbarArea.java | 129 +++--- .../ui/toolbar/TraceStartStopThread.java | 2 - .../toolbar/configuration/ConfigurationDialog.java | 6 +- .../ui/toolbar/configuration/WelcomeDialog.java | 10 +- .../ui/toolbar/opentrace/OpenTraceDialog.java | 7 +- .../ui/toolbar/opentrace/OpenTraceInputReader.java | 21 +- .../ui/userinterface/UIDataManager.java | 7 +- .../dynamicanalyzer/ui/widgets/DAMessageBox.java | 19 +- .../dynamicanalyzer/ui/widgets/FindDialog.java | 7 +- .../ui/widgets/table/DATableCellRenderer.java | 10 +- .../tizen/dynamicanalyzer/utils/AnalyzerUtil.java | 117 +++-- .../theme/white/img/device.gif | Bin 0 -> 568 bytes .../theme/white/img/directory.gif | Bin 0 -> 215 bytes .../theme/white/img/directory_link.gif | Bin 0 -> 362 bytes .../theme/white/img/emulator.gif | Bin 0 -> 565 bytes org.tizen.dynamicanalyzer/theme/white/img/file.gif | Bin 0 -> 344 bytes .../theme/white/img/file_link.gif | Bin 0 -> 576 bytes 98 files changed, 3268 insertions(+), 882 deletions(-) create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingData.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingManager.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/BinaryAnalyzingConfigDialog.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorer.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerRenderer.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerToggleRenderer.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/FileExplorerDialog.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/InputRow.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/LoadSettingDialog.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SaveSettingDialog.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SettingSaveTable.java create mode 100644 org.tizen.dynamicanalyzer/theme/white/img/device.gif create mode 100644 org.tizen.dynamicanalyzer/theme/white/img/directory.gif create mode 100644 org.tizen.dynamicanalyzer/theme/white/img/directory_link.gif create mode 100644 org.tizen.dynamicanalyzer/theme/white/img/emulator.gif create mode 100644 org.tizen.dynamicanalyzer/theme/white/img/file.gif create mode 100644 org.tizen.dynamicanalyzer/theme/white/img/file_link.gif diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerConstants.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerConstants.java index eef0ec3..efb1dfd 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerConstants.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerConstants.java @@ -41,6 +41,7 @@ public class AnalyzerConstants { public static final String TARGET_FOLDER_NAME = "target"; //$NON-NLS-1$ public static final String DYNAMIC_ANALYZER_FOLDER_NAME = "dynamic-analyzer"; //$NON-NLS-1$ public static final String SAVE_FOLDER_NAME = "save"; //$NON-NLS-1$ + public static final String SETTING_FOLDER_NAME = "setting"; //$NON-NLS-1$ public static final String PLATFORM_FOLDER_NAME = "platforms"; //$NON-NLS-1$ public static final String LOGS_FOLDER_NAME = "logs"; //$NON-NLS-1$ public static final String TEMP_FOLDER_NAME = "temp"; //$NON-NLS-1$ @@ -241,8 +242,8 @@ public class AnalyzerConstants { public static final int APP_INFO_SIZE = 21; /* app type */ - public static final int APP_TYPE_TIZEN = 0; - public static final int APP_TYPE_OSP = 1; + public static final int APP_TYPE_TIZEN = 1; + public static final int APP_TYPE_OSP = 4; /* Source Line errors */ public static final int SOURCELINE_NOERROR = 0; @@ -296,41 +297,43 @@ public class AnalyzerConstants { public final static int MSG_STOP_SWAP = 0x0003; public final static int MSG_CONFIG = 0x0004; public final static int MSG_BINARY_INFO = 0x0005; - public final static int MSG_SWAP_INST = 0x0006; public final static int MSG_TARGET_INFO = 0x0007; + public final static int MSG_SWAP_INST_ADD = 0x0008; + public final static int MSG_SWAP_INST_REMOVE = 0x0009; public final static int MSG_KEEP_ALIVE_ACK = 0x1001; public final static int MSG_START_ACK = 0x1002; public final static int MSG_STOP_ACK = 0x1003; public final static int MSG_CONFIG_ACK = 0x1004; public final static int MSG_BINARY_INFO_ACK = 0x1005; - public final static int MSG_SWAP_INST_ACK = 0x1006; public final static int MSG_TARGET_INFO_ACK = 0x1007; + public final static int MSG_SWAP_INST_ADD_ACK = 0x1008; + public final static int MSG_SWAP_INST_REMOVE_ACK = 0x1009; public final static int MSG_WAIT_ACK = 0x1010; /*** data channel messages */ - public final static int MSG_DATA_PROCESS_INFO = 0x2002; - public final static int MSG_DATA_TERMINATE = 0x2004; - public final static int MSG_DATA_ERROR = 0x2005; - public final static int MSG_DATA_SAMPLE = 0x2006; - public final static int MSG_DATA_SYSTEM = 0x2007; - public final static int MSG_DATA_RECORD = 0x2009; - public final static int MSG_FUNCTION_ENTRY = 0x2010; - public final static int MSG_FUNCTION_EXIT = 0x2011; - public final static int MSG_CONTEXT_SWITCH_ENTRY = 0x2012; - public final static int MSG_CONTEXT_SWITCH_EXIT = 0x2013; - - public final static int MSG_PROBE_MEMORY = 0x3001; - public final static int MSG_PROBE_UICONTROL = 0x3002; - public final static int MSG_PROBE_UIEVENT = 0x3003; - public final static int MSG_PROBE_FILE = 0x3004; - public final static int MSG_PROBE_LIFECYCLE = 0x3005; - public final static int MSG_PROBE_SCREENSHOT = 0x3006; - public final static int MSG_PROBE_SCENE = 0x3007; - public final static int MSG_PROBE_THREAD = 0x3008; - public final static int MSG_PROBE_CUSTOM = 0x3009; - public final static int MSG_PROBE_SYNC = 0x3010; - public final static int MSG_PROBE_NETWORK = 0x3011; - public final static int MSG_PROBE_GLES20 = 0x3012; +// public final static int MSG_DATA_PROCESS_INFO = 0x0001; +// public final static int MSG_DATA_TERMINATE = 0x0002; +// public final static int MSG_DATA_ERROR = 0x0003; +// public final static int MSG_DATA_SAMPLE = 0x0004; +// public final static int MSG_DATA_SYSTEM = 0x0005; +// public final static int MSG_DATA_RECORD = 0x0006; +// public final static int MSG_FUNCTION_ENTRY = 0x0008; +// public final static int MSG_FUNCTION_EXIT = 0x0009; +// public final static int MSG_CONTEXT_SWITCH_ENTRY = 0x0010; +// public final static int MSG_CONTEXT_SWITCH_EXIT = 0x0011; +// +// public final static int MSG_PROBE_MEMORY = 0x0101; +// public final static int MSG_PROBE_UICONTROL = 0x0102; +// public final static int MSG_PROBE_UIEVENT = 0x0103; +// public final static int MSG_PROBE_FILE = 0x0104; +// public final static int MSG_PROBE_LIFECYCLE = 0x0105; +// public final static int MSG_PROBE_SCREENSHOT = 0x0106; +// public final static int MSG_PROBE_SCENE = 0x0107; +// public final static int MSG_PROBE_THREAD = 0x0108; +// public final static int MSG_PROBE_CUSTOM = 0x0109; +// public final static int MSG_PROBE_SYNC = 0x0110; +// public final static int MSG_PROBE_NETWORK = 0x0111; +// public final static int MSG_PROBE_GLES20 = 0x0112; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java index 7300ebf..749c852 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java @@ -434,10 +434,10 @@ public class AnalyzerManager { } public static boolean isOsp() { - int type = getProject().getApplicationType(); - if (type == AnalyzerConstants.APP_TYPE_OSP) { - return true; - } + // FIXME + // if (AnalyzerUtil.isPieBuild(pid)) { + // return true; + // } return false; } @@ -469,4 +469,5 @@ public class AnalyzerManager { public static void setLogParsingComplete(boolean complete) { isLogParsingComplete = complete; } + } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerPaths.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerPaths.java index bf6db8e..dcc546f 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerPaths.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerPaths.java @@ -36,8 +36,12 @@ public class AnalyzerPaths { .getInstallPath(); public static final String DYNAMIC_ANALYZER_SAVE_PATH = PathManager .getSavePath(); + public static final String DYNAMIC_ANALYZER_SETTING_PATH = PathManager + .getBinarySettingPath(); public static final String DYNAMIC_ANALYZER_AUTOTEST_PATH = TIZEN_SDK_DATA_PATH - + File.separator + "test" + File.separator + + File.separator + + "test" + + File.separator + AnalyzerConstants.DYNAMIC_ANALYZER_FOLDER_NAME; public static final String TOOL_FOLDER_PATH = DYNAMIC_ANALYZER_INSTALL_PATH + File.separator + AnalyzerConstants.TOOLS_FOLDER_NAME; @@ -79,6 +83,10 @@ public class AnalyzerPaths { public static final String APPLICATION_LIST_PATH = "/opt/share/applications/"; //$NON-NLS-1$ public static final String DA_DAEMON_LOG_PATH = "/tmp/daemonlog.da"; //$NON-NLS-1$ - public static final String DA_API_MAP_PATH = "/home/developer/api_map"; //$NON-NLS-1$ -// public static final String DA_API_MAP_PATH = "/usr/lib/da_api_map"; //$NON-NLS-1$ + public static final String DA_API_MAP_PATH = "/usr/lib/da_api_map"; //$NON-NLS-1$ + // public static final String DA_API_MAP_PATH = "/usr/lib/da_api_map"; //$NON-NLS-1$ + public static final String SBI_COMMAND = TIZEN_ROOT_PATH + File.separator + + AnalyzerConstants.TOOLS_FOLDER_NAME + File.separator + + "smart-build-interface" + File.separator + "bin" + File.separator + + "sbi"; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerShellCommands.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerShellCommands.java index d05bb20..fea7909 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerShellCommands.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerShellCommands.java @@ -26,6 +26,7 @@ package org.tizen.dynamicanalyzer.common; + public class AnalyzerShellCommands { /* Commands */ diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/PathManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/PathManager.java index 2d0a8d1..720ba94 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/PathManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/PathManager.java @@ -198,6 +198,16 @@ public class PathManager { return savePath; } + public static String getBinarySettingPath() { + String savePath = AnalyzerPaths.TIZEN_SDK_DATA_PATH; + if (null != savePath) { + savePath += File.separator + + AnalyzerConstants.DYNAMIC_ANALYZER_FOLDER_NAME + + File.separator + AnalyzerConstants.SETTING_FOLDER_NAME; + } + return savePath; + } + public static String getLogPath() { String logPath = AnalyzerPaths.TIZEN_SDK_DATA_PATH; if (null != logPath) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java index 8c0443f..092df6b 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java @@ -137,17 +137,17 @@ public class DACommunicator { public static void setSelectedDevice(DeviceInfo device) { currentDevice = device; -// if (null != currentDevice) { -// String version = currentDevice.getTargetVersion(); -// if (version.equals(DA_VERSION_OLD)) { -// communicator = communicator_211; -// } else if (version.equals(DA_VERSION_SWAP)) { -// communicator = communicator_30; -// } else { -// // error -// System.out.println("not supported version"); -// } -// } + // if (null != currentDevice) { + // String version = currentDevice.getTargetVersion(); + // if (version.equals(DA_VERSION_OLD)) { + // communicator = communicator_211; + // } else if (version.equals(DA_VERSION_SWAP)) { + // communicator = communicator_30; + // } else { + // // error + // System.out.println("not supported version"); + // } + // } } public static PackageInfo getSelectedApp() { @@ -277,7 +277,8 @@ public class DACommunicator { return null; } List appInfoList = currentDevice.getAppInfoList(); - HashMap appInfoHash = currentDevice.getAppInfoHash(); + HashMap appInfoHash = currentDevice + .getAppInfoHash(); List backList = new ArrayList(); backList.addAll(appInfoHash.values()); @@ -330,8 +331,9 @@ public class DACommunicator { } if (!backList.isEmpty()) { for (PackageInfo pkg : backList) { + String pkgId = pkg.getInfo(PackageInfo.PACKAGE_INDEX); appInfoList.remove(pkg); - appInfoHash.remove(pkg); + appInfoHash.remove(pkgId); } } return appInfoList; @@ -1025,6 +1027,20 @@ public class DACommunicator { return communicator.handleControlMessage(msg); } + public static HostResult sendBinaryInfoMessageForLib() { + if (isSWAPVersion()) { + return communicator_30.sendBinaryInfoMessageForLib(); + } + return null; + } + + public static HostResult sendSWAPMessage(int messageId) { + if (isSWAPVersion()) { + return communicator_30.sendSWAPMessage(messageId); + } + return null; + } + public static HostResult sendKeepAliveMessage(DeviceInfo device) { return communicator.sendKeepAliveMessage(device); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java index d431cfd..d0e5226 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java @@ -49,6 +49,7 @@ import org.tizen.dynamicanalyzer.sql.SqlManager; import org.tizen.dynamicanalyzer.swap.model.DATime; import org.tizen.dynamicanalyzer.swap.model.control.TargetInfo; import org.tizen.dynamicanalyzer.swap.model.data.ApiNameManager; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.data.LibraryObject; import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo; import org.tizen.dynamicanalyzer.swap.model.probe2.FailedData2; @@ -72,7 +73,6 @@ import org.tizen.dynamicanalyzer.ui.widgets.DADialog; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; import org.tizen.dynamicanalyzer.widgets.combo.DACustomCombo; - public class OpenTraceHandler extends AbstractHandler { public static final String ID = OpenTraceHandler.class.getName(); @@ -131,11 +131,11 @@ public class OpenTraceHandler extends AbstractHandler { .split(CommonConstants.CMD_SPLIT_READ); try { p.setLastLogNum(Long.parseLong(splitLastNum[0]), - AnalyzerConstants.MSG_PROBE_FILE); + DataChannelConstants.MSG_PROBE_FILE); p.setLastLogNum(Long.parseLong(splitLastNum[1]), - AnalyzerConstants.MSG_DATA_SYSTEM); + DataChannelConstants.MSG_DATA_SYSTEM); p.setLastLogNum(Long.parseLong(splitLastNum[2]), - AnalyzerConstants.MSG_DATA_SAMPLE); + DataChannelConstants.MSG_DATA_SAMPLE); } catch (NumberFormatException e) { invalidProgress(); return null; @@ -192,7 +192,7 @@ public class OpenTraceHandler extends AbstractHandler { ToolbarArea.getInstance().setAppComboText(p.getAppName()); ToolbarArea.getInstance().checkStartButtonAndAppListEnablement(); ToolbarArea.getInstance().setRepalyButtonEnable(true); - if (AnalyzerManager.getProject().getBinaryPath().isEmpty()) { + if (AnalyzerManager.getProject().getProcessInfoHash().isEmpty()) { ToolbarArea.getInstance().setSourceViewEnable(false); ToolbarArea.getInstance().setSourceViewTooltip( AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING); @@ -279,7 +279,8 @@ public class OpenTraceHandler extends AbstractHandler { List pInfo = dbInfo.get(i); long addr = Long.parseLong(pInfo.get(0)); String api = pInfo.get(1); - CallStackUnit csa = new CallStackUnit(addr, api); + int pid = Integer.parseInt(pInfo.get(2)); + CallStackUnit csa = new CallStackUnit(addr, api, pid); apiHash.put(addr, csa); } @@ -310,24 +311,26 @@ public class OpenTraceHandler extends AbstractHandler { dbInfo.clear(); dbInfo = SqlManager.getInstance().loadProcessInfo(); + HashMap processMap = AnalyzerManager + .getProject().getProcessInfoHash(); if (null == dbInfo) { System.out.println("failed - load Process Info"); isSuccess = false; } else { - List info = dbInfo.get(0); - ProcessInfo process = new ProcessInfo(); - process.setPid(Integer.parseInt(info.get(0))); - DATime startTime = new DATime(); - startTime.setSec(Integer.parseInt(info.get(1))); - startTime.setNano(Integer.parseInt(info.get(2))); - process.setStartTime(startTime); - process.setLowestAddress(Long.parseLong(info.get(3))); - process.setHighestAddress(Long.parseLong(info.get(4))); - process.setAppType(Integer.parseInt(info.get(5))); - process.setBinaryType(Integer.parseInt(info.get(6))); - process.setBinaryPath(info.get(7)); - process.setDepLibCount(Integer.parseInt(info.get(8))); - AnalyzerManager.getProject().setProcessInfo(process); + for (int i = 0; i < dbInfo.size(); i++) { + List info = dbInfo.get(i); + ProcessInfo process = new ProcessInfo(); + process.setPid(Integer.parseInt(info.get(0))); + DATime startTime = new DATime(); + startTime.setSec(Integer.parseInt(info.get(1))); + startTime.setNano(Integer.parseInt(info.get(2))); + process.setStartTime(startTime); + process.setLowestAddress(Long.parseLong(info.get(3))); + process.setHighestAddress(Long.parseLong(info.get(4))); + process.setBinaryPath(info.get(7)); + process.setDepLibCount(Integer.parseInt(info.get(8))); + processMap.put(process.getPid(), process); + } } dbInfo.clear(); @@ -336,14 +339,14 @@ public class OpenTraceHandler extends AbstractHandler { System.out.println("failed - load Lib Object"); isSuccess = false; } else { - List libObjs = AnalyzerManager.getProject() - .getProcessInfo().getLibObjs(); for (List info : dbInfo) { LibraryObject libObj = new LibraryObject(); libObj.setLowestAddress(Long.parseLong(info.get(0))); libObj.setHighestAddress(Long.parseLong(info.get(1))); libObj.setLibPath(info.get(2)); - libObjs.add(libObj); + int pid = Integer.parseInt(info.get(3)); + libObj.setPid(pid); + processMap.get(pid).getLibObjs().add(libObj); } } @@ -427,7 +430,7 @@ public class OpenTraceHandler extends AbstractHandler { // possibility of extensions - network, efl, db, etc... int id = Integer.parseInt(pInfo .get(LogCenterConstants.ID_INDEX)); - if (id == AnalyzerConstants.MSG_PROBE_FILE) { + if (id == DataChannelConstants.MSG_PROBE_FILE) { // if file failed api data is skip - file chart make it! int type = Integer.parseInt(pInfo .get(LogCenterConstants.RESOURCE_FDTYPE_INDEX)); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/listeners/TableTooltipListener.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/listeners/TableTooltipListener.java index 94d631a..1540246 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/listeners/TableTooltipListener.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/listeners/TableTooltipListener.java @@ -346,9 +346,11 @@ public class TableTooltipListener implements Listener { } addr = AnalyzerManager.getCallstackManager().getPCAddrBySeq(seqNum); } - boolean isPieBuild = AnalyzerManager.getProject().isPieBuild(); - String baseAddr = Long.toString(AnalyzerManager.getProject().getBaseAddress()); - String path = AnalyzerManager.getProject().getBinaryPath(); + + + boolean isPieBuild = AnalyzerUtil.isPieBuild(data.getPid()); + String baseAddr = Long.toString(AnalyzerManager.getProject().getBaseAddress(data.getPid())); + String path = AnalyzerUtil.getBinaryPath(data.getPid()); SourceLine sl = SymbolManager.addr2line(path, addr, isPieBuild, baseAddr); return sl; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogCenterConstants.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogCenterConstants.java index f7732bb..034e0cb 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogCenterConstants.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogCenterConstants.java @@ -26,7 +26,7 @@ package org.tizen.dynamicanalyzer.logparser; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; public class LogCenterConstants { @@ -34,8 +34,9 @@ public class LogCenterConstants { public static final int LOG_MEMORY = 1; public static final int LOG_CONTROL = 2; public static final int LOG_UI_EVENT = 3; - public static final int LOG_USER_FUNCTION = 4; - public static final int LOG_RESOURCE = 5; + // FIXME : + public static final int LOG_USER_FUNCTION = 44; + public static final int LOG_RESOURCE = 55; public static final int LOG_LIFECYCLE = 6; public static final int LOG_SCREENSHOT = 7; public static final int LOG_SCENE = 8; @@ -287,13 +288,13 @@ public class LogCenterConstants { public static final int COMMON_COLUMN_SIZE_ERROR = 0; public static String getLogCenterNameFromId(int id) { - if (id == AnalyzerConstants.MSG_PROBE_MEMORY) { + if (id == DataChannelConstants.MSG_PROBE_MEMORY) { return "memory"; //$NON-NLS-1$ } else if (id == LOG_USER_FUNCTION) { return "user function"; //$NON-NLS-1$ - } else if (id == AnalyzerConstants.MSG_PROBE_FILE) { + } else if (id == DataChannelConstants.MSG_PROBE_FILE) { return "resource"; //$NON-NLS-1$ - } else if (id == AnalyzerConstants.MSG_PROBE_THREAD) { + } else if (id == DataChannelConstants.MSG_PROBE_THREAD) { return "thread"; //$NON-NLS-1$ } else if (id == LOG_GLES20) { return "graphics"; //$NON-NLS-1$ diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java index 018d910..75e31b6 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java @@ -34,7 +34,6 @@ import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.sql.SqlManager; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; -import org.tizen.dynamicanalyzer.swap.model.data.BasicDataMessage; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory; @@ -89,13 +88,6 @@ public class LogInserter implements Runnable { logPackage.clear(); } - private LogPackage getLogPackage() { - if (null == logPackage) { - logPackage = new LogPackage(); - } - return logPackage; - } - @Override public void run() { List logIds = LogDataFactory.getLogList(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogParser.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogParser.java index 457248b..d9d5041 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogParser.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogParser.java @@ -418,11 +418,11 @@ public class LogParser implements Runnable { } private void setFuncName(UserFunctionData input) { - boolean isPieBuild = AnalyzerManager.getProject().isPieBuild(); + boolean isPieBuild = AnalyzerUtil.isPieBuild(input.getPid()); String baseAddr = Long.toString(AnalyzerManager.getProject() - .getBaseAddress()); + .getBaseAddress(input.getPid())); // String path = AnalyzerManager.getProject().getBinaryPath(); - String path = DACommunicator.getSelectedApp().getBinInfo().getPath(); + String path = DACommunicator.getSelectedApp().getBinInfo().getLocalBinaryPath(); String pcAddr = Long.toString(input.getPcAddr()); String functionName = SymbolManager.addr2func(path, pcAddr, isPieBuild, baseAddr); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/MessageProcess.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/MessageProcess.java index 7ac2ea1..8908dce 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/MessageProcess.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/MessageProcess.java @@ -166,53 +166,53 @@ public class MessageProcess { } private void processAppInfo(String message) { - String[] data = message.split(AnalyzerConstants.DATA_PARSING_TOKEN); - - Project project = AnalyzerManager.getProject(); - TargetInfo tInfo = project.getTargetInfo(); - ProcessInfo pInfo = project.getProcessInfo(); - - tInfo.setSystemMemorySize(Integer - .parseInt(data[AnalyzerConstants.APP_INFO_SYSTEM_MEMORY_SIZE])); - tInfo.setStorageSize(Integer - .parseInt(data[AnalyzerConstants.APP_INFO_STORAGE_SIZE])); - tInfo.setBluetoothSupport(Integer - .parseInt(data[AnalyzerConstants.APP_INFO_BLUETOOTH_SUPPORT])); - tInfo.setGpsSupport(Integer - .parseInt(data[AnalyzerConstants.APP_INFO_GPS_SUPPORT])); - tInfo.setWifiSupport(Integer - .parseInt(data[AnalyzerConstants.APP_INFO_WIFI_SUPPORT])); - tInfo.setCameraCount(Integer - .parseInt(data[AnalyzerConstants.APP_INFO_CAMERA_COUNT])); - tInfo.setNetworkType(data[AnalyzerConstants.APP_INFO_NETWORK_TYPE]); - tInfo.setMaxBrightness(Integer - .parseInt(data[AnalyzerConstants.APP_INFO_MAX_BRIGHTNESS])); - - pInfo.setPid(Integer.parseInt(data[AnalyzerConstants.APP_INFO_PID])); - // pInfo.setTime(Integer - // .parseInt(data[AnalyzerConstants.APP_INFO_START_TIME]) * 100); - pInfo.setBinaryType(Integer - .parseInt(data[AnalyzerConstants.APP_INFO_PIE_BUILD])); - pInfo.setLowestAddress(Long - .parseLong(data[AnalyzerConstants.APP_INFO_BASE_ADDRESS])); - pInfo.setAppType(Integer - .parseInt(data[AnalyzerConstants.APP_INFO_APP_TYPE])); - pInfo.setBinaryPath(data[AnalyzerConstants.APP_INFO_BINARY_PATH]); - - if (null == pInfo.getBinaryPath() || pInfo.getBinaryPath().isEmpty()) { - ToolbarArea.getInstance().setSourceViewEnable(false); - ToolbarArea.getInstance().setSourceViewTooltip( - AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING); - } else { - ToolbarArea.getInstance().setSourceViewEnable(true); - ToolbarArea.getInstance().setSourceViewTooltip( - AnalyzerLabels.MESSAGE_PROCESS_VIEW_SOURCE); - } - - // User Call Trace : App is Tizen C++ or Tizen native - if (pInfo.getAppType() == AnalyzerConstants.APP_TYPE_OSP) { - LogParser.setDropCallTraceLog(true); - } +// String[] data = message.split(AnalyzerConstants.DATA_PARSING_TOKEN); +// +// Project project = AnalyzerManager.getProject(); +// TargetInfo tInfo = project.getTargetInfo(); +// ProcessInfo pInfo = project.getProcessInfo(); +// +// tInfo.setSystemMemorySize(Integer +// .parseInt(data[AnalyzerConstants.APP_INFO_SYSTEM_MEMORY_SIZE])); +// tInfo.setStorageSize(Integer +// .parseInt(data[AnalyzerConstants.APP_INFO_STORAGE_SIZE])); +// tInfo.setBluetoothSupport(Integer +// .parseInt(data[AnalyzerConstants.APP_INFO_BLUETOOTH_SUPPORT])); +// tInfo.setGpsSupport(Integer +// .parseInt(data[AnalyzerConstants.APP_INFO_GPS_SUPPORT])); +// tInfo.setWifiSupport(Integer +// .parseInt(data[AnalyzerConstants.APP_INFO_WIFI_SUPPORT])); +// tInfo.setCameraCount(Integer +// .parseInt(data[AnalyzerConstants.APP_INFO_CAMERA_COUNT])); +// tInfo.setNetworkType(data[AnalyzerConstants.APP_INFO_NETWORK_TYPE]); +// tInfo.setMaxBrightness(Integer +// .parseInt(data[AnalyzerConstants.APP_INFO_MAX_BRIGHTNESS])); +// +// pInfo.setPid(Integer.parseInt(data[AnalyzerConstants.APP_INFO_PID])); +// // pInfo.setTime(Integer +// // .parseInt(data[AnalyzerConstants.APP_INFO_START_TIME]) * 100); +// pInfo.setBinaryType(Integer +// .parseInt(data[AnalyzerConstants.APP_INFO_PIE_BUILD])); +// pInfo.setLowestAddress(Long +// .parseLong(data[AnalyzerConstants.APP_INFO_BASE_ADDRESS])); +// pInfo.setAppType(Integer +// .parseInt(data[AnalyzerConstants.APP_INFO_APP_TYPE])); +// pInfo.setBinaryPath(data[AnalyzerConstants.APP_INFO_BINARY_PATH]); +// +// if (null == pInfo.getBinaryPath() || pInfo.getBinaryPath().isEmpty()) { +// ToolbarArea.getInstance().setSourceViewEnable(false); +// ToolbarArea.getInstance().setSourceViewTooltip( +// AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING); +// } else { +// ToolbarArea.getInstance().setSourceViewEnable(true); +// ToolbarArea.getInstance().setSourceViewTooltip( +// AnalyzerLabels.MESSAGE_PROCESS_VIEW_SOURCE); +// } +// +// // User Call Trace : App is Tizen C++ or Tizen native +// if (pInfo.getAppType() == AnalyzerConstants.APP_TYPE_OSP) { +// LogParser.setDropCallTraceLog(true); +// } } // private String getImageName(String fullPath) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/PackageInfo.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/PackageInfo.java index a32ae53..86af006 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/PackageInfo.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/PackageInfo.java @@ -27,6 +27,7 @@ package org.tizen.dynamicanalyzer.project; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import org.tizen.dynamicanalyzer.common.CommonConstants; @@ -56,6 +57,7 @@ public class PackageInfo { public static final String FLAG_ONE = "1";//$NON-NLS-1$ private BinaryInfo binInfo = null; + private HashMap binaryInfoMap = new HashMap(); private String installTime = null; private String execFileName = null; @@ -99,7 +101,7 @@ public class PackageInfo { return null; } symbolExtractor.clear(); - symbolExtractor.makeSymbol(binInfo.getPath()); + symbolExtractor.makeSymbol(binInfo.getLocalBinaryPath()); return symbolExtractor.getAddrSymbolPairs(); } @@ -116,4 +118,9 @@ public class PackageInfo { } return execFileName; } + + public HashMap getBinaryInfoMap() { + return binaryInfoMap; + } + } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/Project.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/Project.java index 98f4844..6ed059f 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/Project.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/Project.java @@ -29,6 +29,7 @@ package org.tizen.dynamicanalyzer.project; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.HashMap; import java.util.Locale; import org.tizen.dynamicanalyzer.common.AnalyzerConstants; @@ -42,6 +43,7 @@ import org.tizen.dynamicanalyzer.sql.SqlManager; import org.tizen.dynamicanalyzer.swap.model.ByteUtils; import org.tizen.dynamicanalyzer.swap.model.DATime; import org.tizen.dynamicanalyzer.swap.model.control.TargetInfo; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo; import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler; @@ -74,11 +76,12 @@ public class Project { private String device = null; private long lastTime = 0; private long stopTime = -1; + private DATime profilingStartTime = new DATime(); private byte[] replayEvent = null; - // private TargetInfo targetInfo = new TargetInfo(); - private ProcessInfo processInfo = new ProcessInfo(); + // private ProcessInfo processInfo = new ProcessInfo(); + private HashMap processInfoHash = new HashMap(); public TargetInfo getTargetInfo() { TargetInfo targetInfo = DACommunicator.getSelectedDevice() @@ -90,13 +93,14 @@ public class Project { DACommunicator.getSelectedDevice().setTargetInfo(targetInfo); } - public ProcessInfo getProcessInfo() { + public ProcessInfo getProcessInfo(int pid) { + ProcessInfo processInfo = processInfoHash.get(pid); return processInfo; } - public void setProcessInfo(ProcessInfo processInfo) { - this.processInfo = processInfo; - } + // public void setProcessInfo(ProcessInfo processInfo) { + // this.processInfo = processInfo; + // } public void setCoreCount(int count) { getTargetInfo().setCpuCount(count); @@ -111,21 +115,17 @@ public class Project { } public DATime getStartTime() { - return processInfo.getStartTime(); + return profilingStartTime; } public void setStartTime(DATime time) { - processInfo.setStartTime(time); + profilingStartTime = time; } public long getSystemMemorySize() { return getTargetInfo().getSystemMemorySize(); } - public int getPID() { - return processInfo.getPid(); - } - public long getLastTime() { return lastTime; } @@ -149,11 +149,11 @@ public class Project { public String getVersion() { return version; } - + public long getLastLogNum(int type) { - if (type == AnalyzerConstants.MSG_DATA_SYSTEM) { + if (type == DataChannelConstants.MSG_DATA_SYSTEM) { return lastDeviceLogNum; - } else if (type == AnalyzerConstants.MSG_DATA_SAMPLE) { + } else if (type == DataChannelConstants.MSG_DATA_SAMPLE) { return lastProfileLogNum; } else { return lastLogNum; @@ -180,11 +180,11 @@ public class Project { } public void setLastLogNum(long last, int type) { - if (type == AnalyzerConstants.MSG_DATA_SYSTEM) { + if (type == DataChannelConstants.MSG_DATA_SYSTEM) { if (last > lastDeviceLogNum) { lastDeviceLogNum = last; } - } else if (type == AnalyzerConstants.MSG_DATA_SAMPLE) { + } else if (type == DataChannelConstants.MSG_DATA_SAMPLE) { if (last > lastProfileLogNum) { lastProfileLogNum = last; } @@ -204,8 +204,10 @@ public class Project { } public void init() { - appName = DACommunicator.getSelectedApp().getInfo(PackageInfo.LABEL_INDEX); - pkgId = DACommunicator.getSelectedApp().getInfo(PackageInfo.PACKAGE_INDEX); + appName = DACommunicator.getSelectedApp().getInfo( + PackageInfo.LABEL_INDEX); + pkgId = DACommunicator.getSelectedApp().getInfo( + PackageInfo.PACKAGE_INDEX); DeviceInfo deviceName = DACommunicator.getSelectedDevice(); if (null != deviceName && null != deviceName.getIDevice().getSerialNumber() @@ -290,29 +292,16 @@ public class Project { return true; } - public String getBinaryPath() { - return processInfo.getBinaryPath(); - } - - public boolean isPieBuild() { - if (processInfo.getBinaryType() == 1) { - return true; - } - return false; - } - - public long getBaseAddress() { + public long getBaseAddress(int pid) { + ProcessInfo processInfo = processInfoHash.get(pid); return processInfo.getLowestAddress(); } - public long getHighestAddress() { + public long getHighestAddress(int pid) { + ProcessInfo processInfo = processInfoHash.get(pid); return processInfo.getHighestAddress(); } - public int getApplicationType() { - return processInfo.getAppType(); - } - public void setTotalProfilingSampleCount(int count) { FunctionUsageProfiler.getInstance().getProfileDataMaker() .setTotalSampleCount(count); @@ -327,4 +316,7 @@ public class Project { return replayEvent; } + public HashMap getProcessInfoHash() { + return processInfoHash; + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/resources/ImageResources.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/resources/ImageResources.java index 1d35eff..850d727 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/resources/ImageResources.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/resources/ImageResources.java @@ -86,7 +86,7 @@ public class ImageResources { public static final Image REPLAY_HOVER = getPngImage("toolbar_replay_hover"); //$NON-NLS-1$ public static final Image REPLAY_DISABLE = getPngImage("toolbar_replay_disable"); //$NON-NLS-1$ - public static final Image SETTINGS = getPngImage("toolbar_settings_nor"); //$NON-NLS-1$ + public static final Image SETTINGS_NORMAL = getPngImage("toolbar_settings_nor"); //$NON-NLS-1$ public static final Image SETTINGS_PUSH = getPngImage("toolbar_settings_push"); //$NON-NLS-1$ public static final Image SETTINGS_HOVER = getPngImage("toolbar_settings_hover"); //$NON-NLS-1$ public static final Image SETTINGS_DISABLE = getPngImage("toolbar_settings_disable"); //$NON-NLS-1$ @@ -173,7 +173,7 @@ public class ImageResources { public static final Image CHECKBOX_UNSELECTED_HOVER = getPngImage("checkbox_unselected_hover"); //$NON-NLS-1$ public static final Image CHECKBOX_UNSELECTED_DISABLE = getPngImage("checkbox_unselected_disable"); //$NON-NLS-1$ public static final Image CHECKBOX_SELECTED_DISABLE = getPngImage("checkbox_selected_disable"); //$NON-NLS-1$ - + // Failed API icon in table public static final Image FAILED_API_ICON_TABLE = getPngImage("fail_api"); //$NON-NLS-1$ @@ -263,7 +263,7 @@ public class ImageResources { public static final Image UI_EVENT = getPngImage("time_line_icon_UI_events"); //$NON-NLS-1$ public static final Image CHART_CUSTOM = getPngImage("time_line_icon_custom"); //$NON-NLS-1$ public static final Image CHART_NETWORK = getPngImage("time_line_icon_traffic"); //$NON-NLS-1$ - + /* Resource */ public static final Image TYPE_FILE = getPngImage("resource/resource_file"); //$NON-NLS-1$ public static final Image TYPE_SOCKET = getPngImage("resource/resource_socket"); //$NON-NLS-1$ @@ -360,11 +360,19 @@ public class ImageResources { public static final Image TAB_ICON_UI = getPngImage("tab_icon_userinterface"); //$NON-NLS-1$ public static final Image TAB_ICON_SUMMARY = getPngImage("tab_icon_summary"); //$NON-NLS-1$ public static final Image TAB_ICON_RANGE = getPngImage("tab_icon_range"); //$NON-NLS-1$ - + /* gl */ public static final Image GL_DROP_LEFT_ARROW = getPngImage("arrow_full_left"); //$NON-NLS-1$ public static final Image GL_DROP_DOWN_ARROW = getPngImage("arrow_full_down"); //$NON-NLS-1$ + public static final Image ICON_FILE = getGifImage("file"); //$NON-NLS-1$ + public static final Image ICON_FILE_LINK = getGifImage("file_link"); //$NON-NLS-1$ + public static final Image ICON_DIR = getGifImage("directory"); //$NON-NLS-1$ + public static final Image ICON_DIR_LINK = getGifImage("directory_link"); //$NON-NLS-1$ + public static final Image ICON_EMULATOR = getGifImage("emulator"); //$NON-NLS-1$ + public static final Image ICON_DEVICE = getGifImage("device"); //$NON-NLS-1$ + public static final Image ICON_OTHER = getGifImage("file"); //$NON-NLS-1$ + private static Image getImage(String pluginId, String folderName, String imageName, String extension) { if (null == imageRegistry.get(imageName) @@ -395,4 +403,7 @@ public class ImageResources { return getImage(imageName, CommonConstants.EXTENSION_PNG_IMAGE); } + private static Image getGifImage(String imageName) { + return getImage(imageName, CommonConstants.EXTENSION_GIF_IMAGE); + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/shortcut/ShortCutManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/shortcut/ShortCutManager.java index 13ed7d7..e5f2627 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/shortcut/ShortCutManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/shortcut/ShortCutManager.java @@ -188,8 +188,8 @@ public class ShortCutManager { .isButtonEnabled()) { Shell shell = AnalyzerUtil.getWorkbenchWindow().getShell(); SaveAsDialog dialog = new SaveAsDialog(shell); - int result = dialog.open(); - if (AnalyzerConstants.SUCCESS == result) { + Object result = dialog.open(); + if (result != null) { ToolbarArea.getInstance() .getButton(ToolbarArea.SAVE_BUTTON) .setButtonEnabled(false); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/DBTableManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/DBTableManager.java index c7f0ff8..55e6700 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/DBTableManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/DBTableManager.java @@ -121,12 +121,11 @@ public class DBTableManager { public static final String TARGET_INFO_CPU_CORE_COUNT = "CoreCount"; public static final String PROCESS_INFO_PID = "pid";//$NON-NLS-1$ + public static final String PROCESS_INFO_PPID = "ppid";//$NON-NLS-1$ public static final String PROCESS_INFO_START_TIME_SEC = "StartTimeSec"; public static final String PROCESS_INFO_START_TIME_NANO = "StartTimeNano"; public static final String PROCESS_INFO_LOW_ADDR = "LowAddr"; public static final String PROCESS_INFO_HIGH_ADDR = "HighAddr"; - public static final String PROCESS_INFO_APP_TYPE = "AppType"; - public static final String PROCESS_INFO_BINARY_TYPE = "BinaryType"; public static final String PROCESS_INFO_BINARY_PATH = "BinaryPath"; public static final String PROCESS_INFO_DEPLIB_COUNT = "DepLibCount"; @@ -179,10 +178,11 @@ public class DBTableManager { // "callstack units" table info block { - String[] names = { CUSTOM_COLUMN_ADDR, CUSTOM_COLUMN_API }; - String[] options = { "not null", + String[] names = { CUSTOM_COLUMN_ADDR, CUSTOM_COLUMN_API, + COMMON_COLUMN_PID }; + String[] options = { "not null", EMPTY, ",PRIMARY KEY(" + CUSTOM_COLUMN_ADDR + ")" }; - String[] types = { TEXT, "VARCHAR(512)" }; + String[] types = { TEXT, INTEGER, "VARCHAR(512)" }; DBTableInfo callstackUnitsTableInfo = new DBTableInfo( TABLE_NAME_CALLSTACK_UNITS, names, options, types); tableInfos @@ -272,15 +272,13 @@ public class DBTableManager { // process info { - String[] names = { PROCESS_INFO_PID, PROCESS_INFO_START_TIME_SEC, - PROCESS_INFO_START_TIME_NANO, PROCESS_INFO_LOW_ADDR, - PROCESS_INFO_HIGH_ADDR, PROCESS_INFO_APP_TYPE, - PROCESS_INFO_BINARY_TYPE, PROCESS_INFO_BINARY_PATH, - PROCESS_INFO_DEPLIB_COUNT }; + String[] names = { PROCESS_INFO_PID, PROCESS_INFO_PPID, + PROCESS_INFO_START_TIME_SEC, PROCESS_INFO_START_TIME_NANO, + PROCESS_INFO_LOW_ADDR, PROCESS_INFO_HIGH_ADDR, + PROCESS_INFO_BINARY_PATH, PROCESS_INFO_DEPLIB_COUNT }; String[] options = { EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - EMPTY, EMPTY, EMPTY }; - String[] types = { TEXT, TEXT, TEXT, TEXT, TEXT, TEXT, TEXT, TEXT, - TEXT }; + EMPTY, EMPTY }; + String[] types = { TEXT, TEXT, TEXT, TEXT, TEXT, TEXT, TEXT, TEXT }; DBTableInfo processInfoTableInfo = new DBTableInfo( TABLE_NAME_PROCESS_INFO, names, options, types); tableInfos.set(TABLE_INDEX_PROCESS_INFO, processInfoTableInfo); @@ -289,9 +287,10 @@ public class DBTableManager { // library object { String[] names = { LIBRARY_OBJECT_LOW_ADDR, - LIBRARY_OBJECT_HIGH_ADDR, LIBRARY_OBJECT_PATH }; - String[] options = { EMPTY, EMPTY, EMPTY }; - String[] types = { TEXT, TEXT, TEXT }; + LIBRARY_OBJECT_HIGH_ADDR, LIBRARY_OBJECT_PATH, + COMMON_COLUMN_PID }; + String[] options = { EMPTY, EMPTY, EMPTY, EMPTY }; + String[] types = { TEXT, TEXT, TEXT, TEXT }; DBTableInfo libObjTableInfo = new DBTableInfo(TABLE_NAME_LIB_OBJ, names, options, types); tableInfos.set(TABLE_INDEX_LIB_OBJ, libObjTableInfo); @@ -306,7 +305,7 @@ public class DBTableManager { options, types); tableInfos.set(TABLE_INDEX_APINAME, apiName); } - + { // gles20 context data table info GLContextDBEnum[] glContextDBEnum = GLContextDBEnum.values(); @@ -333,12 +332,12 @@ public class DBTableManager { TABLE_NAME_GLES20_CONTEXT_DATA, names, options, types); tableInfos.set(TABLE_INDEX_GLES20_CONTEXT_DATA, Gles20ContextTableInfo); - -// // gles20 context change info -// DBTableInfo Gles20ChangeInfoTableInfo = new DBTableInfo( -// TABLE_NAME_GLES20_CAHNGE_INFO, names, options, types); -// tableInfos.set(TABLE_INDEX_GLES20_CHANGE_INFO, -// Gles20ChangeInfoTableInfo); + + // // gles20 context change info + // DBTableInfo Gles20ChangeInfoTableInfo = new DBTableInfo( + // TABLE_NAME_GLES20_CAHNGE_INFO, names, options, types); + // tableInfos.set(TABLE_INDEX_GLES20_CHANGE_INFO, + // Gles20ChangeInfoTableInfo); } } 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 d930c0b..2bb330b 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java @@ -44,6 +44,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; +import java.util.Set; import java.util.concurrent.Semaphore; import org.tizen.dynamicanalyzer.common.AnalyzerConstants; @@ -55,6 +56,7 @@ import org.tizen.dynamicanalyzer.project.Project; import org.tizen.dynamicanalyzer.swap.model.RecordEventObject; import org.tizen.dynamicanalyzer.swap.model.control.TargetInfo; import org.tizen.dynamicanalyzer.swap.model.data.ApiNameManager; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.data.LibraryObject; import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo; import org.tizen.dynamicanalyzer.swap.model.probe.LogFormat; @@ -374,7 +376,7 @@ public class SqlManager { int dataRowSize = input.size(); for (int i = 0; i < dataRowSize; i++) { logData = input.get(i); - if (logData.getId() != AnalyzerConstants.MSG_DATA_RECORD) { + if (logData.getId() != DataChannelConstants.MSG_DATA_RECORD) { logData.makePreparedStatement(prep); prep.addBatch(); } else { @@ -460,32 +462,38 @@ public class SqlManager { public void insertProcessInfo() { DBTableInfo info = DBTableManager.getInstance().getTableInfo( DBTableManager.TABLE_INDEX_PROCESS_INFO); - String insertQuery = "insert into " + info.getTableName() + " values ( ?, ?, ?, ?, ?, ?, ?, ?, ? );"; //$NON-NLS-1$ - - ProcessInfo pInfo = AnalyzerManager.getProject().getProcessInfo(); - List insetRowData = new ArrayList(); - - insetRowData.add(Integer.toString(pInfo.getPid())); - insetRowData.add(Long.toString(pInfo.getStartTime().getSec())); - insetRowData.add(Long.toString(pInfo.getStartTime().getNano())); - insetRowData.add(Long.toString(pInfo.getLowestAddress())); - insetRowData.add(Long.toString(pInfo.getHighestAddress())); - insetRowData.add(Integer.toString(pInfo.getAppType())); - insetRowData.add(Integer.toString(pInfo.getBinaryType())); - insetRowData.add(pInfo.getBinaryPath()); - insetRowData.add(Integer.toString(pInfo.getDepLibCount())); - - List> insetData = new ArrayList>(); - insetData.add(insetRowData); + String insertQuery = "insert into " + info.getTableName() + " values ( ?, ?, ?, ?, ?, ?, ?, ? );"; //$NON-NLS-1$ + + HashMap processMap = AnalyzerManager.getProject() + .getProcessInfoHash(); + Set keysSet = AnalyzerManager.getProject() + .getProcessInfoHash().keySet(); + List keys = new ArrayList(); + keys.addAll(keysSet); + for (int i = 0; i < keys.size(); i++) { + ProcessInfo pInfo = processMap.get(keys.get(i)); + List insetRowData = new ArrayList(); + insetRowData.add(Integer.toString(pInfo.getPid())); + insetRowData.add(Integer.toString(pInfo.getPpid())); + insetRowData.add(Long.toString(pInfo.getStartTime().getSec())); + insetRowData.add(Long.toString(pInfo.getStartTime().getNano())); + insetRowData.add(Long.toString(pInfo.getLowestAddress())); + insetRowData.add(Long.toString(pInfo.getHighestAddress())); + insetRowData.add(pInfo.getBinaryPath()); + insetRowData.add(Integer.toString(pInfo.getDepLibCount())); + + List> insetData = new ArrayList>(); + insetData.add(insetRowData); - insertQuery(insertQuery, insetData); - insertLibObj(pInfo.getLibObjs()); + insertQuery(insertQuery, insetData); + insertLibObj(pInfo.getLibObjs()); + } } private void insertLibObj(List libs) { DBTableInfo info = DBTableManager.getInstance().getTableInfo( DBTableManager.TABLE_INDEX_LIB_OBJ); - String insertQuery = "insert into " + info.getTableName() + " values ( ?, ?, ?);"; //$NON-NLS-1$ + String insertQuery = "insert into " + info.getTableName() + " values ( ?, ?, ?, ?);"; //$NON-NLS-1$ List> insetData = new ArrayList>(); for (LibraryObject lib : libs) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/callstack/SWAPCallStackManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/callstack/SWAPCallStackManager.java index 02fbec1..fe2e34f 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/callstack/SWAPCallStackManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/callstack/SWAPCallStackManager.java @@ -27,8 +27,8 @@ package org.tizen.dynamicanalyzer.swap.callstack; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_ENTRY; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_EXIT; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_ENTRY; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_EXIT; import java.util.ArrayList; import java.util.HashMap; @@ -46,17 +46,19 @@ import org.tizen.dynamicanalyzer.swap.model.probe2.ProfileData; import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackData; import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackUnit; import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfileDataMaker; +import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; public class SWAPCallStackManager extends BaseCallstackManager { public void makeUserCallstack(LogData input, ProfileDataMaker profiler) { ProfileData log = (ProfileData) input; HashMap addrMap = getCallStackApiByAddrMap(); - boolean isPieBuild = AnalyzerManager.getProject().isPieBuild(); + boolean isPieBuild = AnalyzerUtil.isPieBuild(log.getPid()); String baseAddr = Long.toString(AnalyzerManager.getProject() - .getBaseAddress()); -// String binPath = AnalyzerManager.getProject().getBinaryPath(); - String binPath = DACommunicator.getSelectedApp().getBinInfo().getPath(); + .getBaseAddress(log.getPid())); + // String binPath = AnalyzerManager.getProject().getBinaryPath(); + String binPath = DACommunicator.getSelectedApp().getBinInfo() + .getLocalBinaryPath(); if (null == binPath || binPath.isEmpty()) { return; } @@ -78,7 +80,8 @@ public class SWAPCallStackManager extends BaseCallstackManager { String strSelfSymbol = getUserFunctionPosition() + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING + strSelfFuncName; - selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol); + selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol, + log.getPid()); addrMap.put(selfAddr, selfCallstackUnit); } @@ -95,7 +98,8 @@ public class SWAPCallStackManager extends BaseCallstackManager { String strCallerSymbol = getUserFunctionPosition() + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING + strCallerFuncName; - callerCallstackUnit = new CallStackUnit(callerAddr, strCallerSymbol); + callerCallstackUnit = new CallStackUnit(callerAddr, + strCallerSymbol, log.getPid()); addrMap.put(callerAddr, callerCallstackUnit); } @@ -107,13 +111,15 @@ public class SWAPCallStackManager extends BaseCallstackManager { if (!AnalyzerManager.isInBinaryRange(callerAddr)) { CallStackUnit callbackApi = new CallStackUnit( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, - LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL); + LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL, + log.getPid()); userCallstack.add(callbackApi); if (addrMap .get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) { CallStackUnit defaultCallstackUnit = new CallStackUnit( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, - LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL); + LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL, + log.getPid()); addrMap.put( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, defaultCallstackUnit); @@ -122,13 +128,15 @@ public class SWAPCallStackManager extends BaseCallstackManager { AnalyzerConstants.VIRTUAL_THUNK)) { CallStackUnit callbackApi = new CallStackUnit( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, - LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL); + LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL, + log.getPid()); userCallstack.add(callbackApi); if (addrMap .get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) { CallStackUnit defaultCallstackUnit = new CallStackUnit( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, - LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL); + LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL, + log.getPid()); addrMap.put( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, defaultCallstackUnit); @@ -212,16 +220,16 @@ public class SWAPCallStackManager extends BaseCallstackManager { } public void makeCallstackWithoutBacktrace(LogData inputData) { + ProbeCommonData log = (ProbeCommonData) inputData; HashMap addrMap = getCallStackApiByAddrMap(); - boolean isPieBuild = AnalyzerManager.getProject().isPieBuild(); + boolean isPieBuild = AnalyzerUtil.isPieBuild(log.getPid()); String baseAddr = Long.toString(AnalyzerManager.getProject() - .getBaseAddress()); - String binPath = AnalyzerManager.getProject().getBinaryPath(); + .getBaseAddress(log.getPid())); + String binPath = AnalyzerUtil.getBinaryPath(log.getPid()); if (null == binPath || binPath.isEmpty()) { return; } - ProbeCommonData log = (ProbeCommonData) inputData; int seq = log.getSeq(); int tid = log.getTid(); long callerAddr = log.getCallerPcAddr(); @@ -251,13 +259,15 @@ public class SWAPCallStackManager extends BaseCallstackManager { if ((size == 0) || (!AnalyzerManager.isInBinaryRange(callerAddr))) { CallStackUnit callbackApi = new CallStackUnit( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, - LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL); + LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL, + log.getPid()); probeCallstack.add(callbackApi); if (addrMap .get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) { CallStackUnit defaultCallstackUnit = new CallStackUnit( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, - LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL); + LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL, + log.getPid()); addrMap.put( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, defaultCallstackUnit); @@ -271,7 +281,7 @@ public class SWAPCallStackManager extends BaseCallstackManager { + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING + strCallerFuncName; callerCallstackUnit = new CallStackUnit(callerAddr, - strCallerSymbol); + strCallerSymbol, log.getPid()); addrMap.put(callerAddr, callerCallstackUnit); } @@ -299,11 +309,12 @@ public class SWAPCallStackManager extends BaseCallstackManager { HashMap addrMap = getCallStackApiByAddrMap(); HashMap dupUserCallMap = getDupUserCallByTidMap(); - boolean isPieBuild = AnalyzerManager.getProject().isPieBuild(); + boolean isPieBuild = AnalyzerUtil.isPieBuild(input.getPid()); String baseAddr = Long.toString(AnalyzerManager.getProject() - .getBaseAddress()); + .getBaseAddress(input.getPid())); // String binPath = AnalyzerManager.getProject().getBinaryPath(); - String binPath = DACommunicator.getSelectedApp().getBinInfo().getPath(); + String binPath = DACommunicator.getSelectedApp().getBinInfo() + .getLocalBinaryPath(); if (null == binPath || binPath.isEmpty()) { return false; } @@ -321,7 +332,8 @@ public class SWAPCallStackManager extends BaseCallstackManager { String strSelfSymbol = getUserFunctionPosition() + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING + strSelfFuncName; - selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol); + selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol, + log.getPid()); addrMap.put(selfAddr, selfCallstackUnit); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java index 452764c..f9c1273 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java @@ -44,12 +44,15 @@ import java.net.SocketException; import java.net.SocketTimeoutException; import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; +import org.tizen.dynamicanalyzer.common.AnalyzerPaths; import org.tizen.dynamicanalyzer.common.AnalyzerShellCommands; import org.tizen.dynamicanalyzer.common.CommonConstants; +import org.tizen.dynamicanalyzer.common.ElfSymbolExtracter; import org.tizen.dynamicanalyzer.common.ErrorCode; import org.tizen.dynamicanalyzer.common.HostResult; import org.tizen.dynamicanalyzer.communicator.BaseCommunicator; @@ -61,6 +64,7 @@ import org.tizen.dynamicanalyzer.nl.ConfigureLabels; import org.tizen.dynamicanalyzer.project.PackageInfo; import org.tizen.dynamicanalyzer.swap.logparser.SWAPLogParser; import org.tizen.dynamicanalyzer.swap.model.ByteUtils; +import org.tizen.dynamicanalyzer.swap.model.DATime; import org.tizen.dynamicanalyzer.swap.model.control.ApplicationInfo; import org.tizen.dynamicanalyzer.swap.model.control.ApplicationInst; import org.tizen.dynamicanalyzer.swap.model.control.BinaryInfo; @@ -68,6 +72,9 @@ import org.tizen.dynamicanalyzer.swap.model.control.FunctionInst; import org.tizen.dynamicanalyzer.swap.model.control.RunTimeConfiguration; import org.tizen.dynamicanalyzer.swap.model.control.TargetInfo; import org.tizen.dynamicanalyzer.swap.model.control.UserSpaceInst; +import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataUtils; +import org.tizen.dynamicanalyzer.swap.platform.BinarySettingData; +import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager; import org.tizen.dynamicanalyzer.ui.file.FileChartManager; import org.tizen.dynamicanalyzer.ui.network.NetworkChartManager; import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler; @@ -78,11 +85,12 @@ import org.tizen.dynamicanalyzer.ui.userinterface.UIDataManager; import org.tizen.dynamicanalyzer.uirecorder.UIRecorderTool; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; import org.tizen.dynamicanalyzer.utils.UpdateViewTimer; -import org.tizen.sdblib.receiver.MultiLineReceiver; +import org.tizen.sdblib.exception.SdbCommandRejectedException; +import org.tizen.sdblib.exception.TimeoutException; +import org.tizen.sdblib.service.SyncResult; public class Communicator30 extends BaseCommunicator { private boolean isInit = false; - private static List binaryHashMultiLines = new ArrayList(); @Override public HostResult init() { @@ -166,6 +174,14 @@ public class Communicator30 extends BaseCommunicator { removeList.clear(); } + for (DeviceInfo devInfo : devices) { + HostResult result = sendRuntimeMessage(0, null); + if (!result.isSuccess()) { + System.out.println(result.toString()); + removeList.add(devInfo); + } + } + if (devices.isEmpty()) { System.out.println("device init faiiled..."); // TODO: close da @@ -196,13 +212,11 @@ public class Communicator30 extends BaseCommunicator { appInfo.setExecPath(selectedApp.getInfo(PackageInfo.EXEC_INDEX) + ".exe"); - RunTimeConfiguration rt = new RunTimeConfiguration(); - rt.setFeatures(ConfigureManager.getInstance().getConfiguration()); + UserSpaceInst userSpaceInst = getUserSpaceInst(appInfo); byte[] replayData = AnalyzerManager.getProject().getReplayEvent(); - UserSpaceInst userSpaceInst = getUserSpaceInst(appInfo); - byte[] rear = ByteUtils.getByte(appInfo.getByteValue(), - rt.getByteValue(), userSpaceInst.getByteValue(), replayData); + byte[] rear = ByteUtils.getByte(userSpaceInst.getByteValue(), + replayData); int length = rear.length; byte[] ret = ByteUtils.getByte(AnalyzerConstants.MSG_START_SWAP, @@ -231,6 +245,17 @@ public class Communicator30 extends BaseCommunicator { return result; } + // success start trace!! + byte[] payload = getMessagePayload(result.getRet()); + DATime profilingStartTime = new DATime(); + int index = 0; + int sec = ByteUtils.toInt(payload, index); + index += INT_SIZE; + int nano = ByteUtils.toInt(payload, index); + index += INT_SIZE; + profilingStartTime.setSec(sec); + profilingStartTime.setNano(nano); + UIRecorderTool.getInstance().startRecorder(); ToolbarArea.getInstance().startTimer(); SWAPLogParser.startLogParser(); @@ -288,8 +313,6 @@ public class Communicator30 extends BaseCommunicator { System.out.println(); } appInst.setFunctionCount(size - exSize); - appInst.setLibcount(0); - appInst.setLibraryInstList(null); output.getAppInstList().add(appInst); return output; } @@ -298,19 +321,19 @@ public class Communicator30 extends BaseCommunicator { // send config message byte[] msgBinInfo = ByteUtils .toBytes(AnalyzerConstants.MSG_BINARY_INFO); - ApplicationInfo appInfo = new ApplicationInfo(); - String appType = selectedApp.getInfo(PackageInfo.APPTYPE_INDEX); - if (appType.contains(PackageInfo.APPTYPE_CPP)) { - appInfo.setAppType(ApplicationInfo.APPTYPE_TIZEN); - } else { - appInfo.setAppType(ApplicationInfo.APPTYPE_COMMON_EXEC); + + int binCount = 1; // FIXME + String targetPath = selectedApp.getInfo(PackageInfo.EXEC_INDEX); + String type = selectedApp.getInfo(PackageInfo.APPTYPE_INDEX); + int appType = ApplicationInfo.APPTYPE_TIZEN; + if (type.contains(PackageInfo.APPTYPE_CPP)) { + targetPath += CommonConstants.EXTENSION_EXEC_FILE; } - appInfo.setAppId(selectedApp.getInfo(PackageInfo.APPID_INDEX)); - appInfo.setExecPath(selectedApp.getInfo(PackageInfo.EXEC_INDEX)); - int length = appInfo.getByteValue().length; - byte[] msg = ByteUtils.getByte(msgBinInfo, length, - appInfo.getByteValue()); + byte[] preMsg = ByteUtils.getByte(binCount, targetPath); + + int length = preMsg.length; + byte[] msg = ByteUtils.getByte(msgBinInfo, length, preMsg); HostResult result = handleControlMessage( DACommunicator.getSelectedDevice(), msg); @@ -322,141 +345,125 @@ public class Communicator30 extends BaseCommunicator { // parse binary info byte[] payload = getMessagePayload(result.getRet()); BinaryInfo binInfo = new BinaryInfo(); + binInfo.setTargetBinaryPath(targetPath); selectedApp.setBinInfo(binInfo); - int binaryType = ByteUtils.toInt(payload, 0); + int index = 0; + int count = ByteUtils.toInt(payload, index); + index += INT_SIZE; + String localBinaryPath = null; + // FIXME + for (int i = 0; i < count; i++) { + int binaryType = ByteUtils.toInt(payload, index); + index += INT_SIZE; + localBinaryPath = ByteUtils.getString(payload, index).trim(); + String[] splitLocalBinaryPath = localBinaryPath + .split(CommonConstants.SLASH); + if (null == splitLocalBinaryPath[0] + || splitLocalBinaryPath[0].isEmpty()) { + localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH + + File.separator + getFileName(targetPath); + result = pullTheFile(targetPath, localBinaryPath); + if (result.isSuccess()) { + binInfo.setLocalBinaryPath(localBinaryPath); + } + index += ByteUtils.getStringLength(payload, index); + String md5sum = ByteUtils.getString(payload, index); + binInfo.setType(binaryType); + binInfo.setLocalBinaryPath(localBinaryPath); + binInfo.setMd5sumValue(md5sum); + return result; + } else { + index += ByteUtils.getStringLength(payload, index); + String md5sum = ByteUtils.getString(payload, index); + binInfo.setType(binaryType); + binInfo.setLocalBinaryPath(localBinaryPath); + binInfo.setMd5sumValue(md5sum); + } - String targetPath = selectedApp.getInfo(PackageInfo.EXEC_INDEX); - if (appInfo.getAppType() == ApplicationInfo.APPTYPE_TIZEN) { - targetPath += CommonConstants.EXTENSION_EXEC_FILE; - } - String binaryDir = ByteUtils.getString(payload, INT_SIZE).trim(); - String binaryPath = null; - if (null == binaryDir) { - // return HostResult.ERR_BIN_INFO_GET_FAIL; - binaryPath = CommonConstants.EMPTY; - } - - StringBuffer strBuf = new StringBuffer(); - strBuf.append(binaryDir).append(File.separator) - .append(selectedApp.getExecFileName(appInfo.getAppType())); - binaryPath = strBuf.toString(); - binInfo.setType(binaryType); - binInfo.setPath(binaryPath); - - // host has no binary file - pull binary file from target - // change binary file path of host - File binFile = new File(binaryPath); - if (!binFile.exists()) { - // binaryPath = AnalyzerPaths.TEMP_FOLDER_PATH + File.separator - // + selectedApp.getExecFileName(appInfo.getAppType()); - // try { - // DACommunicator.getSelectedDevice().getIDevice() - // .becomeSuperUser(true); - // } catch (TimeoutException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } catch (SdbCommandRejectedException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } catch (IOException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } - // - // SyncResult res = CommunicatorUtils.pull(targetPath, binaryPath); - // if (null != res && res.isOk()) { - // System.out.println("binary copy success!!");//$NON-NLS-1$ - // } else { - // System.out.println("Failed to get " + targetPath); //$NON-NLS-1$ - // return HostResult.ERR_BIN_INFO_GET_FAIL; - // } - // binInfo.setPath(binaryPath); - // return result; - } - - // host has binary then compare binary hash target and local - String command = AnalyzerShellCommands.CMD_DA_MD_5_SUM + targetPath; - - CommunicatorUtils.execHostCommand(command, new MultiLineReceiver() { - @Override - public void processNewLines(String[] appLines) { - binaryHashMultiLines.clear(); - for (int i = 0; i < appLines.length; i++) { - binaryHashMultiLines.add(appLines[i]); + // host has no binary file - pull binary file from target + // change binary file path of host + File binFile = new File(localBinaryPath); + if (!binFile.exists()) { + localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH + + File.separator + getFileName(targetPath); + result = pullTheFile(targetPath, localBinaryPath); + if (result.isSuccess()) { + binInfo.setLocalBinaryPath(localBinaryPath); } + return result; } - }); - - String commandResult = binaryHashMultiLines.get(0); - String[] splitResult = commandResult.trim() - .split(CommonConstants.SPACE); - String targetHashCode = new String(splitResult[0]); - String localHashCode = null; - command = AnalyzerShellCommands.CMD_MD_5_SUM + "\"" + binaryPath + "\""; - try { - Runtime rt = Runtime.getRuntime(); - Process process = rt.exec(new String[] { - AnalyzerShellCommands.CMD_MD_5_SUM, binaryPath }); - process.waitFor(); - BufferedReader reader = new BufferedReader(new InputStreamReader( - process.getInputStream())); - BufferedReader error = new BufferedReader(new InputStreamReader( - process.getErrorStream())); - String line = reader.readLine(); - String errorStr = error.readLine(); - if (null == line) { - System.out.println("host md5sum get failed : " + errorStr); + + String localHashCode = null; + try { + Runtime rt = Runtime.getRuntime(); + Process process = rt.exec(new String[] { + AnalyzerShellCommands.CMD_MD_5_SUM, localBinaryPath }); + process.waitFor(); + BufferedReader reader = new BufferedReader( + new InputStreamReader(process.getInputStream())); + BufferedReader error = new BufferedReader( + new InputStreamReader(process.getErrorStream())); + String line = reader.readLine(); + String errorStr = error.readLine(); + if (null == line) { + System.out.println("host md5sum get failed : " + errorStr); + return HostResult.ERR_BIN_INFO_GET_FAIL; + } + String[] splitResult = line.trim().split(CommonConstants.SPACE); + localHashCode = new String(splitResult[0]); + } catch (IOException e) { + e.printStackTrace(); return HostResult.ERR_BIN_INFO_GET_FAIL; + } catch (InterruptedException e) { + e.printStackTrace(); } - splitResult = line.trim().split(CommonConstants.SPACE); - localHashCode = new String(splitResult[0]); - } catch (IOException e) { + String targetHashCode = binInfo.getMd5sumValue(); + if (!targetHashCode.equals(localHashCode)) { + localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH + + File.separator + getFileName(targetPath); + result = pullTheFile(targetPath, localBinaryPath); + if (result.isSuccess()) { + binInfo.setLocalBinaryPath(localBinaryPath); + } + return result; + } + } + return result; + } + + private String getFileName(String fullPath) { + if (null == fullPath || fullPath.isEmpty()) { + return null; + } + String[] splitPath = fullPath.split(CommonConstants.SLASH); + return new String(splitPath[splitPath.length - 1]); + } + + private HostResult pullTheFile(String from, String to) { + + try { + DACommunicator.getSelectedDevice().getIDevice().setRootUser(true); + } catch (TimeoutException e) { + // TODO Auto-generated catch block e.printStackTrace(); - return HostResult.ERR_BIN_INFO_GET_FAIL; - } catch (InterruptedException e) { + } catch (SdbCommandRejectedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block e.printStackTrace(); } - // hash code is not same - get binary from target - // change binary file path of host - - // FIXME: permission denied problem - - if (!targetHashCode.equals(localHashCode)) { - // String destFilePath = AnalyzerPaths.TEMP_FOLDER_PATH - // + File.separator - // + selectedApp.getExecFileName(appInfo.getAppType()); - // try { - // DACommunicator.getSelectedDevice().getIDevice() - // .becomeSuperUser(true); - // } catch (TimeoutException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } catch (SdbCommandRejectedException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } catch (IOException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } - // - // SyncResult res = CommunicatorUtils.pull(targetPath, - // destFilePath); - // if (null != res && res.isOk()) { - // System.out.println("binary copy success!!");//$NON-NLS-1$ - // } else { - // System.out.println("Failed to get " + targetPath + " step 2"); //$NON-NLS-1$ - // return HostResult.ERR_BIN_INFO_GET_FAIL; - // } - // String[] splitName = binaryPath.split(CommonConstants.SLASH); - // binaryPath = AnalyzerPaths.TEMP_FOLDER_PATH + File.separator - // + new String(splitName[splitName.length - 1]); - // binInfo.setPath(binaryPath); - } - binInfo.setPath(binaryPath); - - return result; + SyncResult res = CommunicatorUtils.pull(from, to); + if (null != res && res.isOk()) { + System.out.println("binary copy success!!");//$NON-NLS-1$ + } else { + System.out.println("Failed to get " + from); //$NON-NLS-1$ + return HostResult.ERR_BIN_INFO_GET_FAIL; + } + // binInfo.setLocalBinaryPath(localBinaryPath); + return HostResult.SUCCESS; } @Override @@ -536,7 +543,7 @@ public class Communicator30 extends BaseCommunicator { int msgId = ByteUtils.toInt(message); System.out.println("wait for ack... [send message : " + msgId + " ]"); - + int readsize = -1; // read buffer size is sufficient?? byte[] cbuf = new byte[DACommunicator.READ_BUFFER_SIZE * 2]; @@ -717,6 +724,8 @@ public class Communicator30 extends BaseCommunicator { String networkType = null; int maxBrightness = 0; int numberOfCPU = 0; + int numberOfDevice = 0; + String deviceList = null; systemMemorySize = ByteUtils.toLong(payload, index); index += LONG_SIZE; @@ -735,6 +744,17 @@ public class Communicator30 extends BaseCommunicator { maxBrightness = ByteUtils.toInt(payload, index); index += INT_SIZE; numberOfCPU = ByteUtils.toInt(payload, index); + index += INT_SIZE; + numberOfDevice = ByteUtils.toInt(payload, index); + index += INT_SIZE; + + for (int i = 0; i < numberOfDevice; i++) { + deviceList += LogDataUtils.getString(index, payload); + if (i + 1 != numberOfDevice) { + deviceList += CommonConstants.COMMA; + } + index += LogDataUtils.getStringLength(index, payload); + } tInfo.setSystemMemorySize(systemMemorySize); tInfo.setStorageSize(storageSize); @@ -745,6 +765,8 @@ public class Communicator30 extends BaseCommunicator { tInfo.setNetworkType(networkType); tInfo.setMaxBrightness(maxBrightness); tInfo.setCpuCount(numberOfCPU); + tInfo.setDeviceCount(numberOfDevice); + tInfo.setDevices(deviceList); return tInfo; } @@ -827,4 +849,207 @@ public class Communicator30 extends BaseCommunicator { System.out.println("binary info get failed :" + hr.getMessage()); } } + + public HostResult sendSWAPMessage(int messageId) { + List settings = BinarySettingManager.getInstance() + .getBinarySettings(); + HashMap targetBinInfoMap = BinarySettingManager + .getInstance().getTargetBinInfoMap(); + byte[] msg = new byte[0]; + int count = settings.size(); + int failedCount = 0; + msg = ByteUtils.getByte(msg, messageId); + byte[] libInst = new byte[0]; + for (int a = 0; a < count; a++) { + String binaryPath = settings.get(a).getBinaryPath(); + BinaryInfo binInfo = targetBinInfoMap.get(binaryPath); + String localPath = binInfo.getLocalBinaryPath(); + + ElfSymbolExtracter symbolExtractor = new ElfSymbolExtracter(); + if (!symbolExtractor.makeSymbol(localPath)) { + failedCount++; + continue; + } + List symbols = symbolExtractor.getAddrSymbolPairs(); + List functionInstList = new ArrayList(); + + int size = (symbols == null) ? 0 : symbols.size(); + int exSize = 0; + FunctionInst functionInst = new FunctionInst(); + for (int i = 0; i < size; i++) { + AddrSymbolPair addrSymbol = symbols.get(i); + String symbol = addrSymbol.getSymbol(); + // FIXME: black list hard coded. + if (symbol.contains("__i686.get_pc_thunk")) { + exSize++; + continue; + } + functionInst.setAddr(addrSymbol.getAddr()); + functionInst.setArgs(getFunctionArgs(addrSymbol.getSymbol())); + functionInstList.add(functionInst); + + // for debug + System.out.print("DEBUG : addr "); + AnalyzerUtil.printHexdecimal(addrSymbol.getAddr()); + System.out.print(" symbol " + addrSymbol.getSymbol() + + " args "); + ByteUtils.printByteArray(functionInst.getArgs()); + System.out.println(); + } + size = size - exSize; + libInst = ByteUtils.getByte(libInst, binaryPath, size); + for (int i = 0; i < size; i++) { + libInst = ByteUtils.getByte(libInst, functionInstList.get(i) + .getByteValue()); + } + System.out.println("debug"); + } + count = count - failedCount; + libInst = ByteUtils.getByte(libInst, count); + int length = libInst.length; + msg = ByteUtils.getByte(msg, length, libInst); + + ByteUtils.printByteArrayForStart(msg); + HostResult result = handleControlMessage( + DACommunicator.getSelectedDevice(), msg); + + int ackMsg = AnalyzerConstants.MSG_SWAP_INST_ADD_ACK; + if (messageId == AnalyzerConstants.MSG_SWAP_INST_REMOVE) { + ackMsg = AnalyzerConstants.MSG_SWAP_INST_REMOVE_ACK; + } + if (!result.isSuccess() || !isCorrectAck(ackMsg, result)) { + return HostResult.ERR_BIN_INFO_GET_FAIL; + } + + return HostResult.SUCCESS; + } + + public HostResult sendBinaryInfoMessageForLib() { + List binaryData = BinarySettingManager.getInstance() + .getBinarySettings(); + List binPaths = new ArrayList(); + List binInfoList = new ArrayList(); + + for (BinarySettingData data : binaryData) { + binPaths.add(data.getBinaryPath()); + BinaryInfo binInfo = new BinaryInfo(); + binInfo.setTargetBinaryPath(data.getBinaryPath()); + binInfoList.add(binInfo); + } + + int binCount = binPaths.size(); + byte[] sendBin = new byte[0]; + sendBin = ByteUtils.getByte(binCount); + + for (int i = 0; i < binCount; i++) { + String targetPath = binPaths.get(i); + sendBin = ByteUtils.getByte(sendBin, targetPath); + } + int length = sendBin.length; + byte[] msg = ByteUtils.getByte(AnalyzerConstants.MSG_BINARY_INFO, + length, sendBin); + HostResult result = handleControlMessage( + DACommunicator.getSelectedDevice(), msg); + + if (!result.isSuccess() || !isCorrectAck(MSG_BINARY_INFO_ACK, result)) { + return HostResult.ERR_BIN_INFO_GET_FAIL; + } + + // parse binary info + byte[] payload = getMessagePayload(result.getRet()); + int index = 0; + int count = ByteUtils.toInt(payload, index); + index += INT_SIZE; + String localBinaryPath = null; + if (binCount != count) { + System.out.println("BinInfo ack is not valid"); + return null; + } + for (int i = 0; i < binCount; i++) { + BinaryInfo binInfo = binInfoList.get(i); + int binaryType = ByteUtils.toInt(payload, index); + index += INT_SIZE; + localBinaryPath = ByteUtils.getString(payload, index).trim(); + String[] splitLocalBinaryPath = localBinaryPath + .split(CommonConstants.SLASH); + if (null == splitLocalBinaryPath[0] + || splitLocalBinaryPath[0].isEmpty()) { + localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH + + File.separator + getFileName(binPaths.get(i)); + result = pullTheFile(binPaths.get(i), localBinaryPath); + if (result.isSuccess()) { + binInfo.setLocalBinaryPath(localBinaryPath); + + index += ByteUtils.getStringLength(payload, index); + String md5sum = ByteUtils.getString(payload, index); + binInfo.setType(binaryType); + binInfo.setLocalBinaryPath(localBinaryPath); + binInfo.setMd5sumValue(md5sum); + index += ByteUtils.getStringLength(payload, index); + } + continue; + } else { + index += ByteUtils.getStringLength(payload, index); + String md5sum = ByteUtils.getString(payload, index); + binInfo.setType(binaryType); + binInfo.setLocalBinaryPath(localBinaryPath); + binInfo.setMd5sumValue(md5sum); + index += ByteUtils.getStringLength(payload, index); + } + + // host has no binary file - pull binary file from target + // change binary file path of host + File binFile = new File(localBinaryPath); + if (!binFile.exists()) { + localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH + + File.separator + getFileName(binPaths.get(i)); + result = pullTheFile(binPaths.get(i), localBinaryPath); + if (result.isSuccess()) { + binInfo.setLocalBinaryPath(localBinaryPath); + } + continue; + } + + String localHashCode = null; + try { + Runtime rt = Runtime.getRuntime(); + Process process = rt.exec(new String[] { + AnalyzerShellCommands.CMD_MD_5_SUM, localBinaryPath }); + process.waitFor(); + BufferedReader reader = new BufferedReader( + new InputStreamReader(process.getInputStream())); + BufferedReader error = new BufferedReader( + new InputStreamReader(process.getErrorStream())); + String line = reader.readLine(); + String errorStr = error.readLine(); + if (null == line) { + System.out.println("host md5sum get failed : " + errorStr); + continue; + } + String[] splitResult = line.trim().split(CommonConstants.SPACE); + localHashCode = new String(splitResult[0]); + } catch (IOException e) { + e.printStackTrace(); + continue; + } catch (InterruptedException e) { + e.printStackTrace(); + continue; + } + + String targetHashCode = binInfo.getMd5sumValue(); + if (!targetHashCode.equals(localHashCode)) { + localBinaryPath = AnalyzerPaths.TEMP_FOLDER_PATH + + File.separator + getFileName(binPaths.get(i)); + result = pullTheFile(binPaths.get(i), localBinaryPath); + if (result.isSuccess()) { + binInfo.setLocalBinaryPath(localBinaryPath); + } + continue; + } else { + binInfo.setLocalBinaryPath(localBinaryPath); + } + } + BinarySettingManager.getInstance().addBinaryInfos(binInfoList); + return result; + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java index 1a11f7c..4999d6c 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java @@ -33,6 +33,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.Socket; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Timer; import java.util.TimerTask; @@ -58,8 +59,6 @@ import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory; import org.tizen.dynamicanalyzer.ui.toolbar.StopLogProcessor; import org.tizen.dynamicanalyzer.ui.toolbar.StopProcessManager; import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; -import org.tizen.dynamicanalyzer.uirecorder.RecordingQueue; -import org.tizen.dynamicanalyzer.uirecorder.UIRecorderRecordThread; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; import org.tizen.sdblib.service.SyncResult; @@ -133,37 +132,43 @@ public class MessageParser { } private void processProcessInfo(byte[] data) { - ProcessInfo pInfo = AnalyzerManager.getProject().getProcessInfo(); + HashMap processMap = AnalyzerManager.getProject() + .getProcessInfoHash(); int pid = 0; - DATime startTime = new DATime(); + int ppid = 0; + DATime processStartTime = new DATime(); long lowAddr = 0; long highAddr = 0; - int appType = 0; - int binaryType = 0; String binaryPath = null; int dependantLibCount = 0; int index = MSG_HEADER_SIZE; pid = ByteUtils.toInt(data, index); index += INT_SIZE; + ppid = ByteUtils.toInt(data, index); + index += INT_SIZE; int sec = ByteUtils.toInt(data, index); index += INT_SIZE; int nano = ByteUtils.toInt(data, index); index += INT_SIZE; - startTime.setSec(sec); - startTime.setNano(nano); + processStartTime.setSec(sec); + processStartTime.setNano(nano); lowAddr = ByteUtils.toLong(data, index); index += LONG_SIZE; highAddr = ByteUtils.toLong(data, index); index += LONG_SIZE; - binaryType = ByteUtils.toInt(data, index); - index += INT_SIZE; binaryPath = ByteUtils.getString(data, index); index += ByteUtils.getStringLength(data, index); dependantLibCount = ByteUtils.toInt(data, index); index += INT_SIZE; + ProcessInfo pInfo = processMap.get(pid); + if (null == pInfo) { + pInfo = new ProcessInfo(); + processMap.put(pid, pInfo); + } + List libObjs = pInfo.getLibObjs(); for (int i = 0; i < dependantLibCount; i++) { LibraryObject libObj = new LibraryObject(); @@ -179,7 +184,20 @@ public class MessageParser { libObjs.add(libObj); } + DATime startTime = AnalyzerManager.getProject().getStartTime(); + int startSec = AnalyzerManager.getProject().getStartTime().getSec(); + int startNano = AnalyzerManager.getProject().getStartTime().getNano(); + + if (0 == startSec && 0 == startNano) { + startTime.setSec(sec); + startTime.setNano(nano); + AnalyzerManager.getProject().setStartTime(startTime); + startSec = sec; + startNano = nano; + } + pInfo.setPid(pid); + pInfo.setPpid(ppid); System.out.println("process info start time : " + startTime.getSec() + " " + startTime.getNano() + " startTime : " + pInfo.getStartTime().getSec() + " " @@ -187,8 +205,6 @@ public class MessageParser { pInfo.setStartTime(startTime); pInfo.setLowestAddress(lowAddr); pInfo.setHighestAddress(highAddr); - pInfo.setAppType(appType); - pInfo.setBinaryType(binaryType); pInfo.setBinaryPath(binaryPath); pInfo.setDepLibCount(dependantLibCount); @@ -202,11 +218,6 @@ public class MessageParser { return name; } - private void processRecordLog(final String record) { - RecordingQueue rq = UIRecorderRecordThread.getRecordingQueue(); - rq.putLog(record); - } - private void processImage(final String from) { final String fileName = getImageName(from); final String to = AnalyzerManager.getProject().getSavePath() @@ -272,16 +283,16 @@ public class MessageParser { break; } - //LOG! -// ByteUtils.printByteArray(header); - + // LOG! + // ByteUtils.printByteArray(header); + int id = ByteUtils.toInt(header, 0); int seq = ByteUtils.toInt(header, INT_SIZE); - + // for debug -// System.out.print("sequence : " + seq + " id :"); -// AnalyzerUtil.printHexdecimal(id); -// System.out.println(); + System.out.print("sequence : " + seq + " id :"); + AnalyzerUtil.printHexdecimal(id); + System.out.println(); int payloadSize = ByteUtils.toInt(header, MSG_PAYLOAD_SIZE_INDEX); byte[] payload = null; @@ -310,7 +321,7 @@ public class MessageParser { payloadSize); processMessage(buffer); - if (id == AnalyzerConstants.MSG_DATA_TERMINATE) { + if (id == DataChannelConstants.MSG_DATA_TERMINATE) { System.out.println("message data terminate arrived!!!"); break; } @@ -368,23 +379,23 @@ public class MessageParser { int id = ByteUtils.toInt(data, 0); LogData log = null; switch (id) { - case DataChannelConstants.MSG_PROCESS_INFO: + case DataChannelConstants.MSG_DATA_PROCESS_INFO: // setting process info processProcessInfo(data); break; - case DataChannelConstants.MSG_TERMINATE: + case DataChannelConstants.MSG_DATA_TERMINATE: processTerminate(); break; - case DataChannelConstants.MSG_ERROR: + case DataChannelConstants.MSG_DATA_ERROR: // process error message break; - case DataChannelConstants.MSG_SYSTEM: - case DataChannelConstants.MSG_SAMPLE: + case DataChannelConstants.MSG_DATA_SAMPLE: + case DataChannelConstants.MSG_DATA_SYSTEM: case DataChannelConstants.MSG_FUNCTION_ENTRY: case DataChannelConstants.MSG_FUNCTION_EXIT: case DataChannelConstants.MSG_CONTEXT_SWITCH_ENTRY: case DataChannelConstants.MSG_CONTEXT_SWITCH_EXIT: - case DataChannelConstants.MSG_RECORD: + case DataChannelConstants.MSG_DATA_RECORD: if (AnalyzerManager.isProcessInfoArrived()) { // make log log = LogDataFactory.createInstance(data); @@ -395,8 +406,8 @@ public class MessageParser { } break; default: // MSG_PROBE - if (AnalyzerManager.isProcessInfoArrived() && id > 0x3000 - && id < 0x4000) { + if (AnalyzerManager.isProcessInfoArrived() && id > 0x0100 + && id < 0x0200) { log = LogDataFactory.createInstance(data); if (null != log) { buffer.add(log); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/SWAPLogParser.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/SWAPLogParser.java index 5914f15..969ad59 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/SWAPLogParser.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/SWAPLogParser.java @@ -38,6 +38,7 @@ import org.tizen.dynamicanalyzer.logparser.LogInserter; import org.tizen.dynamicanalyzer.model.ImageInfo; import org.tizen.dynamicanalyzer.nl.InformationViewLabels; import org.tizen.dynamicanalyzer.swap.model.data.ApiNameManager; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.ContextSwitchData; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.ProbeCommonData; @@ -157,11 +158,6 @@ public class SWAPLogParser implements Runnable { continue; } } - - // for debug - // System.out.println("CallerPCAddr : " - // + ((ProbeCommonData) log).getCallerPcAddr()); - // AnalyzerUtil.printHexdecimal(id); } int seqNum = log.getSeq(); @@ -209,9 +205,8 @@ public class SWAPLogParser implements Runnable { .getProfileDataMaker()); } else if (log instanceof ReplayData) { pushLog(log, logPack); - }else if (log instanceof ContextSwitchData) - { -// printContextSwitchData(log); + } else if (log instanceof ContextSwitchData) { + // printContextSwitchData(log); pushLog(log, logPack); } else { if (log instanceof ScreenShotData) { @@ -233,8 +228,8 @@ public class SWAPLogParser implements Runnable { pushLog(log, logPack); AnalyzerManager.getCallstackManager() .makeCallstackWithoutBacktrace(log); - if (id == AnalyzerConstants.MSG_PROBE_FILE - || id == AnalyzerConstants.MSG_PROBE_MEMORY) { + if (id == DataChannelConstants.MSG_PROBE_FILE + || id == DataChannelConstants.MSG_PROBE_MEMORY) { AnalyzerManager.getLeakDetector().runLeakDectect(log); } @@ -328,39 +323,40 @@ public class SWAPLogParser implements Runnable { boolean isPieBuild = (DACommunicator.getSelectedApp().getBinInfo() .getType() == 1) ? true : false; String baseAddr = Long.toString(AnalyzerManager.getProject() - .getBaseAddress()); + .getBaseAddress(input.getPid())); String highAddr = Long.toString(AnalyzerManager.getProject() - .getHighestAddress()); - String path = DACommunicator.getSelectedApp().getBinInfo().getPath(); + .getHighestAddress(input.getPid())); + String path = DACommunicator.getSelectedApp().getBinInfo() + .getLocalBinaryPath(); String pcAddr = Long.toString(input.getPcAddr()); String functionName = SymbolManager.addr2func(path, pcAddr, isPieBuild, baseAddr); /** debug code */ -// if (input.getId() != 0x2006 && input.getProbeType() == 1) { -// if (input.getId() != 0x2006 ) { -// if (input.getId() == 0x2006) { -// System.out.print("seq : " + input.getSeq()); -// System.out.print(" id : "); -// AnalyzerUtil.printHexdecimal(input.getId()); -// System.out.print(" function name : " + functionName + "[ low :"); -// AnalyzerUtil.printHexdecimal(Long.parseLong(baseAddr)); -// System.out.print(" high : "); -// AnalyzerUtil.printHexdecimal(Long.parseLong(highAddr)); -// System.out.print(" pcAddr : "); -// AnalyzerUtil.printHexdecimal(Long.parseLong(pcAddr)); -// if (input.getId() == 0x2010) { -// System.out.print(" probe type : "); -// AnalyzerUtil.printHexdecimal(input.getProbeType()); -// System.out.print(" subtype : "); -// AnalyzerUtil.printHexdecimal(input.getProbeSubType()); -// } else { -// System.out.print(" "); -// } -// System.out.print(" tid " + input.getTid() + " pid " -// + input.getPid() + " time " + input.getTime()); -// System.out.println(" ]"); -// } + // if (input.getId() != 0x2006 && input.getProbeType() == 1) { + // if (input.getId() != 0x2006 ) { + // if (input.getId() == 0x2006) { + // System.out.print("seq : " + input.getSeq()); + // System.out.print(" id : "); + // AnalyzerUtil.printHexdecimal(input.getId()); + // System.out.print(" function name : " + functionName + "[ low :"); + // AnalyzerUtil.printHexdecimal(Long.parseLong(baseAddr)); + // System.out.print(" high : "); + // AnalyzerUtil.printHexdecimal(Long.parseLong(highAddr)); + // System.out.print(" pcAddr : "); + // AnalyzerUtil.printHexdecimal(Long.parseLong(pcAddr)); + // if (input.getId() == 0x2010) { + // System.out.print(" probe type : "); + // AnalyzerUtil.printHexdecimal(input.getProbeType()); + // System.out.print(" subtype : "); + // AnalyzerUtil.printHexdecimal(input.getProbeSubType()); + // } else { + // System.out.print(" "); + // } + // System.out.print(" tid " + input.getTid() + " pid " + // + input.getPid() + " time " + input.getTime()); + // System.out.println(" ]"); + // } if (null == functionName || functionName.isEmpty() || functionName.equals("_end")) { //$NON-NLS-1$ @@ -378,22 +374,21 @@ public class SWAPLogParser implements Runnable { private void pushLog(LogData logData, LogPackage logPack) { logPack.setLogs(logData.getId(), logData); } - - private void printContextSwitchData(LogData log) - { - ContextSwitchData input = (ContextSwitchData)log; + + private void printContextSwitchData(LogData log) { + ContextSwitchData input = (ContextSwitchData) log; System.out.print("seq : " + input.getSeq()); System.out.print(" id : "); AnalyzerUtil.printHexdecimal(input.getId()); -// System.out.print(" function name : " + functionName + "[ low :"); -// AnalyzerUtil.printHexdecimal(Long.parseLong(baseAddr)); -// System.out.print(" high : "); -// AnalyzerUtil.printHexdecimal(Long.parseLong(highAddr)); -// System.out.print(" pcAddr : "); -// AnalyzerUtil.printHexdecimal(Long.parseLong(pcAddr)); - System.out.print(" tid " + input.getTid() + " pid " - + input.getPid() + " time " + input.getTime()); + // System.out.print(" function name : " + functionName + "[ low :"); + // AnalyzerUtil.printHexdecimal(Long.parseLong(baseAddr)); + // System.out.print(" high : "); + // AnalyzerUtil.printHexdecimal(Long.parseLong(highAddr)); + // System.out.print(" pcAddr : "); + // AnalyzerUtil.printHexdecimal(Long.parseLong(pcAddr)); + System.out.print(" tid " + input.getTid() + " pid " + input.getPid() + + " time " + input.getTime()); System.out.println(" ]"); } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/RecordEventObject.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/RecordEventObject.java index 2b97677..3f4e48d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/RecordEventObject.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/RecordEventObject.java @@ -82,4 +82,10 @@ public class RecordEventObject extends LogData { return ByteUtils.getByte(eventTime.getByteValues(), eventId, eventType, eventCode, eventValue); } + + @Override + public int getPid() { + // TODO Auto-generated method stub + return 0; + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/ApplicationInst.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/ApplicationInst.java index 8959096..092dc72 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/ApplicationInst.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/ApplicationInst.java @@ -12,14 +12,11 @@ public class ApplicationInst implements SWAPModel { private String executablePath = null; private int functionCount = 0; private List functionInstList = new ArrayList(); - private int libcount = 0; - private List libraryInstList = new ArrayList(); @Override public byte[] getByteValue() { return ByteUtils.getByte(applicationType, applicationId, - executablePath, functionCount, functionInstList, libcount, - libraryInstList); + executablePath, functionCount, functionInstList); } @Override @@ -63,16 +60,4 @@ public class ApplicationInst implements SWAPModel { return functionInstList; } - public int getLibcount() { - return libcount; - } - - public void setLibcount(int libcount) { - this.libcount = libcount; - } - - public void setLibraryInstList(List libraryInstList) { - this.libraryInstList = libraryInstList; - } - } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/BinaryInfo.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/BinaryInfo.java index e93cab7..050b2d0 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/BinaryInfo.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/BinaryInfo.java @@ -5,7 +5,9 @@ import org.tizen.dynamicanalyzer.swap.model.SWAPModel; public class BinaryInfo implements SWAPModel { private int type = 0; - private String sourcePath = null; + private String targetBinaryPath = null; + private String localBinaryPath = null; + private String md5sumValue = null; public int getType() { return type; @@ -15,22 +17,39 @@ public class BinaryInfo implements SWAPModel { this.type = type; } - public String getPath() { - return sourcePath; + public String getLocalBinaryPath() { + return localBinaryPath; } - public void setPath(String path) { - this.sourcePath = path; + public void setLocalBinaryPath(String path) { + this.localBinaryPath = path; + } + + public String getMd5sumValue() { + return md5sumValue; + } + + public void setMd5sumValue(String md5sumValue) { + this.md5sumValue = md5sumValue; + } + + public String getTargetBinaryPath() { + return targetBinaryPath; + } + + public void setTargetBinaryPath(String targetBinaryPath) { + this.targetBinaryPath = targetBinaryPath; } @Override public byte[] getByteValue() { - return ByteUtils.concatByteArray(type, sourcePath); + return ByteUtils.concatByteArray(type, localBinaryPath); } @Override public void setByteToValues(byte[] input) { // TODO Auto-generated method stub - + } + } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/TargetInfo.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/TargetInfo.java index 6e73ccf..99484ad 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/TargetInfo.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/TargetInfo.java @@ -1,6 +1,5 @@ package org.tizen.dynamicanalyzer.swap.model.control; - public class TargetInfo { private long systemMemorySize = 0; private long storageSize = 0; @@ -11,6 +10,8 @@ public class TargetInfo { private String networkType = null; private int maxBrightness = 0; private int cpuCount = 0; + private int deviceCount = 0; + private String devices = null; public long getSystemMemorySize() { return systemMemorySize; @@ -83,4 +84,20 @@ public class TargetInfo { public void setCpuCount(int cpuCount) { this.cpuCount = cpuCount; } + + public int getDeviceCount() { + return deviceCount; + } + + public void setDeviceCount(int deviceCount) { + this.deviceCount = deviceCount; + } + + public String getDevices() { + return devices; + } + + public void setDevices(String devices) { + this.devices = devices; + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/BasicDataMessage.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/BasicDataMessage.java index 3b0d349..f2ec4e8 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/BasicDataMessage.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/BasicDataMessage.java @@ -107,7 +107,7 @@ public class BasicDataMessage { } System.arraycopy(input, 0, newInput, 0, input.length); input = null; - payload = AnalyzerUtil.makeByteArray(id, newInput); +// payload = AnalyzerUtil.makeByteArray(id, newInput); } // for lower version @@ -115,45 +115,45 @@ public class BasicDataMessage { int newId = -1; switch (oldId) { case LogCenterConstants.LOG_MEMORY: - newId = AnalyzerConstants.MSG_PROBE_MEMORY; + newId = DataChannelConstants.MSG_PROBE_MEMORY; break; case LogCenterConstants.LOG_CONTROL: - newId = AnalyzerConstants.MSG_PROBE_UICONTROL; + newId = DataChannelConstants.MSG_PROBE_UICONTROL; break; case LogCenterConstants.LOG_UI_EVENT: - newId = AnalyzerConstants.MSG_PROBE_UIEVENT; + newId = DataChannelConstants.MSG_PROBE_UIEVENT; break; case LogCenterConstants.LOG_RESOURCE: - newId = AnalyzerConstants.MSG_PROBE_FILE; + newId = DataChannelConstants.MSG_PROBE_FILE; break; case LogCenterConstants.LOG_NETWORK: - newId = AnalyzerConstants.MSG_PROBE_NETWORK; + newId = DataChannelConstants.MSG_PROBE_NETWORK; break; case LogCenterConstants.LOG_GLES20: - newId = AnalyzerConstants.MSG_PROBE_GLES20; + newId = DataChannelConstants.MSG_PROBE_GLES20; case LogCenterConstants.LOG_LIFECYCLE: - newId = AnalyzerConstants.MSG_PROBE_LIFECYCLE; + newId = DataChannelConstants.MSG_PROBE_LIFECYCLE; break; case LogCenterConstants.LOG_SCREENSHOT: - newId = AnalyzerConstants.MSG_PROBE_SCREENSHOT; + newId = DataChannelConstants.MSG_PROBE_SCREENSHOT; break; case LogCenterConstants.LOG_SCENE: - newId = AnalyzerConstants.MSG_PROBE_SCENE; + newId = DataChannelConstants.MSG_PROBE_SCENE; break; case LogCenterConstants.LOG_DEVICE: - newId = AnalyzerConstants.MSG_DATA_SYSTEM; + newId = DataChannelConstants.MSG_DATA_SYSTEM; break; case LogCenterConstants.LOG_PROFILING: - newId = AnalyzerConstants.MSG_DATA_SAMPLE; + newId = DataChannelConstants.MSG_DATA_SAMPLE; break; case LogCenterConstants.LOG_THREAD: - newId = AnalyzerConstants.MSG_PROBE_THREAD; + newId = DataChannelConstants.MSG_PROBE_THREAD; break; case LogCenterConstants.LOG_CUSTOM_CHART: - newId = AnalyzerConstants.MSG_PROBE_CUSTOM; + newId = DataChannelConstants.MSG_PROBE_CUSTOM; break; case LogCenterConstants.LOG_SYNC: - newId = AnalyzerConstants.MSG_PROBE_SYNC; + newId = DataChannelConstants.MSG_PROBE_SYNC; break; default: // USER_FUNCTION diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/DataChannelConstants.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/DataChannelConstants.java index d1c41b2..e53a247 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/DataChannelConstants.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/DataChannelConstants.java @@ -3,15 +3,27 @@ package org.tizen.dynamicanalyzer.swap.model.data; public class DataChannelConstants { public static final int BUFFER_SIZE = 1024; - public static final int MSG_PROCESS_INFO = 0x2002; - public static final int MSG_TERMINATE = 0x2004; - public static final int MSG_ERROR = 0x2005; - public static final int MSG_SAMPLE = 0x2006; - public static final int MSG_SYSTEM = 0x2007; - public static final int MSG_IMAGE = 0x2008; - public static final int MSG_RECORD = 0x2009; - public static final int MSG_FUNCTION_ENTRY = 0x2010; - public static final int MSG_FUNCTION_EXIT = 0x2011; - public static final int MSG_CONTEXT_SWITCH_ENTRY = 0x2012; - public static final int MSG_CONTEXT_SWITCH_EXIT = 0x2013; + public final static int MSG_DATA_PROCESS_INFO = 0x0001; + public final static int MSG_DATA_TERMINATE = 0x0002; + public final static int MSG_DATA_ERROR = 0x0003; + public final static int MSG_DATA_SAMPLE = 0x0004; + public final static int MSG_DATA_SYSTEM = 0x0005; + public final static int MSG_DATA_RECORD = 0x0006; + public final static int MSG_FUNCTION_ENTRY = 0x0008; + public final static int MSG_FUNCTION_EXIT = 0x0009; + public final static int MSG_CONTEXT_SWITCH_ENTRY = 0x0010; + public final static int MSG_CONTEXT_SWITCH_EXIT = 0x0011; + + public final static int MSG_PROBE_MEMORY = 0x0101; + public final static int MSG_PROBE_UICONTROL = 0x0102; + public final static int MSG_PROBE_UIEVENT = 0x0103; + public final static int MSG_PROBE_FILE = 0x0104; + public final static int MSG_PROBE_LIFECYCLE = 0x0105; + public final static int MSG_PROBE_SCREENSHOT = 0x0106; + public final static int MSG_PROBE_SCENE = 0x0107; + public final static int MSG_PROBE_THREAD = 0x0108; + public final static int MSG_PROBE_CUSTOM = 0x0109; + public final static int MSG_PROBE_SYNC = 0x0110; + public final static int MSG_PROBE_NETWORK = 0x0111; + public final static int MSG_PROBE_GLES20 = 0x0112; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/LibraryObject.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/LibraryObject.java index 6ebaff3..db3e69d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/LibraryObject.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/LibraryObject.java @@ -4,6 +4,7 @@ public class LibraryObject { private long lowestAddress = -1; private long highestAddress = -1; private String libPath = null; + private int pid; public long getLowestAddress() { return lowestAddress; @@ -28,4 +29,14 @@ public class LibraryObject { public void setLibPath(String libPath) { this.libPath = libPath; } + + public int getPid() { + return pid; + } + + public void setPid(int pid) { + this.pid = pid; + } + + } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/ProcessInfo.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/ProcessInfo.java index 6e9e73c..d25200c 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/ProcessInfo.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/ProcessInfo.java @@ -7,12 +7,10 @@ import org.tizen.dynamicanalyzer.swap.model.DATime; public class ProcessInfo { private int pid = -1; - // private long startTime = 0; + private int ppid = -1; DATime startTime = new DATime(); private long lowestAddress = 0; private long highestAddress = 0; - private int appType = -1; // 1. tizen 2. capi - private int binaryType = -1; // pie option private String binaryPath = null; private int depLibCount = 0; private List libObjs = new ArrayList(); @@ -25,6 +23,14 @@ public class ProcessInfo { this.pid = pid; } + public int getPpid() { + return ppid; + } + + public void setPpid(int ppid) { + this.ppid = ppid; + } + public DATime getStartTime() { return startTime; } @@ -49,22 +55,6 @@ public class ProcessInfo { this.highestAddress = highestAddress; } - public int getAppType() { - return appType; - } - - public void setAppType(int appType) { - this.appType = appType; - } - - public int getBinaryType() { - return binaryType; - } - - public void setBinaryType(int binaryType) { - this.binaryType = binaryType; - } - public String getBinaryPath() { return binaryPath; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ContextSwitchData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ContextSwitchData.java index c3d6485..17ceb68 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ContextSwitchData.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ContextSwitchData.java @@ -85,4 +85,5 @@ public class ContextSwitchData extends LogData { tid = rs.getInt(index++); cpuNum = rs.getInt(index++); } + } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/LogData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/LogData.java index 05f69d5..483d941 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/LogData.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/LogData.java @@ -11,7 +11,7 @@ import org.tizen.dynamicanalyzer.communicator.DACommunicator; import org.tizen.dynamicanalyzer.swap.model.ByteUtils; import org.tizen.dynamicanalyzer.swap.model.DATime; -public class LogData { +public abstract class LogData { public static boolean isSWAP = false; public static int STATE_COUNT = 4; @@ -45,7 +45,6 @@ public class LogData { long resultNano = nano - startNano; time = resultSec * 1000000 + resultNano / 1000; - index += INT_SIZE; // payload length field offset } @@ -97,4 +96,7 @@ public class LogData { seq = rs.getInt(3); time = rs.getLong(4); } + + public abstract int getPid(); + } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/LogDataFactory.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/LogDataFactory.java index 3e98a3b..ca94417 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/LogDataFactory.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/LogDataFactory.java @@ -1,24 +1,24 @@ package org.tizen.dynamicanalyzer.swap.model.probe2; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_CONTEXT_SWITCH_ENTRY; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_CONTEXT_SWITCH_EXIT; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_DATA_RECORD; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_DATA_SAMPLE; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_DATA_SYSTEM; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_ENTRY; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_EXIT; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_CUSTOM; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_FILE; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_GLES20; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_LIFECYCLE; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_MEMORY; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_NETWORK; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_SCENE; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_SCREENSHOT; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_SYNC; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_THREAD; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_UICONTROL; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_PROBE_UIEVENT; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_CONTEXT_SWITCH_ENTRY; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_CONTEXT_SWITCH_EXIT; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_DATA_RECORD; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_DATA_SAMPLE; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_DATA_SYSTEM; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_ENTRY; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_EXIT; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_CUSTOM; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_FILE; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_GLES20; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_LIFECYCLE; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_MEMORY; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_NETWORK; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_SCENE; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_SCREENSHOT; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_SYNC; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_THREAD; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_UICONTROL; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_PROBE_UIEVENT; import java.sql.ResultSet; import java.sql.SQLException; @@ -103,14 +103,7 @@ public class LogDataFactory { public static LogData createInstance(byte[] data) { int id = ByteUtils.toInt(data, 0); - - if (id == 8208 || id == 8209 || id == 8198 || id == 8199 || id == 8210 - || id == 8211 || id == 12292 || id == 12290 || id == 12295 || id == 12289 || id == 12291|| id == 8201) { - } else { -// System.out.println("createInstance id : " + id); - } - LogData output = null; switch (id) { case MSG_PROBE_MEMORY: @@ -188,8 +181,7 @@ public class LogDataFactory { return output; } - - public static LogData createInstance(ResultSet rs) throws SQLException{ + public static LogData createInstance(ResultSet rs) throws SQLException { int id = rs.getInt(2); LogData output = null; switch (id) { @@ -265,7 +257,7 @@ public class LogDataFactory { output.loadData(rs); return output; } - + public static LogFormat getLogFormatById(int id) { LogFormat format = null; switch (id) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ProfileData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ProfileData.java index cc7a16e..2a7049e 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ProfileData.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ProfileData.java @@ -1,10 +1,10 @@ package org.tizen.dynamicanalyzer.swap.model.probe2; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_CONTEXT_SWITCH_ENTRY; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_CONTEXT_SWITCH_EXIT; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_DATA_SAMPLE; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_ENTRY; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_EXIT; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_CONTEXT_SWITCH_ENTRY; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_CONTEXT_SWITCH_EXIT; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_DATA_SAMPLE; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_ENTRY; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_EXIT; import static org.tizen.dynamicanalyzer.common.CommonConstants.INT_SIZE; import static org.tizen.dynamicanalyzer.common.CommonConstants.LONG_SIZE; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ReplayData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ReplayData.java index ed3e1f4..04186c6 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ReplayData.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ReplayData.java @@ -96,4 +96,9 @@ public class ReplayData extends LogData { return recordEvent; } + @Override + public int getPid() { + return 0; + } + } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/SystemData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/SystemData.java index b92332b..fe4ba13 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/SystemData.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/SystemData.java @@ -30,8 +30,9 @@ public class SystemData extends LogData { long systemMemoryUsed = 0; int totalUsedDrive = 0; int diskReadSize = 0; + int diskReadSectorCount = 0; int diskWriteSize = 0; - int diskSectorsWritten = 0; + int diskWrittenSectorCount = 0; int networkSendSize = 0; int networkReceiveSize = 0; int wifi = 0; @@ -47,18 +48,23 @@ public class SystemData extends LogData { int video = 0; int call = 0; int dnet = 0; - int energy = 0; + int energyUsage = 0; + String deviceEnergyUsage = null; + String applicationEnergyUsage = null; int callAlpha = 0; int rssiAlpha = 0; - public SystemData(){} - + public SystemData() { + } + public void makeData(byte[] data) { super.makeData(data); -// index = MessageParser.MSG_HEADER_SIZE; + // index = MessageParser.MSG_HEADER_SIZE; int coreCount = DACommunicator.getSelectedDevice().getTargetInfo() .getCpuCount(); + int deviceCount = DACommunicator.getSelectedDevice().getTargetInfo() + .getDeviceCount(); appCpuUsage = ByteUtils.toFloat(data, index); index += FLOAT_SIZE; @@ -107,10 +113,13 @@ public class SystemData extends LogData { diskReadSize = ByteUtils.toInt(data, index); index += INT_SIZE; + diskReadSectorCount = ByteUtils.toInt(data, index); + index += INT_SIZE; + diskWriteSize = ByteUtils.toInt(data, index); index += INT_SIZE; - diskSectorsWritten = ByteUtils.toInt(data, index); + diskWrittenSectorCount = ByteUtils.toInt(data, index); index += INT_SIZE; networkSendSize = ByteUtils.toInt(data, index); @@ -158,7 +167,15 @@ public class SystemData extends LogData { dnet = ByteUtils.toInt(data, index); index += INT_SIZE; - energy = ByteUtils.toInt(data, index); + energyUsage = ByteUtils.toInt(data, index); + index += INT_SIZE; + + deviceEnergyUsage = parseUsage(index, data); + index += (INT_SIZE * deviceCount); + + applicationEnergyUsage = parseUsage(index, data); + index += (INT_SIZE * deviceCount); + } private static String parseLoad(int start, byte[] payload) { @@ -168,9 +185,6 @@ public class SystemData extends LogData { StringBuffer outBuf = new StringBuffer(); for (int ii = 0; ii < count; ii++) { try { - if (pos == 180) { - System.out.println(); - } int tid = ByteUtils.toInt(payload, pos); pos += INT_SIZE; outBuf.append(tid).append(CommonConstants.COMMA); @@ -204,12 +218,27 @@ public class SystemData extends LogData { return buffer.toString(); } + private static String parseUsage(int start, byte[] payload) { + int count = DACommunicator.getSelectedDevice().getTargetInfo() + .getDeviceCount(); + StringBuffer buffer = new StringBuffer(); + for (int i = 0; i < count; i++) { + int value = ByteUtils.toInt(payload, start); + start += INT_SIZE; + buffer.append(value); + if (i + 1 != count) { + buffer.append(','); + } + } + return buffer.toString(); + } + public int getEnergy() { - return energy; + return energyUsage; } public void setEnergy(int energy) { - this.energy = energy; + this.energyUsage = energy; } public int getWifi() { @@ -316,14 +345,6 @@ public class SystemData extends LogData { this.dnet = dnet; } - public int getDiskSectorsWritten() { - return diskSectorsWritten; - } - - public void setDiskSectorsWritten(int disSectorsWritten) { - this.diskSectorsWritten = disSectorsWritten; - } - public int getNetworkSendSize() { return networkSendSize; } @@ -468,6 +489,14 @@ public class SystemData extends LogData { this.diskReadSize = diskReadSize; } + public int getDiskReadSectorCount() { + return diskReadSectorCount; + } + + public void setDiskReadSectorCount(int diskReadSectorCount) { + this.diskReadSectorCount = diskReadSectorCount; + } + public int getDiskWriteSize() { return diskWriteSize; } @@ -476,6 +505,14 @@ public class SystemData extends LogData { this.diskWriteSize = diskWriteSize; } + public int getDiskWrittenSectorCount() { + return diskWrittenSectorCount; + } + + public void setDiskWrittenSectorCount(int diskWrittenSectorCount) { + this.diskWrittenSectorCount = diskWrittenSectorCount; + } + public int getCallAlpha() { return callAlpha; } @@ -492,6 +529,30 @@ public class SystemData extends LogData { this.rssiAlpha = rssiAlpha; } + public int getEnergyUsage() { + return energyUsage; + } + + public void setEnergyUsage(int energyUsage) { + this.energyUsage = energyUsage; + } + + public String getDeviceEnergyUsage() { + return deviceEnergyUsage; + } + + public void setDeviceEnergyUsage(String deviceEnergyUsage) { + this.deviceEnergyUsage = deviceEnergyUsage; + } + + public String getApplicationEnergyUsage() { + return applicationEnergyUsage; + } + + public void setApplicationEnergyUsage(String applicationEnergyUsage) { + this.applicationEnergyUsage = applicationEnergyUsage; + } + @Override public void makePreparedStatement(PreparedStatement prep) throws SQLException { @@ -515,7 +576,7 @@ public class SystemData extends LogData { prep.setInt(index++, totalUsedDrive); prep.setInt(index++, diskReadSize); prep.setInt(index++, diskWriteSize); - prep.setInt(index++, diskSectorsWritten); + prep.setInt(index++, diskWrittenSectorCount); prep.setInt(index++, networkSendSize); prep.setInt(index++, networkReceiveSize); prep.setInt(index++, wifi); @@ -531,7 +592,7 @@ public class SystemData extends LogData { prep.setInt(index++, video); prep.setInt(index++, call); prep.setInt(index++, dnet); - prep.setInt(index++, energy); + prep.setInt(index++, energyUsage); prep.setInt(index++, callAlpha); prep.setInt(index++, rssiAlpha); @@ -559,7 +620,7 @@ public class SystemData extends LogData { totalUsedDrive = rs.getInt(index++); diskReadSize = rs.getInt(index++); diskWriteSize = rs.getInt(index++); - diskSectorsWritten = rs.getInt(index++); + diskWrittenSectorCount = rs.getInt(index++); networkSendSize = rs.getInt(index++); networkReceiveSize = rs.getInt(index++); wifi = rs.getInt(index++); @@ -575,9 +636,14 @@ public class SystemData extends LogData { video = rs.getInt(index++); call = rs.getInt(index++); dnet = rs.getInt(index++); - energy = rs.getInt(index++); + energyUsage = rs.getInt(index++); callAlpha = rs.getInt(index++); rssiAlpha = rs.getInt(index++); } + + @Override + public int getPid() { + return 0; + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingData.java new file mode 100644 index 0000000..bbe4f94 --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingData.java @@ -0,0 +1,35 @@ +package org.tizen.dynamicanalyzer.swap.platform; + +import org.tizen.dynamicanalyzer.common.CommonConstants; + +public class BinarySettingData { + private String binaryPath = null; + private String sourcePath = null; + + public String getBinaryPath() { + return binaryPath; + } + + public void setBinaryPath(String binaryPath) { + this.binaryPath = binaryPath; + } + + public String getSourcePath() { + return sourcePath; + } + + public void setSourcePath(String sourcePath) { + this.sourcePath = sourcePath; + } + + public String getSaveData() { + StringBuffer strBuffer = new StringBuffer(); + strBuffer.append(binaryPath).append(CommonConstants.COMMA); + if (null == sourcePath) { + strBuffer.append(CommonConstants.SPACE); + } else { + strBuffer.append(sourcePath); + } + return strBuffer.toString(); + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingManager.java new file mode 100644 index 0000000..c4b96bd --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/BinarySettingManager.java @@ -0,0 +1,143 @@ +package org.tizen.dynamicanalyzer.swap.platform; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.tizen.dynamicanalyzer.swap.model.control.BinaryInfo; +import org.tizen.dynamicanalyzer.swap.platform.ui.InputRow; + +public class BinarySettingManager { + + private static BinarySettingManager instance = null; + private List binarySettings = new ArrayList(); + private HashMap targetBinInfoMap = new HashMap(); + private HashMap localBinInfoMap = new HashMap(); + + // temporary list + private HashMap inputRowHash = new HashMap(); + private List inputRowList = new ArrayList(); + private List tempBinarySettings = new ArrayList(); + + public static synchronized BinarySettingManager getInstance() { + if (null == instance) { + instance = new BinarySettingManager(); + } + return instance; + } + + public void removeRealBinarySettingData(String binPath) { + for (int i = 0; i < binarySettings.size(); i++) { + if (binPath.equals(binarySettings.get(i).getBinaryPath())) { + binarySettings.remove(i); + break; + } + } + } + + public List getBinarySettings() { + return binarySettings; + } + + public void clearData() { + binarySettings.clear(); + } + + public void putBinarySettingData(List data) { + binarySettings.clear(); + binarySettings.addAll(data); + } + + public HashMap getInputRowHash() { + return inputRowHash; + } + + public List getInputRowList() { + return inputRowList; + } + + public List getTempBinarySettings() { + return tempBinarySettings; + } + + public void removeInputRow(String path) { + InputRow inputRow = inputRowHash.get(path); + InputRow nextInputRow = null; + InputRow prevInputRow = null; + if (null == inputRow) { + return; + } + + int index = inputRowList.indexOf(inputRow); + if (index == 0 && inputRowList.size() > 1) { + nextInputRow = inputRowList.get(index + 1); + FormData nextData = (FormData) nextInputRow.getLayoutData(); + nextData.top = new FormAttachment(0, 0); + } else if (index + 1 < inputRowList.size()) { + prevInputRow = inputRowList.get(index - 1); + nextInputRow = inputRowList.get(index + 1); + FormData nextData = (FormData) nextInputRow.getLayoutData(); + nextData.top = new FormAttachment(prevInputRow, 2); + } + inputRowHash.remove(path); + inputRowList.remove(index); + removeBinarySettingData(path); + } + + public void removeBinarySettingData(String binPath) { + for (int i = 0; i < tempBinarySettings.size(); i++) { + if (binPath.equals(tempBinarySettings.get(i).getBinaryPath())) { + tempBinarySettings.remove(i); + break; + } + } + } + + public void updateInputRow(String binPath, String sourcePath) { + int size = tempBinarySettings.size(); + for (int i = 0; i < size; i++) { + BinarySettingData data = tempBinarySettings.get(i); + if (data.getBinaryPath().equals(binPath)) { + data.setSourcePath(sourcePath); + break; + } + } + } + + public void addBinaryInfos(List input) { + for (int i = 0; i < input.size(); i++) { + String localPath = input.get(i).getLocalBinaryPath(); + BinaryInfo binInfo = targetBinInfoMap.get(localPath); + if (null != binInfo) { + String targetPath = binInfo.getTargetBinaryPath(); + targetBinInfoMap.remove(targetPath); + localBinInfoMap.remove(localPath); + } + localBinInfoMap.put(localPath, input.get(i)); + targetBinInfoMap.put(input.get(i).getTargetBinaryPath(), + input.get(i)); + } + } + + public void removeBinaryInfos(List input) { + for (int i = 0; i < input.size(); i++) { + String path = input.get(i).getLocalBinaryPath(); + BinaryInfo binInfo = localBinInfoMap.get(path); + if (null != binInfo) { + localBinInfoMap.remove(path); + targetBinInfoMap.remove(binInfo.getTargetBinaryPath()); + } + } + } + + public HashMap getTargetBinInfoMap() { + return targetBinInfoMap; + } + + public HashMap getLocalBinInfoMap() { + return localBinInfoMap; + } + +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/BinaryAnalyzingConfigDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/BinaryAnalyzingConfigDialog.java new file mode 100644 index 0000000..3d2ca47 --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/BinaryAnalyzingConfigDialog.java @@ -0,0 +1,381 @@ +package org.tizen.dynamicanalyzer.swap.platform.ui; + +import java.io.File; +import java.util.HashMap; +import java.util.List; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.ScrolledComposite; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.tizen.dynamicanalyzer.common.AnalyzerConstants; +import org.tizen.dynamicanalyzer.common.AnalyzerPaths; +import org.tizen.dynamicanalyzer.common.CommonConstants; +import org.tizen.dynamicanalyzer.communicator.DACommunicator; +import org.tizen.dynamicanalyzer.resources.ColorResources; +import org.tizen.dynamicanalyzer.swap.model.control.BinaryInfo; +import org.tizen.dynamicanalyzer.swap.platform.BinarySettingData; +import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager; +import org.tizen.dynamicanalyzer.ui.widgets.DAButton; +import org.tizen.dynamicanalyzer.ui.widgets.DAMessageBox; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButton; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener; +import org.tizen.dynamicanalyzer.widgets.button.toggle.DACustomToggleButton; +import org.tizen.sdblib.service.FileEntry; + +public class BinaryAnalyzingConfigDialog extends DAMessageBox { + private static final int WIDTH = 800; + private static final int HEIGHT = 600; + + private HashMap inputRowHash = null; + private List inputRowList = null; + + private List tempBinarySettings = null; + + private ScrolledComposite scrolledComposite = null; + private Composite inputComposite = null; + private DACustomToggleButton enableButton = null; + private DAButton cleanButton = null; + private DAButton addButton = null; + private DAButton saveButton = null; + private DAButton loadButton = null; + + private boolean isLoaded = false; + + private Composite bottomComp = null; + + private DAButton okButton = null; + private DAButton cancelButton = null; + + private BinaryAnalyzingConfigDialog me = null; + + public BinaryAnalyzingConfigDialog(Shell parentShell) { + super(parentShell); + me = this; + + inputRowHash = BinarySettingManager.getInstance().getInputRowHash(); + inputRowList = BinarySettingManager.getInstance().getInputRowList(); + tempBinarySettings = BinarySettingManager.getInstance() + .getTempBinarySettings(); + + String settingPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH; + File settingFolder = new File(settingPath); + if (!settingFolder.exists() || !settingFolder.isDirectory()) { + settingFolder.mkdirs(); + } + } + + private DACustomButtonClickEventListener addButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + FileExplorerDialog dialog = new FileExplorerDialog(shell); + Object result = dialog.open(); + if (result != null) { + FileEntry entry = (FileEntry) result; + if (null == inputRowHash.get(entry.getFullPath())) { + InputRow inputRow = new InputRow(inputComposite); + inputRow.setBinaryText(entry.getFullPath()); + inputRowHash.put(entry.getFullPath(), inputRow); + inputRowList.add(inputRow); + inputComposite.layout(); + + BinarySettingData binSetData = new BinarySettingData(); + binSetData.setBinaryPath(entry.getFullPath()); + tempBinarySettings.add(binSetData); + } + } + } + }; + + private DACustomButtonClickEventListener loadButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + LoadSettingDialog dialog = new LoadSettingDialog(shell); + dialog.setParentDialog(me); + dialog.open(); + } + }; + + private DACustomButtonClickEventListener saveButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + SaveSettingDialog dialog = new SaveSettingDialog(shell); + dialog.open(); + // save dialog + // filename.setting + } + }; + + private DACustomButtonClickEventListener cleanButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + for (int i = 0; i < inputRowList.size(); i++) { + inputRowList.get(i).dispose(); + } + inputRowList.clear(); + inputRowHash.clear(); + tempBinarySettings.clear(); + } + }; + + private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + BinarySettingManager.getInstance().putBinarySettingData( + tempBinarySettings); + DACommunicator.sendBinaryInfoMessageForLib(); + int swapMsg = AnalyzerConstants.MSG_SWAP_INST_ADD; + if (enableButton.isToggled()) { + swapMsg = AnalyzerConstants.MSG_SWAP_INST_REMOVE; + } + DACommunicator.sendSWAPMessage(swapMsg); + shell.dispose(); + } + }; + + private DACustomButtonClickEventListener cancelButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + shell.dispose(); + } + }; + + private DACustomButtonClickEventListener enableButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + if (enableButton.isToggled()) { + enableButton.setText("Remove"); + } else { + enableButton.setText("Add"); + } + } + }; + + public Object open() { + block = true; + parentShell.setEnabled(false); + initSuccess = run(); + if (initSuccess) { + shell.open(); + initInputRows(); + if (block) { + runEventLoop(shell); + } + } + shell.dispose(); + parentShell.setEnabled(true); + closeAction(); + return result; + } + + protected boolean run() { + shell.setLayout(new FormLayout()); + shell.setSize(WIDTH, HEIGHT); + shell.setBackground(ColorResources.DIALOG_BG_UPPER); + shell.setText("Binaries for Analyzing"); + + Label binaryLabel = new Label(shell, SWT.TRANSPARENT); + FormData data = new FormData(); + data.top = new FormAttachment(0, 15); + data.left = new FormAttachment(0, 20); + data.height = 15; + data.width = WIDTH / 3; + binaryLabel.setLayoutData(data); + binaryLabel.setForeground(ColorResources.BLACK); + binaryLabel.setText("Binary Name"); + binaryLabel.setBackground(ColorResources.DIALOG_BG_UPPER); + + Label sourceLabel = new Label(shell, SWT.TRANSPARENT); + data = new FormData(); + data.top = new FormAttachment(0, 15); + data.left = new FormAttachment(binaryLabel, 0); + data.height = 15; + data.width = WIDTH / 3; + sourceLabel.setLayoutData(data); + sourceLabel.setForeground(ColorResources.BLACK); + sourceLabel.setText("Source Path"); + sourceLabel.setBackground(ColorResources.DIALOG_BG_UPPER); + + scrolledComposite = new ScrolledComposite(shell, SWT.BORDER + | SWT.V_SCROLL | SWT.H_SCROLL); + data = new FormData(); + data.top = new FormAttachment(binaryLabel, 5); + data.left = new FormAttachment(0, 15); + data.height = 465; + data.width = WIDTH - 35; + scrolledComposite.setLayoutData(data); + scrolledComposite.setLayout(new FormLayout()); + scrolledComposite.setBackground(ColorResources.BLUE); + scrolledComposite.setExpandHorizontal(true); + scrolledComposite.setExpandVertical(true); + + // scrolledComposite.setMinSize(WIDTH - 30, 200); + + inputComposite = new Composite(scrolledComposite, SWT.NONE); + scrolledComposite.setContent(inputComposite); + scrolledComposite.setMinSize(inputComposite.computeSize(SWT.DEFAULT, + SWT.DEFAULT)); + scrolledComposite.setShowFocusedControl(true); + data = new FormData(); + data.top = new FormAttachment(binaryLabel, 5); + data.left = new FormAttachment(0, 15); + data.height = 495; + data.width = WIDTH - 15 - 15; + inputComposite.setLayoutData(data); + inputComposite.setLayout(new FormLayout()); + inputComposite.setBackground(ColorResources.DIALOG_BG_UPPER); + + enableButton = new DACustomToggleButton(shell, + ColorResources.BUTTON_NORMAL_COLOR_START, + ColorResources.BUTTON_NORMAL_COLOR_END, + ColorResources.BUTTON_PUSH_COLOR_START, + ColorResources.BUTTON_PUSH_COLOR_END, + ColorResources.BUTTON_HOVER_COLOR_START, + ColorResources.BUTTON_HOVER_COLOR_END, + ColorResources.BUTTON_DISABLE_COLOR_START, + ColorResources.BUTTON_DISABLE_COLOR_END, + ColorResources.BUTTON_NORMAL_COLOR_END, + ColorResources.BUTTON_NORMAL_COLOR_START, + ColorResources.BUTTON_HOVER_COLOR_END, + ColorResources.BUTTON_HOVER_COLOR_START); + data = new FormData(); + data.top = new FormAttachment(scrolledComposite, 5); + data.left = new FormAttachment(0, 15); + data.height = 18; + data.width = 95; + enableButton.setLayoutData(data); + enableButton.setText("Add"); + enableButton.addClickListener(enableButtonListener); + + cleanButton = new DAButton(shell, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(scrolledComposite, 5); + data.left = new FormAttachment(0, 395); + data.height = 20; + data.width = 95; + cleanButton.setLayoutData(data); + cleanButton.setText("clean"); + cleanButton.addClickListener(cleanButtonListener); + + addButton = new DAButton(shell, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(scrolledComposite, 5); + data.left = new FormAttachment(cleanButton, 5); + data.height = 20; + data.width = 95; + addButton.setLayoutData(data); + addButton.setText("add"); + addButton.addClickListener(addButtonListener); + + saveButton = new DAButton(shell, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(scrolledComposite, 5); + data.left = new FormAttachment(addButton, 5); + data.height = 20; + data.width = 95; + saveButton.setLayoutData(data); + saveButton.setText("save"); + saveButton.addClickListener(saveButtonListener); + + loadButton = new DAButton(shell, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(scrolledComposite, 5); + data.left = new FormAttachment(saveButton, 5); + data.height = 20; + data.width = 95; + loadButton.setLayoutData(data); + loadButton.setText("laod"); + loadButton.addClickListener(loadButtonListener); + + bottomComp = new Composite(shell, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(loadButton, 5); + data.left = new FormAttachment(0, 0); + data.height = 40; + data.width = WIDTH; + bottomComp.setLayoutData(data); + bottomComp.setLayout(new FormLayout()); + + cancelButton = new DAButton(bottomComp, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(0, 5); + data.right = new FormAttachment(100, -10); + data.height = 25; + data.width = 100; + cancelButton.setLayoutData(data); + cancelButton.setText("Cancel"); + cancelButton.addClickListener(cancelButtonListener); + + okButton = new DAButton(bottomComp, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(0, 5); + data.right = new FormAttachment(cancelButton, -5); + data.height = 25; + data.width = 100; + okButton.setLayoutData(data); + okButton.setText("Ok"); + okButton.addClickListener(okButtonListener); + + inputRowList.clear(); + inputRowHash.clear(); + tempBinarySettings.clear(); + + return true; + } + + public void initInputRows() { + if (!isLoaded) { + List binData = BinarySettingManager + .getInstance().getBinarySettings(); + for (int i = 0; i < binData.size(); i++) { + InputRow inputRow = new InputRow(inputComposite); + inputRow.setBinaryText(binData.get(i).getBinaryPath()); + String source = binData.get(i).getSourcePath(); + if (null != source && !source.isEmpty()) { + inputRow.setSourceText(source); + String[] splitSource = source.split(CommonConstants.SLASH); + String comboSel = new String( + splitSource[splitSource.length - 1]); + inputRow.setSourceComboText(comboSel); + } + inputRowHash.put(binData.get(i).getBinaryPath(), inputRow); + inputRowList.add(inputRow); + } + tempBinarySettings.addAll(binData); + inputComposite.layout(); + isLoaded = true; + } + } + + public void loadBinarySetting(List binData) { + cleanButtonListener.handleClickEvent(null); + + for (int i = 0; i < binData.size(); i++) { + InputRow inputRow = new InputRow(inputComposite); + inputRow.setBinaryText(binData.get(i).getBinaryPath()); + String source = binData.get(i).getSourcePath(); + if (null != source && !source.isEmpty()) { + inputRow.setSourceText(source); + String[] splitSource = source.split(CommonConstants.SLASH); + String comboSel = new String( + splitSource[splitSource.length - 1]); + inputRow.setSourceComboText(comboSel); + } + inputRowHash.put(binData.get(i).getBinaryPath(), inputRow); + inputRowList.add(inputRow); + } + tempBinarySettings.addAll(binData); + inputComposite.layout(); + } +} \ No newline at end of file diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorer.java new file mode 100644 index 0000000..bd4e1a2 --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorer.java @@ -0,0 +1,130 @@ +package org.tizen.dynamicanalyzer.swap.platform.ui; + +import java.util.HashMap; + +import org.eclipse.nebula.widgets.grid.Grid; +import org.eclipse.nebula.widgets.grid.GridColumn; +import org.eclipse.nebula.widgets.grid.GridItem; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Listener; +import org.tizen.dynamicanalyzer.communicator.DACommunicator; +import org.tizen.dynamicanalyzer.model.DeviceInfo; +import org.tizen.dynamicanalyzer.resources.ColorResources; +import org.tizen.dynamicanalyzer.resources.FontResources; +import org.tizen.dynamicanalyzer.ui.widgets.DAGrid; +import org.tizen.dynamicanalyzer.ui.widgets.table.DATableEmptyCellRenderer; +import org.tizen.dynamicanalyzer.ui.widgets.table.DATableHeaderRenderer; +import org.tizen.sdblib.IDevice; +import org.tizen.sdblib.service.FileEntry; + +public class DAFileExplorer extends Composite { + protected Grid table; + private HashMap checkedChild = new HashMap(); + + public DAFileExplorer(Composite parent) { + super(parent, SWT.NONE); + this.setLayout(new FillLayout()); + table = new DAGrid(this, SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL + | SWT.H_SCROLL); + table.setLinesVisible(false); + table.setBackground(ColorResources.TABLE_CONTENTS_NORMAL); + table.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR); + table.setFont(FontResources.TABLE_CELL_FONT); + setColumns(); + table.setEmptyCellRenderer(new DATableEmptyCellRenderer()); + + table.setItemHeight(18); + + table.addListener(SWT.Expand, new Listener() { + + @Override + public void handleEvent(Event event) { + GridItem item = (GridItem) event.item; + FileEntry entry = (FileEntry) item.getData(); + if (entry == null) { + return; + } + String path = entry.getFullPath(); + if (null == checkedChild.get(path)) { + FileEntry[] children = entry.getChildren(); + if (children.length > 0) { + for (int i = 0; i < children.length; i++) { + FileEntry child = children[i]; + GridItem childItem = new GridItem(item, SWT.NONE); + childItem.setText(child.getName()); + childItem.setData(child); + } + } + checkedChild.put(path, true); + // table.update(); + } + } + }); + + table.addListener(SWT.Collapse, new Listener() { + @Override + public void handleEvent(Event event) { + GridItem item = (GridItem) event.item; + item.hasChildren(); + // TODO : remove children + } + }); + } + + public void setColumns() { + GridColumn column = new GridColumn(table, SWT.NONE); + column.setCellRenderer(new DAFileExplorerRenderer()); + column.setHeaderRenderer(new DATableHeaderRenderer()); + column.setText("Node"); + column.setWidth(500); + column.setTree(true); + } + + public void makeTree() { + DeviceInfo selectedDevice = DACommunicator.getSelectedDevice(); + if (null == selectedDevice) { + return; + } + IDevice device = DACommunicator.getSelectedDevice().getIDevice(); + + FileEntry root = device.getRoot(); + GridItem item = new GridItem(table, SWT.NONE); + + String name = getDeviceSerialWithName(root); + item.setText(name); + item.setData(root); + + table.update(); + } + + public static String getDeviceSerialWithName(FileEntry entry) { + return combineSerialWithName(entry.getDevice().getSerialNumber(), entry + .getDevice().getDeviceName()); + } + + private static String combineSerialWithName(String serial, String name) { + return String.format("%s (%s)", serial, name); + } + + public FileEntry getSelection() { + GridItem[] selections = table.getSelection(); + if (selections.length > 0) { + GridItem selection = selections[0]; + FileEntry entry = (FileEntry) selection.getData(); + if (!entry.isDirectory() && !entry.isRoot()) { + return entry; + } else { + return null; + } + } else { + return null; + } + } + + public Grid getTree() { + return table; + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerRenderer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerRenderer.java new file mode 100644 index 0000000..3e8dbbb --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerRenderer.java @@ -0,0 +1,26 @@ +package org.tizen.dynamicanalyzer.swap.platform.ui; + +import org.eclipse.nebula.widgets.grid.GridItem; +import org.tizen.dynamicanalyzer.ui.widgets.table.DATableCellRenderer; +import org.tizen.sdblib.service.FileEntry; + +public class DAFileExplorerRenderer extends DATableCellRenderer { + @Override + public void setTree(boolean tree) { + super.setTree(tree); + + if (tree) { + toggleRenderer = new DAFileExplorerToggleRenderer(); + toggleRenderer.setDisplay(getDisplay()); + } + } + + @Override + protected boolean hasChildren(GridItem item) { + FileEntry entry = (FileEntry) item.getData(); + if (entry != null && entry.getChildren().length > 0) { + return true; + } + return false; + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerToggleRenderer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerToggleRenderer.java new file mode 100644 index 0000000..73ced1e --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/DAFileExplorerToggleRenderer.java @@ -0,0 +1,127 @@ +package org.tizen.dynamicanalyzer.swap.platform.ui; + +import org.eclipse.nebula.widgets.grid.GridItem; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Rectangle; +import org.tizen.dynamicanalyzer.resources.ColorResources; +import org.tizen.dynamicanalyzer.resources.FontResources; +import org.tizen.dynamicanalyzer.resources.ImageResources; +import org.tizen.dynamicanalyzer.ui.widgets.table.DATableToggleRenderer; +import org.tizen.sdblib.service.FileEntry; + +public class DAFileExplorerToggleRenderer extends DATableToggleRenderer { + + public void paint(GC gc, Object value) { + GridItem item = (GridItem) value; + + Font font = item.getFont(0); + if (null == font) { + gc.setFont(FontResources.TABLE_CELL_FONT); + } else { + gc.setFont(font); + } + + String text = item.getText(); + FileEntry entry = (FileEntry) item.getData(); + Image icon = getIcon(entry); + + if (hasChildren(entry)) { + if (isExpanded()) { + Rectangle r = ImageResources.TREE_OPEN.getBounds(); + int offset = (getBounds().width - r.width) / 2; + int x = getBounds().x + offset; + gc.drawImage(ImageResources.TREE_OPEN, x, getBounds().y); + x += r.width + 5; + + r = icon.getBounds(); + gc.drawImage(icon, x, getBounds().y); + x += r.width + 1; + + if (isSelected()) { + gc.setForeground(ColorResources.TABLE_CONTENTS_SELECTED_FONT_COLOR); + } else { + gc.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR); + } + gc.drawText(text, x, getBounds().y + 2, true); + } else { + Rectangle r = ImageResources.TREE_FOLD.getBounds(); + int offset = (getBounds().width - r.width) / 2; + int x = getBounds().x + offset; + gc.drawImage(ImageResources.TREE_FOLD, getBounds().x + offset, + getBounds().y); + x += r.width + 5; + + r = icon.getBounds(); + gc.drawImage(icon, x, getBounds().y); + x += r.width + 1; + + if (isSelected()) { + gc.setForeground(ColorResources.TABLE_CONTENTS_SELECTED_FONT_COLOR); + } else { + gc.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR); + } + gc.drawText(text, x, getBounds().y + 2, true); + } + } else { + Rectangle r = ImageResources.TREE_OPEN.getBounds(); + int offset = (getBounds().width - r.width) / 2; + int x = getBounds().x + offset; + x += r.width + 5; + + r = icon.getBounds(); + gc.drawImage(icon, x, getBounds().y); + x += r.width + 1; + + if (isSelected()) { + gc.setForeground(ColorResources.TABLE_CONTENTS_SELECTED_FONT_COLOR); + } else { + gc.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR); + } + gc.drawText(text, x, getBounds().y, true); + } + } + + private Image getIcon(FileEntry entry) { + + switch (entry.getType()) { + case File: + return ImageResources.ICON_FILE; + case Link: + return ImageResources.ICON_FILE_LINK; + case Directory: + return ImageResources.ICON_DIR; + case DirectoryLink: + return ImageResources.ICON_DIR_LINK; + case RootEmulator: + return ImageResources.ICON_EMULATOR; + case RootDevice: + return ImageResources.ICON_DEVICE; + default: + return ImageResources.ICON_OTHER; + } + } + + private boolean hasChildren(FileEntry entry) { + if (entry != null && entry.getChildren().length > 0) { + switch (entry.getType()) { + case File: + return false; + case Link: + return false; + case Directory: + return true; + case DirectoryLink: + return false; + case RootEmulator: + return true; + case RootDevice: + return true; + default: + return false; + } + } + return false; + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/FileExplorerDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/FileExplorerDialog.java new file mode 100644 index 0000000..595bb0a --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/FileExplorerDialog.java @@ -0,0 +1,113 @@ +package org.tizen.dynamicanalyzer.swap.platform.ui; + +import org.eclipse.nebula.widgets.grid.Grid; +import org.eclipse.nebula.widgets.grid.GridItem; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.events.MouseListener; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.widgets.Shell; +import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; +import org.tizen.dynamicanalyzer.resources.ColorResources; +import org.tizen.dynamicanalyzer.ui.widgets.DAButton; +import org.tizen.dynamicanalyzer.ui.widgets.DAMessageBox; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButton; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener; +import org.tizen.sdblib.service.FileEntry; + +public class FileExplorerDialog extends DAMessageBox { + private DAFileExplorer explorerTree = null; + private DACustomButton okButton = null; + private DACustomButton cancelButton = null; + + public FileExplorerDialog(Shell parentShell) { + super(parentShell); + shell.setLayout(new FormLayout()); + shell.setSize(500, 600); + shell.setBackground(ColorResources.DIALOG_BG_UPPER); + shell.setText("Select binary"); + + explorerTree = new DAFileExplorer(shell); + FormData data = new FormData(); + data.top = new FormAttachment(0, 15); + data.left = new FormAttachment(0, 20); + data.height = 510; + data.width = 460; + explorerTree.setLayoutData(data); + explorerTree.makeTree(); + + cancelButton = new DAButton(shell, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(explorerTree, 10); + data.right = new FormAttachment(100, -15); + data.height = 25; + data.width = 100; + cancelButton.setLayoutData(data); + cancelButton.setText(AnalyzerLabels.CANCEL); + cancelButton.addClickListener(new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + shell.dispose(); + } + }); + + okButton = new DAButton(shell, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(explorerTree, 10); + data.right = new FormAttachment(cancelButton, -5); + data.height = 25; + data.width = 100; + okButton.setLayoutData(data); + okButton.setText(AnalyzerLabels.OK); + okButton.addClickListener(new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + result = explorerTree.getSelection(); + shell.dispose(); + } + }); + + explorerTree.getTree().addMouseListener(new MouseListener() { + + @Override + public void mouseUp(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseDown(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseDoubleClick(MouseEvent e) { + Grid table = (Grid) e.widget; + GridItem[] items = (GridItem[]) table.getSelection(); + if (null == items || items.length == 0) { + return; + } + GridItem item = items[0]; + FileEntry entry = (FileEntry) item.getData(); + + if (entry.isDirectory() || entry.isRoot()) { + if (item.isExpanded()) { + item.fireEvent(SWT.Collapse); + } else { + item.fireEvent(SWT.Expand); + } + } else { + result = entry; + shell.dispose(); + } + + } + }); + } + +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/InputRow.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/InputRow.java new file mode 100644 index 0000000..023ff0f --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/InputRow.java @@ -0,0 +1,227 @@ +package org.tizen.dynamicanalyzer.swap.platform.ui; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Text; +import org.tizen.dynamicanalyzer.common.AnalyzerPaths; +import org.tizen.dynamicanalyzer.resources.ColorResources; +import org.tizen.dynamicanalyzer.resources.ImageResources; +import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager; +import org.tizen.dynamicanalyzer.ui.widgets.DAButton; +import org.tizen.dynamicanalyzer.ui.widgets.TitleComboPopupRenderer; +import org.tizen.dynamicanalyzer.ui.widgets.TitleComboRenderer; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButton; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonRenderer; +import org.tizen.dynamicanalyzer.widgets.combo.DACustomCombo; +import org.tizen.dynamicanalyzer.widgets.combo.DACustomComboSelectionListener; + +public class InputRow extends Composite { + private final static int ROW_HEIGHT = 18; + private Text binaryPathText = null; + private Text sourcePathText = null; + private DACustomCombo sourceCombo = null; + private DACustomButton minusButton = null; + private int index = -1; + + private List sbiList = new ArrayList(); + private DACustomButtonClickEventListener minusButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + BinarySettingManager.getInstance().removeInputRow( + binaryPathText.getText()); + button.getParent().dispose(); + } + }; + + public InputRow(Composite parent) { + super(parent, SWT.NONE); + this.setBackground(ColorResources.DIALOG_BG_UPPER); + + Rectangle pRect = parent.getBounds(); + Control lastChlid = null; + Control[] children = parent.getChildren(); + if (children.length - 1 > 0) { + lastChlid = children[children.length - 2]; + } + + FormData data = new FormData(); + if (null != lastChlid) { + data.top = new FormAttachment(lastChlid, 2); + } else { + data.top = new FormAttachment(0, 5); + } + data.height = ROW_HEIGHT; + data.left = new FormAttachment(0, 10); + data.width = pRect.width; + this.setLayoutData(data); + this.setLayout(new FormLayout()); + + binaryPathText = new Text(this, SWT.SINGLE); + sourcePathText = new Text(this, SWT.SINGLE); + sourceCombo = new DACustomCombo(this, SWT.NONE); + minusButton = new DAButton(this, SWT.NONE); + + data = new FormData(); + data.top = new FormAttachment(0, 0); + data.left = new FormAttachment(0, 0); + data.right = new FormAttachment(30, 0); + data.height = ROW_HEIGHT; + binaryPathText.setLayoutData(data); + + data = new FormData(); + data.top = new FormAttachment(0, 0); + data.left = new FormAttachment(30, 5); + data.right = new FormAttachment(60, 0); + data.height = ROW_HEIGHT; + sourcePathText.setLayoutData(data); + + data = new FormData(); + data.top = new FormAttachment(0, 0); + data.left = new FormAttachment(60, 5); + data.right = new FormAttachment(85, 0); + data.height = ROW_HEIGHT; + sourceCombo.setLayoutData(data); + + data = new FormData(); + data.top = new FormAttachment(0, 0); + data.left = new FormAttachment(85, 3); + data.right = new FormAttachment(100, -25); + data.height = ROW_HEIGHT; + minusButton.setLayoutData(data); + minusButton.setText("remove"); + minusButton.addClickListener(minusButtonListener); + + sourceCombo.setComboButtonGradation( + ColorResources.DEVICE_APPLICATION_BUTTON_NORMAL_START, + ColorResources.DEVICE_APPLICATION_BUTTON_NORMAL_END, + ColorResources.DEVICE_APPLICATION_BUTTON_PUSH_START, + ColorResources.DEVICE_APPLICATION_BUTTON_PUSH_END, + ColorResources.DEVICE_APPLICATION_BUTTON_HOVER_START, + ColorResources.DEVICE_APPLICATION_BUTTON_HOVER_END, + ColorResources.DEVICE_APPLICATION_BUTTON_DISABLE_START, + ColorResources.DEVICE_APPLICATION_BUTTON_DISABLE_END); + sourceCombo.setButtonImages(ImageResources.COMBO_DROPDOWN_UP, + ImageResources.COMBO_DROPDOWN_DOWN); + sourceCombo.setItemHeight(ROW_HEIGHT); + sourceCombo.setComboRender(new TitleComboRenderer()); + sourceCombo.setComboPopupRender(new TitleComboPopupRenderer()); + sourceCombo.setButtonRenderer(new DACustomButtonRenderer()); + sourceCombo.setText("select list"); + sourceCombo.addListener(SWT.MouseDown, new Listener() { + + @Override + public void handleEvent(Event event) { + if (!sourceCombo.isChildShellOpened()) { + try { + Runtime rt = Runtime.getRuntime(); + Process process = rt.exec(new String[] { + AnalyzerPaths.SBI_COMMAND, "list", "root" }); + process.waitFor(); + BufferedReader reader = new BufferedReader( + new InputStreamReader(process.getInputStream())); + BufferedReader error = new BufferedReader( + new InputStreamReader(process.getErrorStream())); + String line = null; + sbiList.clear(); + while (null != (line = reader.readLine())) { + sbiList.add(line); + } + + if (!sbiList.isEmpty()) { + sourceCombo.initCombo(); + for (String item : sbiList) { + sourceCombo.add(item); + } + } else { + String errStr = error.readLine(); + System.out.println("Error : " + errStr); + } + } catch (IOException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + }); + + sourceCombo.addSelectionListener(new DACustomComboSelectionListener() { + + @Override + public void selectionEvent(DACustomCombo combo) { + String rootName = combo.getText(); + if (null != rootName && !rootName.isEmpty()) { + try { + Runtime rt = Runtime.getRuntime(); + Process process = rt.exec(new String[] { + AnalyzerPaths.SBI_COMMAND, "show", "root", + rootName }); + process.waitFor(); + BufferedReader reader = new BufferedReader( + new InputStreamReader(process.getInputStream())); + BufferedReader error = new BufferedReader( + new InputStreamReader(process.getErrorStream())); + String line = null; + // sbiList.clear(); + String sysRootPath = null; + while (null != (line = reader.readLine())) { + // sbiList.add(line); + if (line.contains("SYSROOT_PATH")) { + int index = line.indexOf("="); + sysRootPath = line.substring(index + 1); + } + } + + if (null == sysRootPath) { + String errStr = error.readLine(); + System.out.println("Error : " + errStr); + } + System.out.println(sysRootPath); + sourcePathText.setText(sysRootPath); + BinarySettingManager.getInstance().updateInputRow( + binaryPathText.getText(), sysRootPath); + } catch (IOException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + }); + } + + public int getIndex() { + return index; + } + + public void setIndex(int i) { + index = i; + } + + public void setBinaryText(String text) { + binaryPathText.setText(text); + } + + public void setSourceText(String text) { + sourcePathText.setText(text); + } + + public void setSourceComboText(String text) { + sourceCombo.setText(text); + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/LoadSettingDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/LoadSettingDialog.java new file mode 100644 index 0000000..f9e4293 --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/LoadSettingDialog.java @@ -0,0 +1,302 @@ +package org.tizen.dynamicanalyzer.swap.platform.ui; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.nebula.widgets.grid.Grid; +import org.eclipse.nebula.widgets.grid.GridItem; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.KeyListener; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.events.MouseListener; +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.tizen.dynamicanalyzer.common.AnalyzerConstants; +import org.tizen.dynamicanalyzer.common.AnalyzerPaths; +import org.tizen.dynamicanalyzer.common.CommonConstants; +import org.tizen.dynamicanalyzer.common.DesignConstants; +import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; +import org.tizen.dynamicanalyzer.resources.ColorResources; +import org.tizen.dynamicanalyzer.resources.FontResources; +import org.tizen.dynamicanalyzer.swap.platform.BinarySettingData; +import org.tizen.dynamicanalyzer.ui.widgets.DAButton; +import org.tizen.dynamicanalyzer.ui.widgets.DAMessageBox; +import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite; +import org.tizen.dynamicanalyzer.ui.widgets.table.DefaultTableComparator; +import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButton; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener; + +public class LoadSettingDialog extends DAMessageBox { + public static int SAVE_FOLDER = 0; + public static int TEMP_FOLDER = 1; + + public static String VERSION_KEY = "version"; //$NON-NLS-1$ + public static int VERSION_INVALID = 0; + public static int VERSION_VALID = 1; + + public static String CURRENT_KEY = "current"; //$NON-NLS-1$ + public static int CURRENT = 0; + public static int OTHERS = 1; + + private DATableComposite saveTable = null; + private DACustomButton okButton = null; + private DACustomButton cancelButton = null; + BinaryAnalyzingConfigDialog parentDialog = null; + + private String[] columnNames = { "File name" }; + private int[] columnSizes = { 390 }; + private boolean[] columnVisibility = { true }; + int[] sortTypes = { AnalyzerConstants.SORT_TYPE_GRID }; + int[] sourceColumns = { 0 }; + + public LoadSettingDialog(Shell parent) { + super(parent); + } + + protected boolean run() { + shell.setLayout(new FormLayout()); + shell.setSize(400, 204); + shell.setText(AnalyzerLabels.OPEN_TRACE_TITLE); + + Composite tableComp = new Composite(shell, SWT.NONE); + tableComp.setLayout(new FormLayout()); + FormData data = new FormData(); + data.top = new FormAttachment(0, 0); + data.left = new FormAttachment(0, 0); + data.right = new FormAttachment(100, 0); + data.height = 131; + tableComp.setLayoutData(data); + tableComp.setBackground(ColorResources.DIALOG_BG_UPPER); + + Label saveFile = new Label(tableComp, SWT.TRANSPARENT); + saveFile.setText(AnalyzerLabels.OPEN_TRACE_DLG_SAVED_FILE); + saveFile.setBackground(ColorResources.DIALOG_BG_UPPER); + saveFile.setAlignment(SWT.LEFT); + saveFile.setForeground(ColorResources.OPEN_TRACE_LABEL_COLOR); + saveFile.setFont(FontResources.OPEN_TRACE_INNER_TITLE); + + saveTable = new SettingSaveTable(tableComp, SWT.BORDER | SWT.V_SCROLL + | SWT.SINGLE); + saveTable.setTableName(AnalyzerLabels.OPEN_TRACE_DLG_SAVE_TABLE_NAME); + saveTable.setComparator(new DefaultTableComparator()); + saveTable.setSortTypes(sortTypes); + saveTable.setSourceColumns(sourceColumns); + saveTable.setColumns(columnNames); + saveTable.setColumnSize(columnSizes); + saveTable.setColumnVisibility(columnVisibility); + saveTable.setTableToolTipEnable(false); + + saveTable.getTable().addMouseListener(mouseListener); + saveTable.getTable().addKeyListener(keyListener); + + data = new FormData(); + data.top = new FormAttachment(0, 5); + data.left = new FormAttachment(0, 7); + data.height = 18; + saveFile.setLayoutData(data); + + data = new FormData(); + data.top = new FormAttachment(saveFile, 0); + data.left = new FormAttachment(0, 6); + data.right = new FormAttachment(100, -6); + data.height = 100; + saveTable.setLayoutData(data); + + Composite buttonComp = new Composite(shell, SWT.NONE); + FormLayout compLayout = new FormLayout(); + buttonComp.setLayout(compLayout); + buttonComp + .setBackground(ColorResources.OPEN_TRACE_BUTTON_COMPOSITE_BG_COLOR); + + FormData compData = new FormData(); + compData.top = new FormAttachment(tableComp, 0); + compData.left = new FormAttachment(0, 0); + compData.right = new FormAttachment(100, 0); + compData.height = 51; + buttonComp.setLayoutData(compData); + + buttonComp.addPaintListener(new PaintListener() { + + @Override + public void paintControl(PaintEvent e) { + Composite comp = (Composite) e.widget; + Rectangle rect = comp.getClientArea(); + e.gc.setForeground(ColorResources.DIALOG_SUNKEN_1); + e.gc.drawLine(rect.x, rect.y, rect.x + rect.width, rect.y); + e.gc.setForeground(ColorResources.DIALOG_SUNKEN_2); + e.gc.drawLine(rect.x, rect.y + 1, rect.x + rect.width, + rect.y + 1); + } + }); + okButton = new DAButton(buttonComp, SWT.NONE); + okButton.addClickListener(okButtonListener); + okButton.setText(AnalyzerLabels.OPEN); + okButton.setFont(FontResources.DIALOG_BUTTON_FONT); + FormData okData = new FormData(); + okData.top = new FormAttachment(0, 7); + okData.left = new FormAttachment(50, + -(DesignConstants.DA_BUTTON_WIDTH + 4)); + okData.width = DesignConstants.DA_BUTTON_WIDTH; + okData.height = DesignConstants.DA_BUTTON_HEIGHT; + okButton.setLayoutData(okData); + + cancelButton = new DAButton(buttonComp, SWT.NONE); + cancelButton.addClickListener(cancelButtonListener); + cancelButton.setText(AnalyzerLabels.CLOSE); + cancelButton.setFont(FontResources.DIALOG_BUTTON_FONT); + FormData cancelData = new FormData(); + cancelData.top = new FormAttachment(0, 7); + cancelData.left = new FormAttachment(50, 4); + cancelData.width = DesignConstants.DA_BUTTON_WIDTH; + cancelData.height = DesignConstants.DA_BUTTON_HEIGHT; + cancelButton.setLayoutData(cancelData); + + saveTable.updateTable(); + return true; + } + + private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + Grid selectedTable = saveTable.getTable(); + GridItem[] selections = selectedTable.getSelection(); + if (null == selections || 0 == selections.length) { + return; + } + GridItem selection = selections[0]; + String openPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH + + File.separator + selection.getText(); + + openAction(openPath); + shell.dispose(); + } + }; + + private DACustomButtonClickEventListener cancelButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + shell.dispose(); + } + }; + + private MouseListener mouseListener = new MouseListener() { + + @Override + public void mouseUp(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseDown(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseDoubleClick(MouseEvent e) { + Grid grid = (Grid) e.widget; + GridItem[] items = grid.getSelection(); + if (0 == items.length) { + return; + } + + GridItem item = items[0]; + String openPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH + + File.separator + item.getText(); + openAction(openPath); + shell.dispose(); + } + }; + + private KeyListener keyListener = new KeyListener() { + + @Override + public void keyReleased(KeyEvent e) { + if (e.keyCode == SWT.DEL) { + Grid grid = (Grid) e.widget; + GridItem[] items = grid.getSelection(); + if (0 == items.length) { + return; + } + int index = grid.getSelectionIndex(); + GridItem item = items[0]; + + String openPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH + + File.separator + item.getText(); + + if (AnalyzerUtil.deleteFile(new File(openPath))) { + grid.remove(index); + } else { + // log for debug + System.out.println("delete save file failed..."); //$NON-NLS-1$ + } + } + + } + + @Override + public void keyPressed(KeyEvent e) { + // TODO Auto-generated method stub + + } + }; + + private void openAction(String path) { + if (null == path) { + return; + } + File saveFile = new File(path); + if (!saveFile.exists() || !saveFile.isFile()) { + return; + } + + BufferedReader br = null; + String content = null; + boolean success = false; + List binData = new ArrayList(); + try { + br = new BufferedReader(new FileReader(saveFile)); + while (null != (content = br.readLine())) { + BinarySettingData data = new BinarySettingData(); + String[] splitContent = content.split(CommonConstants.COMMA); + data.setBinaryPath(new String(splitContent[0])); + data.setSourcePath(new String(splitContent[1])); + binData.add(data); + } + success = true; + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + AnalyzerUtil.tryClose(br); + } + + if (success) { + parentDialog.loadBinarySetting(binData); + } else { + System.out.println("load binary setting failed..."); + } + } + + public void setParentDialog(BinaryAnalyzingConfigDialog pDlg) { + parentDialog = pDlg; + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SaveSettingDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SaveSettingDialog.java new file mode 100644 index 0000000..69e69fc --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SaveSettingDialog.java @@ -0,0 +1,244 @@ +package org.tizen.dynamicanalyzer.swap.platform.ui; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.KeyListener; +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; +import org.tizen.dynamicanalyzer.common.AnalyzerConstants; +import org.tizen.dynamicanalyzer.common.AnalyzerPaths; +import org.tizen.dynamicanalyzer.common.CommonConstants; +import org.tizen.dynamicanalyzer.common.DesignConstants; +import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; +import org.tizen.dynamicanalyzer.resources.ColorResources; +import org.tizen.dynamicanalyzer.swap.platform.BinarySettingData; +import org.tizen.dynamicanalyzer.swap.platform.BinarySettingManager; +import org.tizen.dynamicanalyzer.ui.widgets.DAButton; +import org.tizen.dynamicanalyzer.ui.widgets.DAMessageBox; +import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButton; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener; + +public class SaveSettingDialog extends DAMessageBox { + + private int MAX_SAVE_FILE_NAME_LENGTH = 35; + private final String DEFAULT_TIME_FORMAT = "_yyyy-MM-dd-HH-mm-ss";//$NON-NLS-1$ + + private Text textBox = null; + private String saveFileName = null; + private DAButton okButton = null; + private DAButton cancelButton = null; + + public SaveSettingDialog(Shell parentShell) { + super(parentShell); + } + + protected boolean run() { + shell.setLayout(new FormLayout()); + shell.setSize(446, 127 + 22); + shell.setBackground(ColorResources.DIALOG_BG_UPPER); + + Label label = new Label(shell, SWT.TRANSPARENT); + FormData data = new FormData(); + data.top = new FormAttachment(0, 11); + data.left = new FormAttachment(0, 12); + data.height = 15; + data.width = 150; + label.setLayoutData(data); + label.setForeground(ColorResources.BLACK); + label.setText(AnalyzerLabels.SAVE_TRACE_DLG_SAVE_FILE_NAME); + label.setBackground(ColorResources.DIALOG_BG_UPPER); + + textBox = new Text(shell, SWT.SINGLE); + data = new FormData(); + data.top = new FormAttachment(label, 10); + data.left = new FormAttachment(0, 9); + data.height = 26; + data.width = 410; + textBox.setLayoutData(data); + textBox.setBackground(ColorResources.VIEW_BG_COLOR); + textBox.addKeyListener(keyListener); + + Composite buttonComp = new Composite(shell, SWT.NONE); + buttonComp.setLayout(new FormLayout()); + buttonComp.setBackground(ColorResources.DIALOG_BG_LOWER); + + buttonComp.addPaintListener(new PaintListener() { + + @Override + public void paintControl(PaintEvent e) { + Composite comp = (Composite) e.widget; + Rectangle rect = comp.getClientArea(); + e.gc.setForeground(ColorResources.DIALOG_SUNKEN_1); + e.gc.drawLine(rect.x, rect.y, rect.x + rect.width, rect.y); + e.gc.setForeground(ColorResources.DIALOG_SUNKEN_2); + e.gc.drawLine(rect.x, rect.y + 1, rect.x + rect.width, + rect.y + 1); + } + }); + + FormData compData = new FormData(); + compData.top = new FormAttachment(0, 76); + compData.left = new FormAttachment(0, 0); + compData.right = new FormAttachment(100, 0); + compData.bottom = new FormAttachment(100, 0); + buttonComp.setLayoutData(compData); + + okButton = new DAButton(buttonComp, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(0, 11); + data.left = new FormAttachment(50, -DesignConstants.DA_BUTTON_WIDTH - 4); + data.height = DesignConstants.DA_BUTTON_HEIGHT; + data.width = DesignConstants.DA_BUTTON_WIDTH; + okButton.setLayoutData(data); + okButton.setText(AnalyzerLabels.OK); + okButton.addClickListener(okButtonListener); + + cancelButton = new DAButton(buttonComp, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(0, 11); + data.left = new FormAttachment(50, 4); + data.height = DesignConstants.DA_BUTTON_HEIGHT; + data.width = DesignConstants.DA_BUTTON_WIDTH; + cancelButton.setLayoutData(data); + cancelButton.setText(AnalyzerLabels.CANCEL); + cancelButton.addClickListener(cancelButtonListener); + + saveFileName = getSaveFileName(); + if (null == saveFileName) { + // create warning message box + System.out.println("save file name is null"); + return false; + } else { + textBox.setText(saveFileName); + String textString = textBox.getText(); + textBox.setSelection(0, textString.length()); + } + + return true; + } + + private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + saveFileName = textBox.getText(); + + if (saveFileName.length() > MAX_SAVE_FILE_NAME_LENGTH) { + String old = saveFileName; + saveFileName = old.substring(0, MAX_SAVE_FILE_NAME_LENGTH - 1); + } + + if (executeSaveTrace()) { + result = AnalyzerConstants.SUCCESS; + } + shell.dispose(); + } + }; + + private DACustomButtonClickEventListener cancelButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + shell.dispose(); + } + }; + private KeyListener keyListener = new KeyListener() { + + @Override + public void keyReleased(KeyEvent e) { + if (!checkValidFileName(textBox.getText())) { + okButton.setButtonEnabled(false); + } else { + okButton.setButtonEnabled(true); + } + } + + @Override + public void keyPressed(KeyEvent e) { + + } + }; + + private String getSaveFileName() { + SimpleDateFormat format = new SimpleDateFormat(DEFAULT_TIME_FORMAT, + Locale.KOREA); + Date date = new Date(); + String tmpAppName = "da_"; + int length = tmpAppName.length() - MAX_SAVE_FILE_NAME_LENGTH; + if (length > 0) { + tmpAppName = tmpAppName.substring(0, MAX_SAVE_FILE_NAME_LENGTH - 1); + } + String saveFileName = tmpAppName + format.format(date); + if (null == saveFileName || saveFileName.isEmpty()) { + return null; + } + return saveFileName; + } + + private boolean executeSaveTrace() { + String targetPath = AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH + + File.separator + saveFileName + ".setting"; + File saveFile = new File(targetPath); + FileWriter fileWriter = null; + BufferedWriter bufWriter = null; + List binaryData = BinarySettingManager.getInstance() + .getTempBinarySettings(); + boolean success = false; + try { + fileWriter = new FileWriter(saveFile); + bufWriter = new BufferedWriter(fileWriter); + for (int i = 0; i < binaryData.size(); i++) { + bufWriter.write(binaryData.get(i).getSaveData()); + bufWriter.newLine(); + } + success = true; + } catch (IOException e) { + e.printStackTrace(); + } finally { + AnalyzerUtil.tryClose(bufWriter, fileWriter); + } + + if (success) { + // add snapshot model update + System.out.println("save binary setting complete!!"); //$NON-NLS-1$ + + } else { + System.out.println("save binary setting fail..."); //$NON-NLS-1$ + return false; + } + return true; + } + + private boolean checkValidFileName(String str) { + if (str == null + || str.isEmpty() + || str.contains("\\") //$NON-NLS-1$ + || str.contains(CommonConstants.SLASH) + || str.contains(CommonConstants.COLON) + || str.contains(CommonConstants.ASTERISK) + || str.contains("\\?") || str.contains("\"") //$NON-NLS-1$ //$NON-NLS-2$ + || str.contains("<") || str.contains(">") //$NON-NLS-1$ //$NON-NLS-2$ + || str.contains(CommonConstants.CMD_SPLIT)) { + return false; + } + return true; + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SettingSaveTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SettingSaveTable.java new file mode 100644 index 0000000..7b42a70 --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/platform/ui/SettingSaveTable.java @@ -0,0 +1,65 @@ +package org.tizen.dynamicanalyzer.swap.platform.ui; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.eclipse.nebula.widgets.grid.GridItem; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.tizen.dynamicanalyzer.common.AnalyzerPaths; +import org.tizen.dynamicanalyzer.model.TableInput; +import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite; +import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; + +public class SettingSaveTable extends DATableComposite { + + public SettingSaveTable(Composite parent, int style) { + super(parent, style); + } + + @Override + protected List makeTableInput() { + List saveFileList = AnalyzerUtil + .getFiles(AnalyzerPaths.DYNAMIC_ANALYZER_SETTING_PATH); + List input = new ArrayList(); + if (null != saveFileList) { + int size = saveFileList.size(); + for (int i = 0; i < size; i++) { + // create text + List text = new ArrayList(); + String inputText1 = saveFileList.get(i); + if (inputText1.isEmpty()) { + continue; + } + + text.add(inputText1); + TableInput tableInput = new TableInput(); + tableInput.setText(text); + input.add(tableInput); + } + } + return input; + } + + @Override + public void updateTable() { + table.removeAll(); + List input = makeTableInput(); + if (null == input) { + return; + } + if (null != comparator) { + Collections.sort(input, comparator); + } + int size = input.size(); + for (int i = 0; i < size; i++) { + List text = input.get(i).getText(); + GridItem gridItem = new GridItem(table, SWT.NONE); + String inputText = text.get(0); + gridItem.setText(inputText); + } + table.update(); + } + +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartView.java index 9e8e721..7b6761c 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartView.java @@ -34,7 +34,6 @@ import org.eclipse.swt.custom.StackLayout; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.DASelectionData; import org.tizen.dynamicanalyzer.model.DAView; @@ -44,6 +43,7 @@ import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.ui.common.SetRangeMarkerMouseMoveListener; import org.tizen.dynamicanalyzer.ui.common.UICommonConstants; @@ -202,7 +202,7 @@ public class FileChartView extends DAView { @Override public void updateLog(LogPackage logPack) { - Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_FILE); + Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_FILE); if (null == logs || logs.getLogs().size() == 0) { return; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackManager.java index 149a84a..4637359 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackManager.java @@ -41,16 +41,17 @@ import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.ProbeCommonData; import org.tizen.dynamicanalyzer.swap.model.probe2.UserFunctionData; import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfileDataMaker; +import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; public class CallStackManager extends BaseCallstackManager { public void makeUserCallstack(LogData input, ProfileDataMaker profiler) { UserFunctionData log = (UserFunctionData) input; HashMap addrMap = getCallStackApiByAddrMap(); - boolean isPieBuild = AnalyzerManager.getProject().isPieBuild(); + boolean isPieBuild = AnalyzerUtil.isPieBuild(log.getPid()); String baseAddr = Long.toString(AnalyzerManager.getProject() - .getBaseAddress()); - String binPath = AnalyzerManager.getProject().getBinaryPath(); + .getBaseAddress(log.getPid())); + String binPath = AnalyzerUtil.getBinaryPath(log.getPid()); if (null == binPath || binPath.isEmpty()) { return; } @@ -72,7 +73,8 @@ public class CallStackManager extends BaseCallstackManager { String strSelfSymbol = getUserFunctionPosition() + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING + strSelfFuncName; - selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol); + selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol, + log.getPid()); addrMap.put(selfAddr, selfCallstackUnit); } @@ -89,7 +91,8 @@ public class CallStackManager extends BaseCallstackManager { String strCallerSymbol = getUserFunctionPosition() + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING + strCallerFuncName; - callerCallstackUnit = new CallStackUnit(callerAddr, strCallerSymbol); + callerCallstackUnit = new CallStackUnit(callerAddr, + strCallerSymbol, log.getPid()); addrMap.put(callerAddr, callerCallstackUnit); } @@ -101,13 +104,15 @@ public class CallStackManager extends BaseCallstackManager { if (!AnalyzerManager.isInBinaryRange(callerAddr)) { CallStackUnit callbackApi = new CallStackUnit( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, - LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL); + LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL, + log.getPid()); userCallstack.add(callbackApi); if (addrMap .get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) { CallStackUnit defaultCallstackUnit = new CallStackUnit( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, - LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL); + LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL, + log.getPid()); addrMap.put( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, defaultCallstackUnit); @@ -116,13 +121,15 @@ public class CallStackManager extends BaseCallstackManager { AnalyzerConstants.VIRTUAL_THUNK)) { CallStackUnit callbackApi = new CallStackUnit( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, - LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL); + LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL, + log.getPid()); userCallstack.add(callbackApi); if (addrMap .get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) { CallStackUnit defaultCallstackUnit = new CallStackUnit( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, - LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL); + LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL, + log.getPid()); addrMap.put( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, defaultCallstackUnit); @@ -207,10 +214,10 @@ public class CallStackManager extends BaseCallstackManager { public void makeCallstackWithoutBacktrace(LogData inputData) { HashMap addrMap = getCallStackApiByAddrMap(); - boolean isPieBuild = AnalyzerManager.getProject().isPieBuild(); + boolean isPieBuild = AnalyzerUtil.isPieBuild(inputData.getPid()); String baseAddr = Long.toString(AnalyzerManager.getProject() - .getBaseAddress()); - String binPath = AnalyzerManager.getProject().getBinaryPath(); + .getBaseAddress(inputData.getPid())); + String binPath = AnalyzerUtil.getBinaryPath(inputData.getPid()); if (null == binPath || binPath.isEmpty()) { return; } @@ -249,13 +256,15 @@ public class CallStackManager extends BaseCallstackManager { if ((size == 0) || (!AnalyzerManager.isInBinaryRange(callerAddr))) { CallStackUnit callbackApi = new CallStackUnit( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, - LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL); + LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL, + log.getPid()); probeCallstack.add(callbackApi); if (addrMap .get(LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR) == null) { CallStackUnit defaultCallstackUnit = new CallStackUnit( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, - LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL); + LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_SYMBOL, + log.getPid()); addrMap.put( LogCenterConstants.USER_FUNCTION_CALLBACK_FUNC_ADDR, defaultCallstackUnit); @@ -269,7 +278,7 @@ public class CallStackManager extends BaseCallstackManager { + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING + strCallerFuncName; callerCallstackUnit = new CallStackUnit(callerAddr, - strCallerSymbol); + strCallerSymbol, log.getPid()); addrMap.put(callerAddr, callerCallstackUnit); } @@ -297,10 +306,10 @@ public class CallStackManager extends BaseCallstackManager { HashMap addrMap = getCallStackApiByAddrMap(); HashMap dupUserCallMap = getDupUserCallByTidMap(); - boolean isPieBuild = AnalyzerManager.getProject().isPieBuild(); + boolean isPieBuild = AnalyzerUtil.isPieBuild(input.getPid()); String baseAddr = Long.toString(AnalyzerManager.getProject() - .getBaseAddress()); - String binPath = AnalyzerManager.getProject().getBinaryPath(); + .getBaseAddress(input.getPid())); + String binPath = AnalyzerUtil.getBinaryPath(input.getPid()); if (null == binPath || binPath.isEmpty()) { return false; } @@ -318,7 +327,8 @@ public class CallStackManager extends BaseCallstackManager { String strSelfSymbol = getUserFunctionPosition() + AnalyzerConstants.CALLSTACK_API_TOKEN_STRING + strSelfFuncName; - selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol); + selfCallstackUnit = new CallStackUnit(selfAddr, strSelfSymbol, + input.getPid()); addrMap.put(selfAddr, selfCallstackUnit); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackUnit.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackUnit.java index 66af180..8c60ab2 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackUnit.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackUnit.java @@ -34,6 +34,7 @@ import org.tizen.dynamicanalyzer.communicator.DACommunicator; import org.tizen.dynamicanalyzer.nl.InformationViewLabels; import org.tizen.dynamicanalyzer.project.PackageInfo; import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler; +import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; public class CallStackUnit { private final String UNKNOWN_LIBRARY = InformationViewLabels.CALLSTACK_TABLE_UNKNOWN_LIBRARY; @@ -45,8 +46,9 @@ public class CallStackUnit { private String functionName; private String offset; private String etc; + private int pid; - public CallStackUnit(long addr, String symbol) { + public CallStackUnit(long addr, String symbol, int pid) { address = addr; functionStartAddress = addr; this.originSymbol = symbol; @@ -54,6 +56,7 @@ public class CallStackUnit { functionName = CommonConstants.EMPTY; offset = CommonConstants.EMPTY; etc = CommonConstants.EMPTY; + this.pid = pid; makeCallstackData(); } @@ -66,13 +69,11 @@ public class CallStackUnit { path = UNKNOWN_LIBRARY; } + boolean isPieBuild = AnalyzerUtil.isPieBuild(pid); + String baseAddr = Long.toString(AnalyzerManager.getProject() + .getBaseAddress(pid)); + String binPath = AnalyzerUtil.getBinaryPath(pid); if (splitPath.length < 2) { - boolean isPieBuild = AnalyzerManager.getProject().isPieBuild(); - String baseAddr = Long.toString(AnalyzerManager.getProject() - .getBaseAddress()); -// String binPath = AnalyzerManager.getProject().getBinaryPath(); - String binPath = DACommunicator.getSelectedApp().getBinInfo().getPath(); - functionName = SymbolManager.addr2func(binPath, Long.toString(address), isPieBuild, baseAddr); // FIXME: hard coding @@ -95,13 +96,6 @@ public class CallStackUnit { if (splitFunc.length != 0) { functionName = splitFunc[0]; if (functionName.isEmpty()) { - boolean isPieBuild = AnalyzerManager.getProject() - .isPieBuild(); - String baseAddr = Long.toString(AnalyzerManager - .getProject().getBaseAddress()); - String binPath = AnalyzerManager.getProject() - .getBinaryPath(); - functionName = SymbolManager.addr2func(binPath, Long.toString(address), isPieBuild, baseAddr); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/snapshot/SnapshotView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/snapshot/SnapshotView.java index 2420c21..7f8a189 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/snapshot/SnapshotView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/snapshot/SnapshotView.java @@ -47,7 +47,6 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.CommonConstants; import org.tizen.dynamicanalyzer.common.DASelectionData; @@ -59,6 +58,7 @@ import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.sql.SqlManager; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData; import org.tizen.dynamicanalyzer.ui.page.ViewAction; @@ -393,7 +393,7 @@ public class SnapshotView extends DAView { @Override public void updateLog(LogPackage logPack) { - Logs logs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SYSTEM); + Logs logs = logPack.getLogs(DataChannelConstants.MSG_DATA_SYSTEM); if (null == logs || null == logs.getLogs() || logs.getLogs().isEmpty()) { return; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartView.java index a53a12d..cf903f6 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartView.java @@ -34,7 +34,6 @@ import org.eclipse.swt.custom.StackLayout; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.DASelectionData; import org.tizen.dynamicanalyzer.model.DAView; @@ -44,6 +43,7 @@ import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.ui.common.SetRangeMarkerMouseMoveListener; import org.tizen.dynamicanalyzer.ui.common.UICommonConstants; @@ -207,7 +207,7 @@ public class NetworkChartView extends DAView { @Override public void updateLog(LogPackage logPack) { - Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_NETWORK); + Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_NETWORK); if (null == logs || logs.getLogs().size() == 0) { return; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/GLPage.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/GLPage.java index 14a5e3e..4822e15 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/GLPage.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/GLPage.java @@ -32,11 +32,11 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; import org.tizen.dynamicanalyzer.shortcut.ShortCutManager; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.GLES20LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.ui.info.callstack.CallstackView; @@ -119,7 +119,7 @@ public class GLPage extends DAPageComposite { @Override public void updateLog(LogPackage logPack) { - Logs glesLogs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_GLES20); + Logs glesLogs = logPack.getLogs(DataChannelConstants.MSG_PROBE_GLES20); if (glesLogs == null || glesLogs.getLogs().size() == 0) { return; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/apiList/GLAPIListView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/apiList/GLAPIListView.java index b33d253..ac784b6 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/apiList/GLAPIListView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/apiList/GLAPIListView.java @@ -28,6 +28,7 @@ package org.tizen.dynamicanalyzer.ui.opengl.ui.apiList; import org.eclipse.nebula.widgets.grid.GridItem; import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; @@ -44,11 +45,14 @@ import org.tizen.dynamicanalyzer.ui.widgets.ViewContainer; public class GLAPIListView extends DAView { public static final String ID = GLAPIListView.class.getName(); - + private ViewContainer viewContainer; private int[] innerMaxWeight = { 0, 100 }; private int[] outerMaxWeight = { 100, 0 }; + private int[] bottomMaxWeight = { 100, 0 }; + + private int[] oldBottomLayout = null; GLAPIListTable glAPIListTable; @@ -58,7 +62,7 @@ public class GLAPIListView extends DAView { viewContainer = new ViewContainer(this, true); viewContainer.setTitleText(GLPageLabels.GL_API_LIST_VIEW_TITLE); - setMaxWeight(innerMaxWeight, outerMaxWeight); +// setMaxWeight(innerMaxWeight, outerMaxWeight); Composite contents = viewContainer.getContentArea(); contents.setBackground(ColorResources.WINDOW_BG_COLOR); @@ -117,10 +121,59 @@ public class GLAPIListView extends DAView { public void otherViewSelectionOccured() { glAPIListTable.deselectAll(); } - + @Override public void clear() { viewContainer.setTitleText(GLPageLabels.GL_API_LIST_VIEW_TITLE); glAPIListTable.clear(); } + + @Override + public void setMaxSize(boolean maximized) { + + if (null == innerMaxWeight || null == outerMaxWeight) { + return; + } + + Composite bParent = getParent(); + if (!(bParent instanceof SashForm)) { + bParent = bParent.getParent(); + if (!(bParent instanceof SashForm)) { + bParent = bParent.getParent(); + if (!(bParent instanceof SashForm)) { + return; + } + } + } + + Composite parent = bParent.getParent(); + if (!(parent instanceof SashForm)) { + parent = parent.getParent(); + if (!(parent instanceof SashForm)) { + return; + } + } + + Composite pParent = parent.getParent(); + if (!(pParent instanceof SashForm)) { + return; + } + + SashForm bottomForm = (SashForm) bParent; + SashForm innerForm = (SashForm) parent; + SashForm outerForm = (SashForm) pParent; + + if (maximized) { + oldInnerLayout = innerForm.getWeights(); + oldOuterLayout = outerForm.getWeights(); + oldBottomLayout = bottomForm.getWeights(); + outerForm.setWeights(outerMaxWeight); + innerForm.setWeights(innerMaxWeight); + bottomForm.setWeights(bottomMaxWeight); + } else { + innerForm.setWeights(oldInnerLayout); + outerForm.setWeights(oldOuterLayout); + bottomForm.setWeights(oldBottomLayout); + } + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/chart/GLFrameRateChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/chart/GLFrameRateChart.java index 07b3b8d..aa139b9 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/chart/GLFrameRateChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/chart/GLFrameRateChart.java @@ -28,11 +28,11 @@ package org.tizen.dynamicanalyzer.ui.opengl.ui.chart; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.ui.opengl.data.GLDataMaker; import org.tizen.dynamicanalyzer.ui.timeline.chart.TimelineChart; @@ -85,7 +85,7 @@ public class GLFrameRateChart extends TimelineChart { @Override public void parseLogPackage(LogPackage logPack) { - Logs logs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SYSTEM); + Logs logs = logPack.getLogs(DataChannelConstants.MSG_DATA_SYSTEM); if (logs == null) { return; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/context/GLContextView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/context/GLContextView.java index efb006b..390a15a 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/context/GLContextView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/opengl/ui/context/GLContextView.java @@ -28,6 +28,7 @@ package org.tizen.dynamicanalyzer.ui.opengl.ui.context; import org.eclipse.nebula.widgets.grid.GridItem; import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.tizen.dynamicanalyzer.common.DASelectionData; @@ -46,6 +47,12 @@ public class GLContextView extends DAView { private ViewContainer viewContainer; private GLContextTreeTable glContextTreeTable; + private int[] innerMaxWeight = { 0, 100 }; + private int[] outerMaxWeight = { 100, 0 }; + private int[] bottomMaxWeight = { 0, 100 }; + + private int[] oldBottomLayout = null; + public GLContextView(Composite parent, int style) { super(parent, style); setLayout(new FillLayout()); @@ -53,10 +60,6 @@ public class GLContextView extends DAView { viewContainer = new ViewContainer(this, true); viewContainer.setTitleText(GLPageLabels.GL_CONTEXT_VIEW_TITLE); - int[] innerMaxWeight = { 0, 100 }; - int[] outerMaxWeight = { 0, 100 }; - setMaxWeight(innerMaxWeight, outerMaxWeight); - Composite contents = viewContainer.getContentArea(); contents.setBackground(ColorResources.VIEW_BG_COLOR); contents.setLayout(new FillLayout()); @@ -97,4 +100,53 @@ public class GLContextView extends DAView { public void otherViewSelectionOccured() { glContextTreeTable.deselectAll(); } + + @Override + public void setMaxSize(boolean maximized) { + + if (null == innerMaxWeight || null == outerMaxWeight) { + return; + } + + Composite bParent = getParent(); + if (!(bParent instanceof SashForm)) { + bParent = bParent.getParent(); + if (!(bParent instanceof SashForm)) { + bParent = bParent.getParent(); + if (!(bParent instanceof SashForm)) { + return; + } + } + } + + Composite parent = bParent.getParent(); + if (!(parent instanceof SashForm)) { + parent = parent.getParent(); + if (!(parent instanceof SashForm)) { + return; + } + } + + Composite pParent = parent.getParent(); + if (!(pParent instanceof SashForm)) { + return; + } + + SashForm bottomForm = (SashForm) bParent; + SashForm innerForm = (SashForm) parent; + SashForm outerForm = (SashForm) pParent; + + if (maximized) { + oldInnerLayout = innerForm.getWeights(); + oldOuterLayout = outerForm.getWeights(); + oldBottomLayout = bottomForm.getWeights(); + outerForm.setWeights(outerMaxWeight); + innerForm.setWeights(innerMaxWeight); + bottomForm.setWeights(bottomMaxWeight); + } else { + innerForm.setWeights(oldInnerLayout); + outerForm.setWeights(oldOuterLayout); + bottomForm.setWeights(oldBottomLayout); + } + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/range/RangeDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/range/RangeDataManager.java index eec1ed1..e525a78 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/range/RangeDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/range/RangeDataManager.java @@ -37,6 +37,7 @@ import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; import org.tizen.dynamicanalyzer.sql.SqlManager; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory; import org.tizen.dynamicanalyzer.swap.model.probe2.ProfileData; @@ -256,8 +257,8 @@ public class RangeDataManager implements Runnable { int last = -1; for (int i = 0; i < size; i++) { /* !! sample db table is null.. */ - if (logIds.get(i) != AnalyzerConstants.MSG_DATA_SYSTEM - && logIds.get(i) != AnalyzerConstants.MSG_DATA_SAMPLE) { + if (logIds.get(i) != DataChannelConstants.MSG_DATA_SYSTEM + && logIds.get(i) != DataChannelConstants.MSG_DATA_SAMPLE) { int ret = SqlManager.getInstance().getRangeMinSeq( logIds.get(i), markerStartTime); if (ret >= 0) { @@ -279,8 +280,8 @@ public class RangeDataManager implements Runnable { } for (int i = 0; i < size; i++) { - if (logIds.get(i) != AnalyzerConstants.MSG_DATA_SYSTEM - && logIds.get(i) != AnalyzerConstants.MSG_DATA_SAMPLE) { + if (logIds.get(i) != DataChannelConstants.MSG_DATA_SYSTEM + && logIds.get(i) != DataChannelConstants.MSG_DATA_SAMPLE) { Logs logs = new Logs(logIds.get(i)); input = SqlManager.getInstance().selectArea(logIds.get(i), from, to); @@ -301,7 +302,7 @@ public class RangeDataManager implements Runnable { from = -1; last = -1; for (int i = 0; i < size; i++) { - if (logIds.get(i) == AnalyzerConstants.MSG_DATA_SAMPLE) { + if (logIds.get(i) == DataChannelConstants.MSG_DATA_SAMPLE) { int ret = SqlManager.getInstance().getRangeMinSeq( logIds.get(i), markerStartTime); if (ret >= 0) { @@ -323,7 +324,7 @@ public class RangeDataManager implements Runnable { } for (int i = 0; i < size; i++) { - if (logIds.get(i) == AnalyzerConstants.MSG_DATA_SAMPLE) { + if (logIds.get(i) == DataChannelConstants.MSG_DATA_SAMPLE) { Logs logs = new Logs(logIds.get(i)); input = SqlManager.getInstance().selectArea(logIds.get(i), from, to); @@ -351,7 +352,7 @@ public class RangeDataManager implements Runnable { } private void makeRangeData(LogPackage logPack) { - Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_FILE); + Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_FILE); if (null != logs) { List resourceInputs = logs.getLogs(); /* make file failed data and warning data */ @@ -363,7 +364,7 @@ public class RangeDataManager implements Runnable { } } - logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_MEMORY); + logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_MEMORY); if (null != logs) { List memoryInputs = logs.getLogs(); /* memory leak check */ @@ -373,15 +374,15 @@ public class RangeDataManager implements Runnable { } } - logs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SAMPLE); + logs = logPack.getLogs(DataChannelConstants.MSG_DATA_SAMPLE); if (null != logs) { List profilingInputs = logs.getLogs(); /* profiling data make */ int size = profilingInputs.size(); for (int i = 0; i < size; i++) { ProfileData input = (ProfileData) profilingInputs.get(i); -// String[] inputArray = new String[input.size()]; -// input.toArray(inputArray); + // String[] inputArray = new String[input.size()]; + // input.toArray(inputArray); profileDataMaker.makeFunctionUsageProfileData(input); } } @@ -391,11 +392,11 @@ public class RangeDataManager implements Runnable { List userFunctions = logs.getLogs(); int size = userFunctions.size(); for (int i = 0; i < size; i++) { - UserFunctionData input = (UserFunctionData) userFunctions.get(i); + UserFunctionData input = (UserFunctionData) userFunctions + .get(i); long start = input.getLowPc(); long end = input.getHighPc(); - if (start > 0 && end > 0 - && !AnalyzerManager.isBinStartEndSet()) { + if (start > 0 && end > 0 && !AnalyzerManager.isBinStartEndSet()) { AnalyzerManager.setBinaryStartEndAddr(start, end); } callstackManager.makeUserCallstack(input, profileDataMaker); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakTable.java index f46b980..e472dc4 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakTable.java @@ -37,12 +37,12 @@ import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.DASelectionData; import org.tizen.dynamicanalyzer.listeners.SummaryMouseDoubleClickListener; import org.tizen.dynamicanalyzer.model.TreeInput; import org.tizen.dynamicanalyzer.nl.SummaryLabels; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LeakData2; import org.tizen.dynamicanalyzer.ui.range.RangeDataManager; import org.tizen.dynamicanalyzer.ui.range.RangeLeakView; @@ -160,10 +160,10 @@ public class LeakTable extends DATreeComposite { data.add(Integer.toString(leakData.getSeq())); int type = leakData.getId(); - if (type == AnalyzerConstants.MSG_PROBE_MEMORY) { + if (type == DataChannelConstants.MSG_PROBE_MEMORY) { text.add(SummaryLabels.LEAK_TABLE_MEMORY); data.add(SummaryLabels.LEAK_TABLE_MEMORY); - } else if (type == AnalyzerConstants.MSG_PROBE_FILE) { + } else if (type == DataChannelConstants.MSG_PROBE_FILE) { text.add(SummaryLabels.LEAK_TABLE_FILE); data.add(SummaryLabels.LEAK_TABLE_FILE); } else { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfilingView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfilingView.java index 34d2a6f..6446c72 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfilingView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfilingView.java @@ -40,6 +40,7 @@ import org.tizen.dynamicanalyzer.nl.SummaryLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.ui.widgets.ViewContainer; import org.tizen.dynamicanalyzer.ui.widgets.table.TableColumnSizePackListener; @@ -156,7 +157,7 @@ public class FunctionUsageProfilingView extends DAView { @Override public void updateLog(LogPackage logPack) { - Logs logs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SAMPLE); + Logs logs = logPack.getLogs(DataChannelConstants.MSG_DATA_SAMPLE); if (null == logs || logs.getLogs().size() == 0) { return; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java index 6d3b6f2..58e8a1d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java @@ -27,7 +27,7 @@ package org.tizen.dynamicanalyzer.ui.summary.profiling; -import static org.tizen.dynamicanalyzer.common.AnalyzerConstants.MSG_FUNCTION_EXIT; +import static org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants.MSG_FUNCTION_EXIT; import java.util.ArrayList; import java.util.HashMap; @@ -199,11 +199,11 @@ public class ProfileDataMaker { } private void checkUserCall(CallStackUnit csa, ProfilingData parent, - ProfilingData pp) { + ProfilingData pp, int pid) { if (callstackManager.checkUserCall(csa.getPath())) { if (null == appBin) { CallStackUnit appBinCsa = new CallStackUnit(-1, - FunctionUsageProfiler.APPLICATION); + FunctionUsageProfiler.APPLICATION, pid); appBin = makeNewProfilingData(appBinCsa, true); appBin.setKey(FunctionUsageProfiler.APPLICATION_KEY); appBinName = csa.getPath(); @@ -216,7 +216,7 @@ public class ProfileDataMaker { } else { if (null == dependentLib) { CallStackUnit dependentLibBinCsa = new CallStackUnit(-2, - FunctionUsageProfiler.DEPENDENT_LIB); + FunctionUsageProfiler.DEPENDENT_LIB, pid); dependentLib = makeNewProfilingData(dependentLibBinCsa, true); dependentLib.setKey(FunctionUsageProfiler.DEPENDENT_LIB_KEY); } @@ -243,7 +243,8 @@ public class ProfileDataMaker { sampleCallstack.add(new String(splitCallstack[i])); } - List addrs = makeCallstackHashAndList(sampleCallstack); + List addrs = makeCallstackHashAndList(sampleCallstack, + sampleLog.getPid()); HashMap addrMap = callstackManager .getCallStackApiByAddrMap(); long selfAddr = sampleLog.getPcAddr(); @@ -264,7 +265,7 @@ public class ProfileDataMaker { // exclusive cpu time if (null == parent) { parent = makeNewProfilingData(inputData, true); - checkUserCall(inputData, parent, null); + checkUserCall(inputData, parent, null, sampleLog.getPid()); if (inputFuncName.equals(FunctionUsageProfiler.UNKNOWN)) { parent.addExCount(); } else { @@ -307,7 +308,8 @@ public class ProfileDataMaker { ProfilingData pp = null; if (null == inParent) { inParent = makeNewProfilingData(callstackCsa, true); - checkUserCall(callstackCsa, inParent, pp); + checkUserCall(callstackCsa, inParent, pp, + sampleLog.getPid()); } inParent.addInCount(totalSampleCount); @@ -326,7 +328,8 @@ public class ProfileDataMaker { .getPath()); if (null == inParent) { inParent = makeNewProfilingData(callstackCsa, true); - checkUserCall(callstackCsa, inParent, null); + checkUserCall(callstackCsa, inParent, null, + sampleLog.getPid()); } fupData = makeNewProfilingData(callstackCsa, false); fupData.setParent(inParent.getName()); @@ -358,7 +361,8 @@ public class ProfileDataMaker { } } - private List makeCallstackHashAndList(List callstackLog) { + private List makeCallstackHashAndList(List callstackLog, + int pid) { HashMap addrMap = callstackManager .getCallStackApiByAddrMap(); List addrs = new ArrayList(); @@ -386,7 +390,7 @@ public class ProfileDataMaker { if (null == callstackUnit) { String funcName = callstackLog.get(i + 1); CallStackUnit newCallstackUnit = new CallStackUnit(addr, - funcName); + funcName, pid); addrMap.put(addr, newCallstackUnit); } } @@ -422,7 +426,7 @@ public class ProfileDataMaker { .getPath()); if (null == parent) { parent = makeNewProfilingData(inputCallstackApiData, true); - checkUserCall(inputCallstackApiData, parent, null); + checkUserCall(inputCallstackApiData, parent, null, log.getPid()); ProfilingData child = makeNewProfilingData(inputCallstackApiData, false); @@ -489,7 +493,7 @@ public class ProfileDataMaker { .getPath()); if (null == parent) { parent = makeNewProfilingData(inputCallstackApiData, true); - checkUserCall(inputCallstackApiData, parent, null); + checkUserCall(inputCallstackApiData, parent, null, log.getPid()); ProfilingData child = makeNewProfilingData(inputCallstackApiData, false); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningTable.java index 4a251fd..16dedbc 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningTable.java @@ -33,14 +33,13 @@ import org.eclipse.nebula.widgets.grid.GridItem; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.widgets.Composite; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.DASelectionData; import org.tizen.dynamicanalyzer.listeners.SummaryMouseDoubleClickListener; import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; import org.tizen.dynamicanalyzer.model.TableInput; import org.tizen.dynamicanalyzer.nl.SummaryLabels; -import org.tizen.dynamicanalyzer.swap.model.probe2.FileData; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.ui.range.RangeDataManager; import org.tizen.dynamicanalyzer.ui.range.RangeWarningListView; import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite; @@ -103,7 +102,7 @@ public class WarningTable extends DATableComposite { text.add(Integer.toString(warningData.getSeq())); { - if (AnalyzerConstants.MSG_PROBE_FILE == warningData + if (DataChannelConstants.MSG_PROBE_FILE == warningData .getCategory()) { text.add(SummaryLabels.WARNING_TABLE_FILE); } else { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadChartManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadChartManager.java index 2356569..8fcec4a 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadChartManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/ThreadChartManager.java @@ -33,6 +33,7 @@ import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.logparser.LogListQueue; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.ui.thread.sync.ThreadPageSyncDataManager; import org.tizen.dynamicanalyzer.ui.thread.thread.ThreadPageThreadDataManager; @@ -110,21 +111,21 @@ public class ThreadChartManager implements Runnable { public void updateLog(LogPackage logPack) { List loadInputs = getLogsFromLogPackage(logPack, - AnalyzerConstants.MSG_DATA_SYSTEM); + DataChannelConstants.MSG_DATA_SYSTEM); if (null != loadInputs) { logListQueue.putLog(loadInputs); } List threadInputs = getLogsFromLogPackage(logPack, - AnalyzerConstants.MSG_PROBE_THREAD); + DataChannelConstants.MSG_PROBE_THREAD); if (null != threadInputs) { logListQueue.putLog(threadInputs); } List syncInputs = getLogsFromLogPackage(logPack, - AnalyzerConstants.MSG_PROBE_SYNC); + DataChannelConstants.MSG_PROBE_SYNC); if (null != syncInputs) { logListQueue.putLog(syncInputs); @@ -158,11 +159,11 @@ public class ThreadChartManager implements Runnable { for (int i = 0; i < logSize; i++) { log = logs.get(i); logType = log.getId(); - if (logType == AnalyzerConstants.MSG_DATA_SYSTEM) { + if (logType == DataChannelConstants.MSG_DATA_SYSTEM) { tManager.parseLoad(log); - } else if (logType == AnalyzerConstants.MSG_PROBE_THREAD) { + } else if (logType == DataChannelConstants.MSG_PROBE_THREAD) { tManager.parseAPI(log); - } else if (logType == AnalyzerConstants.MSG_PROBE_SYNC) { + } else if (logType == DataChannelConstants.MSG_PROBE_SYNC) { tManager.parseSync(log); sManager.parseSync(log); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/sync/ThreadPageSyncDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/sync/ThreadPageSyncDataManager.java index 2d47c2a..6a0a545 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/sync/ThreadPageSyncDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/sync/ThreadPageSyncDataManager.java @@ -29,7 +29,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.CommonConstants; import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; import org.tizen.dynamicanalyzer.nl.ThreadPageLabels; @@ -39,6 +38,7 @@ import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.SyncData; import org.tizen.dynamicanalyzer.ui.common.PopupAnalysisMenuItemClickListener; @@ -288,7 +288,7 @@ public class ThreadPageSyncDataManager { public void parsePageData(LogPackage logPack) { List inputs = getLogsFromLogPackage(logPack, - AnalyzerConstants.MSG_PROBE_SYNC); + DataChannelConstants.MSG_PROBE_SYNC); parseSyncs(inputs); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/thread/ThreadPageThreadDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/thread/ThreadPageThreadDataManager.java index 4ce7f4a..2bb4f42 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/thread/ThreadPageThreadDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/thread/thread/ThreadPageThreadDataManager.java @@ -29,7 +29,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.CommonConstants; import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; @@ -41,6 +40,7 @@ import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.SyncData; import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData; @@ -302,7 +302,9 @@ public class ThreadPageThreadDataManager { private void createMainThreadItem() { isStart = true; Project project = AnalyzerManager.getProject(); - int tid = project.getPID(); +// int tid = project.getPID(); + // FIXME + int tid = 1; if (0 == tid) { isStart = false; @@ -378,7 +380,7 @@ public class ThreadPageThreadDataManager { private void parseLoad(LogPackage logPack) { List inputs = getLogsFromLogPackage(logPack, - AnalyzerConstants.MSG_DATA_SYSTEM); + DataChannelConstants.MSG_DATA_SYSTEM); int size; if (null == inputs || 0 == (size = inputs.size())) { return; @@ -617,7 +619,7 @@ public class ThreadPageThreadDataManager { private void parseAPI(LogPackage logPack) { List inputs = getLogsFromLogPackage(logPack, - AnalyzerConstants.MSG_PROBE_THREAD); + DataChannelConstants.MSG_PROBE_THREAD); int size; if (null == inputs || 0 == (size = inputs.size())) { return; @@ -701,7 +703,7 @@ public class ThreadPageThreadDataManager { private void parseSync(LogPackage logPack) { List inputs = getLogsFromLogPackage(logPack, - AnalyzerConstants.MSG_PROBE_SYNC); + DataChannelConstants.MSG_PROBE_SYNC); int size; if (null == inputs || 0 == (size = inputs.size())) { return; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceView.java index ce45a53..e608b7d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceView.java @@ -40,6 +40,7 @@ import org.tizen.dynamicanalyzer.nl.TimelinePageLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.ProfileData; import org.tizen.dynamicanalyzer.swap.model.probe2.UserFunctionData; @@ -131,7 +132,7 @@ public class CallTraceView extends DAView { public void updateLog(LogPackage logPack) { Logs logs = logPack.getLogs(LogCenterConstants.LOG_USER_FUNCTION); if (null == logs) { - logs = logPack.getLogs(AnalyzerConstants.MSG_FUNCTION_ENTRY); + logs = logPack.getLogs(DataChannelConstants.MSG_FUNCTION_ENTRY); } if (null == logs || null == logs.getLogs() || logs.getLogs().isEmpty()) { return; @@ -142,7 +143,7 @@ public class CallTraceView extends DAView { int size = inputs.size(); for (int i = 0; i < size; i++) { - if (logs.getId() == AnalyzerConstants.MSG_FUNCTION_ENTRY) { + if (logs.getId() == DataChannelConstants.MSG_FUNCTION_ENTRY) { ProfileData pData = (ProfileData) inputs.get(i); userLog.add(pData); } else if (logs.getId() == LogCenterConstants.LOG_USER_FUNCTION) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUChart.java index b051361..5dcd463 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUChart.java @@ -28,12 +28,12 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; @@ -60,7 +60,7 @@ public class CPUChart extends TimelineChart { private CPUChart() { chartType = TimelineConstants.CHART_TYPE_CPU; - probeType = AnalyzerConstants.MSG_DATA_SYSTEM; + probeType = DataChannelConstants.MSG_DATA_SYSTEM; chartName = TimelineChartLabels.CPU_CHART_TITLE; chartIcon = ImageResources.CHART_CPU; addIcon = ImageResources.ADD_CHART_CPU; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUCoreChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUCoreChart.java index e06bd79..d9122fe 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUCoreChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUCoreChart.java @@ -29,13 +29,13 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart; import java.util.ArrayList; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.communicator.DACommunicator; import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; @@ -68,7 +68,7 @@ public class CPUCoreChart extends TimelineChart { public CPUCoreChart() { chartType = TimelineConstants.CHART_TYPE_CPU_CORE; - probeType = AnalyzerConstants.MSG_DATA_SYSTEM; + probeType = DataChannelConstants.MSG_DATA_SYSTEM; chartName = TimelineChartLabels.CPU_CORE_CHART_TITLE; chartIcon = ImageResources.CHART_CPU_CORE; addIcon = ImageResources.ADD_CHART_CPU_CORE; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUFrequencyChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUFrequencyChart.java index 2809b20..51277c4 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUFrequencyChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/CPUFrequencyChart.java @@ -28,12 +28,12 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; @@ -57,7 +57,7 @@ public class CPUFrequencyChart extends TimelineChart { private CPUFrequencyChart() { chartType = TimelineConstants.CHART_TYPE_CPU_FREQUENCY; - probeType = AnalyzerConstants.MSG_DATA_SYSTEM; + probeType = DataChannelConstants.MSG_DATA_SYSTEM; chartName = TimelineChartLabels.CPU_FREQUENCY_CHART_TITLE; chartIcon = ImageResources.CHART_CPU_FREQUENCY; addIcon = ImageResources.ADD_CHART_CPU_FREQUENCY; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/FileChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/FileChart.java index 3aed177..ef8f2eb 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/FileChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/FileChart.java @@ -32,12 +32,12 @@ import java.util.List; import java.util.Map; import java.util.concurrent.Semaphore; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; import org.tizen.dynamicanalyzer.utils.Formatter; @@ -100,7 +100,7 @@ public class FileChart extends TimelineChart { private FileChart() { chartType = TimelineConstants.CHART_TYPE_FILE; - probeType = AnalyzerConstants.MSG_DATA_SYSTEM; + probeType = DataChannelConstants.MSG_DATA_SYSTEM; chartName = TimelineChartLabels.FILE_CHART_TITLE; chartIcon = ImageResources.CHART_FILE; addIcon = ImageResources.ADD_CHART_FILE; @@ -160,10 +160,10 @@ public class FileChart extends TimelineChart { @Override public void parseLogPackage(LogPackage logPack) { Logs logs = logPack.getLogs(probeType); - if(logs == null) { + if (logs == null) { return; } - + List logList = logs.getLogs(); for (LogData log : logList) { double time = log.getTime(); @@ -171,6 +171,9 @@ public class FileChart extends TimelineChart { int size = deviceLogTimeList.size(); int index = (int) (time / TimelineConstants.MEGA_DOUBLE); + if (index - size > 4) { + continue; + } if (size <= index) { for (int i = size; i <= index; i++) { deviceLogTimeList.add(Double.NaN); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/HeapChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/HeapChart.java index 002affd..9349f99 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/HeapChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/HeapChart.java @@ -29,12 +29,12 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart; import java.util.HashMap; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.MemoryData; import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData; @@ -69,7 +69,7 @@ public class HeapChart extends TimelineChart { private HeapChart() { chartType = TimelineConstants.CHART_TYPE_HEAP; - probeType = AnalyzerConstants.MSG_DATA_SYSTEM; + probeType = DataChannelConstants.MSG_DATA_SYSTEM; chartName = TimelineChartLabels.HEAP_CHART_TITLE; chartIcon = ImageResources.CHART_HEAP; addIcon = ImageResources.ADD_CHART_HEAP; @@ -100,7 +100,7 @@ public class HeapChart extends TimelineChart { @Override public void parseLogPackage(LogPackage logPack) { - Logs memoryLogs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_MEMORY); + Logs memoryLogs = logPack.getLogs(DataChannelConstants.MSG_PROBE_MEMORY); Logs deviceLogs = logPack.getLogs(probeType); List memoryLogList = memoryLogs == null ? null diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ProcessMemoryChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ProcessMemoryChart.java index e711394..60c22f4 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ProcessMemoryChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ProcessMemoryChart.java @@ -28,12 +28,12 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; @@ -61,7 +61,7 @@ public class ProcessMemoryChart extends TimelineChart { private ProcessMemoryChart() { chartType = TimelineConstants.CHART_TYPE_PROCESS_MEMORY; - probeType = AnalyzerConstants.MSG_DATA_SYSTEM; + probeType = DataChannelConstants.MSG_DATA_SYSTEM; chartName = TimelineChartLabels.PROCESS_MEMORY_CHART_TITLE; chartIcon = ImageResources.CHART_PROCESS_MEMORY; addIcon = ImageResources.ADD_CHART_PROCESS_MEMORY; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java index 87b0788..d63bdfb 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/ScreenshotChart.java @@ -38,6 +38,7 @@ import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.ScreenShotData; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; @@ -63,7 +64,7 @@ public class ScreenshotChart extends TimelineChart { private ScreenshotChart() { chartType = TimelineConstants.CHART_TYPE_SCREENSHOT; chartStyle = DAChart.CHART_STYLE_SCREENSHOT; - probeType = AnalyzerConstants.MSG_PROBE_SCREENSHOT; + probeType = DataChannelConstants.MSG_PROBE_SCREENSHOT; chartName = TimelineChartLabels.SCREENSHOT_CHART_TITLE; chartIcon = ImageResources.CHART_SCREENSHOT; addIcon = ImageResources.ADD_CHART_SCREENSHOT; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/SystemMemoryChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/SystemMemoryChart.java index b7149fc..511438f 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/SystemMemoryChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/SystemMemoryChart.java @@ -28,13 +28,13 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.SystemData; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; @@ -62,7 +62,7 @@ public class SystemMemoryChart extends TimelineChart { private SystemMemoryChart() { chartType = TimelineConstants.CHART_TYPE_SYSTEM_MEMORY; - probeType = AnalyzerConstants.MSG_DATA_SYSTEM; + probeType = DataChannelConstants.MSG_DATA_SYSTEM; chartName = TimelineChartLabels.SYSTEM_MEMORY_CHART_TITLE; chartIcon = ImageResources.CHART_SYSTEM_MEMORY; addIcon = ImageResources.ADD_CHART_SYSTEM_MEMORY; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/UIEventChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/UIEventChart.java index 2e238fa..e03cfa5 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/UIEventChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/chart/UIEventChart.java @@ -28,7 +28,6 @@ package org.tizen.dynamicanalyzer.ui.timeline.chart; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.CommonConstants; import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; @@ -36,6 +35,7 @@ import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.UIEventData; import org.tizen.dynamicanalyzer.ui.common.UIEventChartContextMenuItem; @@ -84,7 +84,7 @@ public class UIEventChart extends TimelineChart { private UIEventChart() { chartType = TimelineConstants.CHART_TYPE_UIEVENT; chartStyle = DAChart.CHART_STYLE_MULTI; - probeType = AnalyzerConstants.MSG_PROBE_UIEVENT; + probeType = DataChannelConstants.MSG_PROBE_UIEVENT; chartName = TimelineChartLabels.UI_EVENT_CHART_TITLE; chartIcon = ImageResources.CHART_UI_EVENT; addIcon = ImageResources.ADD_CHART_UI_EVENT; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineEditItemsDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineEditItemsDialog.java index a0ce388..8519180 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineEditItemsDialog.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineEditItemsDialog.java @@ -192,7 +192,7 @@ public class TimelineEditItemsDialog extends DAMessageBox { }; - protected int run() { + protected boolean run() { shell.setText(TimelineChartLabels.EDIT_CHART_DLG_TITLE); shell.setBackground(ColorResources.WINDOW_BG_COLOR); shell.setSize(446, 450); @@ -491,7 +491,7 @@ public class TimelineEditItemsDialog extends DAMessageBox { RunningDialog = true; shell.addShellListener(shellListener); - return result; + return true; } private MouseListener itemZoomMouseListener = new MouseAdapter() { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineView.java index 7aa8329..bc28559 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/common/TimelineView.java @@ -32,7 +32,6 @@ import org.eclipse.swt.custom.StackLayout; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.DASelectionData; import org.tizen.dynamicanalyzer.model.DAView; import org.tizen.dynamicanalyzer.model.SnapshotData; @@ -40,6 +39,7 @@ import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.ui.common.SetRangeMarkerMouseMoveListener; import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseEventListener; import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseTrackAdapter; @@ -183,35 +183,35 @@ public class TimelineView extends DAView { return; } - Logs deviceLogs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SYSTEM); + Logs deviceLogs = logPack.getLogs(DataChannelConstants.MSG_DATA_SYSTEM); if (deviceLogs != null && !deviceLogs.getLogs().isEmpty()) { deviceLogParser.parseLogPackage(logPack); } - Logs memoryLogs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_MEMORY); + Logs memoryLogs = logPack.getLogs(DataChannelConstants.MSG_PROBE_MEMORY); if (memoryLogs != null && !memoryLogs.getLogs().isEmpty()) { HeapChart.getInstance().parseLogPackage(logPack); } Logs recorderLogs = logPack - .getLogs(AnalyzerConstants.MSG_PROBE_UIEVENT); + .getLogs(DataChannelConstants.MSG_PROBE_UIEVENT); if (recorderLogs != null && !recorderLogs.getLogs().isEmpty()) { UIEventChart.getInstance().parseLogPackage(logPack); } - Logs customLogs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_CUSTOM); + Logs customLogs = logPack.getLogs(DataChannelConstants.MSG_PROBE_CUSTOM); if (customLogs != null && !customLogs.getLogs().isEmpty()) { customLogParser.parseLogPackage(logPack); } Logs lifecycleLogs = logPack - .getLogs(AnalyzerConstants.MSG_PROBE_LIFECYCLE); + .getLogs(DataChannelConstants.MSG_PROBE_LIFECYCLE); if (lifecycleLogs != null && !lifecycleLogs.getLogs().isEmpty()) { lifecycleLogParser.parseLogPackage(logPack); } Logs screenShotLogs = logPack - .getLogs(AnalyzerConstants.MSG_PROBE_SCREENSHOT); + .getLogs(DataChannelConstants.MSG_PROBE_SCREENSHOT); if (screenShotLogs != null && !screenShotLogs.getLogs().isEmpty()) { ScreenshotChart.getInstance().parseLogPackage(logPack); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/CustomLogParser.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/CustomLogParser.java index 1985006..b7f4043 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/CustomLogParser.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/CustomLogParser.java @@ -31,10 +31,10 @@ import java.util.List; import java.util.Map; import org.eclipse.swt.graphics.Color; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.CustomData; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.ui.timeline.chart.UserCustomChart; @@ -67,7 +67,7 @@ public class CustomLogParser { private Map customChartSeriesMap = new HashMap(); public void parseLogPackage(LogPackage logPack) { - Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_CUSTOM); + Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_CUSTOM); List logList = logs.getLogs(); for (LogData log : logList) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/DeviceLogParser.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/DeviceLogParser.java index 7304096..abe015b 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/DeviceLogParser.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/DeviceLogParser.java @@ -2,27 +2,27 @@ package org.tizen.dynamicanalyzer.ui.timeline.logparser; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; import org.tizen.dynamicanalyzer.ui.opengl.ui.chart.GLFrameRateChart; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.ui.timeline.chart.TimelineChart; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineChartManager; public class DeviceLogParser { public void parseLogPackage(LogPackage logPack) { - Logs deviceLogs = logPack.getLogs(AnalyzerConstants.MSG_DATA_SYSTEM); + Logs deviceLogs = logPack.getLogs(DataChannelConstants.MSG_DATA_SYSTEM); if (deviceLogs != null && deviceLogs.getLogs() != null && deviceLogs.getLogs().size() > 0) { List chartList = TimelineChartManager.getInstance() .getChartList(); for (TimelineChart chart : chartList) { - if (chart.getProbeType() == AnalyzerConstants.MSG_DATA_SYSTEM) { + if (chart.getProbeType() == DataChannelConstants.MSG_DATA_SYSTEM) { chart.parseLogPackage(logPack); } } - GLFrameRateChart.getInstance().parseLogPackage(logPack); +// GLFrameRateChart.getInstance().parseLogPackage(logPack); } } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/LifecycleLogParser.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/LifecycleLogParser.java index 88f6bc4..6f7054b 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/LifecycleLogParser.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/logparser/LifecycleLogParser.java @@ -30,10 +30,10 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.swt.graphics.Color; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LifeCycleData; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; @@ -64,7 +64,7 @@ public class LifecycleLogParser { } public void parseLogPackage(LogPackage logPack) { - Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_LIFECYCLE); + Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_LIFECYCLE); if (null == logs) { return; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/AboutDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/AboutDialog.java index fb193a7..96651fa 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/AboutDialog.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/AboutDialog.java @@ -87,9 +87,9 @@ public class AboutDialog extends DAMessageBox { } }; - protected int run() { + protected boolean run() { if (opened) { - return -1; + return false; } shell.setSize(446, 254); shell.setLayout(new FormLayout()); @@ -224,7 +224,7 @@ public class AboutDialog extends DAMessageBox { opened = true; ShortCutManager.getInstance().setEnabled(!opened); - return result; + return true; } private String parseBuildTime(String readData) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/SaveAsDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/SaveAsDialog.java index dd95811..95cc1a7 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/SaveAsDialog.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/SaveAsDialog.java @@ -71,7 +71,7 @@ public class SaveAsDialog extends DAMessageBox { super(parentShell); } - protected int run() { + protected boolean run() { shell.setLayout(new FormLayout()); shell.setSize(446, 127 + 22); shell.setBackground(ColorResources.DIALOG_BG_UPPER); @@ -145,14 +145,15 @@ public class SaveAsDialog extends DAMessageBox { saveFileName = getSaveFileName(); if (null == saveFileName) { // create warning message box - return result; + System.out.println("save file name is null"); + return false; } else { textBox.setText(saveFileName); String textString = textBox.getText(); textBox.setSelection(0, textString.length()); } - return result; + return true; } private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() { @@ -160,12 +161,12 @@ public class SaveAsDialog extends DAMessageBox { @Override public void handleClickEvent(DACustomButton button) { saveFileName = textBox.getText(); - + if (saveFileName.length() > MAX_SAVE_FILE_NAME_LENGTH) { String old = saveFileName; - saveFileName = old.substring(0, MAX_SAVE_FILE_NAME_LENGTH -1); + saveFileName = old.substring(0, MAX_SAVE_FILE_NAME_LENGTH - 1); } - + if (executeSaveTrace()) { result = AnalyzerConstants.SUCCESS; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/ToolbarArea.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/ToolbarArea.java index 2e84d20..1cfdd98 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/ToolbarArea.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/ToolbarArea.java @@ -45,7 +45,6 @@ import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.application.IWorkbenchWindowConfigurer; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.CommonConstants; import org.tizen.dynamicanalyzer.common.DesignConstants; @@ -53,13 +52,13 @@ import org.tizen.dynamicanalyzer.communicator.DACommunicator; import org.tizen.dynamicanalyzer.handlers.ReplayTraceHandler; import org.tizen.dynamicanalyzer.model.DeviceInfo; import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; -import org.tizen.dynamicanalyzer.nl.ConfigureLabels; import org.tizen.dynamicanalyzer.project.PackageInfo; import org.tizen.dynamicanalyzer.project.Project; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.shortcut.ShortCutManager; +import org.tizen.dynamicanalyzer.swap.platform.ui.BinaryAnalyzingConfigDialog; import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage; import org.tizen.dynamicanalyzer.ui.toolbar.configuration.ConfigurationDialog; import org.tizen.dynamicanalyzer.ui.toolbar.opentrace.OpenTraceDialog; @@ -76,7 +75,6 @@ import org.tizen.dynamicanalyzer.widgets.combo.DACustomCombo; import org.tizen.dynamicanalyzer.widgets.combo.DACustomComboSelectionListener; import org.tizen.dynamicanalyzer.widgets.timer.TimerClock; - public class ToolbarArea { public static final int START_BUTTON = 0; @@ -85,7 +83,8 @@ public class ToolbarArea { public static final int REPLAY_BUTTON = 3; public static final int SOURCE_BUTTON = 4; public static final int ABOUT_BUTTON = 5; - public static final int SETTING_BUTTON = 6; + public static final int CONFIG_BUTTON = 6; + public static final int SETTING_BUTTON = 7; String selectedDevice = null; PackageInfo selectedApp = null; @@ -108,10 +107,11 @@ public class ToolbarArea { private DACustomButton saveTraceButton; private DACustomButton openTraceButton; private DACustomButton replayButton; - private DACustomButton settingsButton; + private DACustomButton configButton; + private DACustomButton binarySettingsButton; + private DACustomButton aboutButton; - private DACustomToggleButton snapshotButton; private DACustomToggleButton viewSourceButton; private Cursor cursor; @@ -314,7 +314,8 @@ public class ToolbarArea { @Override public void handleEvent(Event event) { if (!appCombo.isChildShellOpened()) { - List apps = DACommunicator.getAppListFromTarget(); + List apps = DACommunicator + .getAppListFromTarget(); if (null == apps || apps.isEmpty()) { return; } @@ -322,7 +323,8 @@ public class ToolbarArea { appCombo.initCombo(); int size = apps.size(); for (int i = 0; i < size; i++) { - appCombo.add(apps.get(i).getInfo(PackageInfo.LABEL_INDEX)); + appCombo.add(apps.get(i).getInfo( + PackageInfo.LABEL_INDEX)); } appCombo.setText(selectedApp); } @@ -349,8 +351,8 @@ public class ToolbarArea { Shell shell = AnalyzerUtil.getWorkbenchWindow() .getShell(); SaveAsDialog dialog = new SaveAsDialog(shell); - int result = dialog.open(); - if (AnalyzerConstants.SUCCESS == result) { + Object result = dialog.open(); + if (null != result) { button.setButtonEnabled(false); } } @@ -380,7 +382,7 @@ public class ToolbarArea { } }); - settingsButton.addClickListener(new DACustomButtonClickEventListener() { + configButton.addClickListener(new DACustomButtonClickEventListener() { @Override public void handleClickEvent(DACustomButton button) { @@ -390,6 +392,17 @@ public class ToolbarArea { } }); + binarySettingsButton + .addClickListener(new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + BinaryAnalyzingConfigDialog dialog = new BinaryAnalyzingConfigDialog( + shell); + dialog.open(); + } + }); + aboutButton.addClickListener(new DACustomButtonClickEventListener() { @Override @@ -405,17 +418,21 @@ public class ToolbarArea { @Override public void handleClickEvent(DACustomButton button) { -// ReplayData replayData = SqlManager.getInstance().getReplayLogs(); -// DATime startTime = AnalyzerManager.getProject().getStartTime(); -// int count = replayData.getObjectCount(); -// byte[] eventObjs = null; -// for (int i = 0; i < count; i++) { -// eventObjs = ByteUtils.concatByteArray(eventObjs, replayData -// .getRecordEvent().get(i).getByteValues()); -// } -// byte[] replayEvent = ByteUtils.getByte(1, startTime.getSec(), -// startTime.getNano(), count, eventObjs); -// System.out.println(); + // ReplayData replayData = + // SqlManager.getInstance().getReplayLogs(); + // DATime startTime = + // AnalyzerManager.getProject().getStartTime(); + // int count = replayData.getObjectCount(); + // byte[] eventObjs = null; + // for (int i = 0; i < count; i++) { + // eventObjs = ByteUtils.concatByteArray(eventObjs, + // replayData + // .getRecordEvent().get(i).getByteValues()); + // } + // byte[] replayEvent = ByteUtils.getByte(1, + // startTime.getSec(), + // startTime.getNano(), count, eventObjs); + // System.out.println(); // TODO : use for test code... // String path = // "/home/casval/work/testApp/DATizenTestApp/Dynamic Analyzer/DATizenTestApp.exe"; @@ -560,12 +577,19 @@ public class ToolbarArea { replayButton.setToolTipText(ShortCutManager.REPLAY); buttons.put(REPLAY_BUTTON, replayButton); - // Creates setting button - settingsButton = new DACustomButton(parent, ImageResources.SETTINGS, + // create binarySettingButton + binarySettingsButton = new DACustomButton(parent, ImageResources.SCREEN_SHOT_TOGGLE, + ImageResources.SCREEN_SHOT_TOGGLE_PUSH, ImageResources.SCREEN_SHOT_TOGGLE_HOVER, + ImageResources.SCREEN_SHOT_DISABLE); + binarySettingsButton.setToolTipText("Binary Settings"); + buttons.put(SETTING_BUTTON, binarySettingsButton); + + // Creates config button + configButton = new DACustomButton(parent, ImageResources.SETTINGS_NORMAL, ImageResources.SETTINGS_PUSH, ImageResources.SETTINGS_HOVER, ImageResources.SETTINGS_DISABLE); - settingsButton.setToolTipText(ShortCutManager.COOLBAR_AREA_SETTING); - buttons.put(SETTING_BUTTON, settingsButton); + configButton.setToolTipText(ShortCutManager.COOLBAR_AREA_SETTING); + buttons.put(CONFIG_BUTTON, configButton); // Creates about button. aboutButton = new DACustomButton(parent, ImageResources.ABOUT, @@ -588,16 +612,16 @@ public class ToolbarArea { buttons.put(SOURCE_BUTTON, viewSourceButton); // Creates snapshot on/off button. - snapshotButton = new DACustomToggleButton(parent, - ImageResources.SCREEN_SHOT_NORMAL, - ImageResources.SCREEN_SHOT_PUSH, - ImageResources.SCREEN_SHOT_HOVER, - ImageResources.SCREEN_SHOT_DISABLE, - ImageResources.SCREEN_SHOT_TOGGLE, - ImageResources.SCREEN_SHOT_TOGGLE_HOVER, - ImageResources.SCREEN_SHOT_TOGGLE_PUSH); - snapshotButton.setToolTipText(AnalyzerLabels.SNAPSHOT_ENABLE); - setSnapshotButtonEnablement(true); +// snapshotButton = new DACustomToggleButton(parent, +// ImageResources.SCREEN_SHOT_NORMAL, +// ImageResources.SCREEN_SHOT_PUSH, +// ImageResources.SCREEN_SHOT_HOVER, +// ImageResources.SCREEN_SHOT_DISABLE, +// ImageResources.SCREEN_SHOT_TOGGLE, +// ImageResources.SCREEN_SHOT_TOGGLE_HOVER, +// ImageResources.SCREEN_SHOT_TOGGLE_PUSH); +// snapshotButton.setToolTipText(AnalyzerLabels.SNAPSHOT_ENABLE); +// setSnapshotButtonEnablement(true); FormData data = new FormData(); data.top = new FormAttachment(0, 4); @@ -646,21 +670,21 @@ public class ToolbarArea { data.right = new FormAttachment(aboutButton, 0); data.width = 34; data.height = 30; - settingsButton.setLayoutData(data); + configButton.setLayoutData(data); data = new FormData(); data.top = new FormAttachment(0, 4); - data.right = new FormAttachment(settingsButton, -5); - data.width = 32; + data.right = new FormAttachment(configButton, 0); + data.width = 34; // 31 data.height = 30; - viewSourceButton.setLayoutData(data); - + binarySettingsButton.setLayoutData(data); + data = new FormData(); data.top = new FormAttachment(0, 4); - data.right = new FormAttachment(viewSourceButton, 0); - data.width = 0; // 31 + data.right = new FormAttachment(binarySettingsButton, -5); + data.width = 32; data.height = 30; - snapshotButton.setLayoutData(data); + viewSourceButton.setLayoutData(data); /** device and application combo */ // Creates device combo. @@ -961,7 +985,7 @@ public class ToolbarArea { } public void setSettingsButtonEnablement(boolean enabled) { - settingsButton.setButtonEnabled(enabled); + configButton.setButtonEnabled(enabled); } private void setStartButtonImagesToStop(boolean isStarted) { @@ -986,18 +1010,8 @@ public class ToolbarArea { setRepalyButtonEnable(enabled); } - public void setSnapshotButtonEnablement(boolean enabled) { - snapshotButton.setButtonEnabled(enabled); - if (enabled) { - String snapshotEnable = ConfigureManager.getInstance().getValue( - ConfigureLabels.FEATURE_SCREENSHOT); - if (null != snapshotEnable && !snapshotEnable.isEmpty() - && snapshotEnable.equals(CommonConstants.ON)) { - snapshotButton.setToggled(true); - } else { - snapshotButton.setToggled(false); - } - } + public void setBinarySettingsButtonEnablement(boolean enabled) { + binarySettingsButton.setButtonEnabled(enabled); } public void startTimer() { @@ -1060,7 +1074,6 @@ public class ToolbarArea { setStartButtonImagesToStop(true); setMainControlEnablement(false); startButton.setButtonEnabled(false); - setSnapshotButtonEnablement(false); } else { setStartButtonImagesToStop(false); setMainControlEnablement(true); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/TraceStartStopThread.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/TraceStartStopThread.java index 9d7c8f3..ebabe03 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/TraceStartStopThread.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/TraceStartStopThread.java @@ -69,8 +69,6 @@ public class TraceStartStopThread implements Runnable { .setStartButtonEnablement(true); ToolbarArea.getInstance().setStartButtonToolTipText( ShortCutManager.STOP_TRACE); - ToolbarArea.getInstance().setSnapshotButtonEnablement( - true); ToolbarArea.getInstance().setSettingsButtonEnablement( true); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/ConfigurationDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/ConfigurationDialog.java index 3442a2b..3037581 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/ConfigurationDialog.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/ConfigurationDialog.java @@ -99,9 +99,9 @@ public class ConfigurationDialog extends DAMessageBox { ConfigurationDialogValues.getInstance().setSettingValueFromConfigFile(); } - protected int run() { + protected boolean run() { if (opened) { - return -1; + return false; } shell.setSize(608, 480); shell.setLayout(new FormLayout()); @@ -221,7 +221,7 @@ public class ConfigurationDialog extends DAMessageBox { opened = true; ShortCutManager.getInstance().setEnabled(!opened); - return result; + return true; } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/WelcomeDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/WelcomeDialog.java index 4aa64f3..4aa4e8b 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/WelcomeDialog.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/WelcomeDialog.java @@ -50,7 +50,7 @@ import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener import org.tizen.dynamicanalyzer.widgets.button.checkbox.DACheckBox; import org.tizen.dynamicanalyzer.widgets.button.checkbox.DACheckboxSelectionListener; -public class WelcomeDialog extends DAMessageBox{ +public class WelcomeDialog extends DAMessageBox { private DACustomButton okButton = null; private DACustomButton cancelButton = null; private DACheckBox useAgainCheckButton = null; @@ -86,8 +86,8 @@ public class WelcomeDialog extends DAMessageBox{ ConfigurationDialogValues.getInstance().setSettingValueFromConfigFile(); notifyAutoRun(); } - - protected int run(){ + + protected boolean run() { IDECommunicator.setOpenWelcomeDlg(true); shell.setSize(608, 460); shell.setLayout(new FormLayout()); @@ -193,7 +193,7 @@ public class WelcomeDialog extends DAMessageBox{ okButton.setLayoutData(buttonData); shell.addShellListener(shellListener); shell.open(); - return result; + return true; } private DACheckboxSelectionListener useAgainCheckbuttonListener = new DACheckboxSelectionListener() { @@ -212,7 +212,7 @@ public class WelcomeDialog extends DAMessageBox{ } IDECommunicator.setOpenWelcomeDlg(false); } - + private ShellListener shellListener = new ShellListener() { @Override diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceDialog.java index 1a75a57..6f8da00 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceDialog.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceDialog.java @@ -108,10 +108,9 @@ public class OpenTraceDialog extends DAMessageBox { super(parent); } - protected int run() { + protected boolean run() { if (opened) { - result = -1; - return result; + return false; } shell.setLayout(new FormLayout()); shell.setSize(400, 430); @@ -282,7 +281,7 @@ public class OpenTraceDialog extends DAMessageBox { tempTable.updateTable(); opened = true; ShortCutManager.getInstance().setEnabled(!opened); - return result; + return true; } private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceInputReader.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceInputReader.java index ac8e9cf..8ad0923 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceInputReader.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceInputReader.java @@ -34,6 +34,7 @@ import org.tizen.dynamicanalyzer.project.Project; import org.tizen.dynamicanalyzer.sql.SqlManager; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory; import org.tizen.dynamicanalyzer.ui.page.BaseView; @@ -77,14 +78,14 @@ public class OpenTraceInputReader implements Runnable { public void run() { AnalyzerManager.setLogParsingComplete(false); Project p = AnalyzerManager.getProject(); - long last = p.getLastLogNum(AnalyzerConstants.MSG_PROBE_FILE); - createPackage(last, AnalyzerConstants.MSG_PROBE_FILE); + long last = p.getLastLogNum(DataChannelConstants.MSG_PROBE_FILE); + createPackage(last, DataChannelConstants.MSG_PROBE_FILE); - last = p.getLastLogNum(AnalyzerConstants.MSG_DATA_SYSTEM); - createPackage(last, AnalyzerConstants.MSG_DATA_SYSTEM); + last = p.getLastLogNum(DataChannelConstants.MSG_DATA_SYSTEM); + createPackage(last, DataChannelConstants.MSG_DATA_SYSTEM); - last = p.getLastLogNum(AnalyzerConstants.MSG_DATA_SAMPLE); - createPackage(last, AnalyzerConstants.MSG_DATA_SAMPLE); + last = p.getLastLogNum(DataChannelConstants.MSG_DATA_SAMPLE); + createPackage(last, DataChannelConstants.MSG_DATA_SAMPLE); System.out.println("input reader complete"); //$NON-NLS-1$ AnalyzerManager.setLogParsingComplete(true); @@ -101,8 +102,8 @@ public class OpenTraceInputReader implements Runnable { if (to >= last) { to = last; } - if (type == AnalyzerConstants.MSG_DATA_SAMPLE - || type == AnalyzerConstants.MSG_DATA_SYSTEM) { + if (type == DataChannelConstants.MSG_DATA_SAMPLE + || type == DataChannelConstants.MSG_DATA_SYSTEM) { input = SqlManager.getInstance().selectArea(type, from, to); Logs logs = new Logs(type); logs.setLogs(input); @@ -113,8 +114,8 @@ public class OpenTraceInputReader implements Runnable { int size = ids.size(); for (int i = 0; i < size; i++) { int id = ids.get(i); - if (id == AnalyzerConstants.MSG_DATA_SAMPLE - || id == AnalyzerConstants.MSG_DATA_SYSTEM) { + if (id == DataChannelConstants.MSG_DATA_SAMPLE + || id == DataChannelConstants.MSG_DATA_SYSTEM) { continue; } Logs logs = new Logs(id); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/userinterface/UIDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/userinterface/UIDataManager.java index 2dd93a6..d869cfb 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/userinterface/UIDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/userinterface/UIDataManager.java @@ -35,6 +35,7 @@ import org.tizen.dynamicanalyzer.common.CommonConstants; import org.tizen.dynamicanalyzer.logparser.LogListQueue; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; import org.tizen.dynamicanalyzer.swap.logparser.Logs; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.probe2.ControlData; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.SceneData; @@ -110,7 +111,7 @@ public class UIDataManager implements Runnable { int size = logs.size(); for (int i = 0; i < size; i++) { int nLogType = logs.get(i).getId(); - if (nLogType == AnalyzerConstants.MSG_PROBE_UICONTROL) { + if (nLogType == DataChannelConstants.MSG_PROBE_UICONTROL) { getInstance().getControlDataChecker().parserLog( (ControlData) logs.get(i)); } else { @@ -131,7 +132,7 @@ public class UIDataManager implements Runnable { } public void setControlDataTFromLogPackage(LogPackage logPack) { - Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_UICONTROL); + Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_UICONTROL); if (null == logs || logs.getLogs() == null || logs.getLogs().size() == 0) { return; @@ -141,7 +142,7 @@ public class UIDataManager implements Runnable { } public void setSceneTransformDataTFromLogPackage(LogPackage logPack) { - Logs logs = logPack.getLogs(AnalyzerConstants.MSG_PROBE_SCENE); + Logs logs = logPack.getLogs(DataChannelConstants.MSG_PROBE_SCENE); if (null == logs || logs.getLogs() == null || logs.getLogs().size() == 0) { return; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DAMessageBox.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DAMessageBox.java index e6167ce..8b7dcff 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DAMessageBox.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/DAMessageBox.java @@ -33,23 +33,24 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class DAMessageBox { - protected int result = 0; + protected Object result = null; + protected boolean initSuccess = false; protected Shell parentShell = null; protected Shell shell = null; protected boolean block = false; - private static IExceptionHandler exceptionHandler = new DefaultExceptionHandler(); + protected static IExceptionHandler exceptionHandler = new DefaultExceptionHandler(); public DAMessageBox(Shell parentShell) { this.parentShell = parentShell; shell = new Shell(parentShell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL); } - public int open() { + public Object open() { block = true; parentShell.setEnabled(false); - result = run(); - if (result >= 0) { + initSuccess = run(); + if (initSuccess) { shell.open(); if (block) { runEventLoop(shell); @@ -61,15 +62,15 @@ public class DAMessageBox { return result; } - protected int run() { - return result; + protected boolean run() { + return true; } - protected int closeAction() { + protected Object closeAction() { return result; } - private void runEventLoop(Shell loopShell) { + protected void runEventLoop(Shell loopShell) { // Use the display provided by the shell if possible Display display; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/FindDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/FindDialog.java index 1b89d3e..8dce7ca 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/FindDialog.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/FindDialog.java @@ -38,7 +38,6 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.CommonConstants; import org.tizen.dynamicanalyzer.common.DesignConstants; import org.tizen.dynamicanalyzer.model.FindProperty; @@ -88,9 +87,9 @@ public class FindDialog extends DAMessageBox { findProperty.setIndex(table.getSelectionIndex()); } - protected int run() { + protected boolean run() { if (null == table) { - return AnalyzerConstants.FAIL; + return false; } shell.setLayout(new FormLayout()); shell.setSize(340, 130); @@ -196,7 +195,7 @@ public class FindDialog extends DAMessageBox { wholeWordButton.addSelectionListener(wholeWordButtonListener); wholeWordButton.setChecked(findProperty.isWholeWord()); - return result; + return true; } private DACustomButtonClickEventListener fnidButtonListener = new DACustomButtonClickEventListener() { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATableCellRenderer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATableCellRenderer.java index b4463d5..a2214be 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATableCellRenderer.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/table/DATableCellRenderer.java @@ -273,7 +273,7 @@ public class DATableCellRenderer extends DefaultCellRenderer { } } - if (isTree() && item.hasChildren()) { + if (isTree() && hasChildren(item)) { if (event == IInternalWidget.MouseMove) { if (overToggle(item, point)) { setHoverDetail("toggle"); //$NON-NLS-1$ @@ -300,7 +300,11 @@ public class DATableCellRenderer extends DefaultCellRenderer { return false; } - private boolean overCheck(GridItem item, Point point) { + protected boolean hasChildren(GridItem item) { + return item.hasChildren(); + } + + protected boolean overCheck(GridItem item, Point point) { point = new Point(point.x, point.y); point.x -= getBounds().x - 1; point.y -= getBounds().y - 1; @@ -322,7 +326,7 @@ public class DATableCellRenderer extends DefaultCellRenderer { return false; } - private boolean overToggle(GridItem item, Point point) { + protected boolean overToggle(GridItem item, Point point) { point = new Point(point.x, point.y); point.x -= getBounds().x - 1; point.y -= getBounds().y - 1; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/AnalyzerUtil.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/AnalyzerUtil.java index 1d04365..7fae24b 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/AnalyzerUtil.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/AnalyzerUtil.java @@ -40,6 +40,7 @@ import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; import org.eclipse.core.commands.ExecutionException; @@ -72,7 +73,10 @@ import org.tizen.dynamicanalyzer.communicator.DACommunicator; import org.tizen.dynamicanalyzer.handlers.RealtimePerspectiveHandler; import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; import org.tizen.dynamicanalyzer.swap.model.ByteUtils; +import org.tizen.dynamicanalyzer.swap.model.control.BinaryInfo; import org.tizen.dynamicanalyzer.swap.model.data.ApiNameManager; +import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; +import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo; import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory; import org.tizen.dynamicanalyzer.swap.model.probe2.ProbeCommonData; import org.tizen.dynamicanalyzer.ui.page.BaseView; @@ -81,6 +85,8 @@ import org.tizen.dynamicanalyzer.ui.page.ViewAction; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineView; import org.tizen.dynamicanalyzer.ui.widgets.DATabComposite; import org.tizen.sdblib.IDevice; +import org.tizen.sdblib.exception.SdbCommandRejectedException; +import org.tizen.sdblib.exception.TimeoutException; import org.tizen.sdblib.service.SyncResult; public class AnalyzerUtil { @@ -659,12 +665,14 @@ public class AnalyzerUtil { byte[] result = null; byte[] front = null; - if (id == AnalyzerConstants.MSG_DATA_SYSTEM) { + if (id == DataChannelConstants.MSG_DATA_SYSTEM) { front = makeSystemData(input); - } else if (id == AnalyzerConstants.MSG_DATA_SAMPLE) { + } else if (id == DataChannelConstants.MSG_DATA_SAMPLE) { newLog = new String[2]; // pid - newLog[0] = Integer.toString(AnalyzerManager.getProject().getPID()); + // newLog[0] = + // Integer.toString(AnalyzerManager.getProject().getPID()); + newLog[0] = null; newLog[1] = input[LogCenterConstants.PROFILING_LOG_PCADDR_INDEX]; int pid = initIntPayload(newLog[0]); @@ -674,7 +682,7 @@ public class AnalyzerUtil { front = ByteUtils.getByte(pid, pcAddr, tid, cpuNum); } else { - if (id == AnalyzerConstants.MSG_PROBE_SCREENSHOT) { + if (id == DataChannelConstants.MSG_PROBE_SCREENSHOT) { System.out.println("debug "); } newLog = new String[10]; @@ -699,7 +707,7 @@ public class AnalyzerUtil { // reserved newLog[9] = CommonConstants.EMPTY; - if (id == AnalyzerConstants.MSG_PROBE_LIFECYCLE) { + if (id == DataChannelConstants.MSG_PROBE_LIFECYCLE) { System.out.println(); } int apiId = ApiNameManager.getApiId(newLog[0]); @@ -720,7 +728,7 @@ public class AnalyzerUtil { byte[] rear = null; switch (id) { - case AnalyzerConstants.MSG_PROBE_MEMORY: + case DataChannelConstants.MSG_PROBE_MEMORY: long size = Long .parseLong(input[LogCenterConstants.MEMORY_SIZE_INDEX]); int apiType = Integer @@ -729,7 +737,7 @@ public class AnalyzerUtil { rear = ByteUtils.getByte(size, apiType, address); result = ByteUtils.concatByteArray(front, rear); break; - case AnalyzerConstants.MSG_PROBE_UICONTROL: + case DataChannelConstants.MSG_PROBE_UICONTROL: String parentName = input[LogCenterConstants.USER_INTERFACE_CONTROL_LIST_PARENT_NAME_INDEX]; String parentClassName = input[LogCenterConstants.USER_INTERFACE_CONTROL_LIST_PARENT_CLASS_NAME_INDEX]; long parentPointer = addrToLong(input[LogCenterConstants.USER_INTERFACE_CONTROL_LIST_PARENT_POINTER_INDEX]); @@ -740,7 +748,7 @@ public class AnalyzerUtil { parentPointer, childName, childClassName, childPointer); result = ByteUtils.concatByteArray(front, rear); break; - case AnalyzerConstants.MSG_PROBE_UIEVENT: + case DataChannelConstants.MSG_PROBE_UIEVENT: int eventType = Integer .parseInt(input[LogCenterConstants.UI_EVENT_EVENT_TYPE]); int detailType = Integer @@ -752,7 +760,7 @@ public class AnalyzerUtil { rear = ByteUtils.getByte(eventType, detailType, x, y, info1, info2); result = ByteUtils.concatByteArray(front, rear); break; - case AnalyzerConstants.MSG_PROBE_FILE: + case DataChannelConstants.MSG_PROBE_FILE: long sizeValue = Long .parseLong(input[LogCenterConstants.RESOURCE_SIZE_INDEX]); int fdValue = Integer @@ -768,10 +776,10 @@ public class AnalyzerUtil { fileSize, filePath); result = ByteUtils.concatByteArray(front, rear); break; - case AnalyzerConstants.MSG_PROBE_NETWORK: + case DataChannelConstants.MSG_PROBE_NETWORK: System.out.println("case AnalyzerConstants.MSG_PROBE_NETWORK"); break; - case AnalyzerConstants.MSG_PROBE_GLES20: + case DataChannelConstants.MSG_PROBE_GLES20: apiType = Integer .parseInt(input[LogCenterConstants.GL_API_TYPE_INDEX]); long elapsedTime = Long @@ -780,17 +788,17 @@ public class AnalyzerUtil { rear = ByteUtils.getByte(apiType, elapsedTime, contextValue); result = ByteUtils.concatByteArray(front, rear); break; - case AnalyzerConstants.MSG_PROBE_LIFECYCLE: + case DataChannelConstants.MSG_PROBE_LIFECYCLE: result = front; break; - case AnalyzerConstants.MSG_PROBE_SCREENSHOT: + case DataChannelConstants.MSG_PROBE_SCREENSHOT: String imgFilePath = input[LogCenterConstants.SNAPSHOT_IMAGE_PATH_INDEX]; int orientation = Integer .parseInt(input[LogCenterConstants.SNAPSHOT_ROTATE_INDEX]); rear = ByteUtils.getByte(imgFilePath, orientation); result = ByteUtils.concatByteArray(front, rear); break; - case AnalyzerConstants.MSG_PROBE_SCENE: + case DataChannelConstants.MSG_PROBE_SCENE: String sceneName = input[LogCenterConstants.USER_INTERFACE_SCENE_TRANSFORMS_LIST_SCENE_NAME_INDEX]; String formName = input[LogCenterConstants.USER_INTERFACE_SCENE_TRANSFORMS_LIST_FORM_NAME_INDEX]; long formPointer = Long @@ -807,13 +815,13 @@ public class AnalyzerUtil { panelPointer, transitionTime, userTransitionTime); result = ByteUtils.concatByteArray(front, rear); break; - case AnalyzerConstants.MSG_DATA_SYSTEM: + case DataChannelConstants.MSG_DATA_SYSTEM: result = front; break; - case AnalyzerConstants.MSG_DATA_SAMPLE: + case DataChannelConstants.MSG_DATA_SAMPLE: result = ByteUtils.concatByteArray(front, rear); break; - case AnalyzerConstants.MSG_PROBE_THREAD: + case DataChannelConstants.MSG_PROBE_THREAD: long pThreadId = Long .parseLong(input[LogCenterConstants.THREAD_PTHREAD_ID_INDEX]); long ospThradId = Long @@ -826,7 +834,7 @@ public class AnalyzerUtil { threadApiType); result = ByteUtils.concatByteArray(front, rear); break; - case AnalyzerConstants.MSG_PROBE_CUSTOM: + case DataChannelConstants.MSG_PROBE_CUSTOM: int handle = Integer .parseInt(input[LogCenterConstants.CUSTOM_CHART_HANDLE]); int customType = Integer @@ -840,7 +848,7 @@ public class AnalyzerUtil { value); result = ByteUtils.concatByteArray(front, rear); break; - case AnalyzerConstants.MSG_PROBE_SYNC: + case DataChannelConstants.MSG_PROBE_SYNC: long syncVal = Long .parseLong(input[LogCenterConstants.SYNC_VAL_INDEX]); int syncType = Integer @@ -873,7 +881,7 @@ public class AnalyzerUtil { private static byte[] makeSystemData(String[] input) { String[] newLog = new String[LogDataFactory - .getLogColumnCountbyId(AnalyzerConstants.MSG_DATA_SYSTEM)]; + .getLogColumnCountbyId(DataChannelConstants.MSG_DATA_SYSTEM)]; // energy newLog[0] = input[LogCenterConstants.DEVICE_ENERGY_INDEX]; newLog[1] = input[LogCenterConstants.DEVICE_WIFI_INDEX]; @@ -1024,19 +1032,19 @@ public class AnalyzerUtil { String apiFilePath = AnalyzerPaths.TEMP_FOLDER_PATH + File.separator + device.getSerialNumber() + CommonConstants.UNDERBAR + AnalyzerConstants.API_NAME_FILE_NAME; -// try { -// DACommunicator.getSelectedDevice().getIDevice() -// .becomeSuperUser(true); -// } catch (TimeoutException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (SdbCommandRejectedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (IOException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } + try { + device.setRootUser(true); + } catch (TimeoutException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SdbCommandRejectedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + SyncResult res = CommunicatorUtils.pull(device, AnalyzerPaths.DA_API_MAP_PATH, apiFilePath); if (null != res && res.isOk()) { @@ -1082,4 +1090,47 @@ public class AnalyzerUtil { String output = String.format("%x", value); System.out.print(output); } + + public static String getBinaryPath(int pid) { + ProcessInfo processInfo = AnalyzerManager.getProject().getProcessInfo( + pid); + if (null != processInfo) { + return processInfo.getBinaryPath(); + } + return null; + } + + public static boolean isPieBuild(int pid) { + ProcessInfo processInfo = AnalyzerManager.getProject().getProcessInfo( + pid); + if (null == processInfo) { + return false; + } + + String path = processInfo.getBinaryPath(); + HashMap binMap = DACommunicator.getSelectedApp() + .getBinaryInfoMap(); + BinaryInfo binInfo = binMap.get(path); + if (null == binInfo) { + return false; + } + if (binInfo.getType() == 1) { + return true; + } + return false; + } + + public static boolean getBinaryBuildType(String binPath) { + HashMap binMap = DACommunicator.getSelectedApp() + .getBinaryInfoMap(); + BinaryInfo binInfo = binMap.get(binPath); + if (null == binInfo) { + return false; + } + + if (binInfo.getType() == 1) { + return true; + } + return false; + } } diff --git a/org.tizen.dynamicanalyzer/theme/white/img/device.gif b/org.tizen.dynamicanalyzer/theme/white/img/device.gif new file mode 100644 index 0000000000000000000000000000000000000000..abedbb007cc0164d90fd266a8137c11f25d5a6dc GIT binary patch literal 568 zcmZ?wbhEHb6krfwc*Xz%|Ns9Fs9PJDKlR7=AK$-yfBow9!v_!V-Mx47#?7BUe?5El zJhW+XblbAHj^(L+YYL`qYFxahcg^7q$8Ur*E(~v39ND@wvUN#p$MX2Dl}SCT(kHCV zoV2cJ=H`mI+p6d9Y+1IiYt_L?8;?)je0<){GfVbgT)g-E%0pLHAHK5g*tLx(ZfrPy zJ-&Oz>>a099l5gR=+!S@zrK0<_Vbs|j~+d|fB)XUzkh%K`t|wKrx(wk-@1A8-@ku< z{`~p<`}fbEKY#rA@#V{xj~_pN`0(M~yLWHjzJ2rN&8t_hUc7km^y$;bj~_pH@ZjFP zdw1^KxqbWg_3PKKUcCzRDcHw@h*12=!pOkj&!7Wx6DUp?*rzu5H#N7kwlH;ccC|8T z^$BZE(AQIEYS(6-Icuicv}Ps^W=2LUYco4$-FZz+s?4S~Tr39W%u1{MnN*l}fUHQg5_0M`dl1_MUp9wK*#D;$?w`fDJ<@6o0ZXGB8Lm z=zt_Zb~3PrD5&+NWX?-pv}#2Lt3l2}ugex3pB%jI_fKpr@DOox5p60u84~6)sj0+k ys+WsMbJ^*uK`xVtCbZw_1DJW{brK;#Tf0*?;-R ziy6N^UU+e#%hDW`wME){ z>W$Xss2p8fJ1<_gKS&bj9aE`mQPmO(6*v!kHU@!mI}wL9a2BNdAS++r6nb` zowXFY6?u8M*#(;Ag6=kgn@lhgHuy; zOKS^DM`u?ni*lc!(gY241(tRd=9#l*%1>)%QDkOhG%(aPVOE>h#3IM6W5ms>smCn6 z+KEM$*_h4L%)*LUY6pu9v$nYJuwcHuYsb2?pVK?;Y;$0+1^{ul&;bAd literal 0 HcmV?d00001 diff --git a/org.tizen.dynamicanalyzer/theme/white/img/file.gif b/org.tizen.dynamicanalyzer/theme/white/img/file.gif new file mode 100644 index 0000000000000000000000000000000000000000..b84737e909401a0d41673539d070a702dce2c54d GIT binary patch literal 344 zcmZ?wbhEHb6krfwxXQrr^ueP~Uw{An_29c z(yHd7Bp|@i)7zuuqQX9T%2Z_+dA?b*=g7M#@bIuKUb0xhMTUFT>NScka?;Y0QkynQ N%E|ida&}~}1^|NQn%MvV literal 0 HcmV?d00001 diff --git a/org.tizen.dynamicanalyzer/theme/white/img/file_link.gif b/org.tizen.dynamicanalyzer/theme/white/img/file_link.gif new file mode 100644 index 0000000000000000000000000000000000000000..e77773d7512ee14f889a87352410a160a7437cd2 GIT binary patch literal 576 zcmZ?wbhEHb6krfwc*Xz%|NsC0`RmX3pTEEU`2G3Y?vNI zOsy{QuPXMhE(xeB^{XxpXs_~_SnttO>$Q91r0wgc%x!g@-sEv!Plv1Fb)&CzL6s};-Kd3KKWR;|`Ttjk%Yq?X&X+RBM+6jW0c6trkH z6WcA$%gxBIrJ>PcE^%C*mxr5EVZVB_k+kR)NrBS>{AZM#jM?t9$!G`&u$kOaYBFSh z!!FFn$aWj2;|K51U-Oo3wwa1{~vIQFi20YCG_4gTPM3Mg|6J E0JjLeVE_OC literal 0 HcmV?d00001 -- 2.7.4