network : get event from summary page, and print the contents to download the file... 35/21635/1
authorHyunjong,park <phjwithyou.park@samsung.com>
Mon, 26 May 2014 00:20:23 +0000 (09:20 +0900)
committerHyunjong,park <phjwithyou.park@samsung.com>
Mon, 26 May 2014 00:20:23 +0000 (09:20 +0900)
          , and fix multi select on chart for range feature

Change-Id: Icb6f0c983af0634f0199014a79458f990ef600c1

25 files changed:
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chartBoard/DAChartBoardItemCell.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/database/DBConstants.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.properties
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/NetworkPageLabels.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/NetworkPageLabels.properties
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/callstack/SWAPCallStackManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/LogDataFactory.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/format/LogFormat.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileDataMaker.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartBoard.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkChartView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkDetailView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/NetworkTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkAPIDBManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkDataMaker.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkDataManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/NetworkSeriesDBManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/type/NetworkAPIType.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/network/data/type/NetworkSeriesType.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfileDataMaker.java

index cfba807..a5906b6 100644 (file)
@@ -140,11 +140,12 @@ public class DAChartBoardItemCell extends Composite {
                chartCell.addMouseListener(new MouseListener() {
                        @Override
                        public void mouseUp(MouseEvent e) {
+                               parent.callbackSelect(true);
                        }
 
                        @Override
                        public void mouseDown(MouseEvent e) {
-                               parent.callbackSelect(true);
+//                             parent.callbackSelect(true);
                        }
 
                        @Override
index 7ee8383..cae404e 100644 (file)
@@ -38,6 +38,7 @@ public class DBConstants {
        public static final String COMMON_COLUMN_PID = "PID";//$NON-NLS-1$
        public static final String COMMON_COLUMN_TID = "TID";//$NON-NLS-1$
        public static final String COMMON_COLUMN_ARG = "ARG";//$NON-NLS-1$
+       public static final String COMMON_COLUMN_RET = "RET";//$NON-NLS-1$
        public static final String COMMON_COLUMN_ERROR = "ERROR";//$NON-NLS-1$
        public static final String COMMON_COLUMN_CALLER_PC_ADDRESS = "CALLER_PC_ADDRESS";//$NON-NLS-1$
        public static final String COMMON_COLUMN_CALLER_LIB_NAME = "LIB_NAME";//$NON-NLS-1$
index e7fc4ef..f2263be 100644 (file)
-/*\r
- *  Dynamic Analyzer\r
- *\r
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Contact: \r
- * Jooyoul Lee <jy.exe.lee@samsung.com>\r
- * Juyoung Kim <j0.kim@samsung.com>\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * \r
- * Contributors:\r
- * - S-Core Co., Ltd\r
- * \r
- */\r
-\r
-package org.tizen.dynamicanalyzer.handlers;\r
-\r
-import java.util.ArrayList;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-\r
-import org.eclipse.core.commands.AbstractHandler;\r
-import org.eclipse.core.commands.ExecutionEvent;\r
-import org.eclipse.core.commands.ExecutionException;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.widgets.Display;\r
-import org.eclipse.swt.widgets.Shell;\r
-import org.tizen.dynamicanalyzer.common.AnalyzerManager;\r
-import org.tizen.dynamicanalyzer.common.GlobalInformation;\r
-import org.tizen.dynamicanalyzer.communicator.DACommunicator;\r
-import org.tizen.dynamicanalyzer.constant.CommonConstants;\r
-import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;\r
-import org.tizen.dynamicanalyzer.model.ImageInfo;\r
-import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;\r
-import org.tizen.dynamicanalyzer.project.Project;\r
-import org.tizen.dynamicanalyzer.resources.ImageResources;\r
-import org.tizen.dynamicanalyzer.sql.SqlManager;\r
-import org.tizen.dynamicanalyzer.swap.callstack.BaseCallstackManager;\r
-import org.tizen.dynamicanalyzer.swap.channel.control.TargetInfo;\r
-import org.tizen.dynamicanalyzer.swap.channel.data.ApiNameManager;\r
-import org.tizen.dynamicanalyzer.swap.channel.data.DataChannelConstants;\r
-import org.tizen.dynamicanalyzer.swap.channel.data.LibraryObject;\r
-import org.tizen.dynamicanalyzer.swap.channel.data.ProcessInfo;\r
-import org.tizen.dynamicanalyzer.swap.channel.data.ProcessInfoPackage;\r
-import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackData;\r
-import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackUnit;\r
-import org.tizen.dynamicanalyzer.ui.network.data.NetworkDataManager;\r
-import org.tizen.dynamicanalyzer.ui.opengl.data.GLDataManager;\r
-import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;\r
-import org.tizen.dynamicanalyzer.ui.range.RangePage;\r
-import org.tizen.dynamicanalyzer.ui.summary.failed.FailedChecker;\r
-import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData;\r
-import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakData;\r
-import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakDetector;\r
-import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;\r
-import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfileDataMaker;\r
-import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfilingChildData;\r
-import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfilingData;\r
-import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage;\r
-import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;\r
-import org.tizen.dynamicanalyzer.ui.toolbar.opentrace.OpenTraceProgressManager;\r
-import org.tizen.dynamicanalyzer.ui.userinterface.UIDataManager;\r
-import org.tizen.dynamicanalyzer.util.DALogger;\r
-import org.tizen.dynamicanalyzer.util.WorkbenchUtil;\r
-import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;\r
-import org.tizen.dynamicanalyzer.widgets.combo.DACustomCombo;\r
-import org.tizen.dynamicanalyzer.widgets.da.base.DADialog;\r
-import org.tizen.dynamicanalyzer.widgets.da.view.DAPageComposite;\r
-\r
-public class OpenTraceHandler extends AbstractHandler {\r
-       private static final DALogger DA_LOG = DALogger.getInstance();\r
-\r
-       public static final String ID = OpenTraceHandler.class.getName();\r
-       Project project = null;\r
-\r
-       @Override\r
-       public Object execute(ExecutionEvent event) throws ExecutionException {\r
-\r
-               project = AnalyzerManager.getProject();\r
-\r
-               List<String> pInfo = SqlManager.getInstance().getDetailsInfo(\r
-                               project.getSavePath());\r
-\r
-               if (null == pInfo || pInfo.isEmpty()) {\r
-                       DA_LOG.debug("The trace file is invalid."); //$NON-NLS-1$\r
-                       createWarningDialog(AnalyzerLabels.OPEN_TRACE_PROGRESS_VERSION_INVALID_REMOVE);\r
-                       AnalyzerUtil.executeCommand(ClearHandler.ID);\r
-                       return null;\r
-               }\r
-               project.loadSaveFormat(pInfo);\r
-\r
-//             OpenTraceProgressManager.getInstance().openTracePrgressStart(\r
-//                             AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING);\r
-\r
-               if (!DACommunicator.isDeviceConnected()) {\r
-                       Display.getDefault().syncExec(new Runnable() {\r
-                               @Override\r
-                               public void run() {\r
-                                       DACustomCombo deviceCombo = ToolbarArea.getInstance()\r
-                                                       .getDeviceCombo();\r
-                                       DACustomCombo appCombo = ToolbarArea.getInstance()\r
-                                                       .getAppCombo();\r
-                                       deviceCombo.setText(AnalyzerManager.getProject()\r
-                                                       .getDevice());\r
-                                       appCombo.setText(AnalyzerManager.getProject().getAppName());\r
-                                       deviceCombo.setEnabled(true);\r
-                                       appCombo.setEnabled(true);\r
-                               }\r
-                       });\r
-               }\r
-\r
-               int percent = OpenTraceProgressManager.getInstance().getPercent();\r
-               if (loadInfos() && loadCallStackData() && loadCallStackApis()\r
-                               && loadProfilingData() && loadProfilingChildData() &&\r
-                               // loadLeakData() &&\r
-                               // loadFailedData() &&\r
-                               loadImageSet()) {\r
-\r
-                       OpenTraceProgressManager.getInstance().setProgressPercent(\r
-                                       AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING, percent += 60);\r
-\r
-               } else {\r
-                       OpenTraceProgressManager.getInstance().closeOpenTraceDialog(\r
-                                       AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING_FAILED);\r
-                       createWarningDialog(AnalyzerLabels.OPEN_TRACE_PROGRESS_INVALID_REMOVE);\r
-                       AnalyzerUtil.executeCommand(ClearHandler.ID);\r
-                       return null;\r
-               }\r
-\r
-               ToolbarArea.getInstance().setTime(project.getLastTime());\r
-               ToolbarArea.getInstance().setDeviceComboText(project.getDevice());\r
-               ToolbarArea.getInstance().setAppComboText(project.getAppName());\r
-               ToolbarArea.getInstance().checkStartButtonAndAppListEnablement();\r
-               ToolbarArea.getInstance().setRepalyButtonEnable(true);\r
-               if (AnalyzerManager.getProject().getProcessInfoPackHash().isEmpty()) {\r
-                       ToolbarArea.getInstance().setSourceViewEnable(false);\r
-                       ToolbarArea.getInstance().setSourceViewTooltip(\r
-                                       AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING);\r
-               } else {\r
-                       ToolbarArea.getInstance().setSourceViewEnable(true);\r
-                       ToolbarArea.getInstance().setSourceViewTooltip(\r
-                                       AnalyzerLabels.MESSAGE_PROCESS_VIEW_SOURCE);\r
-               }\r
-               OpenTraceProgressManager.getInstance().setProgressPercent(\r
-                               AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING, percent += 3);\r
-               /* add each part action.. close... open...etc... */\r
-\r
-               /* resource log view action start */\r
-               // List<LogCenter> logCenters = AnalyzerManager.getLogCenters();\r
-               // List<Integer> ids = LogDataFactory.getLogList();\r
-               // size = ids.size();\r
-               // for (int i = 0; i < size; i++) {\r
-               // LogCenter center = logCenters.get(i);\r
-               // int dataSize = SqlManager.getInstance().selectCount(center);\r
-               // center.setDataSize(dataSize);\r
-               // }\r
-\r
-               if (RangeDataManager.getInstance().isBeingAnalyzed()) {\r
-                       DAPageComposite page = AnalyzerManager.getCurrentPage();\r
-                       if (page instanceof RangePage) {\r
-                               AnalyzerUtil.changePage(TimelinePage.pageID);\r
-                       }\r
-               }\r
-\r
-               OpenTraceProgressManager.getInstance().runThreads();\r
-               OpenTraceProgressManager.getInstance().openTraceComplete();\r
-               SqlManager.getInstance().closeConnection();\r
-\r
-               NetworkDataManager.getInstance().openProcess();\r
-               GLDataManager.getInstance().openProcess();\r
-               return null;\r
-       }\r
-\r
-       private void invalidProgress() {\r
-               OpenTraceProgressManager.getInstance().closeOpenTraceDialog(\r
-                               AnalyzerLabels.OPEN_TRACE_PROGRESS_INVALID);\r
-               createWarningDialog(AnalyzerLabels.OPEN_TRACE_PROGRESS_INVALID_REMOVE);\r
-               AnalyzerUtil.executeCommand(ClearHandler.ID);\r
-       }\r
-\r
-       private boolean loadCallStackData() {\r
-               boolean isSuccess = true;\r
-               List<List<String>> dbInfo = SqlManager.getInstance()\r
-                               .getCallStackDataFromTable();\r
-               if (null == dbInfo) {\r
-                       DA_LOG.debug("failed - loadCallStackData");\r
-                       isSuccess = false;\r
-               } else {\r
-                       for (int i = 0; i < dbInfo.size(); i++) {\r
-                               List<String> pInfo = dbInfo.get(i);\r
-                               int seq = Integer.parseInt(pInfo.get(0));\r
-                               String addrs = pInfo.get(1);\r
-                               if (null == addrs) {\r
-                                       continue;\r
-                               }\r
-                               String[] splitAddrs = addrs.split(CommonConstants.SLASH);\r
-                               CallStackData csd = new CallStackData(seq);\r
-                               List<Long> addrList = csd.getAddrs();\r
-                               int size = splitAddrs.length;\r
-                               for (int j = 0; j < size; j++) {\r
-                                       long addr = Long.parseLong(splitAddrs[j]);\r
-                                       addrList.add(addr);\r
-                               }\r
-                               AnalyzerManager.getCallstackManager()\r
-                                               .getCallStackDataBySeqMap().put(seq, csd);\r
-                       }\r
-               }\r
-               return isSuccess;\r
-       }\r
-\r
-       private boolean loadCallStackApis() {\r
-               boolean isSuccess = true;\r
-               List<List<String>> dbInfo = SqlManager.getInstance()\r
-                               .setloadCallStackApis();\r
-               if (null == dbInfo) {\r
-                       DA_LOG.debug("failed - loadCallStackApis");\r
-                       isSuccess = false;\r
-               } else {\r
-                       BaseCallstackManager callstackManager = AnalyzerManager\r
-                                       .getCallstackManager();\r
-                       for (int i = 0; i < dbInfo.size(); i++) {\r
-                               List<String> pInfo = dbInfo.get(i);\r
-                               long addr = Long.parseLong(pInfo.get(0));\r
-                               String api = pInfo.get(1);\r
-                               int pid = Integer.parseInt(pInfo.get(2));\r
-                               long time = Long.parseLong(pInfo.get(3));\r
-                               CallStackUnit csa = new CallStackUnit(addr, api, pid, time);\r
-                               callstackManager.getCallStackApiAddrByPidMap(pid)\r
-                                               .put(addr, csa);\r
-\r
-                       }\r
-               }\r
-               return isSuccess;\r
-       }\r
-\r
-       private boolean loadInfos() {\r
-               boolean isSuccess = true;\r
-               List<List<String>> dbInfo = SqlManager.getInstance().loadTargetInfo();\r
-               if (null == dbInfo) {\r
-                       DA_LOG.debug("failed - loadTargetInfo");\r
-                       isSuccess = false;\r
-               } else {\r
-                       List<String> info = dbInfo.get(0);\r
-                       TargetInfo targetInfo = new TargetInfo();\r
-                       targetInfo.loadSaveFormat(info);\r
-                       GlobalInformation.getCurrentDeviceInfo().setTargetInfo(targetInfo);\r
-               }\r
-\r
-               List<String> pids = SqlManager.getInstance().getPids();\r
-               int pidCount = pids.size();\r
-\r
-               HashMap<Integer, ProcessInfoPackage> processPkgMap = AnalyzerManager\r
-                               .getProject().getProcessInfoPackHash();\r
-               for (int h = 0; h < pidCount; h++) {\r
-                       ProcessInfoPackage pip = new ProcessInfoPackage();\r
-                       String option = " where pid = " + pids.get(h);\r
-                       dbInfo = SqlManager.getInstance().loadProcessInfo(option);\r
-                       if (null == dbInfo) {\r
-                               DA_LOG.debug("failed - load Process Info");\r
-                               isSuccess = false;\r
-                               continue;\r
-                       } else {\r
-                               List<ProcessInfo> pInfos = pip.getProcessSnapshots();\r
-                               for (int i = 0; i < dbInfo.size(); i++) {\r
-                                       List<String> info = dbInfo.get(i);\r
-                                       ProcessInfo process = new ProcessInfo();\r
-                                       process.loadSaveFormat(info.get(1));\r
-                                       pInfos.add(process);\r
-                                       if (i == 0) {\r
-                                               pip.setPid(process.getPid());\r
-                                               pip.setPpid(process.getPpid());\r
-                                               pip.setTargetBinaryPath(process\r
-                                                               .getMainTargetBinaryPath());\r
-                                       }\r
-                                       String subOption = "where pid = " + process.getPid()\r
-                                                       + " and time = \'"\r
-                                                       + process.getStartTime().toString() + "\'";\r
-                                       List<List<String>> objInfo = SqlManager.getInstance()\r
-                                                       .loadLibObj(subOption);\r
-                                       if (null == objInfo) {\r
-                                               DA_LOG.debug("failed - load Lib Object");\r
-                                               isSuccess = false;\r
-                                               continue;\r
-                                       } else {\r
-                                               for (List<String> libInfo : objInfo) {\r
-                                                       LibraryObject libObj = new LibraryObject();\r
-                                                       libObj.setPid(Integer.parseInt(libInfo.get(0)));\r
-                                                       // 1 : time\r
-                                                       libObj.setLowestAddress(Long.parseLong(libInfo\r
-                                                                       .get(2)));\r
-                                                       libObj.setHighestAddress(Long.parseLong(libInfo\r
-                                                                       .get(3)));\r
-                                                       libObj.setLibPath(libInfo.get(4));\r
-                                                       process.getLibObjs().add(libObj);\r
-                                                       process.getLibObjHash().put(libObj.getLibPath(),\r
-                                                                       libObj);\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-                       processPkgMap.put(pip.getPid(), pip);\r
-               }\r
-               dbInfo = SqlManager.getInstance().loadApiNames();\r
-               if (null == dbInfo) {\r
-                       DA_LOG.debug("failed - load Api names");\r
-                       isSuccess = false;\r
-               } else {\r
-                       List<String> apiList = ApiNameManager.getApiList();\r
-                       for (List<String> info : dbInfo) {\r
-                               apiList.add(info.get(0));\r
-                       }\r
-               }\r
-               return isSuccess;\r
-       }\r
-\r
-       private boolean loadImageSet() {\r
-               List<List<String>> input = SqlManager.getInstance().getloadImageSet(3);\r
-               if (null == input) {\r
-                       return false;\r
-               }\r
-\r
-               int size = input.size();\r
-\r
-               for (int i = 0; i < size; i++) {\r
-                       List<String> imgLog = input.get(i);\r
-                       String seq = imgLog.get(0);\r
-                       String time = imgLog.get(1);\r
-                       ImageInfo imgInfo = new ImageInfo();\r
-                       imgInfo.setSeq(seq);\r
-                       imgInfo.setTime(time);\r
-\r
-                       String[] path = imgLog.get(2).split(CommonConstants.SLASH);\r
-                       imgInfo.setFileName(new String(path[path.length - 1]));\r
-\r
-                       AnalyzerManager.getImageSet().put(seq, imgInfo);\r
-               }\r
-               return true;\r
-       }\r
-\r
-       private boolean loadLeakData() {\r
-               boolean isSuccess = true;\r
-               List<List<String>> dbInfo = SqlManager.getInstance().setloadLeakData();\r
-               if (null == dbInfo) {\r
-                       DA_LOG.debug("leak data loading failed..");\r
-                       isSuccess = false;\r
-               } else {\r
-                       LeakDetector leakDectector = AnalyzerManager.getLeakDetector();\r
-                       for (int i = 0; i < dbInfo.size(); i++) {\r
-                               List<String> info = dbInfo.get(i);\r
-                               LeakData leakData = new LeakData(info);\r
-                               if (-1 != leakData.getParentKey()) {\r
-                                       LeakData parent = leakDectector.getLeakHash().get(\r
-                                                       leakData.getParentKey());\r
-                                       if (null == parent) {\r
-                                               continue;\r
-                                       } else {\r
-                                               parent.getChildren().add(leakData);\r
-                                       }\r
-                               } else {\r
-                                       leakDectector.getLeakHash().put((long) leakData.getKey(),\r
-                                                       leakData);\r
-                               }\r
-                       }\r
-               }\r
-               return isSuccess;\r
-       }\r
-\r
-       private boolean loadFailedData() {\r
-               boolean isSuccess = true;\r
-               List<List<String>> dbInfo = SqlManager.getInstance()\r
-                               .setloadFailedData();\r
-               if (null == dbInfo) {\r
-                       DA_LOG.debug("failed - loadFailedData");\r
-                       isSuccess = false;\r
-               } else {\r
-                       FailedChecker failedChecker = AnalyzerManager.getFailedChecker();\r
-                       for (int i = 0; i < dbInfo.size(); i++) {\r
-                               List<String> pInfo = dbInfo.get(i);\r
-                               // possibility of extensions - network, efl, db, etc...\r
-                               int id = Integer.parseInt(pInfo\r
-                                               .get(LogCenterConstants.ID_INDEX));\r
-                               if (id == DataChannelConstants.MSG_PROBE_FILE) {\r
-                                       // if file failed api data is skip - file chart make it!\r
-                                       int type = Integer.parseInt(pInfo\r
-                                                       .get(LogCenterConstants.RESOURCE_FDTYPE_INDEX));\r
-                                       if (type == LogCenterConstants.FD_TYPE_FILE) {\r
-                                               continue;\r
-                                       }\r
-                               }\r
-                               FailedData failedData = new FailedData(pInfo);\r
-                               failedChecker.getFailedList().add(failedData);\r
-                       }\r
-               }\r
-               return isSuccess;\r
-       }\r
-\r
-       private boolean loadProfilingData() {\r
-               boolean isSuccess = true;\r
-               List<List<String>> dbInfo = SqlManager.getInstance()\r
-                               .setloadProfilingData();\r
-               if (null == dbInfo) {\r
-                       DA_LOG.debug("failed - loadProfilingData");\r
-                       isSuccess = false;\r
-               } else {\r
-                       for (int i = 0; i < dbInfo.size(); i++) {\r
-                               List<String> pInfo = dbInfo.get(i);\r
-                               int pid = Integer.parseInt(pInfo.get(ProfilingData.PID_INDEX));\r
-                               // possibility of extensions - network, efl, db, etc...\r
-                               ProfileDataMaker profiler = FunctionUsageProfiler.getInstance()\r
-                                               .getProfileDataMakerByPid(pid);\r
-                               ProfilingData fupData = new ProfilingData(pInfo, profiler);\r
-                               String seq = pInfo.get(ProfilingData.SEQUENCE_INDEX);\r
-                               profiler.getProfilingDataMap().put(Integer.parseInt(seq),\r
-                                               fupData);\r
-                               String symbol = pInfo.get(ProfilingData.KEY_INDEX);\r
-                               profiler.getSymbolSeqHash().put(symbol, seq);\r
-                               UIDataManager.getInstance().getfunctionProfilingDataChecker()\r
-                                               .addProfilingData(fupData);\r
-                               // restore total sample count\r
-                               profiler.setTotalSampleCount(profiler.getTotalSampleCount()\r
-                                               + fupData.getExCount());\r
-                       }\r
-\r
-                       List<Integer> pids = FunctionUsageProfiler.getInstance()\r
-                                       .getPidsOfProfileDataMakerMap();\r
-                       for (int i = 0; i < pids.size(); i++) {\r
-                               ProfileDataMaker profiler = FunctionUsageProfiler.getInstance()\r
-                                               .getProfileDataMakerByPid(pids.get(i));\r
-                               ProfilingData ab = profiler\r
-                                               .getProfilingDataByKey(FunctionUsageProfiler.APPLICATION_KEY);\r
-                               profiler.setAppBin(ab);\r
-                               ProfilingData dl = profiler\r
-                                               .getProfilingDataByKey(FunctionUsageProfiler.DEPENDENT_LIB_KEY);\r
-                               profiler.setDependentLib(dl);\r
-                       }\r
-               }\r
-               return isSuccess;\r
-       }\r
-\r
-       private boolean loadProfilingChildData() {\r
-               boolean isSuccess = true;\r
-               List<List<String>> dbInfo = SqlManager.getInstance()\r
-                               .setloadProfilingChildData();\r
-               if (null == dbInfo) {\r
-                       DA_LOG.debug("failed - loadProfilingChildData");\r
-                       isSuccess = false;\r
-               } else {\r
-                       for (int i = 0; i < dbInfo.size(); i++) {\r
-                               List<String> data = dbInfo.get(i);\r
-                               if (data.size() < 2) { // why?\r
-                                       continue;\r
-                               }\r
-                               int pid = Integer.parseInt(data.get(1)); // 1 == PID_INDEX\r
-                               String seqs = data.get(2); // 2 == CHILDLIST_INDEX\r
-                               String[] splitSeqs = seqs.split(CommonConstants.SLASH);\r
-                               List<Integer> childData = new ArrayList<Integer>();\r
-                               for (int ii = 0; ii < splitSeqs.length; ii++) {\r
-                                       childData.add(Integer.parseInt(splitSeqs[ii]));\r
-                               }\r
-                               int key = Integer.parseInt(data.get(0));\r
-                               ProfileDataMaker profiler = FunctionUsageProfiler.getInstance()\r
-                                               .getProfileDataMakerByPid(pid);\r
-                               ProfilingData parent = profiler.getProfilingDataMap().get(key);\r
-                               ProfilingChildData child = parent.getChildData();\r
-                               child.getChildren().addAll(childData);\r
-                               profiler.getChildListMap().put(data.get(0), child);\r
-                       }\r
-               }\r
-               return isSuccess;\r
-       }\r
-\r
-       private void createWarningDialog(String message) {\r
-               final Shell shell = WorkbenchUtil.getWorkbenchWindow().getShell();\r
-               final DADialog dialog = new DADialog(shell, SWT.NONE);\r
-               dialog.setIcon(ImageResources.DIALOG_WARNING_ICON);\r
-               dialog.setMessage(message);\r
-               Display.getDefault().syncExec(new Runnable() {\r
-                       @Override\r
-                       public void run() {\r
-                               dialog.open();\r
-                       }\r
-               });\r
-       }\r
-}\r
+/*
+ *  Dynamic Analyzer
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: 
+ * Jooyoul Lee <jy.exe.lee@samsung.com>
+ * Juyoung Kim <j0.kim@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ * Contributors:
+ * - S-Core Co., Ltd
+ * 
+ */
+
+package org.tizen.dynamicanalyzer.handlers;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.dynamicanalyzer.common.AnalyzerManager;
+import org.tizen.dynamicanalyzer.common.GlobalInformation;
+import org.tizen.dynamicanalyzer.communicator.DACommunicator;
+import org.tizen.dynamicanalyzer.constant.CommonConstants;
+import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
+import org.tizen.dynamicanalyzer.model.ImageInfo;
+import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
+import org.tizen.dynamicanalyzer.project.Project;
+import org.tizen.dynamicanalyzer.resources.ImageResources;
+import org.tizen.dynamicanalyzer.sql.SqlManager;
+import org.tizen.dynamicanalyzer.swap.callstack.BaseCallstackManager;
+import org.tizen.dynamicanalyzer.swap.channel.control.TargetInfo;
+import org.tizen.dynamicanalyzer.swap.channel.data.ApiNameManager;
+import org.tizen.dynamicanalyzer.swap.channel.data.DataChannelConstants;
+import org.tizen.dynamicanalyzer.swap.channel.data.LibraryObject;
+import org.tizen.dynamicanalyzer.swap.channel.data.ProcessInfo;
+import org.tizen.dynamicanalyzer.swap.channel.data.ProcessInfoPackage;
+import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackData;
+import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackUnit;
+import org.tizen.dynamicanalyzer.ui.network.data.NetworkDataManager;
+import org.tizen.dynamicanalyzer.ui.opengl.data.GLDataManager;
+import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
+import org.tizen.dynamicanalyzer.ui.range.RangePage;
+import org.tizen.dynamicanalyzer.ui.summary.failed.FailedChecker;
+import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData;
+import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakData;
+import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakDetector;
+import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
+import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfileDataMaker;
+import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfilingChildData;
+import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfilingData;
+import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage;
+import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
+import org.tizen.dynamicanalyzer.ui.toolbar.opentrace.OpenTraceProgressManager;
+import org.tizen.dynamicanalyzer.ui.userinterface.UIDataManager;
+import org.tizen.dynamicanalyzer.util.DALogger;
+import org.tizen.dynamicanalyzer.util.WorkbenchUtil;
+import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+import org.tizen.dynamicanalyzer.widgets.combo.DACustomCombo;
+import org.tizen.dynamicanalyzer.widgets.da.base.DADialog;
+import org.tizen.dynamicanalyzer.widgets.da.view.DAPageComposite;
+
+public class OpenTraceHandler extends AbstractHandler {
+       private static final DALogger DA_LOG = DALogger.getInstance();
+
+       public static final String ID = OpenTraceHandler.class.getName();
+       Project project = null;
+
+       @Override
+       public Object execute(ExecutionEvent event) throws ExecutionException {
+
+               project = AnalyzerManager.getProject();
+
+               List<String> pInfo = SqlManager.getInstance().getDetailsInfo(
+                               project.getSavePath());
+
+               if (null == pInfo || pInfo.isEmpty()) {
+                       DA_LOG.debug("The trace file is invalid."); //$NON-NLS-1$
+                       createWarningDialog(AnalyzerLabels.OPEN_TRACE_PROGRESS_VERSION_INVALID_REMOVE);
+                       AnalyzerUtil.executeCommand(ClearHandler.ID);
+                       return null;
+               }
+               project.loadSaveFormat(pInfo);
+
+               OpenTraceProgressManager.getInstance().openTracePrgressStart(
+                               AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING);
+
+               if (!DACommunicator.isDeviceConnected()) {
+                       Display.getDefault().syncExec(new Runnable() {
+                               @Override
+                               public void run() {
+                                       DACustomCombo deviceCombo = ToolbarArea.getInstance()
+                                                       .getDeviceCombo();
+                                       DACustomCombo appCombo = ToolbarArea.getInstance()
+                                                       .getAppCombo();
+                                       deviceCombo.setText(AnalyzerManager.getProject()
+                                                       .getDevice());
+                                       appCombo.setText(AnalyzerManager.getProject().getAppName());
+                                       deviceCombo.setEnabled(true);
+                                       appCombo.setEnabled(true);
+                               }
+                       });
+               }
+
+               int percent = OpenTraceProgressManager.getInstance().getPercent();
+               if (loadInfos() && loadCallStackData() && loadCallStackApis()
+                               && loadProfilingData() && loadProfilingChildData() &&
+                               // loadLeakData() &&
+                               // loadFailedData() &&
+                               loadImageSet()) {
+
+                       OpenTraceProgressManager.getInstance().setProgressPercent(
+                                       AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING, percent += 60);
+
+               } else {
+                       OpenTraceProgressManager.getInstance().closeOpenTraceDialog(
+                                       AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING_FAILED);
+                       createWarningDialog(AnalyzerLabels.OPEN_TRACE_PROGRESS_INVALID_REMOVE);
+                       AnalyzerUtil.executeCommand(ClearHandler.ID);
+                       return null;
+               }
+
+               ToolbarArea.getInstance().setTime(project.getLastTime());
+               ToolbarArea.getInstance().setDeviceComboText(project.getDevice());
+               ToolbarArea.getInstance().setAppComboText(project.getAppName());
+               ToolbarArea.getInstance().checkStartButtonAndAppListEnablement();
+               ToolbarArea.getInstance().setRepalyButtonEnable(true);
+               if (AnalyzerManager.getProject().getProcessInfoPackHash().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);
+               }
+               OpenTraceProgressManager.getInstance().setProgressPercent(
+                               AnalyzerLabels.OPEN_TRACE_PROGRESS_LOADING, percent += 3);
+               /* add each part action.. close... open...etc... */
+
+               /* resource log view action start */
+               // List<LogCenter> logCenters = AnalyzerManager.getLogCenters();
+               // List<Integer> ids = LogDataFactory.getLogList();
+               // size = ids.size();
+               // for (int i = 0; i < size; i++) {
+               // LogCenter center = logCenters.get(i);
+               // int dataSize = SqlManager.getInstance().selectCount(center);
+               // center.setDataSize(dataSize);
+               // }
+
+               if (RangeDataManager.getInstance().isBeingAnalyzed()) {
+                       DAPageComposite page = AnalyzerManager.getCurrentPage();
+                       if (page instanceof RangePage) {
+                               AnalyzerUtil.changePage(TimelinePage.pageID);
+                       }
+               }
+
+               OpenTraceProgressManager.getInstance().runThreads();
+               OpenTraceProgressManager.getInstance().openTraceComplete();
+               SqlManager.getInstance().closeConnection();
+
+               NetworkDataManager.getInstance().openProcess();
+               GLDataManager.getInstance().openProcess();
+               return null;
+       }
+
+       private void invalidProgress() {
+               OpenTraceProgressManager.getInstance().closeOpenTraceDialog(
+                               AnalyzerLabels.OPEN_TRACE_PROGRESS_INVALID);
+               createWarningDialog(AnalyzerLabels.OPEN_TRACE_PROGRESS_INVALID_REMOVE);
+               AnalyzerUtil.executeCommand(ClearHandler.ID);
+       }
+
+       private boolean loadCallStackData() {
+               boolean isSuccess = true;
+               List<List<String>> dbInfo = SqlManager.getInstance()
+                               .getCallStackDataFromTable();
+               if (null == dbInfo) {
+                       DA_LOG.debug("failed - loadCallStackData");
+                       isSuccess = false;
+               } else {
+                       for (int i = 0; i < dbInfo.size(); i++) {
+                               List<String> pInfo = dbInfo.get(i);
+                               int seq = Integer.parseInt(pInfo.get(0));
+                               String addrs = pInfo.get(1);
+                               if (null == addrs) {
+                                       continue;
+                               }
+                               String[] splitAddrs = addrs.split(CommonConstants.SLASH);
+                               CallStackData csd = new CallStackData(seq);
+                               List<Long> addrList = csd.getAddrs();
+                               int size = splitAddrs.length;
+                               for (int j = 0; j < size; j++) {
+                                       long addr = Long.parseLong(splitAddrs[j]);
+                                       addrList.add(addr);
+                               }
+                               AnalyzerManager.getCallstackManager()
+                                               .getCallStackDataBySeqMap().put(seq, csd);
+                       }
+               }
+               return isSuccess;
+       }
+
+       private boolean loadCallStackApis() {
+               boolean isSuccess = true;
+               List<List<String>> dbInfo = SqlManager.getInstance()
+                               .setloadCallStackApis();
+               if (null == dbInfo) {
+                       DA_LOG.debug("failed - loadCallStackApis");
+                       isSuccess = false;
+               } else {
+                       BaseCallstackManager callstackManager = AnalyzerManager
+                                       .getCallstackManager();
+                       for (int i = 0; i < dbInfo.size(); i++) {
+                               List<String> pInfo = dbInfo.get(i);
+                               long addr = Long.parseLong(pInfo.get(0));
+                               String api = pInfo.get(1);
+                               int pid = Integer.parseInt(pInfo.get(2));
+                               long time = Long.parseLong(pInfo.get(3));
+                               CallStackUnit csa = new CallStackUnit(addr, api, pid, time);
+                               callstackManager.getCallStackApiAddrByPidMap(pid)
+                                               .put(addr, csa);
+
+                       }
+               }
+               return isSuccess;
+       }
+
+       private boolean loadInfos() {
+               boolean isSuccess = true;
+               List<List<String>> dbInfo = SqlManager.getInstance().loadTargetInfo();
+               if (null == dbInfo) {
+                       DA_LOG.debug("failed - loadTargetInfo");
+                       isSuccess = false;
+               } else {
+                       List<String> info = dbInfo.get(0);
+                       TargetInfo targetInfo = new TargetInfo();
+                       targetInfo.loadSaveFormat(info);
+                       GlobalInformation.getCurrentDeviceInfo().setTargetInfo(targetInfo);
+               }
+
+               List<String> pids = SqlManager.getInstance().getPids();
+               int pidCount = pids.size();
+
+               HashMap<Integer, ProcessInfoPackage> processPkgMap = AnalyzerManager
+                               .getProject().getProcessInfoPackHash();
+               for (int h = 0; h < pidCount; h++) {
+                       ProcessInfoPackage pip = new ProcessInfoPackage();
+                       String option = " where pid = " + pids.get(h);
+                       dbInfo = SqlManager.getInstance().loadProcessInfo(option);
+                       if (null == dbInfo) {
+                               DA_LOG.debug("failed - load Process Info");
+                               isSuccess = false;
+                               continue;
+                       } else {
+                               List<ProcessInfo> pInfos = pip.getProcessSnapshots();
+                               for (int i = 0; i < dbInfo.size(); i++) {
+                                       List<String> info = dbInfo.get(i);
+                                       ProcessInfo process = new ProcessInfo();
+                                       process.loadSaveFormat(info.get(1));
+                                       pInfos.add(process);
+                                       if (i == 0) {
+                                               pip.setPid(process.getPid());
+                                               pip.setPpid(process.getPpid());
+                                               pip.setTargetBinaryPath(process
+                                                               .getMainTargetBinaryPath());
+                                       }
+                                       String subOption = "where pid = " + process.getPid()
+                                                       + " and time = \'"
+                                                       + process.getStartTime().toString() + "\'";
+                                       List<List<String>> objInfo = SqlManager.getInstance()
+                                                       .loadLibObj(subOption);
+                                       if (null == objInfo) {
+                                               DA_LOG.debug("failed - load Lib Object");
+                                               isSuccess = false;
+                                               continue;
+                                       } else {
+                                               for (List<String> libInfo : objInfo) {
+                                                       LibraryObject libObj = new LibraryObject();
+                                                       libObj.setPid(Integer.parseInt(libInfo.get(0)));
+                                                       // 1 : time
+                                                       libObj.setLowestAddress(Long.parseLong(libInfo
+                                                                       .get(2)));
+                                                       libObj.setHighestAddress(Long.parseLong(libInfo
+                                                                       .get(3)));
+                                                       libObj.setLibPath(libInfo.get(4));
+                                                       process.getLibObjs().add(libObj);
+                                                       process.getLibObjHash().put(libObj.getLibPath(),
+                                                                       libObj);
+                                               }
+                                       }
+                               }
+                       }
+                       processPkgMap.put(pip.getPid(), pip);
+               }
+               dbInfo = SqlManager.getInstance().loadApiNames();
+               if (null == dbInfo) {
+                       DA_LOG.debug("failed - load Api names");
+                       isSuccess = false;
+               } else {
+                       List<String> apiList = ApiNameManager.getApiList();
+                       for (List<String> info : dbInfo) {
+                               apiList.add(info.get(0));
+                       }
+               }
+               return isSuccess;
+       }
+
+       private boolean loadImageSet() {
+               List<List<String>> input = SqlManager.getInstance().getloadImageSet(3);
+               if (null == input) {
+                       return false;
+               }
+
+               int size = input.size();
+
+               for (int i = 0; i < size; i++) {
+                       List<String> imgLog = input.get(i);
+                       String seq = imgLog.get(0);
+                       String time = imgLog.get(1);
+                       ImageInfo imgInfo = new ImageInfo();
+                       imgInfo.setSeq(seq);
+                       imgInfo.setTime(time);
+
+                       String[] path = imgLog.get(2).split(CommonConstants.SLASH);
+                       imgInfo.setFileName(new String(path[path.length - 1]));
+
+                       AnalyzerManager.getImageSet().put(seq, imgInfo);
+               }
+               return true;
+       }
+
+       private boolean loadLeakData() {
+               boolean isSuccess = true;
+               List<List<String>> dbInfo = SqlManager.getInstance().setloadLeakData();
+               if (null == dbInfo) {
+                       DA_LOG.debug("leak data loading failed..");
+                       isSuccess = false;
+               } else {
+                       LeakDetector leakDectector = AnalyzerManager.getLeakDetector();
+                       for (int i = 0; i < dbInfo.size(); i++) {
+                               List<String> info = dbInfo.get(i);
+                               LeakData leakData = new LeakData(info);
+                               if (-1 != leakData.getParentKey()) {
+                                       LeakData parent = leakDectector.getLeakHash().get(
+                                                       leakData.getParentKey());
+                                       if (null == parent) {
+                                               continue;
+                                       } else {
+                                               parent.getChildren().add(leakData);
+                                       }
+                               } else {
+                                       leakDectector.getLeakHash().put((long) leakData.getKey(),
+                                                       leakData);
+                               }
+                       }
+               }
+               return isSuccess;
+       }
+
+       private boolean loadFailedData() {
+               boolean isSuccess = true;
+               List<List<String>> dbInfo = SqlManager.getInstance()
+                               .setloadFailedData();
+               if (null == dbInfo) {
+                       DA_LOG.debug("failed - loadFailedData");
+                       isSuccess = false;
+               } else {
+                       FailedChecker failedChecker = AnalyzerManager.getFailedChecker();
+                       for (int i = 0; i < dbInfo.size(); i++) {
+                               List<String> pInfo = dbInfo.get(i);
+                               // possibility of extensions - network, efl, db, etc...
+                               int id = Integer.parseInt(pInfo
+                                               .get(LogCenterConstants.ID_INDEX));
+                               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));
+                                       if (type == LogCenterConstants.FD_TYPE_FILE) {
+                                               continue;
+                                       }
+                               }
+                               FailedData failedData = new FailedData(pInfo);
+                               failedChecker.getFailedList().add(failedData);
+                       }
+               }
+               return isSuccess;
+       }
+
+       private boolean loadProfilingData() {
+               boolean isSuccess = true;
+               List<List<String>> dbInfo = SqlManager.getInstance()
+                               .setloadProfilingData();
+               if (null == dbInfo) {
+                       DA_LOG.debug("failed - loadProfilingData");
+                       isSuccess = false;
+               } else {
+                       for (int i = 0; i < dbInfo.size(); i++) {
+                               List<String> pInfo = dbInfo.get(i);
+                               int pid = Integer.parseInt(pInfo.get(ProfilingData.PID_INDEX));
+                               // possibility of extensions - network, efl, db, etc...
+                               ProfileDataMaker profiler = FunctionUsageProfiler.getInstance()
+                                               .getProfileDataMakerByPid(pid);
+                               ProfilingData fupData = new ProfilingData(pInfo, profiler);
+                               String seq = pInfo.get(ProfilingData.SEQUENCE_INDEX);
+                               profiler.getProfilingDataMap().put(Integer.parseInt(seq),
+                                               fupData);
+                               String symbol = pInfo.get(ProfilingData.KEY_INDEX);
+                               profiler.getSymbolSeqHash().put(symbol, seq);
+                               UIDataManager.getInstance().getfunctionProfilingDataChecker()
+                                               .addProfilingData(fupData);
+                               // restore total sample count
+                               profiler.setTotalSampleCount(profiler.getTotalSampleCount()
+                                               + fupData.getExCount());
+                       }
+
+                       List<Integer> pids = FunctionUsageProfiler.getInstance()
+                                       .getPidsOfProfileDataMakerMap();
+                       for (int i = 0; i < pids.size(); i++) {
+                               ProfileDataMaker profiler = FunctionUsageProfiler.getInstance()
+                                               .getProfileDataMakerByPid(pids.get(i));
+                               ProfilingData ab = profiler
+                                               .getProfilingDataByKey(FunctionUsageProfiler.APPLICATION_KEY);
+                               profiler.setAppBin(ab);
+                               ProfilingData dl = profiler
+                                               .getProfilingDataByKey(FunctionUsageProfiler.DEPENDENT_LIB_KEY);
+                               profiler.setDependentLib(dl);
+                       }
+               }
+               return isSuccess;
+       }
+
+       private boolean loadProfilingChildData() {
+               boolean isSuccess = true;
+               List<List<String>> dbInfo = SqlManager.getInstance()
+                               .setloadProfilingChildData();
+               if (null == dbInfo) {
+                       DA_LOG.debug("failed - loadProfilingChildData");
+                       isSuccess = false;
+               } else {
+                       for (int i = 0; i < dbInfo.size(); i++) {
+                               List<String> data = dbInfo.get(i);
+                               if (data.size() < 2) { // why?
+                                       continue;
+                               }
+                               int pid = Integer.parseInt(data.get(1)); // 1 == PID_INDEX
+                               String seqs = data.get(2); // 2 == CHILDLIST_INDEX
+                               String[] splitSeqs = seqs.split(CommonConstants.SLASH);
+                               List<Integer> childData = new ArrayList<Integer>();
+                               for (int ii = 0; ii < splitSeqs.length; ii++) {
+                                       childData.add(Integer.parseInt(splitSeqs[ii]));
+                               }
+                               int key = Integer.parseInt(data.get(0));
+                               ProfileDataMaker profiler = FunctionUsageProfiler.getInstance()
+                                               .getProfileDataMakerByPid(pid);
+                               ProfilingData parent = profiler.getProfilingDataMap().get(key);
+                               ProfilingChildData child = parent.getChildData();
+                               child.getChildren().addAll(childData);
+                               profiler.getChildListMap().put(data.get(0), child);
+                       }
+               }
+               return isSuccess;
+       }
+
+       private void createWarningDialog(String message) {
+               final Shell shell = WorkbenchUtil.getWorkbenchWindow().getShell();
+               final DADialog dialog = new DADialog(shell, SWT.NONE);
+               dialog.setIcon(ImageResources.DIALOG_WARNING_ICON);
+               dialog.setMessage(message);
+               Display.getDefault().syncExec(new Runnable() {
+                       @Override
+                       public void run() {
+                               dialog.open();
+                       }
+               });
+       }
+}
index 103ac6f..0e03c1b 100644 (file)
@@ -102,7 +102,8 @@ public class LogInserter implements Runnable {
                                        int logId = logIds.get(i);
                                        Logs logs = logPack.getLogs(logId);
                                        if (null != logs
-                                                       && (logId == DataChannelConstants.MSG_DATA_RECORD || logId == DataChannelConstants.MSG_PROBE_GLES20)) {
+                                                       && (logId == DataChannelConstants.MSG_DATA_RECORD
+                                                                       || logId == DataChannelConstants.MSG_PROBE_GLES20 || logId == DataChannelConstants.MSG_PROBE_NETWORK)) {
                                                continue;
                                        }
                                        if (null != logs) {
index 4317fe1..2e1f711 100755 (executable)
@@ -194,6 +194,8 @@ public class AnalyzerLabels extends NLS {
        public static String HEAP_MEMORY_WARNING_PRE;
        public static String HEAP_MEMORY_WARNING_POST;
        
+       public static String TIME_MS;
+       
        static {
                NLS.initializeMessages(BUNDLE_NAME, AnalyzerLabels.class);
        }
index bb42b7d..d1d3556 100755 (executable)
@@ -160,3 +160,5 @@ TABLE_COLUMN_RETURN=Return
 
 HEAP_MEMORY_WARNING_PRE=The trace has been stoped automatically for out of heap memory.\nIf you want to more, please edit the\n
 HEAP_MEMORY_WARNING_POST=/dynamic-analyzer.ini.
+
+TIME_MS = ms
index 02c8369..7a09954 100644 (file)
@@ -83,32 +83,6 @@ public class NetworkPageLabels extends NLS {
        public static String NETWORK_CHART_SESSION_NAME;
        public static String NETWORK_CHART_TRANSACTION_NAME;
 
-       public static String NETWORK_DB_RID;
-       public static String NETWORK_DB_DESTINATION_ADDRESS; 
-       public static String NETWORK_DB_FD_VALUE;
-       public static String NETWORK_DB_API_ID;
-       
-       public static String NETWORK_API_DB_TABLENAME;
-       public static String NETWORK_API_DB_API_TIME;
-       
-       public static String NETWORK_API_DB_ERRNO;
-       public static String NETWORK_API_DB_ARGUMENT;
-       public static String NETWORK_API_DB_RETURN;
-       public static String NETWORK_API_DB_BYTE_SIZE;
-       public static String NETWORK_API_DB_PAYLOAD;
-       public static String NETWORK_API_DB_API_TYPE;
-       public static String NETWORK_API_DB_CALLER_PC_ADDRESS;
-       public static String NETWORK_API_DB_LIB_NAME;
-       
-       public static String NETWORK_SERIES_DB_TABLENAME;
-       public static String NETWORK_SERIES_DB_START_TIME;
-       public static String NETWORK_SERIES_DB_END_TIME;
-       public static String NETWORK_SERIES_DB_STATUS_TYPE;
-       
-       
-       
-       public static String TIME_MS;
-                       
        static {
                // initialize resource bundle
                NLS.initializeMessages(BUNDLE_NAME, NetworkPageLabels.class);
index 55fc8c4..bc53a42 100644 (file)
@@ -50,25 +50,3 @@ NETWORK_CHART_CLIENT_NAME=Client
 NETWORK_CHART_SESSION_NAME=Session
 NETWORK_CHART_TRANSACTION_NAME=Transaction
 
-TIME_MS = ms
-
-NETWORK_DB_RID = "RID"
-NETWORK_DB_DESTINATION_ADDRESS = DESTINATION_ADDRESS
-NETWORK_DB_FD_VALUE = FD_VALUE
-NETWORK_DB_API_ID = API_ID
-
-NETWORK_API_DB_TABLENAME = NETWORK_API
-NETWORK_API_DB_API_TIME = API_TIME
-NETWORK_API_DB_ERRNO = ERRNO
-NETWORK_API_DB_ARGUMENT = ARGUMENT
-NETWORK_API_DB_RETURN = RETURN
-NETWORK_API_DB_BYTE_SIZE = BYTE_SIZE
-NETWORK_API_DB_PAYLOAD = PAYLOAD
-NETWORK_API_DB_API_TYPE = API_TYPE
-NETWORK_API_DB_CALLER_PC_ADDRESS = CALLER_PC_ADDRESS
-NETWORK_API_DB_LIB_NAME = LIB_NAME
-
-NETWORK_SERIES_DB_TABLENAME = NETWORK_SERIES
-NETWORK_SERIES_DB_START_TIME = START_TIME
-NETWORK_SERIES_DB_END_TIME = END_TIME
-NETWORK_SERIES_DB_STATUS_TYPE = STATUS_TYPE
\ No newline at end of file
index 164956c..a953e59 100644 (file)
@@ -355,7 +355,7 @@ public class SWAPCallStackManager extends BaseCallstackManager {
                                probeCallstack.set(size - 1, new CallStackItem(
                                                callerCallstackUnit));
                        } else {
-               //              DA_LOG.debug("probe caller is not the same as top of user callstack"); //$NON-NLS-1$
+                               DA_LOG.debug("probe caller is not the same as top of user callstack"); //$NON-NLS-1$
                        }
                }
 
@@ -479,7 +479,8 @@ public class SWAPCallStackManager extends BaseCallstackManager {
 
                String path = processInfo.getMainTargetBinaryPath();
                String key = AnalyzerUtil.getTargetPathKey(path);
-               BinaryInfo binInfo = GlobalInformation.getCurrentApplication().getBinaryInfo(key);
+               BinaryInfo binInfo = GlobalInformation.getCurrentApplication()
+                               .getBinaryInfo(key);
                if (null == binInfo) {
                        return false;
                }
index dc2efc9..619d5b1 100644 (file)
@@ -63,7 +63,6 @@ import org.tizen.dynamicanalyzer.swap.model.format.LogFormat;
 import org.tizen.dynamicanalyzer.swap.model.format.MemoryLogFormat;
 import org.tizen.dynamicanalyzer.swap.model.format.NetworkLogFormat;
 import org.tizen.dynamicanalyzer.swap.model.format.ProfilingLogFormat;
-import org.tizen.dynamicanalyzer.swap.model.format.ReplayLogFormat;
 import org.tizen.dynamicanalyzer.swap.model.format.SceneLogFormat;
 import org.tizen.dynamicanalyzer.swap.model.format.ScreenShotLogFormat;
 import org.tizen.dynamicanalyzer.swap.model.format.SyncLogFormat;
@@ -109,8 +108,8 @@ public class LogDataFactory {
                logList.add(MSG_PROBE_UICONTROL);
                logList.add(MSG_PROBE_UIEVENT);
                logList.add(MSG_PROBE_FILE);
-               logList.add(MSG_PROBE_NETWORK);
-               logList.add(MSG_PROBE_GLES20);
+//             logList.add(MSG_PROBE_NETWORK);
+//             logList.add(MSG_PROBE_GLES20);
                logList.add(MSG_PROBE_LIFECYCLE);
                logList.add(MSG_PROBE_SCREENSHOT);
                logList.add(MSG_PROBE_SCENE);
@@ -120,7 +119,7 @@ public class LogDataFactory {
                logList.add(MSG_DATA_SAMPLE);
                logList.add(MSG_DATA_SYSTEM);
                logList.add(LogCenterConstants.LOG_USER_FUNCTION);
-               logList.add(MSG_DATA_RECORD);
+//             logList.add(MSG_DATA_RECORD);
                logList.add(MSG_FUNCTION_ENTRY);
                logList.add(MSG_FUNCTION_EXIT);
                logList.add(MSG_CONTEXT_SWITCH_ENTRY);
index a46c83f..d4d04e9 100755 (executable)
@@ -107,7 +107,7 @@ public class LogFormat {
                        logFormats.add(ControlLogFormat.getInstance());
                        logFormats.add(CustomChartLogFormat.getInstance());
                        logFormats.add(FileLogFormat.getInstance());
-                       logFormats.add(NetworkLogFormat.getInstance());
+       //              logFormats.add(NetworkLogFormat.getInstance());
                        logFormats.add(LifeCycleLogFormat.getInstance());
                        logFormats.add(MemoryLogFormat.getInstance());
                        logFormats.add(ProfilingLogFormat.getInstance());
index 9a1903c..6d3d639 100644 (file)
@@ -101,6 +101,9 @@ public class FileChartManager extends PageDataManager {
 
        public int getChildChartIndex(int parentChartIndex, int seq) {
                List<FileChartData> fileChartDataLow = getFileDataMaker().getFileChartLow();
+               if(fileChartDataLow.size() <=parentChartIndex){
+                       return 0;
+               }
                List<FileChartData> childData = fileChartDataLow.get(parentChartIndex)
                                .getChild();
                FileChartData childChartData = null;
index d96c676..2df3e20 100644 (file)
@@ -73,7 +73,7 @@ import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenuItem;
 
 public class FileDataMaker {
        private static final DALogger DA_LOG = DALogger.getInstance();
-       
+
        private DAChartBoard board;
        private List<FileChartData> rows = new ArrayList<FileChartData>();
        private List<FileChartDataEvent> fileEventQueue = new ArrayList<FileChartDataEvent>();
@@ -132,9 +132,8 @@ public class FileDataMaker {
                for (int i = 0; i < size; i++) {
                        FileData input = (FileData) inputs.get(i);
 
-                       if (ConfigurationDialogDataManager.getInstance()
-                                       .getfeatureValue(
-                                                       ConfigureLabels.INCLUDE_INSIDE_CALL_FILE) == 0) {
+                       if (ConfigurationDialogDataManager.getInstance().getfeatureValue(
+                                       ConfigureLabels.INCLUDE_INSIDE_CALL_FILE) == 0) {
                                if (input.isInternal()) {
                                        continue;
                                }
@@ -165,10 +164,17 @@ public class FileDataMaker {
 
                        // error check
                        if (errno != 0) {
-                               FailedData ffd = new FailedData(input);
-                               event.setFailedData(ffd);
-                               this.failedChecker.getFailedList().add(ffd);
-                               event.setFailedAPI();
+                               switch (input.getFdApiType()) {
+                               case LogCenterConstants.SOCKET_API_ACCEPT_END:
+                               case LogCenterConstants.SOCKET_API_SEND_END:
+                               case LogCenterConstants.SOCKET_API_RECV_END:
+                               case LogCenterConstants.SOCKET_API_EVENT_END: {
+                                       FailedData ffd = new FailedData(input);
+                                       event.setFailedData(ffd);
+                                       this.failedChecker.getFailedList().add(ffd);
+                                       event.setFailedAPI();
+                               }
+                               }
                        } else if (name.equals("fdopen")) { //$NON-NLS-1$
                                DA_LOG.debug("fdopen");
                                continue;
index fe3198c..47aaf96 100644 (file)
@@ -36,6 +36,7 @@ import org.tizen.dynamicanalyzer.constant.CommonConstants;
 import org.tizen.dynamicanalyzer.nl.NetworkPageLabels;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.swap.channel.data.ApiNameManager;
+import org.tizen.dynamicanalyzer.ui.network.data.NetworkDataManager;
 import org.tizen.dynamicanalyzer.ui.network.data.StatusSeriesListSortComparator;
 import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkAPIType;
 import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSeriesType;
@@ -49,7 +50,6 @@ public class NetworkChart {
        protected DAChartBoardItem item;
        protected DAChart chart;
        private List<NetworkChart> children = new ArrayList<NetworkChart>();
-
        private DAChartSeries statueSeries;
        private DAChartSeries apiSeries;
        private DAChartSeries accessSeries;
@@ -58,13 +58,20 @@ public class NetworkChart {
        private String destinationAddress = CommonConstants.EMPTY;
        private String fdValue = CommonConstants.EMPTY;
 
+       private int parentChartIndex = -1;
+       private int childChartIndex = -1;
+       private int pId = -1;
+
        public NetworkChart(String chartName, String destinationAddress,
-                       String fdValue, DAChartBoardItem item, DAChart chart) {
+                       String fdValue, DAChartBoardItem item, DAChart chart,
+                       int parentChartIndex, int childChartIndex) {
                setChartName(chartName);
                setDestinationAddress(destinationAddress);
                setFdValue(fdValue);
                setItem(item);
                setChart(chart);
+               setParentChartIndex(parentChartIndex);
+               setChildChartIndex(childChartIndex);
        }
 
        public String getChartName() {
@@ -138,7 +145,7 @@ public class NetworkChart {
                                }
                                NetworkAPIType data = apiList.get(i);
                                DAChartSeriesItem seriesItem = null;
-                               double time = data.getTime() / TimelineConstants.MEGA_DOUBLE;
+                               double time = getConvertTime(data.getTime());
                                Color color = ColorResources.NETWORK_API_USED;
                                String apiName = ApiNameManager.getApiName(data.getApiNameID());
                                if (data.getErrno() != 0) {
@@ -147,11 +154,21 @@ public class NetworkChart {
                                seriesItem = new DAChartSeriesItem(time,
                                                DAChartSeriesItem.SERIES_STATE_BAR, color, apiName);
                                apiSeries.addSeriesItem(seriesItem);
+                               if (!isParentChartRow() && data.getErrno() != 0) {
+                                       setChartIndexOfSeq(data.getSeq());
+                               }
                        }
                }
                chart.redraw();
        }
 
+       private void setChartIndexOfSeq(int seq) {
+               NetworkDataManager.getInstance().setParentIndexOfSeq(seq,
+                               getParentChartIndex());
+               NetworkDataManager.getInstance().setChildIndexOfSeq(seq,
+                               getChildChartIndex());
+       }
+
        private void sortStatusSeriesByStartTime(List<NetworkSeriesType> statusList) {
                Collections.sort(statusList, new StatusSeriesListSortComparator());
        }
@@ -161,7 +178,7 @@ public class NetworkChart {
                double startTime = -1;
                double endTime = -1;
 
-               double openTimeOfNotClosed = 999999999;
+               double openTimeOfNotClosed = NetworkDataManager.MAX_CHART_TIME;
 
                for (int i = 0; i < statusList.size(); i++) {
                        if (getDestinationAddress().equals(
@@ -172,8 +189,8 @@ public class NetworkChart {
                                        continue;
                                }
 
-                               startTime = data.getStartTime() / TimelineConstants.MEGA_DOUBLE;
-                               endTime = data.getEndTime() / TimelineConstants.MEGA_DOUBLE;
+                               startTime = getConvertTime(data.getStartTime());
+                               endTime = getConvertTime(data.getEndTime());
 
                                if (endTime > 0 && openTimeOfNotClosed > startTime) { // closed
                                        DAChartSeriesItem seriesItem = new DAChartSeriesItem(
@@ -221,7 +238,6 @@ public class NetworkChart {
                NetworkSeriesType data = null;
                double startTime = -1;
                double endTime = -1;
-
                for (int i = 0; i < statusList.size(); i++) {
                        if (getDestinationAddress().equals(
                                        statusList.get(i).getDestinationAddress())
@@ -231,9 +247,8 @@ public class NetworkChart {
                                if (isAccessEvnet(data.getAPIType())) {
                                        continue;
                                }
-                               startTime = data.getStartTime() / TimelineConstants.MEGA_DOUBLE;
-                               endTime = data.getEndTime() / TimelineConstants.MEGA_DOUBLE;
-
+                               startTime = getConvertTime(data.getStartTime());
+                               endTime = getConvertTime(data.getEndTime());
                        }
                }
                if (null == data) {
@@ -299,8 +314,8 @@ public class NetworkChart {
                                if (!isAccessEvnet(data.getAPIType())) {
                                        continue;
                                }
-                               startTime = data.getStartTime() / TimelineConstants.MEGA_DOUBLE;
-                               endTime = data.getEndTime() / TimelineConstants.MEGA_DOUBLE;
+                               startTime = getConvertTime(data.getStartTime());
+                               endTime = getConvertTime(data.getEndTime());
                                int status = data.getAPIType();
 
                                Color waitiColor = null;
@@ -325,6 +340,10 @@ public class NetworkChart {
                chart.redraw();
        }
 
+       private double getConvertTime(double logTime) {
+               return logTime / TimelineConstants.MEGA_DOUBLE;
+       }
+
        private boolean isAccessEvnet(int apiType) {
                {
                        if (apiType == NetworkSeriesType.ACCESS_TYPE_WAIT
@@ -337,4 +356,28 @@ public class NetworkChart {
                }
 
        }
+
+       public int getParentChartIndex() {
+               return parentChartIndex;
+       }
+
+       public void setParentChartIndex(int parentChartIndex) {
+               this.parentChartIndex = parentChartIndex;
+       }
+
+       public int getChildChartIndex() {
+               return childChartIndex;
+       }
+
+       public void setChildChartIndex(int childChartIndex) {
+               this.childChartIndex = childChartIndex;
+       }
+
+       public int getpId() {
+               return pId;
+       }
+
+       public void setpId(int pId) {
+               this.pId = pId;
+       }
 }
\ No newline at end of file
index 5dd1a51..b2754a4 100644 (file)
@@ -27,6 +27,7 @@
 package org.tizen.dynamicanalyzer.ui.network;
 
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
 
 import org.eclipse.swt.widgets.Composite;
@@ -50,6 +51,7 @@ import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkAPIType;
 import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSelectionType;
 import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSeriesType;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
+import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
 import org.tizen.dynamicanalyzer.widgets.chart.DAChart;
 import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot;
 import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot.AutoRangeType;
@@ -68,6 +70,11 @@ public class NetworkChartBoard extends DAChartBoard {
        private int statusSeriesListCount = -1;
        private boolean isFirstMakeChart = true;
 
+       private int parentChartIndex = -1;
+       private LinkedHashMap<Integer, Integer> lastChildChartIndexOfEachParent = new LinkedHashMap<Integer, Integer>();
+
+       private int preSelectionPId = -1;
+
        public NetworkChartBoard(Composite parent, String title) {
                super(parent, title);
                initIntervalMarkers();
@@ -104,6 +111,36 @@ public class NetworkChartBoard extends DAChartBoard {
                clearSeries();
                updateSeries();
                updateApiSeries();
+               chartFilteringByPId();
+       }
+
+       private void chartFilteringByPId() {
+               if (null == getItemList()) {
+                       return;
+               }
+               int selectedPid = ToolbarArea.getInstance().getSelectedPid();
+               boolean isCheck = false;
+
+               if (preSelectionPId != -1 && preSelectionPId != selectedPid) {
+                       isCheck = true;
+               }
+
+               if (isCheck) {
+                       int parentIndex = 0;
+                       for (NetworkChart chart : chartItemList) {
+                               if (chart.isParentChartRow()) {
+                                       if (selectedPid == 0) {
+                                               showItem(parentIndex);
+                                       } else if (selectedPid == chart.getpId()) {
+                                               showItem(parentIndex);
+                                       } else {
+                                               hideItem(parentIndex);
+                                       }
+                                       parentIndex++;
+                               }
+                       }
+               }
+               preSelectionPId = selectedPid;
        }
 
        public void clear() {
@@ -112,6 +149,9 @@ public class NetworkChartBoard extends DAChartBoard {
                statusSeriesListCount = -1;
                isFirstMakeChart = true;
                initIntervalMarkers();
+               parentChartIndex = -1;
+               lastChildChartIndexOfEachParent = new LinkedHashMap<Integer, Integer>();
+               preSelectionPId = -1;
        }
 
        public void initIntervalMarkers() {
@@ -266,6 +306,8 @@ public class NetworkChartBoard extends DAChartBoard {
 
                                NetworkChart parent = getParentChartData(destinationAddress, fd);
                                if (null == parent) {
+                                       parentChartIndex++;
+                                       lastChildChartIndexOfEachParent.put(parentChartIndex, 1);
                                        StringBuffer chartName = new StringBuffer(
                                                        destinationAddress);
                                        if (chartName.length() > 10) {
@@ -283,7 +325,7 @@ public class NetworkChartBoard extends DAChartBoard {
                                        addSeries(parentDAChart);
                                        NetworkChart parentChartData = new NetworkChart(
                                                        chartName.toString(), destinationAddress, fd,
-                                                       parentItem, parentDAChart);
+                                                       parentItem, parentDAChart, parentChartIndex, 0);
                                        chartItemList.add(parentChartData);
 
                                        String childChartName = NetworkPageLabels.NETWORK_CHILD_CHART_NAME
@@ -297,13 +339,17 @@ public class NetworkChartBoard extends DAChartBoard {
                                        addSeries(childDAChart);
                                        NetworkChart childChartData = new NetworkChart(
                                                        childChartName, destinationAddress, fd, childItem,
-                                                       childDAChart);
+                                                       childDAChart, parentChartIndex, 0);
                                        parentChartData.pushChild(childChartData);
                                        chartItemList.add(childChartData);
                                } else {
+                                       int childChartIndex = lastChildChartIndexOfEachParent
+                                                       .get(parent.getParentChartIndex());
+
                                        String childChartName = NetworkPageLabels.NETWORK_CHILD_CHART_NAME
                                                        + fd;
                                        DAChartBoardItem parentItem = parent.getItem();
+
                                        DAChartBoardItem childItem = new DAChartBoardItem(
                                                        parentItem, childChartName);
                                        childItem.setData(new NetworkSelectionType(
@@ -311,11 +357,15 @@ public class NetworkChartBoard extends DAChartBoard {
                                        DAChart childDAChart = childItem.getChart();
                                        initNetworkChart(childDAChart, false);
                                        addSeries(childDAChart);
+
                                        NetworkChart childChartData = new NetworkChart(
                                                        childChartName, destinationAddress, fd, childItem,
-                                                       childDAChart);
+                                                       childDAChart, parent.getParentChartIndex(),
+                                                       childChartIndex);
                                        parent.pushChild(childChartData);
                                        chartItemList.add(childChartData);
+                                       lastChildChartIndexOfEachParent.put(
+                                                       parent.getParentChartIndex(), ++childChartIndex);
                                }
                        }
                        statusSeriesListCount = NetworkDataManager.getInstance()
@@ -349,6 +399,14 @@ public class NetworkChartBoard extends DAChartBoard {
                List<NetworkSeriesType> seriesList = filetirngSeriresList();
                for (NetworkChart chart : chartItemList) {
                        chart.updateStatusSeries(seriesList);
+                       for (int i = 0; i < seriesList.size(); i++) {
+                               if (chart.getDestinationAddress().equals(
+                                               seriesList.get(i).getDestinationAddress())
+                                               && chart.getFdValue().equals(
+                                                               seriesList.get(i).getFdValue())) {
+                                       chart.setpId(seriesList.get(i).getpId());
+                               }
+                       }
                }
                for (NetworkChart chart : chartItemList) {
                        chart.updateAccessSeries(seriesList);
index e95b7fc..d65c0cf 100644 (file)
@@ -169,9 +169,16 @@ public class NetworkChartView extends DAViewComposite {
                networkChartBoard.updateChart();
                if (data instanceof DASelectionData) {
                        DASelectionData selData = (DASelectionData) data;
-                       long dataTime = -1;
 
-                       if (selData.isLogData()) {
+                       String id = data.getViewID();
+                       long dataTime = -1;
+                       if (id.equals(NetworkPage.listViewID)) {
+                               dataTime = selData.getStartTime();
+                               moveChartPosition(dataTime, -1);
+                       } else if (id.equals(NetworkPage.chartViewID)
+                                       || id.equals(NetworkPage.detailViewID)) {
+                               return;
+                       } else {
                                Object obData = selData.getData();
                                if (null != obData && (obData instanceof LogData)) { // summary
                                        LogData ldata = (LogData) obData;
@@ -183,17 +190,27 @@ public class NetworkChartView extends DAViewComposite {
                                                                                lastSelectedItemForSummary.getData(),
                                                                                null));
                                        }
+                                       moveChartPosition(dataTime, ldata.getSeq());
                                }
-                       } else {
-                               dataTime = selData.getStartTime();
                        }
-                       double selectionTime = dataTime / TimelineConstants.MEGA_DOUBLE;
-
-                       DAChartPlotIntervalMarker intervalMarker = (DAChartPlotIntervalMarker) networkChartBoard
-                                       .getMarkers().get(UICommonConstants.SELECTION_MARKER_INDEX);
-                       intervalMarker.setInterval(selectionTime, selectionTime);
+               }
+       }
 
+       private void moveChartPosition(long dataTime, int seq) {
+               double selectionTime = dataTime / TimelineConstants.MEGA_DOUBLE;
+               networkChartBoard.setVisibleMiddleTime(selectionTime);
+               DAChartPlotIntervalMarker intervalMarker = (DAChartPlotIntervalMarker) networkChartBoard
+                               .getMarkers().get(UICommonConstants.SELECTION_MARKER_INDEX);
+               intervalMarker.setInterval(selectionTime, selectionTime);
+               if (seq > 0) {
+                       int parentChartIndex = NetworkDataManager.getInstance()
+                                       .getParentIndexOfSeq(seq);
+                       int childChartIndex = NetworkDataManager.getInstance()
+                                       .getChildIndexOfSeq(seq);
+
+                       networkChartBoard.selectItem(parentChartIndex, childChartIndex);
                }
+
        }
 
        @Override
index f3ec776..43cdc7d 100644 (file)
@@ -42,12 +42,14 @@ import org.eclipse.swt.widgets.Text;
 import org.tizen.dynamicanalyzer.common.DASelectionData;
 import org.tizen.dynamicanalyzer.constant.CommonConstants;
 import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
+import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
 import org.tizen.dynamicanalyzer.nl.NetworkPageLabels;
 import org.tizen.dynamicanalyzer.resources.ColorResources;
 import org.tizen.dynamicanalyzer.resources.FontResources;
 import org.tizen.dynamicanalyzer.ui.network.data.NetworkDataManager;
 import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkAPIType;
 import org.tizen.dynamicanalyzer.ui.widgets.table.DATableDataFormat;
+import org.tizen.dynamicanalyzer.utils.DownloadContentfileManager;
 import org.tizen.dynamicanalyzer.utils.Formatter;
 import org.tizen.dynamicanalyzer.widgets.da.view.DAViewComposite;
 import org.tizen.dynamicanalyzer.widgets.da.view.DAViewData;
@@ -252,14 +254,15 @@ public class NetworkDetailView extends DAViewComposite {
                if (!sendAckTime.equals(CommonConstants.EMPTY)) {
                        strDetailView.append(leftFormAttachment
                                        + NetworkPageLabels.NETWORK_DETAILS_SEND_ACK_TIME
-                                       + sendAckTime + NetworkPageLabels.TIME_MS
+                                       + sendAckTime + AnalyzerLabels.TIME_MS
                                        + heightFormAttachment);
                }
 
                if (!payload.equals(CommonConstants.EMPTY)) {
                        detailText.getVerticalBar().setVisible(true);
                        detailText.getHorizontalBar().setVisible(true);
-                       strDetailView.append(setPacketMessage(payload));
+                       strDetailView.append(getPacketMessage(DownloadContentfileManager
+                                       .getFileContents(payload)));
                } else {
                        detailText.getVerticalBar().setVisible(true);
                        detailText.getHorizontalBar().setVisible(true);
@@ -269,7 +272,7 @@ public class NetworkDetailView extends DAViewComposite {
 
        }
 
-       public String setPacketMessage(String packetMessage) {
+       public String getPacketMessage(String packetMessage) {
                StringBuffer out = new StringBuffer();
                StringBuffer strHex = new StringBuffer();
                StringBuffer strAscii = new StringBuffer();
index 6f352a0..5e748db 100644 (file)
@@ -66,7 +66,7 @@ public class NetworkTable extends DAApiListTableComposite {
                                long startTime = 0;
                                long endTime = 0;
 
-                               DATableDataFormat dataFormat;
+                               DATableDataFormat dataFormat = null;
                                long itemTime;
                                for (int i = 0; i < items.length; i++) {
                                        dataFormat = (DATableDataFormat) items[i].getData();
@@ -83,6 +83,7 @@ public class NetworkTable extends DAApiListTableComposite {
                                }
                                DASelectionData selData = new DASelectionData(
                                                NetworkTableView.ID, startTime, endTime, items, table);
+
                                AnalyzerManager.getCurrentPage().updateView(selData);
                        }
 
index 9b75802..304e972 100644 (file)
@@ -1,6 +1,7 @@
 package org.tizen.dynamicanalyzer.ui.network.data;
 
 import java.sql.PreparedStatement;
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -9,45 +10,80 @@ import org.tizen.dynamicanalyzer.database.DBColumn;
 import org.tizen.dynamicanalyzer.database.DBConstants;
 import org.tizen.dynamicanalyzer.database.DBTable;
 import org.tizen.dynamicanalyzer.database.SqlConnectionManager;
-import org.tizen.dynamicanalyzer.nl.NetworkPageLabels;
 import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkAPIType;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
 
 public class NetworkAPIDBManager extends DBTable {
-       private static final String TABLENAME = NetworkPageLabels.NETWORK_API_DB_TABLENAME;
+       private static final String TABLENAME = "NETWORK_API"; //$NON-NLS-1$ 
 
        public static final String SEQ = DBConstants.COMMON_COLUMN_SEQ;
-       public static final String DESTINATION_ADDRESS = NetworkPageLabels.NETWORK_DB_DESTINATION_ADDRESS;
-       public static final String FD_VALUE = NetworkPageLabels.NETWORK_DB_FD_VALUE;
-       public static final String API_TIME = NetworkPageLabels.NETWORK_API_DB_API_TIME;
-       public static final String API_NAME_ID = NetworkPageLabels.NETWORK_DB_API_ID;
-       public static final String ERRNO = NetworkPageLabels.NETWORK_API_DB_ERRNO;
+       public static final String DESTINATION_ADDRESS = "DESTINATION_ADDRESS"; //$NON-NLS-1$ 
+       public static final String FD_VALUE = "FD_VALUE"; //$NON-NLS-1$ 
+       public static final String API_TIME = DBConstants.COMMON_COLUMN_TIME;
+       public static final String API_NAME_ID = DBConstants.COMMON_COLUMN_ID;
+       public static final String ERRNO = DBConstants.COMMON_COLUMN_ERROR;
        public static final String PID = DBConstants.COMMON_COLUMN_PID;
        public static final String TID = DBConstants.COMMON_COLUMN_TID;
-       public static final String ARGUMENT = NetworkPageLabels.NETWORK_API_DB_ARGUMENT;
-       public static final String RETURN = NetworkPageLabels.NETWORK_API_DB_RETURN;
-       public static final String BYTE_SIZE = NetworkPageLabels.NETWORK_API_DB_BYTE_SIZE;
-       public static final String PAYLOAD = NetworkPageLabels.NETWORK_API_DB_PAYLOAD;
-       public static final String API_TYPE = NetworkPageLabels.NETWORK_API_DB_API_TYPE;
-       public static final String CALLER_PC_ADDRESS = NetworkPageLabels.NETWORK_API_DB_CALLER_PC_ADDRESS;
-       public static final String LIB_NAME = NetworkPageLabels.NETWORK_API_DB_LIB_NAME;
-
-       private static final String SELECT_API_SERIES_QUERY = "select " + SEQ //$NON-NLS-1$
-                       + CommonConstants.COMMA + CommonConstants.SPACE
-                       + DESTINATION_ADDRESS + CommonConstants.COMMA
-                       + CommonConstants.SPACE + FD_VALUE + CommonConstants.COMMA
-                       + CommonConstants.SPACE + API_TIME + CommonConstants.COMMA
-                       + CommonConstants.SPACE + API_NAME_ID + CommonConstants.COMMA
-                       + CommonConstants.SPACE + ERRNO
+       public static final String ARGUMENT = DBConstants.COMMON_COLUMN_ARG;
+       public static final String RETURN = DBConstants.COMMON_COLUMN_RET;
+       public static final String BYTE_SIZE = "BYTE_SIZE"; //$NON-NLS-1$ 
+       public static final String PAYLOAD = "PAYLOAD"; //$NON-NLS-1$ 
+       public static final String API_TYPE = "API_TYPE"; //$NON-NLS-1$ 
+       public static final String CALLER_PC_ADDRESS = DBConstants.COMMON_COLUMN_CALLER_PC_ADDRESS;
+       public static final String LIB_NAME = DBConstants.COMMON_COLUMN_CALLER_LIB_NAME;
+
+       public static final int DB_SEQ_INDEX = 0;
+       public static final int DB_DESTINATION_ADDRESS_INDEX = 1;
+       public static final int DB_FD_VALUE_INDEX = 2;
+       public static final int DB_API_TIME_INDEX = 3;
+       public static final int DB_API_NAME_ID_INDEX = 4;
+       public static final int DB_ERRNO_INDEX = 5;
+       public static final int DB_PID_INDEX = 6;
+       public static final int DB_TID_INDEX = 7;
+       public static final int DB_ARGUMENT_INDEX = 8;
+       public static final int DB_RETURN_INDEX = 9;
+       public static final int DB_BYTE_SIZE_INDEX = 10;
+       public static final int DB_PAYLOAD_INDEX = 11;
+       public static final int DB_API_TYPE_INDEX = 12;
+       public static final int DB_CALLER_PC_ADDRESS_INDEX = 13;
+       public static final int DB_LIB_NAME_INDEX = 14;
+
+       private static final String SELECT_API_SERIES_QUERY = "select " //$NON-NLS-1$ 
+                       + SEQ + CommonConstants.COMMA
+                       + DESTINATION_ADDRESS
+                       + CommonConstants.COMMA + FD_VALUE
+                       + CommonConstants.COMMA
+                       + API_TIME + CommonConstants.COMMA
+                       + API_NAME_ID
+                       + CommonConstants.COMMA + ERRNO
                        + " from " //$NON-NLS-1$
-                       + TABLENAME + " where %s <= " + API_TIME + " and " + API_TIME
+                       + TABLENAME + " where %s <= " + API_TIME + " and "
+                       + API_TIME
                        + " <= %s";//$NON-NLS-1$
 
-       private static final String SELECT_API_TABLE_CHILD_QUERY = "select * from "//$NON-NLS-1$
+       private static final String SELECT_API_TABLE_CHILD_QUERY = "select " + SEQ//$NON-NLS-1$
+                       + CommonConstants.COMMA + DESTINATION_ADDRESS
+                       + CommonConstants.COMMA + FD_VALUE + CommonConstants.COMMA
+                       + API_TIME + CommonConstants.COMMA + API_NAME_ID
+                       + CommonConstants.COMMA + ERRNO + CommonConstants.COMMA + PID
+                       + CommonConstants.COMMA + TID + CommonConstants.COMMA + ARGUMENT
+                       + CommonConstants.COMMA + RETURN + CommonConstants.COMMA
+                       + BYTE_SIZE + CommonConstants.COMMA + PAYLOAD
+                       + CommonConstants.COMMA + API_TYPE + CommonConstants.COMMA
+                       + CALLER_PC_ADDRESS + CommonConstants.COMMA + LIB_NAME + " from "//$NON-NLS-1$
                        + TABLENAME + " where " + DESTINATION_ADDRESS + " = '%s' and "//$NON-NLS-1$
                        + FD_VALUE + " = '%s'";//$NON-NLS-1$
 
-       private static final String SELECT_API_TABLE_PARENT_QUERY = "select * from "//$NON-NLS-1$
+       private static final String SELECT_API_TABLE_PARENT_QUERY = "select " + SEQ//$NON-NLS-1$
+                       + CommonConstants.COMMA + DESTINATION_ADDRESS
+                       + CommonConstants.COMMA + FD_VALUE + CommonConstants.COMMA
+                       + API_TIME + CommonConstants.COMMA + API_NAME_ID
+                       + CommonConstants.COMMA + ERRNO + CommonConstants.COMMA + PID
+                       + CommonConstants.COMMA + TID + CommonConstants.COMMA + ARGUMENT
+                       + CommonConstants.COMMA + RETURN + CommonConstants.COMMA
+                       + BYTE_SIZE + CommonConstants.COMMA + PAYLOAD
+                       + CommonConstants.COMMA + API_TYPE + CommonConstants.COMMA
+                       + CALLER_PC_ADDRESS + CommonConstants.COMMA + LIB_NAME + " from "//$NON-NLS-1$
                        + TABLENAME + " where " + DESTINATION_ADDRESS + " = '%s'";//$NON-NLS-1$ //$NON-NLS-2$
 
        @Override
@@ -126,8 +162,49 @@ public class NetworkAPIDBManager extends DBTable {
 
        @Override
        public boolean prepare(PreparedStatement prep, List<Object> rowData) {
-               // TODO Auto-generated method stub
-               return false;
+               boolean isPrepared = true;
+               int columnsize = getColumnSize();
+               if (columnsize != rowData.size()) {
+                       isPrepared = false;
+               } else {
+                       try {
+                               prep.setInt(DB_SEQ_INDEX + 1,
+                                               (Integer) (rowData.get(DB_SEQ_INDEX)));
+                               prep.setString(DB_DESTINATION_ADDRESS_INDEX + 1,
+                                               (String) (rowData.get(DB_DESTINATION_ADDRESS_INDEX)));
+                               prep.setString(DB_FD_VALUE_INDEX + 1,
+                                               (String) (rowData.get(DB_FD_VALUE_INDEX)));
+                               prep.setLong(DB_API_TIME_INDEX + 1,
+                                               (Long) (rowData.get(DB_API_TIME_INDEX)));
+                               prep.setInt(DB_API_NAME_ID_INDEX + 1,
+                                               (Integer) (rowData.get(DB_API_NAME_ID_INDEX)));
+                               prep.setLong(DB_ERRNO_INDEX + 1,
+                                               (Long) (rowData.get(DB_ERRNO_INDEX)));
+                               prep.setInt(DB_PID_INDEX + 1,
+                                               (Integer) (rowData.get(DB_PID_INDEX)));
+                               prep.setInt(DB_TID_INDEX + 1,
+                                               (Integer) (rowData.get(DB_TID_INDEX)));
+                               prep.setString(DB_ARGUMENT_INDEX + 1,
+                                               (String) (rowData.get(DB_ARGUMENT_INDEX)));
+                               prep.setString(DB_RETURN_INDEX + 1,
+                                               (String) (rowData.get(DB_RETURN_INDEX)));
+                               prep.setInt(DB_BYTE_SIZE_INDEX + 1,
+                                               (Integer) (rowData.get(DB_BYTE_SIZE_INDEX)));
+                               prep.setString(DB_PAYLOAD_INDEX + 1,
+                                               (String) (rowData.get(DB_PAYLOAD_INDEX)));
+                               prep.setInt(DB_API_TYPE_INDEX + 1,
+                                               (Integer) (rowData.get(DB_API_TYPE_INDEX)));
+                               prep.setLong(DB_CALLER_PC_ADDRESS_INDEX + 1,
+                                               (Long) (rowData.get(DB_CALLER_PC_ADDRESS_INDEX)));
+                               prep.setString(DB_LIB_NAME_INDEX + 1,
+                                               (String) (rowData.get(DB_LIB_NAME_INDEX)));
+
+                       } catch (SQLException e) {
+                               e.printStackTrace();
+                               isPrepared = false;
+                       }
+               }
+               return isPrepared;
        }
 
 }
index a607de8..1b178b8 100644 (file)
@@ -40,26 +40,23 @@ import org.tizen.dynamicanalyzer.swap.model.data.NetworkData;
 import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkAPIType;
 import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSeriesType;
 import org.tizen.dynamicanalyzer.ui.summary.failed.FailedChecker;
-import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData;
 import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakDetector;
 import org.tizen.dynamicanalyzer.ui.summary.warning.WarningChecker;
 import org.tizen.dynamicanalyzer.ui.toolbar.configuration.ConfigurationDialogDataManager;
 import org.tizen.dynamicanalyzer.util.DALogger;
 import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+import org.tizen.dynamicanalyzer.utils.DownloadContentfileManager;
 
 public class NetworkDataMaker {
 
        private HashMap<String, String> addressByFdHashMap = new HashMap<String, String>();
        private HashMap<String, String> parentFDByFdHashMap = new HashMap<String, String>();
 
-       private FailedChecker failedChecker = null;
-
        List<NetworkAPIType> noDestinationApiSeriesList = new ArrayList<NetworkAPIType>();
        List<NetworkAPIType> destinationApiSeriesList = new ArrayList<NetworkAPIType>();
 
        public NetworkDataMaker(FailedChecker failedChecker,
                        LeakDetector leakDetector, WarningChecker warningChecker) {
-               this.failedChecker = failedChecker;
        }
 
        public void clear() {
@@ -83,13 +80,6 @@ public class NetworkDataMaker {
                        }
 
                        makeEventData(input);
-
-                       long errno = input.getErrno();
-
-                       if (errno != 0) {
-                               FailedData ffd = new FailedData(input);
-                               this.failedChecker.getFailedList().add(ffd);
-                       }
                }
 
                if (destinationApiSeriesList.size() > 0) {
@@ -120,7 +110,6 @@ public class NetworkDataMaker {
                String apiFD = Long.toString(input.getFdValue()).trim();
                apiFD = getHexString(apiFD);
                int apiId = input.getApiId();
-
                int apiType = input.getFdApiType();
                long time = input.getTime();
                long errno = input.getErrno();
@@ -156,7 +145,7 @@ public class NetworkDataMaker {
                }
                case LogCenterConstants.SOCKET_API_ACCEPT_START:
                        setStartSeries(apiAddress, apiFD, time, -1,
-                                       NetworkSeriesType.ACCESS_TYPE_WAIT, apiId);
+                                       NetworkSeriesType.ACCESS_TYPE_WAIT, apiId, pId);
                        break;
                case LogCenterConstants.SOCKET_API_ACCEPT_END: {
                        String clientFD = returnValue;
@@ -175,23 +164,25 @@ public class NetworkDataMaker {
                }
                case LogCenterConstants.SOCKET_API_RECV_START:
                        setStartSeries(apiAddress, apiFD, time, -1,
-                                       NetworkSeriesType.ACCESS_TYPE_READ, apiId);
+                                       NetworkSeriesType.ACCESS_TYPE_READ, apiId, pId);
                        break;
                case LogCenterConstants.SOCKET_API_RECV_END:
                        setEndSeries(apiAddress, apiFD, time,
                                        NetworkSeriesType.ACCESS_TYPE_READ);
+                       payloadInfo = DownloadContentfileManager.getDowonloadFilePath(payloadInfo);
                        break;
                case LogCenterConstants.SOCKET_API_SEND_START:
                        setStartSeries(apiAddress, apiFD, time, -1,
-                                       NetworkSeriesType.ACCESS_TYPE_WRITE, apiId);
+                                       NetworkSeriesType.ACCESS_TYPE_WRITE, apiId, pId);
                        break;
                case LogCenterConstants.SOCKET_API_SEND_END:
                        setEndSeries(apiAddress, apiFD, time,
                                        NetworkSeriesType.ACCESS_TYPE_WRITE);
+                       payloadInfo = DownloadContentfileManager.getDowonloadFilePath(payloadInfo);
                        break;
                case LogCenterConstants.SOCKET_API_EVENT_START:
                        setStartSeries(apiAddress, apiFD, time, -1,
-                                       NetworkSeriesType.ACCESS_TYPE_WAIT, apiId);
+                                       NetworkSeriesType.ACCESS_TYPE_WAIT, apiId, pId);
                        break;
                case LogCenterConstants.SOCKET_API_EVENT_END:
                        setEndSeries(apiAddress, apiFD, time,
@@ -340,7 +331,7 @@ public class NetworkDataMaker {
                                NetworkDataManager.getInstance().getCheckStatusSeries()
                                                .put(apiFD.trim(), apiAddress.trim());
                                setStartSeries(apiAddress, apiFD, time, -1,
-                                               NetworkSeriesType.STATUS_TYPE_OPEN, apiId);
+                                               NetworkSeriesType.STATUS_TYPE_OPEN, apiId, pId);
                        }
                }
        }
@@ -363,10 +354,10 @@ public class NetworkDataMaker {
        }
 
        private void setStartSeries(String apiAddress, String apiFD, long time,
-                       int eventType, int apiType, int apiId) {
+                       int eventType, int apiType, int apiId, int pId) {
 
                NetworkSeriesType statusType = new NetworkSeriesType(apiAddress, apiFD,
-                               time, -1, apiType, apiId);
+                               time, -1, apiType, apiId, pId);
                NetworkDataManager.getInstance().setStartSeriesData(statusType);
        }
 
@@ -398,4 +389,52 @@ public class NetworkDataMaker {
                }
                return retStr;
        }
+
+       // private String getDowonloadPayloadFilePath(String payload) {
+       // if (payload.contains(AnalyzerConstants.CHECK_DOWNLOAD_FILE_STRING)) {
+       // String[] strFile = payload
+       // .split(AnalyzerConstants.CHECK_DOWNLOAD_FILE_STRING);
+       // if (strFile.length < 1) {
+       // return payload;
+       // }
+       // String downloadFilePath = strFile[1];
+       //
+       // String[] copyFilePathSplit = downloadFilePath.split(File.separator
+       // + AnalyzerConstants.TMP_FOLDER + File.separator);
+       // if (copyFilePathSplit.length < 1) {
+       // return payload;
+       // }
+       // String downloadFolderPath = File.separator
+       // + AnalyzerConstants.DOWNLOAD_FILE_FOLDER;
+       //
+       // File toDir = new File(AnalyzerManager.getProject().getSavePath()
+       // + downloadFolderPath);
+       // if (!toDir.exists() || !toDir.isDirectory()) {
+       // toDir.mkdirs();
+       // }
+       //
+       // String saveFilePath = downloadFolderPath + File.separator
+       // + copyFilePathSplit[1];
+       //
+       // if (pullPayloadFile(downloadFilePath, AnalyzerManager.getProject()
+       // .getSavePath() + saveFilePath)) {
+       // return saveFilePath;
+       // } else {
+       // return payload;
+       // }
+       // }
+       // return payload;
+       // }
+       //
+       // private boolean pullPayloadFile(String from, String to) {
+       // SyncResult res = CommunicatorUtils.pull(from, to);
+       // if (null != res && res.isOk()) {
+       //                      DALogger.getInstance().debug(from + "file copying success!!");//$NON-NLS-1$ 
+       // } else {
+       //                      DALogger.getInstance().debug("Failed to get " + from); //$NON-NLS-1$ 
+       // return false;
+       // }
+       // CommunicatorUtils.removeCommand(from);
+       // return true;
+       // }
 }
index cee30e5..fd479dc 100644 (file)
@@ -51,6 +51,14 @@ import org.tizen.dynamicanalyzer.util.WorkbenchUtil;
 import org.tizen.dynamicanalyzer.widgets.da.base.DADialog;
 
 public class NetworkDataManager extends PageDataManager {
+       public final static int MAX_CHART_TIME = 999999999;
+
+       public final static double NETWORK_SERIES_TYPE_HEAP_MEMORY_KB = 0.3;
+       public final static double CHART_TYPE_HEAP_MEMORY_KB = 4.6 * 5;
+       public final static double MAX_NETWORK_HEAP_MEMORY_KB = 5000; // possible to make approximately 200 chart
+       public final static double ONE_CHART_HEAP_MEMORY_KB = NETWORK_SERIES_TYPE_HEAP_MEMORY_KB;
+       public final static double ONE_ACCESS_SERIES_HEAP_MEMORY_KB = NETWORK_SERIES_TYPE_HEAP_MEMORY_KB;
+         
        private static NetworkDataManager instance = null;
 
        private NetworkDataMaker networkDataMaker = null;
@@ -60,9 +68,12 @@ public class NetworkDataManager extends PageDataManager {
        private List<NetworkAPIType> selectedTableAPIList = null;
        private LinkedHashMap<String, String> checkStatusSeries = new LinkedHashMap<String, String>();
        private List<NetworkSeriesType> seriesList = new ArrayList<NetworkSeriesType>();
+       private LinkedHashMap<Integer, Integer> parentChartIndexOfSeq = new LinkedHashMap<Integer, Integer>();
+       private LinkedHashMap<Integer, Integer> childChartIndexOfSeq = new LinkedHashMap<Integer, Integer>();
 
-       private int statusSeriesSize = 0;
+       private int chartCount = 0;
        private int accessSeriesSize = 0;
+
        private boolean isStopTrace = false;
 
        public NetworkDataManager() {
@@ -115,7 +126,9 @@ public class NetworkDataManager extends PageDataManager {
                selectedTableAPIList = null;
                seriesList = new ArrayList<NetworkSeriesType>();
                checkStatusSeries = new LinkedHashMap<String, String>();
-               statusSeriesSize = 0;
+               parentChartIndexOfSeq = new LinkedHashMap<Integer, Integer>();
+               childChartIndexOfSeq = new LinkedHashMap<Integer, Integer>();
+               chartCount = 0;
                accessSeriesSize = 0;
                isStopTrace = false;
        }
@@ -130,7 +143,7 @@ public class NetworkDataManager extends PageDataManager {
 
        public void setStartSeriesData(NetworkSeriesType seriesType) {
                if (seriesType.getAPIType() == NetworkSeriesType.STATUS_TYPE_OPEN) {
-                       statusSeriesSize++;
+                       chartCount++;
                } else {
                        accessSeriesSize++;
                }
@@ -156,7 +169,7 @@ public class NetworkDataManager extends PageDataManager {
        public void openProcess() {
                // set series list from DB
                if (seriesList.size() == 0) {
-                       seriesList = seriesDBManager.select(0, 999999999);
+                       seriesList = seriesDBManager.select(0, MAX_CHART_TIME);
                }
        }
 
@@ -189,8 +202,9 @@ public class NetworkDataManager extends PageDataManager {
        }
 
        private void checkHeapMemory() {
-               if (isStopTrace == false
-                               && (statusSeriesSize > 1000 || accessSeriesSize > 10000)) {
+               double useHeapMemory = (chartCount * ONE_CHART_HEAP_MEMORY_KB)
+                               + (accessSeriesSize * ONE_ACCESS_SERIES_HEAP_MEMORY_KB);
+               if (!isStopTrace && (MAX_NETWORK_HEAP_MEMORY_KB < useHeapMemory)) {
                        isStopTrace = true;
                        ToolbarArea.getInstance().stopTrace();
                        Display.getDefault().asyncExec(new Runnable() {
@@ -209,4 +223,37 @@ public class NetworkDataManager extends PageDataManager {
                }
        }
 
+       public int getParentIndexOfSeq(int seq) {
+               Integer chartIndex = this.parentChartIndexOfSeq.get(seq);
+               if (null != chartIndex) {
+                       return chartIndex;
+               } else {
+                       return 0;
+               }
+       }
+
+       public void setParentIndexOfSeq(int seq, int paretnChartIndex) {
+               Integer chartIndex = this.parentChartIndexOfSeq.get(seq);
+               if (null == chartIndex) {
+                       this.parentChartIndexOfSeq.put(seq, paretnChartIndex);
+               }
+
+       }
+
+       public int getChildIndexOfSeq(int seq) {
+               Integer chartIndex = this.childChartIndexOfSeq.get(seq);
+               if (null != chartIndex) {
+                       return chartIndex;
+               } else {
+                       return 0;
+               }
+       }
+
+       public void setChildIndexOfSeq(int seq, int childChartIndex) {
+               Integer chartIndex = this.childChartIndexOfSeq.get(seq);
+               if (null == chartIndex) {
+                       this.childChartIndexOfSeq.put(seq, childChartIndex);
+               }
+
+       }
 }
index 9cd9e1b..94e32e0 100644 (file)
@@ -1,29 +1,53 @@
 package org.tizen.dynamicanalyzer.ui.network.data;
 
 import java.sql.PreparedStatement;
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.tizen.dynamicanalyzer.constant.CommonConstants;
 import org.tizen.dynamicanalyzer.database.DBColumn;
 import org.tizen.dynamicanalyzer.database.DBConstants;
 import org.tizen.dynamicanalyzer.database.DBTable;
 import org.tizen.dynamicanalyzer.database.SqlConnectionManager;
-import org.tizen.dynamicanalyzer.nl.NetworkPageLabels;
 import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSeriesType;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
+import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
 
 public class NetworkSeriesDBManager extends DBTable {
+       private static final String TABLENAME = "       NETWORK_SERIES"; //$NON-NLS-1$ 
+       public static final String RID = "RID";
+       public static final String DESTINATION_ADDRESS = "DESTINATION_ADDRESS"; //$NON-NLS-1$ 
+       public static final String FD_VALUE = "FD_VALUE"; //$NON-NLS-1$ 
+       public static final String START_TIME = "START_TIME"; //$NON-NLS-1$ 
+       public static final String END_TIME = "END_TIME"; //$NON-NLS-1$ 
+       public static final String STATUS_TYPE = "STATUS_TYPE"; //$NON-NLS-1$ 
+       public static final String API_ID = DBConstants.COMMON_COLUMN_ID;
+       public static final String PID = DBConstants.COMMON_COLUMN_PID;
 
-       private static final String TABLENAME = NetworkPageLabels.NETWORK_SERIES_DB_TABLENAME;
-       public static final String RID = NetworkPageLabels.NETWORK_DB_RID;
-       public static final String DESTINATION_ADDRESS = NetworkPageLabels.NETWORK_DB_DESTINATION_ADDRESS;
-       public static final String FD_VALUE = NetworkPageLabels.NETWORK_DB_FD_VALUE;
-       public static final String START_TIME = NetworkPageLabels.NETWORK_SERIES_DB_START_TIME;
-       public static final String END_TIME = NetworkPageLabels.NETWORK_SERIES_DB_END_TIME;
-       public static final String STATUS_TYPE = NetworkPageLabels.NETWORK_SERIES_DB_STATUS_TYPE;
-       public static final String API_ID = NetworkPageLabels.NETWORK_DB_API_ID;
+       public final static int DB_RID_INDEX = 0;
+       public final static int DB_DESTINATION_ADDRESSINDEX = 1;
+       public final static int DB_FD_VALUE_INDEX = 2;
+       public final static int DB_START_TIME_INDEX = 3;
+       public final static int DB_END_TIME_INDEX = 4;
+       public final static int DB_STATUS_TYPE_INDEX = 5;
+       public final static int DB_API_ID_INDEX = 6;
+       public final static int DB_PID_INDEX = 7;
 
-       private static final String SELECT_QUERY = "select * from " + TABLENAME; //$NON-NLS-1$
+       private static final String SELECT_QUERY = "select " + RID
+                       + CommonConstants.COMMA + DESTINATION_ADDRESS
+                       + CommonConstants.COMMA + FD_VALUE + CommonConstants.COMMA
+                       + START_TIME + CommonConstants.COMMA + END_TIME
+                       + CommonConstants.COMMA + STATUS_TYPE + CommonConstants.COMMA
+                       + API_ID + CommonConstants.COMMA + PID + " from " + TABLENAME; //$NON-NLS-1$
+
+       private static final String SELECT_PID_QUERY = "select " + RID
+                       + CommonConstants.COMMA + DESTINATION_ADDRESS
+                       + CommonConstants.COMMA + FD_VALUE + CommonConstants.COMMA
+                       + START_TIME + CommonConstants.COMMA + END_TIME
+                       + CommonConstants.COMMA + STATUS_TYPE + CommonConstants.COMMA
+                       + API_ID + CommonConstants.COMMA + PID
+                       + " from " + TABLENAME + " where pid = '%s'"; //$NON-NLS-1$
 
        private static int rid = 0;
 
@@ -45,6 +69,7 @@ public class NetworkSeriesDBManager extends DBTable {
                                DBConstants.INTEGER));
                addColumn(new DBColumn(API_ID, DBConstants.NOT_NULL,
                                DBConstants.INTEGER));
+               addColumn(new DBColumn(PID, DBConstants.NOT_NULL, DBConstants.INTEGER));
                rid = 0;
        }
 
@@ -57,10 +82,16 @@ public class NetworkSeriesDBManager extends DBTable {
 
        public List<NetworkSeriesType> select(double visibleStartTime,
                        double visibleEndTime) {
+               String selectQuery = SELECT_QUERY;
+               int selectedPid = ToolbarArea.getInstance().getSelectedPid();
+               if (selectedPid != 0) {
+                       selectQuery = String.format(SELECT_PID_QUERY, selectedPid);
+               }
+
                double selectStartTime = visibleStartTime
                                * TimelineConstants.MEGA_DOUBLE;
                double selectEndTime = visibleEndTime * TimelineConstants.MEGA_DOUBLE;
-               String query = String.format(SELECT_QUERY, selectStartTime,
+               String query = String.format(selectQuery, selectStartTime,
                                selectEndTime);
                List<List<Object>> result = SqlConnectionManager.executeQuery(query);
                if (null == result || result.size() == 0 || result.get(0).size() == 0) {
@@ -75,8 +106,35 @@ public class NetworkSeriesDBManager extends DBTable {
 
        @Override
        public boolean prepare(PreparedStatement prep, List<Object> rowData) {
-               // TODO Auto-generated method stub
-               return false;
+               boolean isPrepared = true;
+               int columnsize = getColumnSize();
+               if (columnsize != rowData.size()) {
+                       isPrepared = false;
+               } else {
+                       try {
+                               prep.setInt(DB_RID_INDEX + 1,
+                                               (Integer) (rowData.get(DB_RID_INDEX)));
+                               prep.setString(DB_DESTINATION_ADDRESSINDEX + 1,
+                                               (String) (rowData.get(DB_DESTINATION_ADDRESSINDEX)));
+                               prep.setString(DB_FD_VALUE_INDEX + 1,
+                                               (String) (rowData.get(DB_FD_VALUE_INDEX)));
+                               prep.setLong(DB_START_TIME_INDEX + 1,
+                                               (Long) (rowData.get(DB_START_TIME_INDEX)));
+                               prep.setLong(DB_END_TIME_INDEX + 1,
+                                               (Long) (rowData.get(DB_END_TIME_INDEX)));
+                               prep.setInt(DB_STATUS_TYPE_INDEX + 1,
+                                               (Integer) (rowData.get(DB_STATUS_TYPE_INDEX)));
+                               prep.setInt(DB_API_ID_INDEX + 1,
+                                               (Integer) (rowData.get(DB_API_ID_INDEX)));
+                               prep.setInt(DB_PID_INDEX + 1,
+                                               (Integer) (rowData.get(DB_PID_INDEX)));
+
+                       } catch (SQLException e) {
+                               e.printStackTrace();
+                               isPrepared = false;
+                       }
+               }
+               return isPrepared;
        }
 
 }
index f4c8cb0..19ab607 100644 (file)
@@ -32,6 +32,7 @@ import java.util.List;
 
 import org.tizen.dynamicanalyzer.constant.CommonConstants;
 import org.tizen.dynamicanalyzer.swap.model.data.NetworkData;
+import org.tizen.dynamicanalyzer.ui.network.data.NetworkAPIDBManager;
 
 public class NetworkAPIType extends NetworkData {
        private final int apiSeriesColumnSize = 6;
@@ -63,24 +64,29 @@ public class NetworkAPIType extends NetworkData {
        }
 
        public NetworkAPIType(List<Object> data) {
-               setSeq((Integer) data.get(0));
-               setDestinationAddress((String) data.get(1));
-               setFdStr((String) data.get(2));
-               setTime((Long) data.get(3));
-               setApiNameID((Integer) data.get(4));
-               setErrno((Long) data.get(5));
+               setSeq((Integer) data.get(NetworkAPIDBManager.DB_SEQ_INDEX));
+               setDestinationAddress((String) data
+                               .get(NetworkAPIDBManager.DB_DESTINATION_ADDRESS_INDEX));
+               setFdStr((String) data.get(NetworkAPIDBManager.DB_FD_VALUE_INDEX));
+               setTime((Long) data.get(NetworkAPIDBManager.DB_API_TIME_INDEX));
+               setApiNameID((Integer) data
+                               .get(NetworkAPIDBManager.DB_API_NAME_ID_INDEX));
+               setErrno((Long) data.get(NetworkAPIDBManager.DB_ERRNO_INDEX));
                if (data.size() <= apiSeriesColumnSize) {
                        return;
                }
-               setPid((Integer) data.get(6));
-               setTid((Integer) data.get(7));
-               setArgs((String) data.get(8));
-               setReturn((String) data.get(9));
-               setPacketMessageSize((Integer) data.get(10));
-               setPacketMessage((String) data.get(11));
-               setFdApiType((Integer) data.get(12));
-               setCallerAddress((Long) data.get(13));
-               setLibName((String) data.get(14));
+               setPid((Integer) data.get(NetworkAPIDBManager.DB_PID_INDEX));
+               setTid((Integer) data.get(NetworkAPIDBManager.DB_PID_INDEX));
+               setArgs((String) data.get(NetworkAPIDBManager.DB_ARGUMENT_INDEX));
+               setReturn((String) data.get(NetworkAPIDBManager.DB_RETURN_INDEX));
+               setPacketMessageSize((Integer) data
+                               .get(NetworkAPIDBManager.DB_BYTE_SIZE_INDEX));
+               setPacketMessage((String) data
+                               .get(NetworkAPIDBManager.DB_PAYLOAD_INDEX));
+               setFdApiType((Integer) data.get(NetworkAPIDBManager.DB_API_TYPE_INDEX));
+               setCallerAddress((Long) data
+                               .get(NetworkAPIDBManager.DB_CALLER_PC_ADDRESS_INDEX));
+               setLibName((String) data.get(NetworkAPIDBManager.DB_LIB_NAME_INDEX));
        }
 
        public int getSeq() {
index 20d44f4..a3767af 100644 (file)
@@ -31,13 +31,15 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.tizen.dynamicanalyzer.constant.CommonConstants;
+import org.tizen.dynamicanalyzer.ui.network.data.NetworkSeriesDBManager;
 
 public class NetworkSeriesType {
        public static final int HEAP_MEMORY = 128;
        public static int STATUS_TYPE_OPEN = 0;
-       public static int ACCESS_TYPE_WAIT = 1;
-       public static int ACCESS_TYPE_READ = 2;
-       public static int ACCESS_TYPE_WRITE = 3;
+       public static int STATUS_TYPE_CONNECTED = 1;
+       public static int ACCESS_TYPE_WAIT = 2;
+       public static int ACCESS_TYPE_READ = 3;
+       public static int ACCESS_TYPE_WRITE = 4;
 
        private int rid = 0;
        private String destinationAddress = CommonConstants.EMPTY;
@@ -47,9 +49,10 @@ public class NetworkSeriesType {
 
        private int apiType = -1;
        private int apiID = -1;
+       private int pId = -1;
 
        public NetworkSeriesType(String destinationAddress, String fdValue,
-                       long startTime, long endTime, int statusType, int apiId) {
+                       long startTime, long endTime, int statusType, int apiId, int pId) {
                setRid(0);
                setDestinationAddress(destinationAddress);
                setFdValue(fdValue);
@@ -57,16 +60,21 @@ public class NetworkSeriesType {
                setEndTime(endTime);
                setAPIType(statusType);
                setApiID(apiId);
+               setpId(pId);
        }
 
        public NetworkSeriesType(List<Object> data) {
-               setRid((Integer) data.get(0));
-               setDestinationAddress((String) data.get(1));
-               setFdValue((String) data.get(2));
-               setStartTime((Long) data.get(3));
-               setEndTime((Long) data.get(4));
-               setAPIType((Integer) data.get(5));
-               setApiID((Integer) data.get(6));
+               setRid((Integer) data.get(NetworkSeriesDBManager.DB_RID_INDEX));
+               setDestinationAddress((String) data
+                               .get(NetworkSeriesDBManager.DB_DESTINATION_ADDRESSINDEX));
+               setFdValue((String) data.get(NetworkSeriesDBManager.DB_FD_VALUE_INDEX));
+               setStartTime((Long) data
+                               .get(NetworkSeriesDBManager.DB_START_TIME_INDEX));
+               setEndTime((Long) data.get(NetworkSeriesDBManager.DB_END_TIME_INDEX));
+               setAPIType((Integer) data
+                               .get(NetworkSeriesDBManager.DB_STATUS_TYPE_INDEX));
+               setApiID((Integer) data.get(NetworkSeriesDBManager.DB_API_ID_INDEX));
+               setpId((Integer) data.get(NetworkSeriesDBManager.DB_API_ID_INDEX));
        }
 
        public int getRid() {
@@ -125,6 +133,14 @@ public class NetworkSeriesType {
                this.apiID = apiID;
        }
 
+       public int getpId() {
+               return pId;
+       }
+
+       public void setpId(int pId) {
+               this.pId = pId;
+       }
+
        public List<Object> getDBInsertData() {
                List<Object> data = new ArrayList<Object>();
                data.add(getRid());
@@ -134,7 +150,7 @@ public class NetworkSeriesType {
                data.add(getEndTime());
                data.add(getAPIType());
                data.add(getApiID());
+               data.add(getpId());
                return data;
        }
-
 }
\ No newline at end of file
index 360cc6d..f8c65f2 100644 (file)
@@ -438,7 +438,7 @@ public class ProfileDataMaker {
                                }
                                addrs.add(0, selfAddr);
                        } else {
-               //              DA_LOG.debug("makeFunctionUsageProfileData : cannot find seq by time");
+                               DA_LOG.debug("makeFunctionUsageProfileData : cannot find seq by time");
                                addrs = new ArrayList<Long>();
                                addrs.add(selfAddr);
                        }