[Title] follow-up action of commit #21000, some change in DB and communicator 33/21433/1
authorgreatim <jaewon81.lim@samsung.com>
Tue, 20 May 2014 12:44:51 +0000 (21:44 +0900)
committergreatim <jaewon81.lim@samsung.com>
Tue, 20 May 2014 12:44:51 +0000 (21:44 +0900)
[Desc.]
[Issue]

Change-Id: I94e51eafb7913134bfbe35eab30dc109b71cb214

32 files changed:
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/combo/DACustomCombo.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerConstants.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/CommunicatorUtils.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/database/DBConstants.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/database/RemainingDataManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/database/SqlConnectionManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/AppInfo.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/PageDataManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/ReadBlockingQueue.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/SWAPLogParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/CallFlowChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/ContextSwitchingChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/KernelListTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/data/ContextDataDBInserter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/data/ContextDataDBTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/data/FunctionDataDBInserter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/data/FunctionDataDBTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/kernel/data/KernelDataMaker.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/CPUDBInserter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/CustomDataDBInserter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/EnergyDataDBInserter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/ProcessDataDBInserter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/ScreenShotDBInserter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/SystemDataDBInserter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/SystemDataDBTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/UIEventDBInserter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceInputReader.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/uirecorder/UIRecorderTool.java

index 5c84e38..0737653 100644 (file)
@@ -528,6 +528,7 @@ public class DACustomCombo extends Canvas {
        };
 
        public void setEnabled(boolean enabled) {
+               super.setEnabled(enabled);
                this.enabled = enabled;
                if (enabled) {
                        changeComboState(STATE_NORMAL);
index ec50d5a..d918e88 100644 (file)
@@ -89,6 +89,10 @@ public class AnalyzerConstants {
        public static final String CALLSTACK_API_OFFSET_TOKEN = "\\+"; //$NON-NLS-1$
        public static final String CLASS = "class"; //$NON-NLS-1$
        public static final String DATA_PARSING_TOKEN = "`,"; //$NON-NLS-1$
+       
+       /* thread constant */
+       public static final int THREAD_JOIN_WAIT_TIME = 5000;
+       public static final int INSERT_JOIN_WAIT_TIME = 30000;
 
        /* timer intervals */
        public static final int SOCKET_CHECK_INTERVAL = 10;
index 31d37a7..12ecdc1 100755 (executable)
@@ -90,9 +90,6 @@ public class AnalyzerManager {
        private static long startBinaryAddr = -1;
        private static long endBinaryAddr = -1;
 
-       public static final int THREAD_JOIN_WAIT_TIME = 5000;
-       public static final int INSERT_JOIN_WAIT_TIME = 30000;
-
        private static int processCount = 0;
 
        public static boolean isExit() {
index 3adb168..120a87a 100755 (executable)
@@ -180,19 +180,11 @@ public class CommunicatorUtils {
        }
 
        public static void execShellCommand(IDevice device, String command,
-                       IShellOutputReceiver receiver) {
+                       IShellOutputReceiver receiver) throws TimeoutException,
+                       SdbCommandRejectedException, ShellCommandUnresponsiveException,
+                       IOException {
                if (null != device && isOnline(device)) {
-                       try {
-                               device.executeShellCommand(command, receiver);
-                       } catch (TimeoutException e) {
-                               e.printStackTrace();
-                       } catch (SdbCommandRejectedException e) {
-                               e.printStackTrace();
-                       } catch (ShellCommandUnresponsiveException e) {
-                               e.printStackTrace();
-                       } catch (IOException e) {
-                               e.printStackTrace();
-                       }
+                       device.executeShellCommand(command, receiver);
                }
        }
 
@@ -326,19 +318,43 @@ public class CommunicatorUtils {
                                        String line = portLines.get(0);
                                        try {
                                                remotePort = Integer.parseInt(line);
-                                               DA_LOG.debug(" !! \nport get success!! : " + remotePort);
                                                break;
                                        } catch (NumberFormatException e) {
                                                System.out.print("=");
                                        }
                                }
-                               Thread.sleep(10);
+                               
+                               Thread.sleep(50);
                        } catch (InterruptedException e) {
-                               // e.printStackTrace();
+                               System.out.print("\n");
                                DA_LOG.debug("Interrupt occurred - Getting port number");
                                break;
+                       } catch (SdbCommandRejectedException e) {
+                               System.out.print("\n");
+                               DA_LOG.debug("Maybe Sdb connection closed - Getting port number");
+                               break;
+                       } catch (TimeoutException e) {
+                               System.out.print("\n");
+                               DA_LOG.debug("Timeout occured - Getting port number");
+                               break;
+                       } catch (ShellCommandUnresponsiveException e) {
+                               System.out.print("\n");
+                               DA_LOG.debug("Shell command unresponsive - Getting port number");
+                               break;
+                       } catch (IOException e) {
+                               System.out.print("\n");
+                               DA_LOG.debug("IOExceoption - Getting port number");
+                               break;
                        }
                }
+               
+               System.out.print("\n");
+               if(remotePort < 0) {
+                       DA_LOG.debug("!!port get failed!!");
+               } else {
+                       DA_LOG.debug("!!port get success!! : " + remotePort);
+               }
+               
                return remotePort;
        }
 
index d60dd79..5e705a2 100644 (file)
@@ -500,6 +500,13 @@ public class DACommunicator {
                @Override
                public void onDisconnected(IDevice device) {
                        // called : each device disconnected time
+                       Display.getDefault().syncExec(new Runnable() {
+                               @Override
+                               public void run() {
+                                       ToolbarArea.getInstance().setMainControlEnablement(false);
+                               }
+                       });
+
                        DA_LOG.debug("device disconnected : " + device.getSerialNumber());
                        DeviceInfo deviceInfo = getDeviceByName(device.getSerialNumber());
                        DeviceInfo selectedDevice = GlobalInformation
@@ -517,11 +524,26 @@ public class DACommunicator {
                                        }
                                }
                        }
+                       
+                       Display.getDefault().syncExec(new Runnable() {
+                               @Override
+                               public void run() {
+                                       ToolbarArea.getInstance().setMainControlEnablement(true);
+                               }
+                       });
                }
 
                @Override
                public void onConnected(IDevice device) {
                        // It called when dynamic-analyzer start, only one time
+                       
+                       Display.getDefault().syncExec(new Runnable() {
+                               @Override
+                               public void run() {
+                                       ToolbarArea.getInstance().setMainControlEnablement(false);
+                               }
+                       });
+
                        DA_LOG.debug("device connected : " + device.getSerialNumber());
                        // addDevice(device);
                        if (!AnalyzerManager.isRunning()) {
@@ -542,12 +564,26 @@ public class DACommunicator {
                                        }
                                });
                        }
