package org.tizen.dynamicanalyzer.ui.timeline.dlog;\r
\r
import java.util.ArrayList;\r
-import java.util.Collections;\r
import java.util.List;\r
+import java.util.regex.Pattern;\r
\r
import org.eclipse.nebula.widgets.grid.Grid;\r
import org.eclipse.nebula.widgets.grid.GridItem;\r
import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite;\r
import org.tizen.dynamicanalyzer.ui.widgets.table.DATableDataFormat;\r
import org.tizen.dynamicanalyzer.ui.widgets.table.DefaultTableComparator;\r
+import org.tizen.dynamicanalyzer.ui.widgets.table.TableColumnSizePackListener;\r
import org.tizen.dynamicanalyzer.util.WorkbenchUtil;\r
import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;\r
import org.tizen.dynamicanalyzer.utils.Formatter;\r
import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotIntervalMarker;\r
import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoard;\r
+import org.tizen.sdblib.util.StringUtil;\r
\r
public class DlogTable extends DATableComposite {\r
\r
private String[] columnNames = {"Time", "Level", "Pid", "Tid", "Tag", "Message" }; //6col\r
- private int[] columnSizes = { 80, 60, 70, 70, 100, 1200};\r
- private int[] columnAlignment = { SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT };\r
+ private int[] columnSizes = { 70, 50, 60, 60, 80, 600};\r
+ private int[] columnAlignment = { SWT.CENTER, SWT.CENTER, SWT.CENTER, SWT.CENTER, SWT.LEFT, SWT.LEFT };\r
private boolean[] columnVisibility = { true, true, true, true, true, true };\r
- private int[] sortTypes = { AnalyzerConstants.SORT_TYPE_NONE, AnalyzerConstants.SORT_TYPE_NONE, AnalyzerConstants.SORT_TYPE_NONE,\r
- AnalyzerConstants.SORT_TYPE_NONE,AnalyzerConstants.SORT_TYPE_NONE, AnalyzerConstants.SORT_TYPE_NONE };\r
+ private int[] sortTypes = { AnalyzerConstants.SORT_TYPE_NUM, AnalyzerConstants.SORT_TYPE_STRING, AnalyzerConstants.SORT_TYPE_NUM,\r
+ AnalyzerConstants.SORT_TYPE_NUM,AnalyzerConstants.SORT_TYPE_STRING, AnalyzerConstants.SORT_TYPE_STRING };\r
\r
private List<TableInput> tableClone = new ArrayList<TableInput>();\r
private List<TableInput> filteredDlog = new ArrayList<TableInput>();\r
private static boolean isFilter = false;\r
public DlogTable(Composite parent, int compStyle, int tableStyle) {\r
- // TODO Auto-generated constructor stub\r
super(parent, compStyle, tableStyle);\r
- \r
+\r
setSortTypes(sortTypes);\r
+ setColumnAlignment(columnAlignment);\r
setColumns(columnNames);\r
setColumnSize(columnSizes);\r
setColumnVisibility(columnVisibility);\r
- setColumnAlignment(columnAlignment);\r
- setComparator(new DefaultTableComparator());\r
- \r
- //setDataType(FunctionEntryDBTable.COLUMN.START_TIME.index); \r
- //setContextMenu(AnalyzerConstants.CONTEXT_TABLE_RANGE);\r
- initDlogListeners();\r
+ \r
+ setComparator(new DefaultTableComparator()); \r
+\r
+ parent.addControlListener(new TableColumnSizePackListener(this, columnSizes));\r
+\r
+ initDlogListeners(); \r
}\r
\r
public boolean initDlogListeners(){\r
@Override\r
protected List<TableInput> makeTableInput() {\r
List<TableInput> output = new ArrayList<TableInput>();\r
+ if(Global.getProject() == null) {\r
+ return output;\r
+ }\r
+ \r
+ if(Global.getProject().isSaveProject() == false) {\r
+ if(!DLogDataManager.getInstance().getDlogKill()){\r
+ return output;\r
+ } \r
+ }\r
+ \r
List<DADlogData> dlogData = new ArrayList<DADlogData>();\r
\r
dlogData = DLogDataManager.getInstance().parserDlogs();\r
\r
String strTime = Formatter.toTimeFormat(data.getTime());\r
text.add(strTime);\r
- tabledata.add(data.getTime());\r
+ tabledata.add(convertTimeStringToLong(strTime));\r
\r
text.add(data.getLevel());\r
tabledata.add(data.getLevel());\r
\r
text.add(data.getPid());\r
- tabledata.add(data.getPid());\r
+ try {\r
+ tabledata.add(Integer.parseInt(data.getPid()));\r
+ }\r
+ catch (Exception ex) {\r
+ tabledata.add(data.getPid());\r
+ }\r
\r
text.add(data.getTid());\r
- tabledata.add(data.getTid());\r
+ try {\r
+ tabledata.add(Integer.parseInt(data.getTid()));\r
+ }\r
+ catch (Exception ex) {\r
+ tabledata.add(data.getTid());\r
+ }\r
\r
text.add(data.getTag());\r
tabledata.add(data.getTag());\r
tableClone = output;\r
return output;\r
}\r
- \r
- @Override\r
- public void updateTable() {\r
- if(Global.getProject().isSaveProject() == false) {\r
- if(!DLogDataManager.getInstance().getDlogKill()){\r
- return;\r
- } \r
- }\r
- \r
- List<TableInput> output = null;\r
- output = makeTableInput();\r
- \r
- if (null == output) {\r
- return;\r
- }\r
-\r
- table.removeAll();\r
- \r
- if (null != comparator) {\r
- Collections.sort(output, comparator);\r
- }\r
- \r
- List<Integer> selectionList = new ArrayList<Integer>();\r
- boolean isSelectionItem = false;\r
- int focusIndex = -1;\r
- int size = output.size();\r
-\r
- for (int i = 0; i < size; i++) {\r
- GridItem gridItem = new GridItem(table, SWT.NONE);\r
- DATableDataFormat gridData = (DATableDataFormat) output.get(i).getData();\r
- gridItem.setData(gridData);\r
-\r
- List<String> text = output.get(i).getText();\r
- int columnCount = text.size();\r
- for (int index = 0; index < columnCount; index++) {\r
- String textData = text.get(index);\r
- if (null != textData) {\r
- gridItem.setText(index, text.get(index));\r
- }\r
- }\r
-\r
- if (output.get(i).isInRange() && output.get(i).isSecondSelection()) {\r
- gridItem.setBackground(intersectColor);\r
- } else if (output.get(i).isSecondSelection()) {\r
- gridItem.setBackground(secondSelectionColor);\r
- } else if (output.get(i).isInRange()) {\r
- gridItem.setBackground(rangeColor);\r
- }\r
-\r
- if (gridData != null) {\r
- long seqNum = gridData.getSelectionKey();\r
-\r
- if (-1 != focusSeq && seqNum == focusSeq) {\r
- focusIndex = i;\r
- }\r
- }\r
- }\r
-\r
- int[] sels = new int[selectionList.size()];\r
- for (int i = 0; i < selectionList.size(); i++) {\r
- sels[i] = selectionList.get(i);\r
- }\r
-\r
- if (isSelectionItem) {\r
- table.setSelection(sels);\r
- if (table.isFocusControl() && focusIndex > 0) {\r
- table.setFocusItem(table.getItem(focusIndex));\r
- }\r
- }\r
- table.update();\r
- }\r
\r
private void filteringDlog(String input){\r
\r
UICommonConstants.RANGE_MARKER_INDEX)).setInterval(startTime,\r
endTime);\r
}\r
+ \r
+ private long convertTimeStringToLong(String timestring) {\r
+ long timelong = 0;\r
+ Pattern pattern = Pattern.compile("(\\d+):(\\d{2}).(\\d{3})");\r
+ String[] matches = StringUtil.split(timestring, pattern);\r
+ \r
+ if (matches == null || matches.length != 3)\r
+ return timelong;\r
+ try{\r
+ long min = Long.parseLong(matches[0]) * 60 * 1000;\r
+ long sec = Long.parseLong(matches[1]) * 1000;\r
+ long millsec = Long.parseLong(matches[2]); \r
+ timelong = min + sec + millsec;\r
+ \r
+ return timelong;\r
+ }\r
+ catch (Exception ex){\r
+ return 0;\r
+ }\r
+ }\r
+ \r
}\r