Summary : add index column setting to the Memory allocation / free DB table and apply... 13/26713/1
authorseokgil.kang <seokgil.kang@samsung.com>
Thu, 28 Aug 2014 07:28:52 +0000 (16:28 +0900)
committerseokgil.kang <seokgil.kang@samsung.com>
Thu, 28 Aug 2014 07:28:52 +0000 (16:28 +0900)
Change-Id: Id2d0dd4ceaf5501b50c4f0e10268e8f441df34bd
Signed-off-by: seokgil.kang <seokgil.kang@samsung.com>
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/SummaryLabels.properties
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/SummaryDataManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/FreeDataDBTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakDataDBTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakDataMaker.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/MemoryAllocationDataDBTable.java

index ed9264d..aed2329 100644 (file)
@@ -54,7 +54,7 @@ LEAK_VIEW_INDEX=\#
 LEAK_VIEW_NAME=API
 LEAK_VIEW_PID=PID
 LEAK_VIEW_RETURN=Return
-LEAK_VIEW_TIME=Time
+LEAK_VIEW_TIME=Alloc Time
 LEAK_VIEW_TYPE=Category
 
 SUMMARY_PAGE_CALLSTACK_TITLE=Callstack
index fbe9a3b..4d07ac1 100644 (file)
@@ -147,9 +147,9 @@ public class SummaryDataManager extends PageDataManager {
                
                for (int i = 0; i < size; i++) {
                        List<Object> iLeakData = leakDataList.get(i);
-                       int seqNum = (Integer) iLeakData.get(LeakDataDBTable.COLUMN_INDEX_SEQUENCE_NUMBER);
-                       long allocValue = (Long) iLeakData.get(LeakDataDBTable.COLUMN_INDEX_ALLOCATED_VALUE);
-                       int pid = (Integer) iLeakData.get(LeakDataDBTable.COLUMN_INDEX_PROCESS_ID);
+                       int seqNum = (Integer) iLeakData.get(LeakDataDBTable.COLUMN.SEQUENCE_NUMBER.index);
+                       long allocValue = (Long) iLeakData.get(LeakDataDBTable.COLUMN.ALLOCATED_VALUE.index);
+                       int pid = (Integer) iLeakData.get(LeakDataDBTable.COLUMN.PROCESS_ID.index);
                        CurrentLeakData newLeakData = new CurrentLeakData(seqNum, allocValue, pid); 
                        leakDetector.addCurrentLeakData(newLeakData);
                }
index e34d5db..fdbf7e7 100644 (file)
@@ -37,17 +37,21 @@ import org.tizen.dynamicanalyzer.database.DBTable;
 public class FreeDataDBTable extends DBTable {
        private static final String TABLENAME = "FreeData";
        
-       public static final String SEQUENCE_NUMBER = DBConstants.DBCOLUMN_SEQUENCE_NUMBER;
-       public static final String PROCESS_ID = DBConstants.DBCOLUMN_PROCESS_ID;
-       public static final String MESSAGE_ID = "MESSAGE_ID";
-       public static final String FREE_TIME = "FREE_TIME";
-       public static final String ALLOCATED_ADDRESS = "ALLOCATED_ADDRESS";
-       
-       public final static int COLUMN_INDEX_SEQUENCE_NUMBER = 0;
-       public final static int COLUMN_INDEX_PROCESS_ID = 1;
-       public final static int COLUMN_INDEX_FREE_TIME = 2;
-       public final static int COLUMN_INDEX_MESSAGE_ID = 3;
-       public final static int COLUMN_INDEX_ALLOCATED_ADDRESS = 4;
+       public enum COLUMN {
+               SEQUENCE_NUMBER(0, DBConstants.DBCOLUMN_SEQUENCE_NUMBER),
+               PROCESS_ID(1, DBConstants.DBCOLUMN_PROCESS_ID),
+               MESSAGE_ID(2, "MESSAGE_ID"),
+               FREE_TIME(3, "FREE_TIME"),
+               ALLOCATED_ADDRESS(4, "ALLOCATED_ADDRESS");
+               
+               public final int index;
+               public final String name;
+               
+               COLUMN(int index, String name) {
+                       this.index = index;
+                       this.name = name;
+               }
+       }
        
        @Override
        public String getTableName() {
@@ -55,11 +59,17 @@ public class FreeDataDBTable extends DBTable {
        }
        
        public FreeDataDBTable() {
-               addColumn(new DBColumn(SEQUENCE_NUMBER, DBConstants.PRIMARY_KEY, DBConstants.DBTYPE_INT4));
-               addColumn(new DBColumn(PROCESS_ID, DBConstants.NOT_NULL, DBConstants.DBTYPE_INT4));
-               addColumn(new DBColumn(MESSAGE_ID, DBConstants.NOT_NULL, DBConstants.DBTYPE_INT4));
-               addColumn(new DBColumn(FREE_TIME, DBConstants.NOT_NULL, DBConstants.DBTYPE_LONG)); // default:0
-               addColumn(new DBColumn(ALLOCATED_ADDRESS, DBConstants.NOT_NULL, DBConstants.DBTYPE_LONG));
+               addColumn(new DBColumn(COLUMN.SEQUENCE_NUMBER.name, DBConstants.PRIMARY_KEY,
+                               DBConstants.DBTYPE_INT4));
+               addColumn(new DBColumn(COLUMN.PROCESS_ID.name, DBConstants.NOT_NULL,
+                               DBConstants.DBTYPE_INT4));
+               addColumn(new DBColumn(COLUMN.MESSAGE_ID.name, DBConstants.NOT_NULL,
+                               DBConstants.DBTYPE_INT4));
+               addColumn(new DBColumn(COLUMN.FREE_TIME.name, DBConstants.NOT_NULL, DBConstants.DBTYPE_LONG)); // default:0
+               addColumn(new DBColumn(COLUMN.ALLOCATED_ADDRESS.name, DBConstants.NOT_NULL,
+                               DBConstants.DBTYPE_LONG));
+               setIndexColumn(COLUMN.PROCESS_ID.index);
+               setIndexColumn(COLUMN.FREE_TIME.index);
        }
 
        @Override
@@ -71,11 +81,11 @@ public class FreeDataDBTable 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.setLong(4, (Long) (rowData.get(3)));
-                               prep.setLong(5, (Long) (rowData.get(4)));
+                               prep.setInt(1, (Integer) (rowData.get(COLUMN.SEQUENCE_NUMBER.index)));
+                               prep.setInt(2, (Integer) (rowData.get(COLUMN.PROCESS_ID.index)));
+                               prep.setInt(3, (Integer) (rowData.get(COLUMN.MESSAGE_ID.index)));
+                               prep.setLong(4, (Long) (rowData.get(COLUMN.FREE_TIME.index)));
+                               prep.setLong(5, (Long) (rowData.get(COLUMN.ALLOCATED_ADDRESS.index)));
                        } catch (SQLException e) {
                                e.printStackTrace();
                                isPrepared = false;
index e6d9e30..0fd1241 100644 (file)
@@ -37,18 +37,27 @@ import org.tizen.dynamicanalyzer.database.DBTable;
 public class LeakDataDBTable extends DBTable {
        private static final String TABLENAME = "LeakData";
        
-       public static final String SEQUENCE_NUMBER = DBConstants.DBCOLUMN_SEQUENCE_NUMBER; 
-       public static final String ALLOCATED_VALUE = "ALLOCATED_VALUE";
-       public static final String PROCESS_ID = DBConstants.DBCOLUMN_PROCESS_ID;
-       
-       public final static int COLUMN_INDEX_SEQUENCE_NUMBER = 0;
-       public final static int COLUMN_INDEX_ALLOCATED_VALUE = 0;
-       public final static int COLUMN_INDEX_PROCESS_ID = 0;
+       public enum COLUMN {
+               SEQUENCE_NUMBER(0, DBConstants.DBCOLUMN_SEQUENCE_NUMBER),
+               ALLOCATED_VALUE(1, "ALLOCATED_VALUE"),
+               PROCESS_ID(2, DBConstants.DBCOLUMN_PROCESS_ID);
+               
+               public final int index;
+               public final String name;
+
+               COLUMN(int index, String name) {
+                       this.index = index;
+                       this.name = name;
+               }
+       }
        
        public LeakDataDBTable() {
-               addColumn(new DBColumn(SEQUENCE_NUMBER, DBConstants.PRIMARY_KEY, DBConstants.DBTYPE_INT4));
-               addColumn(new DBColumn(ALLOCATED_VALUE, DBConstants.NOT_NULL, DBConstants.DBTYPE_LONG));        
-               addColumn(new DBColumn(PROCESS_ID, DBConstants.NOT_NULL, DBConstants.DBTYPE_INT4));
+               addColumn(new DBColumn(COLUMN.SEQUENCE_NUMBER.name, DBConstants.PRIMARY_KEY,
+                               DBConstants.DBTYPE_INT4));
+               addColumn(new DBColumn(COLUMN.ALLOCATED_VALUE.name, DBConstants.NOT_NULL,
+                               DBConstants.DBTYPE_LONG));
+               addColumn(new DBColumn(COLUMN.PROCESS_ID.name, DBConstants.NOT_NULL,
+                               DBConstants.DBTYPE_INT4));
        }
 
        @Override
@@ -60,9 +69,9 @@ public class LeakDataDBTable extends DBTable {
                        isPrepared = false;
                } else {
                        try {
-                               prep.setInt(1, (Integer) (rowData.get(0)));
-                               prep.setLong(2, (Long) (rowData.get(1)));
-                               prep.setInt(3, (Integer) (rowData.get(2)));
+                               prep.setInt(1, (Integer) (rowData.get(COLUMN.SEQUENCE_NUMBER.index)));
+                               prep.setLong(2, (Long) (rowData.get(COLUMN.ALLOCATED_VALUE.index)));
+                               prep.setInt(3, (Integer) (rowData.get(COLUMN.PROCESS_ID.index)));
                        } catch (SQLException e) {
                                e.printStackTrace();
                                isPrepared = false;
index 0072cb6..1ed4ac6 100644 (file)
@@ -55,7 +55,6 @@ import org.tizen.dynamicanalyzer.widgets.da.base.DADialog;
 public class LeakDataMaker {
        private static final String query_withSeq = "where %s = %s";
        private static final String query_withSeqList = "where %s in (";
-       private static final String query_addOrderby = " order by %s";
        private static final String query_withTimeAndPid = "where %s = %s and %s >= %s and %s <= %s order by %s";
 
        private ArrayList<List<Object>> memoryAllocDataList;
@@ -243,21 +242,21 @@ public class LeakDataMaker {
        }
 
        public List<List<Object>> getAllocationDataFromDB(int seq) {
-               String where = String.format(query_withSeq, MemoryAllocationDataDBTable.SEQUENCE_NUMBER,
-                               seq);
+               String where = String.format(query_withSeq,
+                               MemoryAllocationDataDBTable.COLUMN.SEQUENCE_NUMBER.name, seq);
                DBTable table = SummaryDataManager.getInstance().getMemoryAllocationDataDBTable();
                List<String> columns = new ArrayList<String>();
-               columns.add(MemoryAllocationDataDBTable.SEQUENCE_NUMBER);
-               columns.add(MemoryAllocationDataDBTable.PROCESS_ID);
-               columns.add(MemoryAllocationDataDBTable.API_ID);
-               columns.add(MemoryAllocationDataDBTable.API_TYPE);
-               columns.add(MemoryAllocationDataDBTable.ALLOCATED_ADDRESS);
-               columns.add(MemoryAllocationDataDBTable.ALLOCATED_TIME);
-               columns.add(MemoryAllocationDataDBTable.CALLER_PC_ADDRESS);
-               columns.add(MemoryAllocationDataDBTable.ARGUMENT);
-               columns.add(MemoryAllocationDataDBTable.RETURN_VALUE);
-               columns.add(MemoryAllocationDataDBTable.CALLER_LIBRARY_NAME);
-               columns.add(MemoryAllocationDataDBTable.MESSAGE_ID);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.SEQUENCE_NUMBER.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.PROCESS_ID.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.API_ID.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.API_TYPE.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.ALLOCATED_ADDRESS.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.ALLOCATED_TIME.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.CALLER_PC_ADDRESS.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.ARGUMENT.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.RETURN_VALUE.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.CALLER_LIBRARY_NAME.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.MESSAGE_ID.name);
 
                return table.selectData(columns, where);
        }
@@ -265,38 +264,35 @@ public class LeakDataMaker {
        public List<List<Object>> getLeakDataFromDB() {
                DBTable table = SummaryDataManager.getInstance().getLeakDataDBTable();
                List<String> columns = new ArrayList<String>();
-               columns.add(LeakDataDBTable.SEQUENCE_NUMBER);
-               columns.add(LeakDataDBTable.ALLOCATED_VALUE);
-               columns.add(LeakDataDBTable.PROCESS_ID);
+               columns.add(LeakDataDBTable.COLUMN.SEQUENCE_NUMBER.name);
+               columns.add(LeakDataDBTable.COLUMN.ALLOCATED_VALUE.name);
+               columns.add(LeakDataDBTable.COLUMN.PROCESS_ID.name);
                
                return table.selectData(columns, null);
        }
 
        public List<List<Object>> getLeakDataWithSeq(List<Integer> leakSequenceNumbers) {
                String where = String
-                               .format(query_withSeqList, MemoryAllocationDataDBTable.SEQUENCE_NUMBER);
-               String orderby = String
-                               .format(query_addOrderby, MemoryAllocationDataDBTable.ALLOCATED_TIME);
+                               .format(query_withSeqList, MemoryAllocationDataDBTable.COLUMN.SEQUENCE_NUMBER.name);
                int size = leakSequenceNumbers.size();
                for (int i = 0; i < size - 1; i++) {
                        where += String.valueOf(leakSequenceNumbers.get(i)) + ", ";
                }
                where += String.valueOf(leakSequenceNumbers.get(size - 1)) + ")";
-               where += orderby;
 
                DBTable table = SummaryDataManager.getInstance().getMemoryAllocationDataDBTable();
                List<String> columns = new ArrayList<String>();
-               columns.add(MemoryAllocationDataDBTable.SEQUENCE_NUMBER);
-               columns.add(MemoryAllocationDataDBTable.PROCESS_ID);
-               columns.add(MemoryAllocationDataDBTable.API_ID);
-               columns.add(MemoryAllocationDataDBTable.API_TYPE);
-               columns.add(MemoryAllocationDataDBTable.ALLOCATED_ADDRESS);
-               columns.add(MemoryAllocationDataDBTable.ALLOCATED_TIME);
-               columns.add(MemoryAllocationDataDBTable.CALLER_PC_ADDRESS);
-               columns.add(MemoryAllocationDataDBTable.ARGUMENT);
-               columns.add(MemoryAllocationDataDBTable.RETURN_VALUE);
-               columns.add(MemoryAllocationDataDBTable.CALLER_LIBRARY_NAME);
-               columns.add(MemoryAllocationDataDBTable.MESSAGE_ID);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.SEQUENCE_NUMBER.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.PROCESS_ID.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.API_ID.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.API_TYPE.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.ALLOCATED_ADDRESS.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.ALLOCATED_TIME.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.CALLER_PC_ADDRESS.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.ARGUMENT.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.RETURN_VALUE.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.CALLER_LIBRARY_NAME.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.MESSAGE_ID.name);
 
                return table.selectData(columns, where);
        }
@@ -341,10 +337,10 @@ public class LeakDataMaker {
                        for (int j = 0; j < allocDataSize; j++) {
                                List<Object> iAllocData = allocData.get(j);
                                long allocatedTime = (Long) iAllocData
-                                               .get(MemoryAllocationDataDBTable.COLUMN_INDEX_ALLOCATED_TIME);
+                                               .get(MemoryAllocationDataDBTable.COLUMN.ALLOCATED_TIME.index);
                                if (allocatedTime <= freeTime) {
                                        if (address == (Long) iAllocData
-                                                       .get(MemoryAllocationDataDBTable.COLUMN_INDEX_ALLOCATED_ADDRESS)) {
+                                                       .get(MemoryAllocationDataDBTable.COLUMN.ALLOCATED_ADDRESS.index)) {
                                                allocData.remove(j);
                                                break;
                                        }
@@ -359,37 +355,40 @@ public class LeakDataMaker {
 
        private List<List<Object>> getAllocationDataWithPidFromDBForRange(Long startTime, Long endTime,
                        int pid) {
-               String where = String.format(query_withTimeAndPid, MemoryAllocationDataDBTable.PROCESS_ID,
-                               Integer.valueOf(pid).toString(), MemoryAllocationDataDBTable.ALLOCATED_TIME,
-                               startTime.toString(), MemoryAllocationDataDBTable.ALLOCATED_TIME,
-                               endTime.toString(), MemoryAllocationDataDBTable.ALLOCATED_TIME);
+               String where = String.format(query_withTimeAndPid,
+                               MemoryAllocationDataDBTable.COLUMN.PROCESS_ID.name,
+                               Integer.valueOf(pid).toString(),
+                               MemoryAllocationDataDBTable.COLUMN.ALLOCATED_TIME.name, startTime.toString(),
+                               MemoryAllocationDataDBTable.COLUMN.ALLOCATED_TIME.name, endTime.toString(),
+                               MemoryAllocationDataDBTable.COLUMN.ALLOCATED_TIME.name);
                DBTable table = SummaryDataManager.getInstance().getMemoryAllocationDataDBTable();
                List<String> columns = new ArrayList<String>();
-               columns.add(MemoryAllocationDataDBTable.SEQUENCE_NUMBER);
-               columns.add(MemoryAllocationDataDBTable.PROCESS_ID);
-               columns.add(MemoryAllocationDataDBTable.API_ID);
-               columns.add(MemoryAllocationDataDBTable.API_TYPE);
-               columns.add(MemoryAllocationDataDBTable.ALLOCATED_ADDRESS);
-               columns.add(MemoryAllocationDataDBTable.ALLOCATED_TIME);
-               columns.add(MemoryAllocationDataDBTable.CALLER_PC_ADDRESS);
-               columns.add(MemoryAllocationDataDBTable.ARGUMENT);
-               columns.add(MemoryAllocationDataDBTable.RETURN_VALUE);
-               columns.add(MemoryAllocationDataDBTable.CALLER_LIBRARY_NAME);
-               columns.add(MemoryAllocationDataDBTable.MESSAGE_ID);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.SEQUENCE_NUMBER.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.PROCESS_ID.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.API_ID.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.API_TYPE.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.ALLOCATED_ADDRESS.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.ALLOCATED_TIME.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.CALLER_PC_ADDRESS.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.ARGUMENT.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.RETURN_VALUE.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.CALLER_LIBRARY_NAME.name);
+               columns.add(MemoryAllocationDataDBTable.COLUMN.MESSAGE_ID.name);
 
                return table.selectData(columns, where);
        }
 
        private List<List<Object>> getFreeDataWithPidFromDBForRange(Long startTime, Long endTime,
                        int pid) {
-               String where = String.format(query_withTimeAndPid, FreeDataDBTable.PROCESS_ID, Integer
-                               .valueOf(pid).toString(), FreeDataDBTable.FREE_TIME, startTime.toString(),
-                               FreeDataDBTable.FREE_TIME, endTime.toString(), FreeDataDBTable.FREE_TIME);
+               String where = String.format(query_withTimeAndPid, FreeDataDBTable.COLUMN.PROCESS_ID.name,
+                               Integer.valueOf(pid).toString(), FreeDataDBTable.COLUMN.FREE_TIME.name,
+                               startTime.toString(), FreeDataDBTable.COLUMN.FREE_TIME.name, endTime.toString(),
+                               FreeDataDBTable.COLUMN.FREE_TIME.name);
                DBTable table = SummaryDataManager.getInstance().getFreeDataDBTable();
                List<String> columns = new ArrayList<String>();
-               columns.add(FreeDataDBTable.PROCESS_ID);
-               columns.add(FreeDataDBTable.FREE_TIME);
-               columns.add(FreeDataDBTable.ALLOCATED_ADDRESS);
+               columns.add(FreeDataDBTable.COLUMN.PROCESS_ID.name);
+               columns.add(FreeDataDBTable.COLUMN.FREE_TIME.name);
+               columns.add(FreeDataDBTable.COLUMN.ALLOCATED_ADDRESS.name);
 
                return table.selectData(columns, where);
        }
index d24b04d..cfbc555 100644 (file)
@@ -184,7 +184,7 @@ public class LeakTable extends DATreeComposite {
                int size = leakDataList.size();
                for (int i = 0; i < size; i++) {
                        List<Object> iLeakData = leakDataList.get(i);
-                       int pid = (Integer) iLeakData.get(MemoryAllocationDataDBTable.COLUMN_INDEX_PROCESS_ID);
+                       int pid = (Integer) iLeakData.get(MemoryAllocationDataDBTable.COLUMN.PROCESS_ID.index);
                        if (selectedPid != 0) {
                                if (selectedPid != pid) {
                                        continue;
@@ -212,28 +212,26 @@ public class LeakTable extends DATreeComposite {
                        Logger.error("very strange case !!");
                        return null;
                }
-               // 2 : sequence number
-               int seq = (Integer) leakData.get(MemoryAllocationDataDBTable.COLUMN_INDEX_SEQUENCE_NUMBER);
+               // 0 : sequence number - hidden column for sorting
+               int seq = (Integer) leakData.get(MemoryAllocationDataDBTable.COLUMN.SEQUENCE_NUMBER.index);
                text.add(Integer.toString(seq));
                data.add(seq);
-               
-               // 0 : column empty value for tree
-               int apiId = (Integer) leakData.get(MemoryAllocationDataDBTable.COLUMN_INDEX_API_ID);
+               // 1 : column empty value for tree
+               int apiId = (Integer) leakData.get(MemoryAllocationDataDBTable.COLUMN.API_ID.index);
                String apiName = FunctionNameManager.getFunctionName(apiId);
                text.add(apiName);
                data.add(apiName);
-               // 1 : pid
-               int pid = (Integer) leakData.get(MemoryAllocationDataDBTable.COLUMN_INDEX_PROCESS_ID);
+               // 2 : pid
+               int pid = (Integer) leakData.get(MemoryAllocationDataDBTable.COLUMN.PROCESS_ID.index);
                text.add(Integer.toString(pid));
                data.add(pid);
-
                // 3 : message id
-               int id = (Integer) leakData.get(MemoryAllocationDataDBTable.COLUMN_INDEX_MESSAGE_ID);
+               int id = (Integer) leakData.get(MemoryAllocationDataDBTable.COLUMN.MESSAGE_ID.index);
                String type = LogDataFactory.getLogFormatById(id).getName();
                text.add(type);
                data.add(type);
                // 4 : allocated time
-               long time = (Long) leakData.get(MemoryAllocationDataDBTable.COLUMN_INDEX_ALLOCATED_TIME);
+               long time = (Long) leakData.get(MemoryAllocationDataDBTable.COLUMN.ALLOCATED_TIME.index);
                data.add(Long.valueOf(time));
                try {
                        text.add(Formatter.toTimeFormat(time));
@@ -244,17 +242,17 @@ public class LeakTable extends DATreeComposite {
 
                tableData.setObject(apiName);
                // 5 : arguments
-               String args = (String) leakData.get(MemoryAllocationDataDBTable.COLUMN_INDEX_ARGUMENT);
+               String args = (String) leakData.get(MemoryAllocationDataDBTable.COLUMN.ARGUMENT.index);
                text.add(args);
                data.add(args);
                // 6 : return value
                String retValue = (String) leakData
-                               .get(MemoryAllocationDataDBTable.COLUMN_INDEX_RETURN_VALUE);
+                               .get(MemoryAllocationDataDBTable.COLUMN.RETURN_VALUE.index);
                text.add(retValue);
                data.add(retValue);
                // 7 : library name
                String libName = (String) leakData
-                               .get(MemoryAllocationDataDBTable.COLUMN_INDEX_CALLER_LIBRARY_NAME);
+                               .get(MemoryAllocationDataDBTable.COLUMN.CALLER_LIBRARY_NAME.index);
                if (libName == null || libName.isEmpty()) {
                        // TODO : replace another one ??
                        libName = "unknown";
@@ -262,10 +260,10 @@ public class LeakTable extends DATreeComposite {
                text.add(libName);
                data.add(libName);
                // 8 : for ToolTip Listener
-               data.add((Long) leakData.get(MemoryAllocationDataDBTable.COLUMN_INDEX_ALLOCATED_ADDRESS));
+               data.add((Long) leakData.get(MemoryAllocationDataDBTable.COLUMN.ALLOCATED_ADDRESS.index));
                // 9 : caller pc address
                long callerPcAddr = (Long) leakData
-                               .get(MemoryAllocationDataDBTable.COLUMN_INDEX_CALLER_PC_ADDRESS);
+                               .get(MemoryAllocationDataDBTable.COLUMN.CALLER_PC_ADDRESS.index);
                data.add(callerPcAddr);
 
                tableData.getData().addAll(data);
@@ -320,24 +318,24 @@ public class LeakTable extends DATreeComposite {
                }
                List<Object> idata = leakData.get(0);
                // 0 : column empty value for tree
-               int apiId = (Integer) idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_API_ID);
+               int apiId = (Integer) idata.get(MemoryAllocationDataDBTable.COLUMN.API_ID.index);
                String apiName = FunctionNameManager.getFunctionName(apiId);
                text.add(apiName);
                data.add(apiName);
                // 1 : pid
-               int pid = (Integer) idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_PROCESS_ID);
+               int pid = (Integer) idata.get(MemoryAllocationDataDBTable.COLUMN.PROCESS_ID.index);
                text.add(Integer.toString(pid));
                data.add(pid);
                // 2 : sequence number
                text.add(Integer.toString(seq));
                data.add(seq);
                // 3 : message id
-               int id = (Integer) idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_MESSAGE_ID);
+               int id = (Integer) idata.get(MemoryAllocationDataDBTable.COLUMN.MESSAGE_ID.index);
                String type = LogDataFactory.getLogFormatById(id).getName();
                text.add(type);
                data.add(type);
                // 4 : allocated time
-               long time = (Long) idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_ALLOCATED_TIME);
+               long time = (Long) idata.get(MemoryAllocationDataDBTable.COLUMN.ALLOCATED_TIME.index);
                data.add(Long.valueOf(time));
                try {
                        text.add(Formatter.toTimeFormat(time));
@@ -348,16 +346,16 @@ public class LeakTable extends DATreeComposite {
 
                tableData.setObject(apiName);
                // 5 : arguments
-               String args = (String) idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_ARGUMENT);
+               String args = (String) idata.get(MemoryAllocationDataDBTable.COLUMN.ARGUMENT.index);
                text.add(args);
                data.add(args);
                // 6 : return value
-               String retValue = (String) idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_RETURN_VALUE);
+               String retValue = (String) idata.get(MemoryAllocationDataDBTable.COLUMN.RETURN_VALUE.index);
                text.add(retValue);
                data.add(retValue);
                // 7 : library name
                String libName = (String) idata
-                               .get(MemoryAllocationDataDBTable.COLUMN_INDEX_CALLER_LIBRARY_NAME);
+                               .get(MemoryAllocationDataDBTable.COLUMN.CALLER_LIBRARY_NAME.index);
                if (libName == null || libName.isEmpty()) {
                        // TODO : replace another one ??
                        libName = "unknown";
@@ -365,10 +363,10 @@ public class LeakTable extends DATreeComposite {
                text.add(libName);
                data.add(libName);
                // 8 : for ToolTip Listener
-               data.add((Long) idata.get(MemoryAllocationDataDBTable.COLUMN_INDEX_ALLOCATED_ADDRESS));
+               data.add((Long) idata.get(MemoryAllocationDataDBTable.COLUMN.ALLOCATED_ADDRESS.index));
                // 9 : caller pc address
                long callerPcAddr = (Long) idata
-                               .get(MemoryAllocationDataDBTable.COLUMN_INDEX_CALLER_PC_ADDRESS);
+                               .get(MemoryAllocationDataDBTable.COLUMN.CALLER_PC_ADDRESS.index);
                data.add(callerPcAddr);
 
                tableData.getData().addAll(data);
index 02c4676..882a17c 100644 (file)
@@ -47,7 +47,7 @@ public class LeakView extends DAViewComposite {
                        SummaryLabels.LEAK_VIEW_TYPE, SummaryLabels.LEAK_VIEW_TIME,
                        SummaryLabels.LEAK_VIEW_FILE_PARAMETER,
                        SummaryLabels.LEAK_VIEW_RETURN, AnalyzerLabels.TABLE_COLUMN_LIBNAME };
-       protected int[] columnSizes = { 25, 150, 45, 60, 60, 100, 70, 200 };
+       protected int[] columnSizes = { 25, 150, 45, 65, 70, 100, 70, 200 };
        protected boolean[] columnVisibility = { false, true, true, true, true,
                        true, true, true };
        protected int[] sortTypes = { AnalyzerConstants.SORT_TYPE_NUM,
index d71ea44..bb765ec 100644 (file)
@@ -38,37 +38,31 @@ import org.tizen.dynamicanalyzer.database.DBTable;
 public class MemoryAllocationDataDBTable extends DBTable {
        private static final String TABLENAME = "MemoryAllocationData";
        
-       public static final String SEQUENCE_NUMBER = DBConstants.DBCOLUMN_SEQUENCE_NUMBER;
-       public static final String PROCESS_ID = DBConstants.DBCOLUMN_PROCESS_ID;
-       public static final String API_ID = "API_ID";
-       public static final String API_TYPE = "API_TYPE";
-       public static final String ALLOCATED_ADDRESS = "ALLOCATED_ADDRESS";
-       public static final String ALLOCATED_TIME = "ALLOCATED_TIME";
-       public static final String CALLER_PC_ADDRESS = DBConstants.DBCOLUMN_CALLER_PC_ADDRESS;
-       public static final String ARGUMENT = DBConstants.DBCOLUMN_ARGUMENT;
-       public static final String RETURN_VALUE = DBConstants.DBCOLUMN_RETURN_VALUE;
-       public static final String CALLER_LIBRARY_NAME = DBConstants.DBCOLUMN_CALLER_LIBRARY_NAME;
-       public static final String MESSAGE_ID = "MESSAGE_ID";
-       public static final String THREAD_ID = DBConstants.DBCOLUMN_THREAD_ID;
-       public static final String ALLOCATED_MEMORY_SIZE = "ALLOCATED_MEMORY_SIZE";
-//     public static final String MEMORY_ALLOCATION_KEY = "Key";
-//     public static final String MEMORY_ALLOCATION_PARENT_KEY = "parentKey";
-       
-       public final static int COLUMN_INDEX_SEQUENCE_NUMBER = 0;
-       public final static int COLUMN_INDEX_PROCESS_ID = 1;
-       public final static int COLUMN_INDEX_API_ID = 2;
-       public final static int COLUMN_INDEX_API_TYPE = 3;
-       public final static int COLUMN_INDEX_ALLOCATED_ADDRESS = 4;
-       public final static int COLUMN_INDEX_ALLOCATED_TIME = 5;
-       public final static int COLUMN_INDEX_CALLER_PC_ADDRESS = 6;
-       public final static int COLUMN_INDEX_ARGUMENT = 7;
-       public final static int COLUMN_INDEX_RETURN_VALUE = 8;
-       public final static int COLUMN_INDEX_CALLER_LIBRARY_NAME = 9;
-       public final static int COLUMN_INDEX_MESSAGE_ID = 10;
-       public final static int COLUMN_INDEX_THREAD_ID = 11;
-       public final static int COLUMN_INDEX_ALLOCATED_MEMORY_SIZE = 12;
-//     public final static int COLUMN_INDEX_MEMORY_ALLOCATION_KEY = 13;
-//     public final static int COLUMN_INDEX_MEMORY_ALLOCATION_PARENT_KEY = 14;
+       public enum COLUMN {
+               SEQUENCE_NUMBER(0, DBConstants.DBCOLUMN_SEQUENCE_NUMBER),
+               PROCESS_ID(1, DBConstants.DBCOLUMN_PROCESS_ID),
+               API_ID(2, "API_ID"),
+               API_TYPE(3, "API_TYPE"),
+               ALLOCATED_ADDRESS(4, "ALLOCATED_ADDRESS"),
+               ALLOCATED_TIME(5, "ALLOCATED_TIME"),
+               CALLER_PC_ADDRESS(6, DBConstants.DBCOLUMN_CALLER_PC_ADDRESS),
+               ARGUMENT(7, DBConstants.DBCOLUMN_ARGUMENT),
+               RETURN_VALUE(8, DBConstants.DBCOLUMN_RETURN_VALUE),
+               CALLER_LIBRARY_NAME(9, DBConstants.DBCOLUMN_CALLER_LIBRARY_NAME),
+               MESSAGE_ID(10, "MESSAGE_ID"),
+               THREAD_ID(11, DBConstants.DBCOLUMN_THREAD_ID),
+               ALLOCATED_MEMORY_SIZE(12, "ALLOCATED_MEMORY_SIZE");
+               // MEMORY_ALLOCATION_KEY(13, "MEMORY_ALLOCATION_KEY"),
+               // MEMORY_ALLOCATION_PARENT_KEY(14, "MEMORY_ALLOCATION_PARENT_KEY");
+
+               public final int index;
+               public final String name;
+
+               COLUMN(int index, String name) {
+                       this.index = index;
+                       this.name = name;
+               }
+       }
        
        @Override
        public String getTableName() {
@@ -76,24 +70,35 @@ public class MemoryAllocationDataDBTable extends DBTable {
        }
        
        public MemoryAllocationDataDBTable() {
-               addColumn(new DBColumn(SEQUENCE_NUMBER, DBConstants.PRIMARY_KEY, DBConstants.DBTYPE_INT4));
-               addColumn(new DBColumn(PROCESS_ID, DBConstants.NOT_NULL, DBConstants.DBTYPE_INT4));
-               addColumn(new DBColumn(API_ID, DBConstants.NOT_NULL, DBConstants.DBTYPE_INT4));
-               addColumn(new DBColumn(API_TYPE, DBConstants.NOT_NULL, DBConstants.DBTYPE_INT4));
-               addColumn(new DBColumn(ALLOCATED_ADDRESS, DBConstants.NOT_NULL, DBConstants.DBTYPE_LONG)); // default:-1
-               addColumn(new DBColumn(ALLOCATED_TIME, DBConstants.NOT_NULL, DBConstants.DBTYPE_LONG));
-               addColumn(new DBColumn(CALLER_PC_ADDRESS, DBConstants.EMPTY, DBConstants.DBTYPE_LONG));
-               addColumn(new DBColumn(ARGUMENT, DBConstants.EMPTY, DBConstants.DBTYPE_VARCHAR,
+               addColumn(new DBColumn(COLUMN.SEQUENCE_NUMBER.name, DBConstants.PRIMARY_KEY,
+                               DBConstants.DBTYPE_INT4));
+               addColumn(new DBColumn(COLUMN.PROCESS_ID.name, DBConstants.NOT_NULL,
+                               DBConstants.DBTYPE_INT4));
+               addColumn(new DBColumn(COLUMN.API_ID.name, DBConstants.NOT_NULL, DBConstants.DBTYPE_INT4));
+               addColumn(new DBColumn(COLUMN.API_TYPE.name, DBConstants.NOT_NULL, DBConstants.DBTYPE_INT4));
+               addColumn(new DBColumn(COLUMN.ALLOCATED_ADDRESS.name, DBConstants.NOT_NULL,
+                               DBConstants.DBTYPE_LONG)); // default:-1
+               addColumn(new DBColumn(COLUMN.ALLOCATED_TIME.name, DBConstants.NOT_NULL,
+                               DBConstants.DBTYPE_LONG));
+               addColumn(new DBColumn(COLUMN.CALLER_PC_ADDRESS.name, DBConstants.EMPTY,
+                               DBConstants.DBTYPE_LONG));
+               addColumn(new DBColumn(COLUMN.ARGUMENT.name, DBConstants.EMPTY, DBConstants.DBTYPE_VARCHAR,
                                DALimit.FUNCTION_ARGUMENTS_VALUE_LENGTH));
-               addColumn(new DBColumn(RETURN_VALUE, DBConstants.EMPTY, DBConstants.DBTYPE_VARCHAR,
-                               DALimit.FUNCTION_ARGUMENTS_FORMAT_LENGTH));
-               addColumn(new DBColumn(CALLER_LIBRARY_NAME, DBConstants.NOT_NULL,
+               addColumn(new DBColumn(COLUMN.RETURN_VALUE.name, DBConstants.EMPTY,
+                               DBConstants.DBTYPE_VARCHAR, DALimit.FUNCTION_ARGUMENTS_FORMAT_LENGTH));
+               addColumn(new DBColumn(COLUMN.CALLER_LIBRARY_NAME.name, DBConstants.NOT_NULL,
                                DBConstants.DBTYPE_VARCHAR, DALimit.FUNCTION_NAME_LENGTH));
-               addColumn(new DBColumn(MESSAGE_ID, DBConstants.NOT_NULL, DBConstants.DBTYPE_INT4));
-               addColumn(new DBColumn(THREAD_ID, DBConstants.NOT_NULL, DBConstants.DBTYPE_INT4));
-               addColumn(new DBColumn(ALLOCATED_MEMORY_SIZE, DBConstants.NOT_NULL, DBConstants.DBTYPE_LONG));
-//             addColumn(new DBColumn(MEMORY_ALLOCATION_KEY, DBConstants.NOT_NULL, DBConstants.INTEGER));
-//             addColumn(new DBColumn(MEMORY_ALLOCATION_PARENT_KEY, DBConstants.NOT_NULL, DBConstants.INTEGER));
+               addColumn(new DBColumn(COLUMN.MESSAGE_ID.name, DBConstants.NOT_NULL,
+                               DBConstants.DBTYPE_INT4));
+               addColumn(new DBColumn(COLUMN.THREAD_ID.name, DBConstants.NOT_NULL, DBConstants.DBTYPE_INT4));
+               addColumn(new DBColumn(COLUMN.ALLOCATED_MEMORY_SIZE.name, DBConstants.NOT_NULL,
+                               DBConstants.DBTYPE_LONG));
+               // addColumn(new DBColumn(COLUMN.MEMORY_ALLOCATION_KEY.name,
+               // DBConstants.NOT_NULL, DBConstants.INTEGER));
+               // addColumn(new DBColumn(COLUMN.MEMORY_ALLOCATION_PARENT_KEY.name,
+               // DBConstants.NOT_NULL, DBConstants.INTEGER));
+               setIndexColumn(COLUMN.PROCESS_ID.index);
+               setIndexColumn(COLUMN.ALLOCATED_ADDRESS.index);
        }
 
        @Override
@@ -105,21 +110,21 @@ public class MemoryAllocationDataDBTable 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.setString(8, (String) (rowData.get(7)));
-                               prep.setString(9, (String) (rowData.get(8)));
-                               prep.setString(10, (String) (rowData.get(9)));
-                               prep.setInt(11, (Integer) (rowData.get(10)));
-                               prep.setInt(12, (Integer) (rowData.get(11)));
-                               prep.setLong(13, (Long) (rowData.get(12)));
-//                             prep.setInt(13, (Integer) (rowData.get(13)));
-//                             prep.setInt(14, (Integer) (rowData.get(14)));
+                               prep.setInt(1, (Integer) (rowData.get(COLUMN.SEQUENCE_NUMBER.index)));
+                               prep.setInt(2, (Integer) (rowData.get(COLUMN.PROCESS_ID.index)));
+                               prep.setInt(3, (Integer) (rowData.get(COLUMN.API_ID.index)));
+                               prep.setInt(4, (Integer) (rowData.get(COLUMN.API_TYPE.index)));
+                               prep.setLong(5, (Long) (rowData.get(COLUMN.ALLOCATED_ADDRESS.index)));
+                               prep.setLong(6, (Long) (rowData.get(COLUMN.ALLOCATED_TIME.index)));
+                               prep.setLong(7, (Long) (rowData.get(COLUMN.CALLER_PC_ADDRESS.index)));
+                               prep.setString(8, (String) (rowData.get(COLUMN.ARGUMENT.index)));
+                               prep.setString(9, (String) (rowData.get(COLUMN.RETURN_VALUE.index)));
+                               prep.setString(10, (String) (rowData.get(COLUMN.CALLER_LIBRARY_NAME.index)));
+                               prep.setInt(11, (Integer) (rowData.get(COLUMN.MESSAGE_ID.index)));
+                               prep.setInt(12, (Integer) (rowData.get(COLUMN.THREAD_ID.index)));
+                               prep.setLong(13, (Long) (rowData.get(COLUMN.ALLOCATED_MEMORY_SIZE.index)));
+//                             prep.setInt(13, (Integer) (rowData.get(COLUMN.MEMORY_ALLOCATION_KEY.index)));
+//                             prep.setInt(14, (Integer) (rowData.get(COLUMN.MEMORY_ALLOCATION_PARENT_KEY.index)));
                        } catch (SQLException e) {
                                e.printStackTrace();
                                isPrepared = false;