+                       
+                       Display.getDefault().syncExec(new Runnable() {
+                               @Override
+                               public void run() {
+                                       ToolbarArea.getInstance().setMainControlEnablement(true);
+                               }
+                       });
                }
 
                @Override
                public void onChanged(IDevice device, int changeMask) {
                        // called : device added - already dynamic-analyzer running (not
                        // tracing)
+                       Display.getDefault().syncExec(new Runnable() {
+                               @Override
+                               public void run() {
+                                       ToolbarArea.getInstance().setMainControlEnablement(false);
+                               }
+                       });
+                       
                        DA_LOG.debug("device changed : " + device.getSerialNumber() + "   "
                                        + changeMask);
                        if (1 == changeMask) {
@@ -572,34 +608,44 @@ public class DACommunicator {
                        } else {
                                DA_LOG.debug("device changed type :" + changeMask);
                        }
+                       
+                       Display.getDefault().syncExec(new Runnable() {
+                               @Override
+                               public void run() {
+                                       ToolbarArea.getInstance().setMainControlEnablement(true);
+                               }
+                       });
                }
+               
        };
 
        public static void updateToolbarDevice() {
+               final List<String> deviceSerials = new ArrayList<String>();
+               final String selectedDevice;
+               DeviceInfo selDev = GlobalInformation.getCurrentDeviceInfo();
+               if (selDev != null) {
+                       selectedDevice = selDev.getIDevice().getSerialNumber();
+               } else {
+                       selectedDevice = null;
+               }
+               int size = getDevices().size();
+               int selIndex = 0;
+               for (int i = 0; i < size; i++) {
+                       String serial = devices.get(i).getIDevice().getSerialNumber();
+                       deviceSerials.add(serial);
+                       if (null != selectedDevice && selectedDevice.equals(serial)) {
+                               selIndex = i;
+                       }
+               }
+               if (!devices.isEmpty()) {
+                       GlobalInformation.setCurrentDeviceInfo(devices.get(selIndex));
+               } else {
+                       clearDeviceAppInfo();
+               }
+
                Display.getDefault().syncExec(new Runnable() {
                        @Override
                        public void run() {
-                               List<String> deviceSerials = new ArrayList<String>();
-                               String selectedDevice = null;
-                               DeviceInfo selDev = GlobalInformation.getCurrentDeviceInfo();
-                               if (selDev != null)
-                                       selectedDevice = selDev.getIDevice().getSerialNumber();
-                               int size = getDevices().size();
-                               int selIndex = 0;
-                               for (int i = 0; i < size; i++) {
-                                       String serial = devices.get(i).getIDevice()
-                                                       .getSerialNumber();
-                                       deviceSerials.add(serial);
-                                       if (null != selectedDevice && selectedDevice.equals(serial)) {
-                                               selIndex = i;
-                                       }
-                               }
-                               if (!devices.isEmpty()) {
-                                       GlobalInformation.setCurrentDeviceInfo(devices
-                                                       .get(selIndex));
-                               } else {
-                                       clearDeviceAppInfo();
-                               }
                                ToolbarArea.getInstance().setDeviceComboItems(selectedDevice,
                                                deviceSerials);
                        }
index b36fe41..7ee8383 100644 (file)
@@ -8,6 +8,7 @@ public class DBConstants {
        public static final String PRIMARY_KEY = "PRIMARY KEY NOT NULL";//$NON-NLS-1$
        public static final String NOT_NULL = "not null";//$NON-NLS-1$
        
+       // TODO : need to discuss about each limits
        // length of common string column
        public static final int FUNCNAME_LEN = 256;
        public static final int FILENAME_LEN = 256;
index e4bb554..1b3188c 100644 (file)
@@ -3,6 +3,8 @@ package org.tizen.dynamicanalyzer.database;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+// this class is for managing and saving the portion of the remaining string
+// which does not fit in the database column.
 public class RemainingDataManager {
        private static Map<String, Map<String, String>> remainingDataMap = new ConcurrentHashMap<String, Map<String, String>>();
 
index 81033dc..2940b73 100644 (file)
@@ -224,6 +224,10 @@ public class SqlConnectionManager {
                }
        }
 
+       // this method calls specific interface method of each DB table class
+       // to get preparedStatement of given query.
+       // this change improve the performance of preparing of query statement.
+       // (no need to check the type of each column)
        public static void executePreparedWithInterface(String query,
                        List<List<Object>> data, IPreparedStatement ip) {
                PreparedStatement prep = null;
@@ -295,22 +299,25 @@ public class SqlConnectionManager {
                                        while (rs.next()) {
                                                List<Object> rowData = new ArrayList<Object>();
                                                // ResultSet index starts from 1
+                                               // Interger.valueOf(int) is faster than new Integer(int)
+                                               // Actually autoboxing of primitive type is same with
+                                               // <Object>.valueOf() after java 1.5
                                                for (int i = 1; i < columnCount + 1; i++) {
                                                        if (rsMetaData.getColumnTypeName(i).contains(
                                                                        DBConstants.INTEGER)) {
-                                                               rowData.add(new Integer(rs.getInt(i)));
+                                                               rowData.add(Integer.valueOf(rs.getInt(i)));
                                                        } else if (rsMetaData.getColumnTypeName(i)
                                                                        .contains(DBConstants.LONG)) {
-                                                               rowData.add(new Long(rs.getLong(i)));
+                                                               rowData.add(Long.valueOf(rs.getLong(i)));
                                                        } else if (rsMetaData.getColumnTypeName(i)
                                                                        .contains(DBConstants.VARCHAR)) {
                                                                rowData.add(rs.getString(i));
                                                        } else if (rsMetaData.getColumnTypeName(i)
                                                                        .contains(DBConstants.FLOAT)) {
-                                                               rowData.add(new Float(rs.getFloat(i)));
+                                                               rowData.add(Float.valueOf(rs.getFloat(i)));
                                                        } else if (rsMetaData.getColumnTypeName(i)
                                                                        .contains(DBConstants.BOOLEAN)) {
-                                                               rowData.add(rs.getBoolean(i));
+                                                               rowData.add(Boolean.valueOf(rs.getBoolean(i)));
                                                        } else {
                                                                DA_LOG.error("undefined type : "
                                                                                + rsMetaData.getColumnTypeName(i));
index d83e9d9..103ac6f 100644 (file)
@@ -60,7 +60,7 @@ public class LogInserter implements Runnable {
                if (null != insertLogThread && insertLogThread.isAlive()) {
                        try {
                                sendNotify();
-                               insertLogThread.join(AnalyzerManager.INSERT_JOIN_WAIT_TIME);
+                               insertLogThread.join(AnalyzerConstants.INSERT_JOIN_WAIT_TIME);
                                DA_LOG.debug("insert thread join complete!!"); //$NON-NLS-1$
                        } catch (InterruptedException e) {
                                e.printStackTrace();
index 3dd8e58..d33064c 100644 (file)
@@ -86,7 +86,7 @@ public class LogParser implements Runnable {
                        }
                        try {
                                DA_LOG.debug("wait for log parser join");//$NON-NLS-1$
-                               logParser.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);
+                               logParser.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
index 099beed..225de93 100644 (file)
@@ -40,7 +40,6 @@ import org.tizen.dynamicanalyzer.common.GlobalInformation;
 import org.tizen.dynamicanalyzer.common.path.PathManager;
 import org.tizen.dynamicanalyzer.constant.CommonConstants;
 import org.tizen.dynamicanalyzer.model.AddrSymbolPair;
-import org.tizen.dynamicanalyzer.swap.channel.control.ApplicationInst;
 import org.tizen.dynamicanalyzer.swap.channel.control.BinaryInfo;
 import org.tizen.dynamicanalyzer.util.DALogger;
 import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
@@ -66,7 +65,7 @@ public class AppInfo {
        public static final String APPTYPE_WEB = "webapp";//$NON-NLS-1$
        public static final String FLAG_ZERO = "0";//$NON-NLS-1$
        public static final String FLAG_ONE = "1";//$NON-NLS-1$
-       
+
        public static final String DEBUGPKGTYPE_DEBUG = "debug-";//$NON-NLS-1$
        public static final String DEBUGPKGTYPE_DEBUGINFO = "debuginfo";//$NON-NLS-1$
        public static final String DEBUGPKGTYPE_DEBUGSOURCE = "debugsource";//$NON-NLS-1$
@@ -94,7 +93,7 @@ public class AppInfo {
        public void setInstallTime(String installTime) {
                this.installTime = installTime;
        }
-       
+
        public String getDebugFilePath() {
                return debugFilePath;
        }
@@ -102,7 +101,7 @@ public class AppInfo {
        public void setDebugFilePath(String debugFilePath) {
                this.debugFilePath = debugFilePath;
        }
-       
+
        public String getSourcePath() {
                return sourcePath;
        }
@@ -132,11 +131,10 @@ public class AppInfo {
                if (localPackagePath != null) {
                        int psize = localPackagePath.size();
                        for (int i = 0; i < psize; i++) {
-                               if (localPackagePath.get(i)
-                                               .contains(DEBUGPKGTYPE_DEBUGINFO)) {
+                               if (localPackagePath.get(i).contains(DEBUGPKGTYPE_DEBUGINFO)) {
                                        getDebugFilePathFromDebugRpm(localPackagePath.get(i));
-                               } else if (localPackagePath.get(i)
-                                               .contains(DEBUGPKGTYPE_DEBUGSOURCE)) {
+                               } else if (localPackagePath.get(i).contains(
+                                               DEBUGPKGTYPE_DEBUGSOURCE)) {
                                        getSourcePathFromSourceRpm(localPackagePath.get(i));
                                }
                        }
@@ -156,8 +154,8 @@ public class AppInfo {
                return symbolExtractor.getAddrSymbolPairs();
        }
 
-       //TODO: refactoring - make rpm copy/extraction code to utility function
-       
+       // TODO: refactoring - make rpm copy/extraction code to utility function
+
        public void getDebugFilePathFromDebugRpm(String debugRpmPath) {
                String debugFilePath = null;
 
@@ -256,8 +254,7 @@ public class AppInfo {
                        }
 
                        // future extension for applications with normal debug package
-               } else if (debugInfoRpmFile.getName()
-                               .contains(DEBUGPKGTYPE_DEBUG)) {
+               } else if (debugInfoRpmFile.getName().contains(DEBUGPKGTYPE_DEBUG)) {
                        String debugCmd = PathManager.DA_TOOL_FOLDER_PATH + File.separator
                                        + "debuginfo.sh -f " + rpmPath + CommonConstants.SPACE
                                        + getExecFileName();
@@ -290,7 +287,7 @@ public class AppInfo {
 
                if (null != debugFilePath && !debugFilePath.isEmpty()) {
                        setDebugFilePath(debugFilePath);
-               } 
+               }
                return;
        }
 
@@ -298,14 +295,14 @@ public class AppInfo {
                if (null == sourceRpmPath || sourceRpmPath.isEmpty()) {
                        return;
                }
-       
+
                // check rpm file exists
                File debugsourceRpmFile = new File(sourceRpmPath);
                if (!debugsourceRpmFile.exists() || debugsourceRpmFile.isDirectory()) {
                        return;
                }
-               
-               // get source project name 
+
+               // get source project name
                // (ex. pr-debugsource-0.0.0-1.1.i586.rpm -> pr-0.0.0)
                String debugsourceRpmFileName = debugsourceRpmFile.getName();
                int index = debugsourceRpmFileName.indexOf(DEBUGPKGTYPE_DEBUGSOURCE);
@@ -314,7 +311,7 @@ public class AppInfo {
                                .split(CommonConstants.DASH);
                String version = splitSrcRpmFileName[splitSrcRpmFileName.length - 2];
                String projectName = project + version;
-               
+
                // copy rpm file
                String rpmPath = PathManager.DA_RPM_PATH + File.separator
                                + appInfo.get(LABEL_INDEX);
@@ -381,8 +378,8 @@ public class AppInfo {
                        Runtime rt = Runtime.getRuntime();
                        Process process = rt.exec(sourceCmd);
                        process.waitFor();
-                       BufferedReader reader = new BufferedReader(
-                                       new InputStreamReader(process.getInputStream()));
+                       BufferedReader reader = new BufferedReader(new InputStreamReader(
+                                       process.getInputStream()));
                        String line = reader.readLine();
                        if (null == line) {
                                BufferedReader error = new BufferedReader(
@@ -401,11 +398,11 @@ public class AppInfo {
                        return;
                }
        }
-       
+
        public String getExecFileName() {
                if (null == execFileName) {
-                       String[] splitPath = appInfo.get(EXEC_INDEX)
-                                       .split(CommonConstants.SLASH);
+                       String[] splitPath = appInfo.get(EXEC_INDEX).split(
+                                       CommonConstants.SLASH);
                        if (getAppType().contains(APPTYPE_CPP)) {
                                execFileName = splitPath[splitPath.length - 1]
                                                + CommonConstants.EXTENSION_EXEC_FILE;
@@ -448,7 +445,7 @@ public class AppInfo {
        public String getExecPath() {
                String exec = appInfo.get(EXEC_INDEX);
                if (getAppType().contains(APPTYPE_CPP)) {
-                       exec = exec.replaceFirst("/opt/apps", "/opt/usr/apps");                 
+                       exec = exec.replaceFirst("/opt/apps", "/opt/usr/apps");
                        exec += CommonConstants.EXTENSION_EXEC_FILE;
                }
                return exec;
index 3f11320..68f4147 100644 (file)
@@ -4,7 +4,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
-import org.tizen.dynamicanalyzer.common.AnalyzerManager;
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.database.DBTable;
 import org.tizen.dynamicanalyzer.util.DALogger;
 
@@ -51,7 +51,7 @@ public abstract class PageDataManager implements Runnable {
                        try {
                                onThreadStop();
                                sendNotify();
-                               thread.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);
+                               thread.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);
                                thread = null;
                                DA_LOG.debug(getName() + " thread joined!"); //$NON-NLS-1$
                        } catch (InterruptedException e) {
index aacf3e6..5f91baf 100755 (executable)
@@ -35,12 +35,14 @@ public class ReadBlockingQueue<E> {
                dataQueue = new ConcurrentLinkedQueue<E>();\r
        }\r
 \r
-       public synchronized E poll() {\r
-               if (dataQueue.isEmpty()) {\r
-                       try {\r
-                               wait();\r
-                       } catch (InterruptedException e) {\r
-                               e.printStackTrace();\r
+       public E poll() {\r
+               synchronized (this) {\r
+                       if (dataQueue.isEmpty()) {\r
+                               try {\r
+                                       wait();\r
+                               } catch (InterruptedException e) {\r
+                                       e.printStackTrace();\r
+                               }\r
                        }\r
                }\r
 \r
@@ -49,12 +51,16 @@ public class ReadBlockingQueue<E> {
                return data;\r
        }\r
 \r
-       public synchronized void offer(E data) {\r
-               dataQueue.offer(data);\r
-               notifyAll();\r
+       public void offer(E data) {\r
+               synchronized (this) {\r
+                       dataQueue.offer(data);\r
+                       notifyAll();\r
+               }\r
        }\r
 \r
-       public synchronized void wake() {\r
-               notifyAll();\r
+       public void wake() {\r
+               synchronized (this) {\r
+                       notifyAll();\r
+               }\r
        }\r
 }\r
index 58f0850..4fbd928 100755 (executable)
@@ -103,7 +103,7 @@ public class SWAPLogParser implements Runnable {
                        }
                        try {
                                DA_LOG.debug("wait for log parser join");//$NON-NLS-1$
-                               logParser.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);
+                               logParser.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
index 405f4a2..9015788 100644 (file)
@@ -61,7 +61,7 @@ import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenuItem;
 
 public class CallFlowChart extends DAChartBoard {
        private static final DALogger DA_LOG = DALogger.getInstance();
-       
+
        private KernelDataPerThread selectedData = null;
        private boolean dirty = false;
        private final KernelDataMaker dataMaker = KernelDataManager.getInstance()
@@ -181,12 +181,12 @@ public class CallFlowChart extends DAChartBoard {
                for (int i = 0; i < fsize; i++) {
                        List<Object> idata = functionData.get(i);
                        String funcname = (String) idata
-                                       .get(FunctionDataDBTable.COLUMN_INDEX_FUNCNAME);
+                                       .get(FunctionDataDBTable.COLUMN.FUNCNAME.index);
                        double funcStart = (double) ((Long) idata
-                                       .get(FunctionDataDBTable.COLUMN_INDEX_STARTTIME))
+                                       .get(FunctionDataDBTable.COLUMN.STARTTIME.index))
                                        / TimelineConstants.MEGA_DOUBLE;
                        double funcEnd = (double) ((Long) idata
-                                       .get(FunctionDataDBTable.COLUMN_INDEX_ENDTIME))
+                                       .get(FunctionDataDBTable.COLUMN.ENDTIME.index))
                                        / TimelineConstants.MEGA_DOUBLE;
 
                        DAChartSeries funcSeries = seriesMap.get(funcname);
index 6e37375..2e26b40 100644 (file)
@@ -197,14 +197,14 @@ public class ContextSwitchingChart extends DAChartBoard {
                        for (int i = 0; i < csize; i++) {
                                List<Object> idata = contextData.get(i);
                                int tid = (Integer) idata
-                                               .get(ContextDataDBTable.COLUMN_INDEX_TID);
+                                               .get(ContextDataDBTable.COLUMN.TID.index);
                                int cpunum = (Integer) idata
-                                               .get(ContextDataDBTable.COLUMN_INDEX_CPU);
+                                               .get(ContextDataDBTable.COLUMN.CPUNUM.index);
                                double contextStart = (double) ((Long) idata
-                                               .get(ContextDataDBTable.COLUMN_INDEX_STARTTIME))
+                                               .get(ContextDataDBTable.COLUMN.STARTTIME.index))
                                                / TimelineConstants.MEGA_DOUBLE;
                                double contextEnd = (double) ((Long) idata
-                                               .get(ContextDataDBTable.COLUMN_INDEX_ENDTIME))
+                                               .get(ContextDataDBTable.COLUMN.ENDTIME.index))
                                                / TimelineConstants.MEGA_DOUBLE;
 
                                DAChartBoardItem coreItem = findCoreBoardItem(threads, tid);
@@ -226,19 +226,19 @@ public class ContextSwitchingChart extends DAChartBoard {
                        for (int i = 0; i < fsize; i++) {
                                List<Object> idata = functionData.get(i);
                                int tid = (Integer) idata
-                                               .get(FunctionDataDBTable.COLUMN_INDEX_TID);
+                                               .get(FunctionDataDBTable.COLUMN.TID.index);
                                String funcname = (String) idata
-                                               .get(FunctionDataDBTable.COLUMN_INDEX_FUNCNAME);
+                                               .get(FunctionDataDBTable.COLUMN.FUNCNAME.index);
                                double funcStart = (double) ((Long) idata
-                                               .get(FunctionDataDBTable.COLUMN_INDEX_STARTTIME))
+                                               .get(FunctionDataDBTable.COLUMN.STARTTIME.index))
                                                / TimelineConstants.MEGA_DOUBLE;
                                double funcEnd = (double) ((Long) idata
-                                               .get(FunctionDataDBTable.COLUMN_INDEX_ENDTIME))
+                                               .get(FunctionDataDBTable.COLUMN.ENDTIME.index))
                                                / TimelineConstants.MEGA_DOUBLE;
                                int type = (Integer) idata
-                                               .get(FunctionDataDBTable.COLUMN_INDEX_STARTTYPE)
+                                               .get(FunctionDataDBTable.COLUMN.STARTTYPE.index)
                                                + (Integer) idata
-                                                               .get(FunctionDataDBTable.COLUMN_INDEX_ENDTYPE);
+                                                               .get(FunctionDataDBTable.COLUMN.ENDTYPE.index);
 
                                DAChartBoardItem functionItem = findFunctionBoardItem(threads,
                                                tid);
index 8898dfe..2a53228 100644 (file)
@@ -52,10 +52,10 @@ import org.tizen.dynamicanalyzer.widgets.helper.Formatter;
 public class KernelListTable extends DAWindowingTableComposite {
        private KernelDataPerThread selectedData = null;
        private boolean isCoreSelected = true;
-       
+
        public KernelListTable(Composite parent, int compStyle, int tableStyle) {
                super(parent, compStyle, tableStyle);
-               setDataType(false, 0);  // timeColumnIdex
+               setDataType(false, 0); // timeColumnIdex
                setContextMenu(AnalyzerConstants.CONTEXT_TABLE_RANGE);
 
                table.addSelectionListener(new SelectionListener() {
@@ -100,52 +100,52 @@ public class KernelListTable extends DAWindowingTableComposite {
                        int seqnum;
                        long starttime, endtime, exectime;
                        if (isCoreSelected) {
-                               seqnum = (Integer) row.get(ContextDataDBTable.COLUMN_INDEX_SEQ);
+                               seqnum = (Integer) row.get(ContextDataDBTable.COLUMN.SEQ.index);
                                starttime = (Long) row
-                                               .get(ContextDataDBTable.COLUMN_INDEX_STARTTIME);
+                                               .get(ContextDataDBTable.COLUMN.STARTTIME.index);
                                endtime = (Long) row
-                                               .get(ContextDataDBTable.COLUMN_INDEX_ENDTIME);
+                                               .get(ContextDataDBTable.COLUMN.ENDTIME.index);
                                exectime = endtime - starttime;
-                               text.add(row.get(ContextDataDBTable.COLUMN_INDEX_SEQ)
+                               text.add(row.get(ContextDataDBTable.COLUMN.SEQ.index)
                                                .toString());
-                               text.add(row.get(ContextDataDBTable.COLUMN_INDEX_PID)
+                               text.add(row.get(ContextDataDBTable.COLUMN.PID.index)
                                                .toString());
-                               text.add(row.get(ContextDataDBTable.COLUMN_INDEX_TID)
+                               text.add(row.get(ContextDataDBTable.COLUMN.TID.index)
                                                .toString());
-                               text.add(row.get(ContextDataDBTable.COLUMN_INDEX_CPU)
+                               text.add(row.get(ContextDataDBTable.COLUMN.CPUNUM.index)
                                                .toString());
                                text.add(Formatter.toTimeFormat(starttime));
                                text.add(Formatter.toTimeFormat(endtime));
                                text.add(Formatter.toTimeFormat(exectime));
-                               text.add(row.get(ContextDataDBTable.COLUMN_INDEX_STARTADDR)
+                               text.add(row.get(ContextDataDBTable.COLUMN.STARTADDR.index)
                                                .toString());
-                               text.add(row.get(ContextDataDBTable.COLUMN_INDEX_ENDADDR)
+                               text.add(row.get(ContextDataDBTable.COLUMN.ENDADDR.index)
                                                .toString());
                                text.add("");
                        } else {
                                seqnum = (Integer) row
-                                               .get(FunctionDataDBTable.COLUMN_INDEX_SEQ);
+                                               .get(FunctionDataDBTable.COLUMN.SEQ.index);
                                starttime = (Long) row
-                                               .get(FunctionDataDBTable.COLUMN_INDEX_STARTTIME);
+                                               .get(FunctionDataDBTable.COLUMN.STARTTIME.index);
                                endtime = (Long) row
-                                               .get(FunctionDataDBTable.COLUMN_INDEX_ENDTIME);
+                                               .get(FunctionDataDBTable.COLUMN.ENDTIME.index);
                                exectime = endtime - starttime;
-                               text.add(row.get(FunctionDataDBTable.COLUMN_INDEX_SEQ)
+                               text.add(row.get(FunctionDataDBTable.COLUMN.SEQ.index)
                                                .toString());
-                               text.add(row.get(FunctionDataDBTable.COLUMN_INDEX_PID)
+                               text.add(row.get(FunctionDataDBTable.COLUMN.PID.index)
                                                .toString());
-                               text.add(row.get(FunctionDataDBTable.COLUMN_INDEX_TID)
+                               text.add(row.get(FunctionDataDBTable.COLUMN.TID.index)
                                                .toString());
-                               text.add(row.get(FunctionDataDBTable.COLUMN_INDEX_CPU)
+                               text.add(row.get(FunctionDataDBTable.COLUMN.CPUNUM.index)
                                                .toString());
                                text.add(Formatter.toTimeFormat(starttime));
                                text.add(Formatter.toTimeFormat(endtime));
                                text.add(Formatter.toTimeFormat(exectime));
-                               text.add(row.get(FunctionDataDBTable.COLUMN_INDEX_STARTADDR)
+                               text.add(row.get(FunctionDataDBTable.COLUMN.STARTADDR.index)
                                                .toString());
-                               text.add(row.get(FunctionDataDBTable.COLUMN_INDEX_ENDADDR)
+                               text.add(row.get(FunctionDataDBTable.COLUMN.ENDADDR.index)
                                                .toString());
-                               text.add(row.get(FunctionDataDBTable.COLUMN_INDEX_FUNCNAME)
+                               text.add(row.get(FunctionDataDBTable.COLUMN.FUNCNAME.index)
                                                .toString());
                        }
 
@@ -237,9 +237,9 @@ public class KernelListTable extends DAWindowingTableComposite {
                                        + selectedData.getTid() + " order by ";
 
                        if (isCoreSelected)
-                               option += ContextDataDBTable.STARTTIME;
+                               option += ContextDataDBTable.COLUMN.STARTTIME.name;
                        else
-                               option += FunctionDataDBTable.STARTTIME;
+                               option += FunctionDataDBTable.COLUMN.STARTTIME.name;
 
                        return option;
                } else {
@@ -275,9 +275,9 @@ public class KernelListTable extends DAWindowingTableComposite {
        protected String getTimeColumnName() {
                String timestr;
                if (isCoreSelected)
-                       timestr = ContextDataDBTable.STARTTIME;
+                       timestr = ContextDataDBTable.COLUMN.STARTTIME.name;
                else
-                       timestr = FunctionDataDBTable.STARTTIME;
+                       timestr = FunctionDataDBTable.COLUMN.STARTTIME.name;
 
                return timestr;
        }
index 8dbdf5e..9885137 100755 (executable)
@@ -28,6 +28,7 @@ package org.tizen.dynamicanalyzer.ui.kernel.data;
 \r
 import java.util.List;\r
 \r
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;\r
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;\r
 import org.tizen.dynamicanalyzer.swap.logparser.ReadBlockingQueue;\r
 \r
@@ -52,7 +53,7 @@ public class ContextDataDBInserter implements Runnable {
                if (inserterThread != null && inserterThread.isAlive()) {\r
                        try {\r
                                sendNotify();\r
-                               inserterThread.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);\r
+                               inserterThread.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);\r
                        } catch (InterruptedException e) {\r
                                e.printStackTrace();\r
                        }\r
@@ -80,8 +81,6 @@ public class ContextDataDBInserter implements Runnable {
        }\r
 \r
        public static void sendNotify() {\r
-               synchronized (contextDataQueue) {\r
-                       contextDataQueue.notifyAll();\r
-               }\r
+               contextDataQueue.wake();\r
        }\r
 }\r
index 708a069..000a148 100644 (file)
@@ -10,24 +10,25 @@ import org.tizen.dynamicanalyzer.database.DBTable;
 
 public class ContextDataDBTable extends DBTable {
        private static final String TABLENAME = "ContextSwitchData";
-
-       public static final String SEQ = DBConstants.COMMON_COLUMN_SEQ;
-       public static final String PID = DBConstants.COMMON_COLUMN_PID;
-       public static final String TID = DBConstants.COMMON_COLUMN_TID;
-       public static final String CPUNUM = "CpuNum";
-       public static final String STARTTIME = "StartTime";
-       public static final String STARTADDR = "StartPcAddr";
-       public static final String ENDTIME = "EndTime";
-       public static final String ENDADDR = "EndPcAddr";
-
-       public final static int COLUMN_INDEX_SEQ = 0;
-       public final static int COLUMN_INDEX_PID = 1;
-       public final static int COLUMN_INDEX_TID = 2;
-       public final static int COLUMN_INDEX_CPU = 3;
-       public final static int COLUMN_INDEX_STARTTIME = 4;
-       public final static int COLUMN_INDEX_STARTADDR = 5;
-       public final static int COLUMN_INDEX_ENDTIME = 6;
-       public final static int COLUMN_INDEX_ENDADDR = 7;
+       
+       public enum COLUMN {
+               SEQ(0, DBConstants.COMMON_COLUMN_SEQ),
+               PID(1, DBConstants.COMMON_COLUMN_PID),
+               TID(2, DBConstants.COMMON_COLUMN_TID),
+               CPUNUM(3, "CpuNum"),
+               STARTTIME(4, "StartTime"),
+               STARTADDR(5, "StartPcAddr"),
+               ENDTIME(6, "EndTime"),
+               ENDADDR(7, "EndPcAddr");
+               
+               public final int index;
+               public final String name;
+               
+               COLUMN(int index, String name) {
+                       this.index = index;
+                       this.name = name;
+               }
+       }
 
        @Override
        public String getTableName() {
@@ -35,14 +36,14 @@ public class ContextDataDBTable extends DBTable {
        }
 
        public ContextDataDBTable() {
-               addColumn(new DBColumn(SEQ, DBConstants.NOT_NULL, DBConstants.INTEGER));
-               addColumn(new DBColumn(PID, DBConstants.NOT_NULL, DBConstants.INTEGER));
-               addColumn(new DBColumn(TID, DBConstants.NOT_NULL, DBConstants.INTEGER));
-               addColumn(new DBColumn(CPUNUM, DBConstants.EMPTY, DBConstants.INTEGER));
-               addColumn(new DBColumn(STARTTIME, DBConstants.EMPTY, DBConstants.LONG));
-               addColumn(new DBColumn(STARTADDR, DBConstants.EMPTY, DBConstants.LONG));
-               addColumn(new DBColumn(ENDTIME, DBConstants.EMPTY, DBConstants.LONG));
-               addColumn(new DBColumn(ENDADDR, DBConstants.EMPTY, DBConstants.LONG));
+               addColumn(new DBColumn(COLUMN.SEQ.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+               addColumn(new DBColumn(COLUMN.PID.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+               addColumn(new DBColumn(COLUMN.TID.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+               addColumn(new DBColumn(COLUMN.CPUNUM.name, DBConstants.EMPTY, DBConstants.INTEGER));
+               addColumn(new DBColumn(COLUMN.STARTTIME.name, DBConstants.EMPTY, DBConstants.LONG));
+               addColumn(new DBColumn(COLUMN.STARTADDR.name, DBConstants.EMPTY, DBConstants.LONG));
+               addColumn(new DBColumn(COLUMN.ENDTIME.name, DBConstants.EMPTY, DBConstants.LONG));
+               addColumn(new DBColumn(COLUMN.ENDADDR.name, DBConstants.EMPTY, DBConstants.LONG));
        }
 
        @Override
@@ -54,15 +55,14 @@ public class ContextDataDBTable extends DBTable {
                        isPrepared = false;
                } else {
                        try {
-                               prep.setInt(1, (Integer) (rowData.get(0)));
-                               prep.setInt(2, (Integer) (rowData.get(1)));
-                               prep.setInt(3, (Integer) (rowData.get(2)));
-                               prep.setInt(4, (Integer) (rowData.get(3)));
-
-                               prep.setLong(5, (Long) (rowData.get(4)));
-                               prep.setLong(6, (Long) (rowData.get(5)));
-                               prep.setLong(7, (Long) (rowData.get(6)));
-                               prep.setLong(8, (Long) (rowData.get(7)));
+                               prep.setInt(COLUMN.SEQ.index + 1, (Integer) (rowData.get(COLUMN.SEQ.index)));
+                               prep.setInt(COLUMN.PID.index + 1, (Integer) (rowData.get(COLUMN.PID.index)));
+                               prep.setInt(COLUMN.TID.index + 1, (Integer) (rowData.get(COLUMN.TID.index)));
+                               prep.setInt(COLUMN.CPUNUM.index + 1, (Integer) (rowData.get(COLUMN.CPUNUM.index)));
+                               prep.setLong(COLUMN.STARTTIME.index + 1, (Long) (rowData.get(COLUMN.STARTTIME.index)));
+                               prep.setLong(COLUMN.STARTADDR.index + 1, (Long) (rowData.get(COLUMN.STARTADDR.index)));
+                               prep.setLong(COLUMN.ENDTIME.index + 1, (Long) (rowData.get(COLUMN.ENDTIME.index)));
+                               prep.setLong(COLUMN.ENDADDR.index + 1, (Long) (rowData.get(COLUMN.ENDADDR.index)));
                        } catch (SQLException e) {
                                e.printStackTrace();
                                isPrepared = false;
index 64ee1d8..c110bac 100755 (executable)
@@ -28,6 +28,7 @@ package org.tizen.dynamicanalyzer.ui.kernel.data;
 \r
 import java.util.List;\r
 \r
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;\r
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;\r
 import org.tizen.dynamicanalyzer.swap.logparser.ReadBlockingQueue;\r
 \r
@@ -52,7 +53,7 @@ public class FunctionDataDBInserter implements Runnable {
                if (inserterThread != null && inserterThread.isAlive()) {\r
                        try {\r
                                sendNotify();\r
-                               inserterThread.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);\r
+                               inserterThread.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);\r
                        } catch (InterruptedException e) {\r
                                e.printStackTrace();\r
                        }\r
@@ -80,8 +81,6 @@ public class FunctionDataDBInserter implements Runnable {
        }\r
 \r
        public static void sendNotify() {\r
-               synchronized (functionDataQueue) {\r
-                       functionDataQueue.notifyAll();\r
-               }\r
+               functionDataQueue.wake();\r
        }\r
 }\r
index 8588e25..571a2a4 100644 (file)
@@ -11,29 +11,27 @@ import org.tizen.dynamicanalyzer.database.DBTable;
 public class FunctionDataDBTable extends DBTable {
        private static final String TABLENAME = "FunctionCallData";
 
-       public static final String SEQ = DBConstants.COMMON_COLUMN_SEQ;
-       public static final String PID = DBConstants.COMMON_COLUMN_PID;
-       public static final String TID = DBConstants.COMMON_COLUMN_TID;
-       public static final String CPUNUM = "CpuNum";
-       public static final String STARTTIME = "StartTime";
-       public static final String STARTTYPE = "StartType";
-       public static final String STARTADDR = "StartPcAddr";
-       public static final String ENDTIME = "EndTime";
-       public static final String ENDTYPE = "EndType";
-       public static final String ENDADDR = "EndPcAddr";
-       public static final String FUNCNAME = "FunctionName";
-
-       public final static int COLUMN_INDEX_SEQ = 0;
-       public final static int COLUMN_INDEX_PID = 1;
-       public final static int COLUMN_INDEX_TID = 2;
-       public final static int COLUMN_INDEX_CPU = 3;
-       public final static int COLUMN_INDEX_STARTTIME = 4;
-       public final static int COLUMN_INDEX_STARTTYPE = 5;
-       public final static int COLUMN_INDEX_STARTADDR = 6;
-       public final static int COLUMN_INDEX_ENDTIME = 7;
-       public final static int COLUMN_INDEX_ENDTYPE = 8;
-       public final static int COLUMN_INDEX_ENDADDR = 9;
-       public final static int COLUMN_INDEX_FUNCNAME = 10;
+       public enum COLUMN {
+               SEQ(0, DBConstants.COMMON_COLUMN_SEQ),
+               PID(1, DBConstants.COMMON_COLUMN_PID),
+               TID(2, DBConstants.COMMON_COLUMN_TID),
+               CPUNUM(3, "CpuNum"),
+               STARTTIME(4, "StartTime"),
+               STARTTYPE(5, "StartType"),
+               STARTADDR(6, "StartPcAddr"),
+               ENDTIME(7, "EndTime"),
+               ENDTYPE(8, "EndType"),
+               ENDADDR(9, "EndPcAddr"),
+               FUNCNAME(10, "FunctionName");
+               
+               public final int index;
+               public final String name;
+               
+               COLUMN(int index, String name) {
+                       this.index = index;
+                       this.name = name;
+               }
+       }
 
        @Override
        public String getTableName() {
@@ -41,18 +39,17 @@ public class FunctionDataDBTable extends DBTable {
        }
 
        public FunctionDataDBTable() {
-               addColumn(new DBColumn(SEQ, DBConstants.NOT_NULL, DBConstants.INTEGER));
-               addColumn(new DBColumn(PID, DBConstants.NOT_NULL, DBConstants.INTEGER));
-               addColumn(new DBColumn(TID, DBConstants.NOT_NULL, DBConstants.INTEGER));
-               addColumn(new DBColumn(CPUNUM, DBConstants.EMPTY, DBConstants.INTEGER));
-               addColumn(new DBColumn(STARTTIME, DBConstants.EMPTY, DBConstants.LONG));
-               addColumn(new DBColumn(STARTTYPE, DBConstants.EMPTY,
-                               DBConstants.INTEGER));
-               addColumn(new DBColumn(STARTADDR, DBConstants.EMPTY, DBConstants.LONG));
-               addColumn(new DBColumn(ENDTIME, DBConstants.EMPTY, DBConstants.LONG));
-               addColumn(new DBColumn(ENDTYPE, DBConstants.EMPTY, DBConstants.INTEGER));
-               addColumn(new DBColumn(ENDADDR, DBConstants.EMPTY, DBConstants.LONG));
-               addColumn(new DBColumn(FUNCNAME, DBConstants.EMPTY,
+               addColumn(new DBColumn(COLUMN.SEQ.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+               addColumn(new DBColumn(COLUMN.PID.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+               addColumn(new DBColumn(COLUMN.TID.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+               addColumn(new DBColumn(COLUMN.CPUNUM.name, DBConstants.EMPTY, DBConstants.INTEGER));
+               addColumn(new DBColumn(COLUMN.STARTTIME.name, DBConstants.EMPTY, DBConstants.LONG));
+               addColumn(new DBColumn(COLUMN.STARTTYPE.name, DBConstants.EMPTY, DBConstants.INTEGER));
+               addColumn(new DBColumn(COLUMN.STARTADDR.name, DBConstants.EMPTY, DBConstants.LONG));
+               addColumn(new DBColumn(COLUMN.ENDTIME.name, DBConstants.EMPTY, DBConstants.LONG));
+               addColumn(new DBColumn(COLUMN.ENDTYPE.name, DBConstants.EMPTY, DBConstants.INTEGER));
+               addColumn(new DBColumn(COLUMN.ENDADDR.name, DBConstants.EMPTY, DBConstants.LONG));
+               addColumn(new DBColumn(COLUMN.FUNCNAME.name, DBConstants.EMPTY,
                                DBConstants.VARCHAR, DBConstants.FUNCNAME_LEN));
        }
 
@@ -65,23 +62,23 @@ public class FunctionDataDBTable extends DBTable {
                        isPrepared = false;
                } else {
                        try {
-                               prep.setInt(1, (Integer) (rowData.get(0)));
-                               prep.setInt(2, (Integer) (rowData.get(1)));
-                               prep.setInt(3, (Integer) (rowData.get(2)));
-                               prep.setInt(4, (Integer) (rowData.get(3)));
+                               prep.setInt(COLUMN.SEQ.index + 1, (Integer) (rowData.get(COLUMN.SEQ.index)));
+                               prep.setInt(COLUMN.PID.index + 1, (Integer) (rowData.get(COLUMN.PID.index)));
+                               prep.setInt(COLUMN.TID.index + 1, (Integer) (rowData.get(COLUMN.TID.index)));
+                               prep.setInt(COLUMN.CPUNUM.index + 1, (Integer) (rowData.get(COLUMN.CPUNUM.index)));
 
-                               prep.setLong(5, (Long) (rowData.get(4)));
-                               prep.setInt(6, (Integer) (rowData.get(5)));
-                               prep.setLong(7, (Long) (rowData.get(6)));
+                               prep.setLong(COLUMN.STARTTIME.index + 1, (Long) (rowData.get(COLUMN.STARTTIME.index)));
+                               prep.setInt(COLUMN.STARTTYPE.index + 1, (Integer) (rowData.get(COLUMN.STARTTYPE.index)));
+                               prep.setLong(COLUMN.STARTADDR.index + 1, (Long) (rowData.get(COLUMN.STARTADDR.index)));
 
-                               prep.setLong(8, (Long) (rowData.get(7)));
-                               prep.setInt(9, (Integer) (rowData.get(8)));
-                               prep.setLong(10, (Long) (rowData.get(9)));
+                               prep.setLong(COLUMN.ENDTIME.index + 1, (Long) (rowData.get(COLUMN.ENDTIME.index)));
+                               prep.setInt(COLUMN.ENDTYPE.index + 1, (Integer) (rowData.get(COLUMN.ENDTYPE.index)));
+                               prep.setLong(COLUMN.ENDADDR.index + 1, (Long) (rowData.get(COLUMN.ENDADDR.index)));
 
-                               String retstr = clipString((String) (rowData.get(10)),
-                                               DBConstants.FUNCNAME_LEN, rowData.get(0).toString());
+                               String retstr = clipString((String) (rowData.get(COLUMN.FUNCNAME.index)),
+                                               DBConstants.FUNCNAME_LEN, rowData.get(COLUMN.SEQ.index).toString());
 
-                               prep.setString(11, retstr);
+                               prep.setString(COLUMN.FUNCNAME.index + 1, retstr);
                        } catch (SQLException e) {
                                e.printStackTrace();
                                isPrepared = false;
index f07b002..b16e622 100755 (executable)
@@ -311,8 +311,9 @@ public class KernelDataMaker {
 
        public List<List<Object>> getContextDataFromDB(long start, long end) {
                String where = String.format(queryto_withTime,
-                               ContextDataDBTable.STARTTIME, end, ContextDataDBTable.ENDTIME,
-                               start, ContextDataDBTable.STARTTIME);
+                               ContextDataDBTable.COLUMN.STARTTIME.name, end,
+                               ContextDataDBTable.COLUMN.ENDTIME.name, start,
+                               ContextDataDBTable.COLUMN.STARTTIME.name);
 
                DBTable table = KernelDataManager.getInstance().getContextDataTable();
 
@@ -325,15 +326,15 @@ public class KernelDataMaker {
 
                if (tid >= 0) {
                        where = String.format(queryto_withTidAndTime,
-                                       FunctionDataDBTable.TID, tid,
-                                       FunctionDataDBTable.STARTTIME, end,
-                                       FunctionDataDBTable.ENDTIME, start,
-                                       FunctionDataDBTable.STARTTIME);
+                                       FunctionDataDBTable.COLUMN.TID.name, tid,
+                                       FunctionDataDBTable.COLUMN.STARTTIME.name, end,
+                                       FunctionDataDBTable.COLUMN.ENDTIME.name, start,
+                                       FunctionDataDBTable.COLUMN.STARTTIME.name);
                } else {
                        where = String.format(queryto_withTime,
-                                       FunctionDataDBTable.STARTTIME, end,
-                                       FunctionDataDBTable.ENDTIME, start,
-                                       FunctionDataDBTable.STARTTIME);
+                                       FunctionDataDBTable.COLUMN.STARTTIME.name, end,
+                                       FunctionDataDBTable.COLUMN.ENDTIME.name, start,
+                                       FunctionDataDBTable.COLUMN.STARTTIME.name);
                }
 
                DBTable table = KernelDataManager.getInstance().getFunctionDataTable();
@@ -342,11 +343,12 @@ public class KernelDataMaker {
        }
 
        public List<List<Object>> getFuncnameFromDB(int tid) {
-               String where = String.format(queryto_withTid, FunctionDataDBTable.TID,
-                               tid, FunctionDataDBTable.FUNCNAME);
+               String where = String.format(queryto_withTid,
+                               FunctionDataDBTable.COLUMN.TID.name, tid,
+                               FunctionDataDBTable.COLUMN.FUNCNAME.name);
 
                List<String> selectColumn = new ArrayList<String>();
-               selectColumn.add(FunctionDataDBTable.FUNCNAME);
+               selectColumn.add(FunctionDataDBTable.COLUMN.FUNCNAME.name);
 
                DBTable table = KernelDataManager.getInstance().getFunctionDataTable();
 
index fc6ee07..01dc543 100644 (file)
@@ -28,6 +28,7 @@ package org.tizen.dynamicanalyzer.ui.timeline;
 
 import java.util.List;
 
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.swap.logparser.ReadBlockingQueue;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineChartManager;
@@ -53,7 +54,7 @@ public class CPUDBInserter implements Runnable {
                if (inserterThread != null && inserterThread.isAlive()) {
                        try {
                                sendNotify();
-                               inserterThread.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);
+                               inserterThread.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
@@ -83,9 +84,7 @@ public class CPUDBInserter implements Runnable {
        }
 
        public static void sendNotify() {
-               synchronized (cpuDataQueue) {
-                   cpuDataQueue.notifyAll();
-               }
+           cpuDataQueue.wake();
        }
 
 }
index fa7848d..07e7b42 100644 (file)
@@ -28,63 +28,63 @@ package org.tizen.dynamicanalyzer.ui.timeline;
 
 import java.util.List;
 
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.swap.logparser.ReadBlockingQueue;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineChartManager;
 
 public class CustomDataDBInserter implements Runnable {
-    private static ReadBlockingQueue<List<List<Object>>> customDataQueue = new ReadBlockingQueue<List<List<Object>>>();
+       private static ReadBlockingQueue<List<List<Object>>> customDataQueue = new ReadBlockingQueue<List<List<Object>>>();
 
-    private static volatile Thread inserterThread = null;
+       private static volatile Thread inserterThread = null;
 
-    public static void startThread() {
-        if (inserterThread == null || !inserterThread.isAlive()) {
-            synchronized (CustomDataDBInserter.class) {
-                if (inserterThread == null || !inserterThread.isAlive()) {
-                    inserterThread = new Thread(null,
-                            new CustomDataDBInserter());
-                    inserterThread.start();
-                }
-            }
-        }
-    }
+       public static void startThread() {
+               if (inserterThread == null || !inserterThread.isAlive()) {
+                       synchronized (CustomDataDBInserter.class) {
+                               if (inserterThread == null || !inserterThread.isAlive()) {
+                                       inserterThread = new Thread(null,
+                                                       new CustomDataDBInserter());
+                                       inserterThread.start();
+                               }
+                       }
+               }
+       }
 
-    public static void stopThread() {
-        if (inserterThread != null && inserterThread.isAlive()) {
-            try {
-                sendNotify();
-                inserterThread.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-        }
-    }
+       public static void stopThread() {
+               if (inserterThread != null && inserterThread.isAlive()) {
+                       try {
+                               sendNotify();
+                               inserterThread.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);
+                       } catch (InterruptedException e) {
+                               e.printStackTrace();
+                       }
+               }
+       }
 
-    public static void pushContextData(List<List<Object>> data) {
-        customDataQueue.offer(data);
-    }
+       public static void pushContextData(List<List<Object>> data) {
+               customDataQueue.offer(data);
+       }
 
-    public static void clear() {
-        stopThread();
-    }
+       public static void clear() {
+               stopThread();
+       }
 
-    @Override
-    public void run() {
-        while (!AnalyzerManager.isExit()) {
-            List<List<Object>> customData = customDataQueue.poll();
-            
-            if (customData != null && customData.size() != 0) {
-                    for (int i = 0; i < customData.size(); i++) {
-                        List<Object> row = customData.get(i);
-                    }
-                TimelineChartManager.getInstance().getCustomDataTable().insertData(customData);
-            }
-        }
-    }
+       @Override
+       public void run() {
+               while (!AnalyzerManager.isExit()) {
+                       List<List<Object>> customData = customDataQueue.poll();
 
-    public static void sendNotify() {
-        synchronized (customDataQueue) {
-            customDataQueue.notifyAll();
-        }
-    }
+                       if (customData != null && customData.size() != 0) {
+                               for (int i = 0; i < customData.size(); i++) {
+                                       List<Object> row = customData.get(i);
+                               }
+                               TimelineChartManager.getInstance().getCustomDataTable()
+                                               .insertData(customData);
+                       }
+               }
+       }
+
+       public static void sendNotify() {
+               customDataQueue.wake();
+       }
 }
index 8e534e8..8181906 100644 (file)
@@ -28,6 +28,7 @@ package org.tizen.dynamicanalyzer.ui.timeline;
 
 import java.util.List;
 
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.swap.logparser.ReadBlockingQueue;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineChartManager;
@@ -53,7 +54,7 @@ public class EnergyDataDBInserter implements Runnable {
                if (inserterThread != null && inserterThread.isAlive()) {
                        try {
                                sendNotify();
-                               inserterThread.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);
+                               inserterThread.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
@@ -83,8 +84,6 @@ public class EnergyDataDBInserter implements Runnable {
        }
 
        public static void sendNotify() {
-               synchronized (energyDataQueue) {
-                   energyDataQueue.notifyAll();
-               }
+           energyDataQueue.wake();
        }
 }
index 2d51ab5..4158dd0 100644 (file)
@@ -28,6 +28,7 @@ package org.tizen.dynamicanalyzer.ui.timeline;
 
 import java.util.List;
 
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.swap.logparser.ReadBlockingQueue;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineChartManager;
@@ -53,7 +54,7 @@ public class ProcessDataDBInserter implements Runnable {
                if (inserterThread != null && inserterThread.isAlive()) {
                        try {
                                sendNotify();
-                               inserterThread.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);
+                               inserterThread.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
@@ -83,9 +84,7 @@ public class ProcessDataDBInserter implements Runnable {
        }
 
        public static void sendNotify() {
-               synchronized (processDataQueue) {
-                   processDataQueue.notifyAll();
-               }
+           processDataQueue.wake();
        }
 
 }
index df7a0bb..486293d 100644 (file)
@@ -28,6 +28,7 @@ package org.tizen.dynamicanalyzer.ui.timeline;
 
 import java.util.List;
 
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.swap.logparser.ReadBlockingQueue;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineChartManager;
@@ -53,7 +54,7 @@ public class ScreenShotDBInserter implements Runnable {
                if (inserterThread != null && inserterThread.isAlive()) {
                        try {
                                sendNotify();
-                               inserterThread.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);
+                               inserterThread.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
@@ -61,7 +62,7 @@ public class ScreenShotDBInserter implements Runnable {
        }
 
        public static void pushContextData(List<List<Object>> data) {
-               screenShotDataQueue.offer(data);
+               screenShotDataQueue.offer(data);
        }
 
        public static void clear() {
@@ -72,21 +73,19 @@ public class ScreenShotDBInserter implements Runnable {
        public void run() {
                while (!AnalyzerManager.isExit()) {
                        List<List<Object>> screenShotData = screenShotDataQueue.poll();
-                       
+
                        if (screenShotData != null && screenShotData.size() != 0) {
-                               for (int i = 0; i < screenShotData.size(); i++) {
-                                   List<Object> row = screenShotData.get(i);
-                               }
-                               TimelineChartManager.getInstance().getScreenShotTable().insertData(screenShotData);
+                               for (int i = 0; i < screenShotData.size(); i++) {
+                                       List<Object> row = screenShotData.get(i);
+                               }
+                               TimelineChartManager.getInstance().getScreenShotTable()
+                                               .insertData(screenShotData);
                        }
                }
        }
 
        public static void sendNotify() {
-               synchronized (screenShotDataQueue) {
-                   screenShotDataQueue.notifyAll();
-               }
+               screenShotDataQueue.wake();
        }
 
 }
-
index 51b5788..2d5d1d4 100644 (file)
@@ -28,6 +28,7 @@ package org.tizen.dynamicanalyzer.ui.timeline;
 
 import java.util.List;
 
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.swap.logparser.ReadBlockingQueue;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineChartManager;
@@ -53,7 +54,7 @@ public class SystemDataDBInserter implements Runnable {
                if (inserterThread != null && inserterThread.isAlive()) {
                        try {
                                sendNotify();
-                               inserterThread.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);
+                               inserterThread.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
@@ -61,7 +62,7 @@ public class SystemDataDBInserter implements Runnable {
        }
 
        public static void pushContextData(List<List<Object>> data) {
-           systemDataQueue.offer(data);
+               systemDataQueue.offer(data);
        }
 
        public static void clear() {
@@ -72,13 +73,13 @@ public class SystemDataDBInserter implements Runnable {
        public void run() {
                while (!AnalyzerManager.isExit()) {
                        List<List<Object>> contextData = systemDataQueue.poll();
-                       
+
                        if (contextData != null && contextData.size() != 0) {
-                               for (int i = 0; i < contextData.size(); i++) {
-                                   List<Object> row = contextData.get(i);
-//                                 System.err.print("Count : " + row.size() + ", ");
-                               }
-//                             System.err.println("\n----------------------------");
+                               for (int i = 0; i < contextData.size(); i++) {
+                                       List<Object> row = contextData.get(i);
+                                       // System.err.print("Count : " + row.size() + ", ");
+                               }
+                               // System.err.println("\n----------------------------");
                                TimelineChartManager.getInstance().getSystemDataTable()
                                                .insertData(contextData);
                        }
@@ -86,9 +87,7 @@ public class SystemDataDBInserter implements Runnable {
        }
 
        public static void sendNotify() {
-               synchronized (systemDataQueue) {
-                   systemDataQueue.notifyAll();
-               }
+               systemDataQueue.wake();
        }
 
 }
index 7ca42d0..55aa0d4 100644 (file)
@@ -38,7 +38,7 @@ public class SystemDataDBTable extends DBTable {
        private static final String TABLENAME = "TIMELINE_SYSTEM_DATA";
 
        public static enum COLUMN {
-               TIME,
+       TIME,
                CPU_LOAD_APP,
                CPU_LOAD_TOTAL,
                PROCESS_COUNT,
index 79c97cb..05c7059 100644 (file)
@@ -28,6 +28,7 @@ package org.tizen.dynamicanalyzer.ui.timeline;
 
 import java.util.List;
 
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.swap.logparser.ReadBlockingQueue;
 import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineChartManager;
@@ -41,8 +42,7 @@ public class UIEventDBInserter implements Runnable {
                if (inserterThread == null || !inserterThread.isAlive()) {
                        synchronized (UIEventDBInserter.class) {
                                if (inserterThread == null || !inserterThread.isAlive()) {
-                                       inserterThread = new Thread(null,
-                                                       new UIEventDBInserter());
+                                       inserterThread = new Thread(null, new UIEventDBInserter());
                                        inserterThread.start();
                                }
                        }
@@ -53,7 +53,7 @@ public class UIEventDBInserter implements Runnable {
                if (inserterThread != null && inserterThread.isAlive()) {
                        try {
                                sendNotify();
-                               inserterThread.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);
+                               inserterThread.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
@@ -61,7 +61,7 @@ public class UIEventDBInserter implements Runnable {
        }
 
        public static void pushContextData(List<List<Object>> data) {
-           uiEventDataQueue.offer(data);
+               uiEventDataQueue.offer(data);
        }
 
        public static void clear() {
@@ -72,20 +72,19 @@ public class UIEventDBInserter implements Runnable {
        public void run() {
                while (!AnalyzerManager.isExit()) {
                        List<List<Object>> uiEventData = uiEventDataQueue.poll();
-                       
+
                        if (uiEventData != null && uiEventData.size() != 0) {
-                               for (int i = 0; i < uiEventData.size(); i++) {
-                                   List<Object> row = uiEventData.get(i);
-                               }
-                               TimelineChartManager.getInstance().getUIEventTable().insertData(uiEventData);
+                               for (int i = 0; i < uiEventData.size(); i++) {
+                                       List<Object> row = uiEventData.get(i);
+                               }
+                               TimelineChartManager.getInstance().getUIEventTable()
+                                               .insertData(uiEventData);
                        }
                }
        }
 
        public static void sendNotify() {
-               synchronized (uiEventDataQueue) {
-                   uiEventDataQueue.notifyAll();
-               }
+               uiEventDataQueue.wake();
        }
 
 }
index 9c5f990..463fa7e 100644 (file)
@@ -57,7 +57,7 @@ public class OpenTraceInputReader implements Runnable {
                if (null != openTraceInputThread && openTraceInputThread.isAlive()) {
                        try {
                                openTraceInputThread
-                                               .join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);
+                                               .join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
index bce201c..73d62b3 100644 (file)
@@ -27,6 +27,7 @@
 
 package org.tizen.dynamicanalyzer.uirecorder;
 
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.util.DALogger;
 
@@ -76,7 +77,7 @@ public class UIRecorderTool {
                        try {
                                sendNotify();
                                DA_LOG.debug("record thread join wait!");
-                               recordThread.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);
+                               recordThread.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                                DA_LOG.debug("record thread join interrupted!");
@@ -87,7 +88,7 @@ public class UIRecorderTool {
                        try {
                                playThread.interrupt();
                                DA_LOG.debug("replay thread join wait!");
-                               playThread.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME);
+                               playThread.join(AnalyzerConstants.THREAD_JOIN_WAIT_TIME);
                                DA_LOG.debug("replay thread join successed!");
                        } catch (InterruptedException e) {
                                e.printStackTrace();