From 375a5cc98c0caaca6ad1cd35697ff0b1fb8a233e Mon Sep 17 00:00:00 2001 From: "hyeran74.kim" Date: Tue, 8 Jul 2014 11:23:20 +0900 Subject: [PATCH] File : add a null check and move some classes to other folder Change-Id: Ib71855b57e10c5720f3ff6fbe9505c0230ab327e Signed-off-by: hyeran74.kim --- .../dynamicanalyzer/ui/file/FileApiListTable.java | 49 +- .../dynamicanalyzer/ui/file/FileApiListView.java | 125 ++--- .../ui/file/{view => }/FileChart.java | 2 +- .../ui/file/{view => }/FileChartBoard.java | 11 +- .../dynamicanalyzer/ui/file/FileChartData.java | 625 --------------------- .../ui/file/FileChartDataEvent.java | 159 ------ .../dynamicanalyzer/ui/file/FileChartManager.java | 116 ---- .../dynamicanalyzer/ui/file/FileChartView.java | 145 ++--- .../dynamicanalyzer/ui/file/FileDataMaker.java | 600 -------------------- .../ui/file/FileDetailInfoView.java | 50 +- .../tizen/dynamicanalyzer/ui/file/FilePage.java | 1 + .../ui/file/view/FileApiListTable.java | 257 --------- .../ui/file/view/FileApiListView.java | 203 ------- .../ui/file/view/FileChartView.java | 247 -------- .../ui/file/view/FileDetailInfoView.java | 214 ------- 15 files changed, 200 insertions(+), 2604 deletions(-) rename org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/{view => }/FileChart.java (99%) rename org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/{view => }/FileChartBoard.java (95%) delete mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartData.java delete mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartDataEvent.java delete mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartManager.java delete mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileDataMaker.java delete mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileApiListTable.java delete mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileApiListView.java delete mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileChartView.java delete mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileDetailInfoView.java diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileApiListTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileApiListTable.java index 006829a..0287cd9 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileApiListTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileApiListTable.java @@ -4,8 +4,7 @@ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. * * Contact: - * Hyunjong Park - * yeongtaik byeon + * Hyeran kim * Juyoung Kim * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -47,7 +46,12 @@ import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; import org.tizen.dynamicanalyzer.ui.widgets.table.DAApiListTableComposite; import org.tizen.dynamicanalyzer.ui.widgets.table.DATableDataFormat; import org.tizen.dynamicanalyzer.utils.Formatter; +import org.tizen.dynamicanalyzer.ui.file.FilePage; +import org.tizen.dynamicanalyzer.ui.file.manager.FileChartManager; +import org.tizen.dynamicanalyzer.ui.file.model.FileEvent; + +// TODO: contains a lot legacy code, need to refatoring this class public class FileApiListTable extends DAApiListTableComposite { public FileApiListTable(Composite parent, int compStyle, int tableStyle) { super(parent, compStyle, tableStyle); @@ -78,7 +82,6 @@ public class FileApiListTable extends DAApiListTableComposite { endTime = itemTime; } } - DASelectionData selData = new DASelectionData( FilePage.apilistViewID, startTime, endTime, items, table); @@ -96,22 +99,19 @@ public class FileApiListTable extends DAApiListTableComposite { FileApiListView view = (FileApiListView) AnalyzerManager .getCurrentPage().getView(FilePage.apilistViewID); - FileChartData data = view.getPageData(); - if (null == data) { - return null; - } - long rangeStartTime = view.getRangeStartTime(); long rangeEndTime = view.getRangeEndTime(); - - List input = new ArrayList(); - List contents = data.getContents(); + HashMap findStartAPITableIndexHashMap = new HashMap(); List removeTableIndex = new ArrayList(); - FileChartDataEvent content; + List input = new ArrayList(); + + List contents = FileChartManager.getInstance().getSelectedTableAPIList(); + if(contents == null) { + return null; + } for (int i = 0; i < contents.size(); i++) { - content = contents.get(i); - FileData contentTemp = content.getContents(); + FileEvent contentTemp = contents.get(i); int selectedPid = ToolbarArea.getInstance().getSelectedPid(); if (selectedPid != 0) { if (selectedPid != contentTemp.getPid()) { @@ -122,12 +122,12 @@ public class FileApiListTable extends DAApiListTableComposite { List contentData = new ArrayList(); Integer startLogIndex = 0; - int fdApiType = contentTemp.getFdApiType(); + int fdApiType = contentTemp.getApiType(); - int seq = contentTemp.getSeq(); + int seq = contentTemp.getSeqNo(); contentText.add(0, Integer.toString(seq)); contentData.add(Integer.toString(seq)); - long time = contentTemp.getTime(); + long time = contentTemp.getEventTime(); boolean isExistStartTimeLog = false; if (fdApiType == LogCenterConstants.FD_API_TYPE_READ_START @@ -147,8 +147,7 @@ public class FileApiListTable extends DAApiListTableComposite { contentData.add(input.get(startLogIndex.intValue()) .getText().get(1)); - long startTime = contents.get(startLogIndex.intValue()) - .getContents().getTime(); + long startTime = contents.get(startLogIndex.intValue()).getEventTime(); String timeFormat = Formatter .toTimeFormat(time - startTime); String removeTimeFormat = timeFormat.replace( @@ -161,8 +160,8 @@ public class FileApiListTable extends DAApiListTableComposite { removeTableIndex.add(startLogIndex.intValue()); } else { contentText.add(Formatter.toTimeFormat(contentTemp - .getTime())); // start// - contentData.add(Long.toString(contentTemp.getTime())); + .getEventTime())); // start// + contentData.add(Long.toString(contentTemp.getEventTime())); contentText.add("00.000");//$NON-NLS-1$ contentData.add("00.000");//$NON-NLS-1$ } @@ -187,11 +186,11 @@ public class FileApiListTable extends DAApiListTableComposite { contentText.add(contentTemp.getArgs()); contentData.add(contentTemp.getArgs()); - contentText.add(contentTemp.getReturn()); - contentData.add(contentTemp.getReturn()); + contentText.add(contentTemp.getReturnVal()); + contentData.add(contentTemp.getReturnVal()); String errMsg = ErrorCodeManager.getInatance() - .getErrorCode(contentTemp.getErrno()).name(); + .getErrorCode(contentTemp.getErrNo()).name(); if (null == errMsg) { errMsg = "undefined error code"; //$NON-NLS-1$ } @@ -201,7 +200,7 @@ public class FileApiListTable extends DAApiListTableComposite { contentData.add(Long.toString(contentTemp.getFileSize())); DATableDataFormat tableData = new DATableDataFormat( - contentTemp.getSeq()); + contentTemp.getSeqNo()); tableData.setLogData(contentTemp); tableData.getData().addAll(contentData); TableInput tableInput = new TableInput(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileApiListView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileApiListView.java index cc104cf..f9bf575 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileApiListView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileApiListView.java @@ -4,8 +4,7 @@ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. * * Contact: - * Hyunjong Park - * yeongtaik byeon + * Hyeran kim * Juyoung Kim * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -27,30 +26,39 @@ package org.tizen.dynamicanalyzer.ui.file; -import org.eclipse.nebula.widgets.grid.Grid; +import java.util.List; + import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.tizen.dynamicanalyzer.common.AnalyzerConstants; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.DASelectionData; import org.tizen.dynamicanalyzer.nl.FilePageLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; -import org.tizen.dynamicanalyzer.swap.model.data.LogData; +import org.tizen.dynamicanalyzer.ui.file.model.FileEvent; +import org.tizen.dynamicanalyzer.ui.file.model.FileSelectedData; import org.tizen.dynamicanalyzer.ui.range.RangeDataManager; import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; import org.tizen.dynamicanalyzer.ui.widgets.table.TableColumnSizePackListener; import org.tizen.dynamicanalyzer.widgets.da.view.DAViewComposite; import org.tizen.dynamicanalyzer.widgets.da.view.DAViewData; +import org.tizen.dynamicanalyzer.ui.file.manager.FileChartManager; +import org.tizen.dynamicanalyzer.util.DALogger; +//TODO: contains a lot legacy code, need to refatoring this class public class FileApiListView extends DAViewComposite { - private FileChartData data; + private static final DALogger DA_LOG = DALogger.getInstance(); + + // TODO: comment below variables + // TODO: remove unused variables private long analysisStartTime = 0; private long analysisEndTime = 0; - private long selectionStartTime = 0; - private long selectionEndTime = 0; private int preSelectionPId = 1; + private long preAnalysisStartTime = 0; + private long preAnalysisEndTime = 0; + private boolean isChangedSelected = true; + private FileSelectedData selectedData = null; private String[] columnNames = { FilePageLabels.FILE_API_LIST_VIEW_INDEX, FilePageLabels.FILE_API_LIST_VIEW_START_TIME, @@ -76,6 +84,7 @@ public class FileApiListView extends DAViewComposite { AnalyzerConstants.SORT_TYPE_STRING }; FileApiListTable tableComp = null; + FileChartManager manager = FileChartManager.getInstance(); public FileApiListView(Composite parent, int style) { super(parent, style, true); @@ -99,13 +108,14 @@ public class FileApiListView extends DAViewComposite { @Override public void updateView() { - if (null == data) { + if (null == tableComp || selectedData == null) { return; } long newAnalysisStartTime = 0; long newAnalysisEndTime = 0; + // TODO: comment if (RangeDataManager.getInstance().isBeingAnalyzed()) { newAnalysisStartTime = RangeDataManager.getInstance() .getAnalysisStartTime(); @@ -130,67 +140,20 @@ public class FileApiListView extends DAViewComposite { } preSelectionPId = selectedPid; - if (tableComp.getTable().getItemCount() > 0 - && data.getContents().size() != tableComp.getTable() - .getItemCount()) { - tableComp.updateTable(); - } - - } - - @Override - public void updateView(DAViewData data) { - if (!(data instanceof DASelectionData)) - return; + List events = manager.getApiDB().selectAPITable( + selectedData.getDentry(), selectedData.getPid(), + selectedData.getTid(), selectedData.isParentChart()); - DASelectionData seldata = (DASelectionData) data; - - if(seldata.isLogData()) { - Object odata = seldata.getData(); - if(!(odata instanceof LogData) || odata == null) - return; - - LogData ldata = (LogData) odata; - - int seq = ldata.getSeq(); - tableComp.updateTable(); - int nSize = tableComp.getTable().getItemCount(); - for (int ii = 0; ii < nSize; ii++) { - if (tableComp.getTable().getItem(ii).getText(0) - .equals(Integer.toString(seq))) { - tableComp.getTable().setSelection(ii); - tableComp - .getTable() - .getVerticalBar() - .setSelection( - getScrollSelectionIndex(tableComp.getTable(), - ii)); - tableComp.updateTable(); - } + if(events != null) { + if (tableComp.getTable().getItemCount() > 0 + && events.size() != tableComp.getTable().getItemCount()) { + manager.setSelectedTableAPIList(events); + tableComp.updateTable(); } - long selectedTime = ldata.getTime(); - DASelectionData selection = new DASelectionData(FilePage.apilistViewID, - selectedTime, selectedTime, - tableComp.getTable().getSelection(), tableComp.getTable()); - AnalyzerManager.getCurrentPage().updateView(selection); } else { - if (!(seldata.getData() instanceof FileChartData)) { - selectionStartTime = seldata.getStartTime(); - selectionEndTime = seldata.getEndTime(); - } else { - this.data = (FileChartData) seldata.getData(); - } - tableComp.getTable().removeAll(); - tableComp.updateTable(); - tableComp.setSelectionByTime(selectionStartTime, selectionEndTime); + DA_LOG.error("It can't find data in DB"); } - } - - private int getScrollSelectionIndex(Grid table, int selection) { - int size = table.getVerticalBar().getThumb() / 2; - int output = selection - size; - output = (output < 0) ? 0 : output; - return output; + } @Override @@ -201,11 +164,35 @@ public class FileApiListView extends DAViewComposite { @Override public void clear() { tableComp.getTable().removeAll(); - data = null; + } + + @Override + public void updateView(DAViewData data) { + DASelectionData selData = (DASelectionData) data; + long selectionStartTime = selData.getStartTime(); + long selectionEndTime = selData.getEndTime(); + if (selData.getData() instanceof FileSelectedData) { + selectedData = (FileSelectedData) selData.getData(); + if (null == selectedData) { + return; + } + manager.setSelectedTableAPIList( + manager.getApiDB(). + selectAPITable(selectedData.getDentry(), + selectedData.getPid(), + selectedData.getTid(), + selectedData.isParentChart())); + + tableComp.updateTable(); + tableComp.setSelectionByTime(selectionStartTime, + selectionEndTime); + isChangedSelected = true; + } } - public FileChartData getPageData() { - return data; + + public FileSelectedData getSelectedData() { + return selectedData; } public long getRangeStartTime() { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileChart.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChart.java similarity index 99% rename from org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileChart.java rename to org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChart.java index cb20388..02e308c 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileChart.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChart.java @@ -24,7 +24,7 @@ * */ -package org.tizen.dynamicanalyzer.ui.file.view; +package org.tizen.dynamicanalyzer.ui.file; import java.util.ArrayList; import java.util.List; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileChartBoard.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartBoard.java similarity index 95% rename from org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileChartBoard.java rename to org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartBoard.java index cf687a2..22e5e82 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileChartBoard.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartBoard.java @@ -24,7 +24,7 @@ * */ -package org.tizen.dynamicanalyzer.ui.file.view; +package org.tizen.dynamicanalyzer.ui.file; import java.util.ArrayList; import java.util.HashMap; @@ -35,8 +35,6 @@ import org.eclipse.swt.widgets.Composite; import org.tizen.dynamicanalyzer.constant.CommonConstants; import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; import org.tizen.dynamicanalyzer.nl.FilePageLabels; -import org.tizen.dynamicanalyzer.nl.NetworkPageLabels; -import org.tizen.dynamicanalyzer.nl.ThreadPageLabels; import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.FontResources; @@ -48,7 +46,6 @@ import org.tizen.dynamicanalyzer.ui.common.PopupFromSelectionMenuItemClickListen import org.tizen.dynamicanalyzer.ui.common.PopupStartMenuItemClickListener; import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseEventListener; import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseTrackAdapter; -import org.tizen.dynamicanalyzer.ui.file.FileChartData; import org.tizen.dynamicanalyzer.ui.file.data.FileApiDB; import org.tizen.dynamicanalyzer.ui.file.manager.FileChartDataMaker; import org.tizen.dynamicanalyzer.ui.file.manager.FileChartManager; @@ -56,13 +53,7 @@ import org.tizen.dynamicanalyzer.ui.file.model.FileAccess; import org.tizen.dynamicanalyzer.ui.file.model.FileEvent; import org.tizen.dynamicanalyzer.ui.file.model.FileSelectedData; import org.tizen.dynamicanalyzer.ui.file.model.FileStatus; -import org.tizen.dynamicanalyzer.ui.network.NetworkChart; -import org.tizen.dynamicanalyzer.ui.network.data.NetworkDataManager; -import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkAPIType; -import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSelectionType; -import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSeriesType; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; -import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; import org.tizen.dynamicanalyzer.widgets.chart.DAChart; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotIntervalMarker; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartData.java deleted file mode 100644 index 12f5a1e..0000000 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartData.java +++ /dev/null @@ -1,625 +0,0 @@ -/* - * Dynamic Analyzer - * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: - * Hyunjong Park - * yeongtaik byeon - * Juyoung Kim - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Contributors: - * - S-Core Co., Ltd - * - */ - -package org.tizen.dynamicanalyzer.ui.file; - -import java.util.ArrayList; -import java.util.List; - -import org.tizen.dynamicanalyzer.common.AnalyzerManager; -import org.tizen.dynamicanalyzer.constant.CommonConstants; -import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; -import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; -import org.tizen.dynamicanalyzer.nl.FilePageLabels; -import org.tizen.dynamicanalyzer.resources.ColorResources; -import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData; -import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; -import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; -import org.tizen.dynamicanalyzer.util.DALogger; -import org.tizen.dynamicanalyzer.widgets.chart.DAChart; -import org.tizen.dynamicanalyzer.widgets.chart.DAChartSeries; -import org.tizen.dynamicanalyzer.widgets.chart.DAChartSeriesItem; -import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardItem; - -public class FileChartData { - private static final DALogger DA_LOG = DALogger.getInstance(); - - private List children = new ArrayList(); - private DAChartSeries apiSeries; - private DAChartSeries accessSeries; - private DAChartSeries statueSeries; - - private long fd = -1; - private String filePath = AnalyzerLabels.EMPTY_STRING; - private boolean isClosedFile = true; - private boolean isFailedAPI = false; - // for Detail View Data - private List failedData = null; - private long fileSize = 0; - private long readSize = 0; - private long writeSize = 0; - private double fileOpendTime = 0; - private double fileClosedTime = 0; - private double fileLastUsedTime = 0; - private double fileTotalUsedTime = 0; - - protected DAChartBoardItem item; - protected List contents = new ArrayList(); - protected List contentsQueue = new ArrayList(); - - protected DAChart chart; - protected boolean hasUpdate = false; - - // private int lastAccessIndexForParent = 0; - - public FileChartData(String filePath, long Fd, boolean isRoot) { - setFilePath(filePath); - setFd(Fd); - } - - public void pushChild(FileChartData data) { - children.add(data); - hasUpdate = true; - } - - public DAChartBoardItem getItem() { - return item; - } - - public DAChart getChart() { - return chart; - } - - public void setChart(DAChart chart) { - this.chart = chart; - } - - public void pushEvent(FileChartDataEvent event) { - contentsQueue.add(event); - makeDetailViewData(event); - hasUpdate = true; - } - - public void makeDetailViewData(FileChartDataEvent event) { - setFileSize(event.getFileSize()); - setReadSize(event.getReadSize()); - setWriteSize(event.getWriteSize()); - if (event.getFailedData() != null) { - getFailedData().add(event.getFailedData()); - } - } - - public List getFailedData() { - if (null == failedData) { - failedData = new ArrayList(); - } - return failedData; - } - - public List getFailedRelations() { - List output = new ArrayList(); - int size = getFailedData().size(); - for (int i = 0; i < size; i++) { - FailedData ffd = failedData.get(i); - int seq = ffd.getSeq(); - output.add(seq); - } - return output; - } - - public void setHasUpdate() { - hasUpdate = true; - } - - public List getContents() { - return contents; - } - - public int getChildCount() { - return children.size(); - } - - public List getChild() { - return children; - } - - public long getFD() { - return fd; - } - - public void setFd(long data) { - this.fd = data; - } - - public void setClosed(boolean data) { - this.isClosedFile = data; - } - - public boolean isClosed(FileChartDataEvent event) { - if (event == null) { - return this.isClosedFile; - } - if (isParent()) { - this.isClosedFile = true; - for (int i = 0; i < children.size(); i++) { - - double fileOpendTime = children.get(i).getFileOpendTime(); - double fileClosedTime = children.get(i).getFileClosedTime(); - if (event.getApiChartTime() == fileOpendTime) { - this.isClosedFile = true; - break; - } - if (event.getApiChartTime() < fileOpendTime) { - continue; - } - if ((event.getApiChartTime() > fileClosedTime) - && (fileClosedTime != 0)) { - continue; - } - if (fileClosedTime == 0) { - if (!children.get(i).isClosed(null)) { - this.isClosedFile = false; - break; - } - } - if (fileOpendTime < event.getApiChartTime() - && event.getApiChartTime() < fileClosedTime) { - this.isClosedFile = false; - break; - } - } - return this.isClosedFile; - } - return this.isClosedFile; - } - - public boolean isFileOpenFailed() { - if (isParent()) { - this.isClosedFile = true; - for (int i = 0; i < children.size(); i++) { - if (!children.get(i).isFileOpenFailed()) { - return false; - } - } - return true; - } else { - return isFailedAPI; - } - } - - public void setFileOpenFailed(boolean data) { - this.isFailedAPI = data; - } - - public void setFilePath(String name) { - this.filePath = name; - } - - public String getFilePath() { - return filePath; - } - - public String getFileName() { - String[] splitPath = this.filePath.split("\\/"); //$NON-NLS-1$ - String fileName = new String(splitPath[splitPath.length - 1]); - return fileName; - } - - public int getFailedApiCount() { - return getFailedData().size(); - } - - public int getApiCount() { - return getContents().size(); - } - - public void setFileSize(long data) { - if (data > 0) { - this.fileSize = data; - } - } - - public long getFileSize() { - return this.fileSize; - } - - public void setReadSize(long data) { - this.readSize += data; - } - - public long getReadSize() { - return this.readSize; - } - - public void setWriteSize(long data) { - this.writeSize += data; - } - - public long getWriteSize() { - return this.writeSize; - } - - private boolean isParent() { - boolean isParent = false; - if (children.size() > 0) { - isParent = true; - } else { - isParent = false; - } - return isParent; - } - - public FileChartData findChildData(FileChartDataEvent event) { - int size = children.size(); - FileChartData ret; - for (int i = 0; i < size; i++) { - ret = children.get(i); - if ((ret.getFD() == event.getFd()) - && (ret.isClosed(event) == false)) { - return ret; - } - } - return null; - } - - public void setItem(DAChartBoardItem item) { - this.item = item; - setChart(item.getChart()); - apiSeries = chart.getSeries(FilePageLabels.FILE_CHART_API); - accessSeries = chart.getSeries(FilePageLabels.FILE_CHART_ACCESS); - statueSeries = chart.getSeries(FilePageLabels.FILE_CHART_SERIES); - - } - - public void checkUpdate() { - if (false == hasUpdate && AnalyzerManager.isRunning()) { - return; - } else { - hasUpdate = false; - } - - int size = contentsQueue.size(); - FileChartDataEvent event = null; - if (size > 0) { - for (int i = 0; i < size; i++) { - event = contentsQueue.get(0); - setStatusColor(event); - getContents().add(event); - createChartItem(event); - contentsQueue.remove(0); - } - chart.redraw(); - } - - size = children.size(); - if (size > 0) { - FileChartData data; - for (int i = 0; i < size; i++) { - data = children.get(i); - data.checkUpdate(); - } - } - - if (!AnalyzerManager.isRunning()) { - if (isParent() && (event == null)) { - for (int i = 0; i < size; i++) { - if ((!children.get(i).isClosed(null)) - && (children.get(i).getFD() != -1)) { - setNotClosedFileStatus(); - break; - } - } - } else { - if (!isClosed(event)) { - setNotClosedFileStatus(); - } - } - } - } - - private void setStatusColor(FileChartDataEvent event) { - if ((isFileOpenFailed()) == true || (event.isFailedAPI() == true)) { - return; - } - if (event.getApiType() == LogCenterConstants.FD_API_TYPE_OPEN) { - if (isParent()) { - if (isClosed(event)) { - setOpendFileStatus(event); - } - } else { - setOpendFileStatus(event); - } - } else if (event.getApiType() == LogCenterConstants.FD_API_TYPE_CLOSE) { - if (isParent()) { - if (isClosed(event)) { - setClosedFileStatus(event); - } - } else { - setClosedFileStatus(event); - } - } - } - - private void setOpendFileStatus(FileChartDataEvent event) { - DAChartSeriesItem seriesItem = new DAChartSeriesItem( - event.getApiChartTime(), - DAChartSeriesItem.SERIES_STATE_CONTINUE, - ColorResources.FILE_AREA_USED_END, - ColorResources.FILE_AREA_USED_START, - FilePageLabels.FILE_CHART_TOOLTIP_OPEND); - statueSeries.addSeriesItem(seriesItem); - } - - private void setClosedFileStatus(FileChartDataEvent event) { - int nStatusLastIndex = statueSeries.getSeriesItemList().size() - 1; - if (nStatusLastIndex > -1) { - statueSeries.getSeriesItemList().get(nStatusLastIndex) - .setColor(ColorResources.FILE_AREA_CLOSED_END); - statueSeries - .getSeriesItemList() - .get(nStatusLastIndex) - .setGradationForegroundColor( - ColorResources.FILE_AREA_CLOSED_START); - DAChartSeriesItem seriesItem = new DAChartSeriesItem( - event.getApiChartTime(), - DAChartSeriesItem.SERIES_STATE_BAR, - ColorResources.FILE_AREA_CLOSED_END, - ColorResources.FILE_AREA_CLOSED_START, - FilePageLabels.FILE_CHART_TOOLTIP_CLOSED); - seriesItem.setBarWidth(0); - statueSeries.addSeriesItem(seriesItem); - statueSeries.getSeriesItemList().get(nStatusLastIndex) - .setTooltipText(FilePageLabels.FILE_CHART_TOOLTIP_CLOSED); - } - } - - private void setNotClosedFileStatus() { - int nStatusLastIndex = statueSeries.getSeriesItemList().size() - 1; - if (nStatusLastIndex > -1) { - statueSeries.getSeriesItemList().get(nStatusLastIndex) - .setColor(ColorResources.FILE_AREA_NOT_ACCESS_END); - statueSeries - .getSeriesItemList() - .get(nStatusLastIndex) - .setGradationForegroundColor( - ColorResources.FILE_AREA_NOT_ACCESS_START); - statueSeries.getSeriesItemList().get(nStatusLastIndex) - .setTooltipText(FilePageLabels.FILE_CHART_TOOLTIP_OPEND); - } - } - - protected int createChartItem(FileChartDataEvent event) { - DAChartSeriesItem seriesItem = null; - DAChartSeriesItem accessItem = null; - int apiType = event.getApiType(); - if (event.isFailedAPI() == true) { - seriesItem = new DAChartSeriesItem(event.getApiChartTime(), - DAChartSeriesItem.SERIES_STATE_BAR, - ColorResources.FILE_API_FAILED, event.getTooltipContent()); - apiSeries.addSeriesItem(seriesItem); - return apiType; - } - switch (apiType) { - case LogCenterConstants.FD_API_TYPE_OPEN: - seriesItem = new DAChartSeriesItem(event.getApiChartTime(), - DAChartSeriesItem.SERIES_STATE_BAR, - ColorResources.FILE_API_USED, event.getTooltipContent()); - break; - case LogCenterConstants.FD_API_TYPE_CLOSE: - seriesItem = new DAChartSeriesItem(event.getApiChartTime(), - DAChartSeriesItem.SERIES_STATE_BAR, - ColorResources.FILE_API_USED, event.getTooltipContent()); - break; - case LogCenterConstants.FD_API_TYPE_READ_START: - seriesItem = new DAChartSeriesItem(event.getApiChartTime(), - DAChartSeriesItem.SERIES_STATE_BAR, - ColorResources.FILE_API_USED, event.getTooltipContent()); - accessItem = new DAChartSeriesItem(event.getApiChartTime(), - event.getApiChartTime(), ColorResources.FILE_ACCESS_READ, - event.getTooltipContent()); - break; - case LogCenterConstants.FD_API_TYPE_READ_END: - setAccessSeriesEnd(accessSeries.getSeriesItemList().size() - 1, - event.getApiChartTime()); - break; - case LogCenterConstants.FD_API_TYPE_WRITE_START: - seriesItem = new DAChartSeriesItem(event.getApiChartTime(), - DAChartSeriesItem.SERIES_STATE_BAR, - ColorResources.FILE_API_USED, event.getTooltipContent()); - accessItem = new DAChartSeriesItem(event.getApiChartTime(), - event.getApiChartTime(), ColorResources.FILE_ACCESS_WRITE, - event.getTooltipContent()); - break; - case LogCenterConstants.FD_API_TYPE_WRITE_END: - setAccessSeriesEnd(accessSeries.getSeriesItemList().size() - 1, - event.getApiChartTime()); - break; - - case LogCenterConstants.FD_API_TYPE_OTHERS: - seriesItem = new DAChartSeriesItem(event.getApiChartTime(), - DAChartSeriesItem.SERIES_STATE_BAR, - ColorResources.FILE_API_USED, event.getTooltipContent()); - break; - default: - DA_LOG.debug("createChartItem : no case FileChartDataEvent"); - return -1; - } - if (seriesItem != null) { - apiSeries.addSeriesItem(seriesItem); - } - if (accessItem != null) { - accessSeries.addSeriesItem(accessItem); - } - - return apiType; - } - - public void setAccessSeriesEnd(int lastIndex, double endTime) { - if (lastIndex < 0) { - return; - } - accessSeries.getSeriesItemList().get(lastIndex).setY(endTime); - } - - public void setFileOpendTime(double data) { - this.fileOpendTime = data; - } - - public double getFileOpendTime() { - return this.fileOpendTime / TimelineConstants.MEGA_DOUBLE; - } - - public void setFileClosedTime(double data) { - fileClosedTime = data; - } - - public double getFileClosedTime() { - return this.fileClosedTime / TimelineConstants.MEGA_DOUBLE; - } - - public void setFileLastUsedTime(double data) { - fileLastUsedTime = data; - } - - public double getFileLastUsedTime() { - return this.fileLastUsedTime / TimelineConstants.MEGA_DOUBLE; - } - - public void setFileUsedTime(double data) { - if (this.fileOpendTime == 0) { - this.setFileTotalUsedTime(0); - } else { - this.setFileTotalUsedTime(data - this.fileOpendTime); - } - setFileLastUsedTime(data); - } - - private double parentTotalUsedTime() { - List totalUsedTimeList = new ArrayList(); - boolean firstInputData = false; - double fileTotalUsedTime = 0; - FileChartData fileData; - double firstUsedTime = 0; - double lastUsedTime = 0; - for (int i = 0; i < children.size(); i++) { - fileData = children.get(i); - firstUsedTime = fileData.getFileOpendTime() - * TimelineConstants.MEGA_DOUBLE; - lastUsedTime = fileData.getFileLastUsedTime() - * TimelineConstants.MEGA_DOUBLE; - if (lastUsedTime == 0) { - continue; - } else if (!fileData.isFileOpenFailed() && firstInputData == false) { - firstInputData = true; - totalUsedTimeList - .add(Double.toString(firstUsedTime) - + CommonConstants.COLON - + Double.toString(lastUsedTime)); - } - int nLastIndex = totalUsedTimeList.size() - 1; - if (nLastIndex < 0) { - continue; - } - String data = totalUsedTimeList.get(nLastIndex); - String[] splitTimeDataList = data.split(CommonConstants.COLON); - double savedFirstUsedTime = Double - .parseDouble(splitTimeDataList[0]); - double savedLastUsedTime = Double.parseDouble(splitTimeDataList[1]); - if ((savedFirstUsedTime < firstUsedTime) - && (firstUsedTime < savedLastUsedTime) - && (savedFirstUsedTime < savedLastUsedTime) - && (savedLastUsedTime < lastUsedTime)) { - totalUsedTimeList.remove(nLastIndex); - totalUsedTimeList - .add(Double.toString(savedFirstUsedTime) - + CommonConstants.COLON - + Double.toString(lastUsedTime)); - } else if ((savedLastUsedTime < firstUsedTime) - && (savedLastUsedTime < lastUsedTime)) { - totalUsedTimeList - .add(Double.toString(firstUsedTime) - + CommonConstants.COLON - + Double.toString(lastUsedTime)); - } else if ((lastUsedTime < savedFirstUsedTime) - && (lastUsedTime < savedLastUsedTime)) { - totalUsedTimeList - .add(Double.toString(firstUsedTime) - + CommonConstants.COLON - + Double.toString(lastUsedTime)); - } - } - int nSize = totalUsedTimeList.size(); - for (int i = 0; i < nSize; i++) { - String data = totalUsedTimeList.get(i); - String[] splitTimeDataList = data.split(CommonConstants.COLON); //$NON-NLS-1$ - double savedFirstUsedTime = Double - .parseDouble(splitTimeDataList[0]); - double savedLastUsedTime = Double.parseDouble(splitTimeDataList[1]); - fileTotalUsedTime += (savedLastUsedTime - savedFirstUsedTime); - } - return fileTotalUsedTime; - } - - public double getFileTotalUseTime() { - - if (isParent()) { - double fistOpenTime = 1000000; - FileChartData fileData; - boolean isAllClosed = true; - for (int i = 0; i < children.size(); i++) { - fileData = children.get(i); - if (fileData.getFileOpendTime() < fistOpenTime) { - fistOpenTime = fileData.getFileOpendTime(); - } - if (fileData.isClosed(null) != true) { - if (isAllClosed) { - isAllClosed = false; - } - } - } - if (isAllClosed) { - return parentTotalUsedTime(); - } else { - return ToolbarArea.getInstance().getTime() - fistOpenTime; - } - } - if (isClosed(null) == true) { - return this.fileLastUsedTime - this.fileOpendTime; - } else { - return ToolbarArea.getInstance().getTime() - this.fileOpendTime; - } - } - - public double getFileTotalUsedTime() { - return fileTotalUsedTime; - } - - public void setFileTotalUsedTime(double fileTotalUsedTime) { - this.fileTotalUsedTime = fileTotalUsedTime; - } - -} \ No newline at end of file diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartDataEvent.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartDataEvent.java deleted file mode 100644 index 5a6a253..0000000 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartDataEvent.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Dynamic Analyzer - * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: - * Hyunjong Park - * yeongtaik byeon - * Juyoung Kim - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Contributors: - * - S-Core Co., Ltd - * - */ - -package org.tizen.dynamicanalyzer.ui.file; - -import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; -import org.tizen.dynamicanalyzer.swap.model.data.FileData; -import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData; -import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; - -public class FileChartDataEvent { - - private FileData contents; - private FailedData failedData = null; - - private long fd = -1; - private String filePath = AnalyzerLabels.EMPTY_STRING; - - private int apiType = -1; - private double logTime = -1; - - private long fileSize = 0; - private long readSize = 0; - private long writeSize = 0; - - private boolean isFailedAPI = false; - - private String tooltip = null; - - public FileChartDataEvent(String filePath, long fd, long time, - String tooltip, FileData contents) { - setFilePath(filePath); - setFd(fd); - setLogTime(time); - setContents(contents); - setTooltipContent(tooltip); - } - - public FileChartDataEvent(FileData contents) { - setContents(contents); - } - - public FileData getContents() { - return contents; - } - - public void setContents(FileData contents) { - this.contents = contents; - } - - public long getFd() { - return fd; - } - - public void setFd(long fd) { - this.fd = fd; - } - - public boolean isFailedAPI() { - return isFailedAPI; - } - - public void setFailedAPI() { - this.isFailedAPI = true; - } - - public int getApiType() { - return apiType; - } - - public void setApiType(int apiType) { - this.apiType = apiType; - } - - public double getLogTime() { - return logTime; - } - - public void setLogTime(double data) { - this.logTime = data; - } - - public double getApiChartTime() { - return getLogTime() / TimelineConstants.MEGA_DOUBLE; - } - - public void setFilePath(String data) { - this.filePath = data; - } - - public String getFilePath() { - return filePath; - } - - public void setFileSize(long data) { - this.fileSize = data; - this.writeSize = data; - } - - public long getFileSize() { - return this.fileSize; - } - - public void setReadSize(long data) { - this.readSize = data; - } - - public long getReadSize() { - return this.readSize; - } - - public void setWriteSize(long data) { - this.writeSize = data; - } - - public long getWriteSize() { - return this.writeSize; - } - - public void setFailedData(FailedData data) { - failedData = data; - } - - public FailedData getFailedData() { - return failedData; - } - - public String getTooltipContent() { - return tooltip; - } - - public void setTooltipContent(String tooltip) { - this.tooltip = tooltip; - } -} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartManager.java deleted file mode 100644 index 8b53edf..0000000 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartManager.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Dynamic Analyzer - * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: - * Hyunjong Park - * Jooyoul Lee - * Juyoung Kim - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Contributors: - * - S-Core Co., Ltd - * - */ - -package org.tizen.dynamicanalyzer.ui.file; - -import java.util.List; - -import org.tizen.dynamicanalyzer.common.AnalyzerManager; -import org.tizen.dynamicanalyzer.swap.channel.data.DataChannelConstants; -import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; -import org.tizen.dynamicanalyzer.swap.logparser.Logs; -import org.tizen.dynamicanalyzer.swap.logparser.PageDataManager; -import org.tizen.dynamicanalyzer.swap.model.data.LogData; - -public class FileChartManager extends PageDataManager { - private FileDataMaker fileDataMaker = null; - private static FileChartManager instance = null; - - private FileChartManager() { - fileDataMaker = new FileDataMaker(AnalyzerManager.getFailedChecker(), - AnalyzerManager.getLeakDetector(), - AnalyzerManager.getWarningChecker()); - } - - public synchronized static FileChartManager getInstance() { - if (null == instance) { - instance = new FileChartManager(); - } - return instance; - } - - public FileDataMaker getFileDataMaker() { - return fileDataMaker; - } - - public void clear() { - instance = null; - fileDataMaker.clear(); - } - - public int[] getParentChartIndex(int seq) { - int parentChartIndex = -1; - FileChartData chartData = null; - List fileChartDataLow = getFileDataMaker().getFileChartLow(); - for (int i = 0; i < fileChartDataLow.size(); i++) { - chartData = fileChartDataLow.get(i); - if (chartData.getChildCount() != 0) { - parentChartIndex++; - if (isEqualsSeq(chartData, seq)) { - return new int[] { parentChartIndex, i }; - } - } - } - return new int[] { 0, 0 }; - } - - public int getChildChartIndex(int parentChartIndex, int seq) { - List fileChartDataLow = getFileDataMaker().getFileChartLow(); - if(fileChartDataLow.size() <=parentChartIndex){ - return 0; - } - List childData = fileChartDataLow.get(parentChartIndex) - .getChild(); - FileChartData childChartData = null; - for (int i = 0; i < childData.size(); i++) { - childChartData = childData.get(i); - if (isEqualsSeq(childChartData, seq)) { - return i; - } - } - return 0; - } - - public boolean isEqualsSeq(FileChartData chartData, int seq) { - for (int j = 0; j < chartData.getContents().size(); j++) { - if (chartData.getContents().get(j).getContents() - .getSeq() == seq) { - return true; - } - } - return false; - } - - @Override - protected void makeData(LogPackage pack) { - Logs logs = pack.getLogs(DataChannelConstants.MSG_PROBE_FILE); - if (null != logs && (logs.getRawLogs().size() != 0)) { - List inputs = logs.getLogs(); - getFileDataMaker().makeData(inputs); - } - } -} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartView.java index 6452a1d..3d2823e 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileChartView.java @@ -4,8 +4,7 @@ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. * * Contact: - * Hyunjong Park - * yeongtaik byeon + * Hyeran kim * Juyoung Kim * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -27,6 +26,8 @@ package org.tizen.dynamicanalyzer.ui.file; +import java.util.List; + import org.eclipse.swt.custom.StackLayout; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; @@ -39,10 +40,14 @@ import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.swap.model.data.LogData; import org.tizen.dynamicanalyzer.ui.common.SetRangeMarkerMouseMoveListener; import org.tizen.dynamicanalyzer.ui.common.UICommonConstants; +import org.tizen.dynamicanalyzer.ui.file.FilePage; +import org.tizen.dynamicanalyzer.ui.file.manager.FileChartManager; +import org.tizen.dynamicanalyzer.ui.file.model.FileEvent; import org.tizen.dynamicanalyzer.ui.range.RangeDataManager; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; import org.tizen.dynamicanalyzer.ui.timeline.logparser.LifecycleLogParser; import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; +import org.tizen.dynamicanalyzer.util.DALogger; import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotIntervalMarker; import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoard; import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardItem; @@ -52,14 +57,18 @@ import org.tizen.dynamicanalyzer.widgets.da.view.DAViewData; import org.tizen.dynamicanalyzer.widgets.timeline.DATimeline; public class FileChartView extends DAViewComposite { + private static final DALogger DA_LOG = DALogger.getInstance(); + // TODO: the height can be changed public final static int FILE_CHART_HEIGHT = 40; private final Composite contents; - private DAChartBoard fileChart; + private FileChartBoard fileChartBoard; private final StackLayout stackLayout; + private DAChartBoardItem lastSelectedItemForSummary = null; private final RangeDataManager rangeDataManager = RangeDataManager .getInstance(); + private FileChartManager chartManager = FileChartManager.getInstance(); public FileChartView(Composite parent, int style) { super(parent, style, false); @@ -71,78 +80,80 @@ public class FileChartView extends DAViewComposite { contents.setBackground(ColorResources.WINDOW_BG_COLOR); stackLayout = new StackLayout(); contents.setLayout(stackLayout); - fileChart = new DAChartBoard(contents, FilePageLabels.FILE_CHART_FILE); - fileChart.setNameFont(FontResources.CHART_NAME_FONT); - fileChart.addSelectionListener(new DAChartBoardSelectionListener() { - + fileChartBoard = new FileChartBoard(contents, FilePageLabels.FILE_CHART_FILE); + fileChartBoard.setNameFont(FontResources.CHART_NAME_FONT); + fileChartBoard.addSelectionListener(new DAChartBoardSelectionListener() { @Override public void handleSelectionEvent(DAChartBoardItem item) { + lastSelectedItemForSummary = item; AnalyzerManager - .getCurrentPage() - .updateView( + .getCurrentPage().updateView( new DASelectionData( FilePage.chartViewID, - (long) (((DAChartPlotIntervalMarker) fileChart + (long) (((DAChartPlotIntervalMarker) fileChartBoard .getMarkers() .get(UICommonConstants.SELECTION_MARKER_INDEX)) + // TODO: use utility API .getStartVal() * TimelineConstants.MEGA_DOUBLE), - (long) (((DAChartPlotIntervalMarker) fileChart + (long) (((DAChartPlotIntervalMarker) fileChartBoard .getMarkers() .get(UICommonConstants.SELECTION_MARKER_INDEX)) + // TODO: use utility API .getEndVal() * TimelineConstants.MEGA_DOUBLE), item.getData(), null)); } }); - initIntervalMarkers(fileChart); + initIntervalMarkers(fileChartBoard); + + stackLayout.topControl = fileChartBoard; - stackLayout.topControl = fileChart; - // Making title composition using resource of timeline pages. - fileChart.makeDefaultTitleComposite(FilePageLabels.FILE_CHART_FILE, + fileChartBoard.makeDefaultTitleComposite(FilePageLabels.FILE_CHART_FILE, FontResources.ADDITEM_BUTTON_FONT, ColorResources.ADD_CHART_FONT_COLOR, ColorResources.ADD_CHART_NORMAL_START, ColorResources.ADD_CHART_NORMAL_END, ColorResources.ADD_CHART_NORMAL_STROKE); - - DATimeline timeline = fileChart.getTimeline(); + + DATimeline timeline = fileChartBoard.getTimeline(); timeline.setTimeTickFont(FontResources.TIMELINE_TICK_FONT); timeline.setTimeBalloonFont(FontResources.TIMELINE_BALLOON_FONT); LifecycleLogParser.getInstance().registerLifecycleBar( - fileChart.getLifecycleBar()); + fileChartBoard.getLifecycleBar()); LifecycleLogParser.getInstance().registerTimeline(timeline); timeline.addMouseMoveListener(new SetRangeMarkerMouseMoveListener( - rangeDataManager, fileChart, timeline)); + rangeDataManager, fileChartBoard, timeline)); } @Override public void updateView() { - FileChartManager.getInstance().getFileDataMaker().checkUpdate(); - fileChart.setTotalEndTime(ToolbarArea.getInstance().getTime()); + fileChartBoard.updateChart(); + + fileChartBoard.setTotalEndTime(ToolbarArea.getInstance().getTime()); - fileChart.setTimelineMarkerStartTime(rangeDataManager + fileChartBoard.setTimelineMarkerStartTime(rangeDataManager .getMarkerStartTime() / TimelineConstants.MEGA_DOUBLE); - fileChart.setTimelineMarkerEndTime(rangeDataManager.getMarkerEndTime() + fileChartBoard.setTimelineMarkerEndTime(rangeDataManager.getMarkerEndTime() / TimelineConstants.MEGA_DOUBLE); if (RangeDataManager.getInstance().isBeingAnalyzed()) { - ((DAChartPlotIntervalMarker) fileChart.getMarkers().get( + ((DAChartPlotIntervalMarker) fileChartBoard.getMarkers().get( UICommonConstants.RANGE_ANALYSIS_MARKER_INDEX)) .setInterval(rangeDataManager.getAnalysisStartTime() / TimelineConstants.MEGA_DOUBLE, rangeDataManager.getAnalysisEndTime() / TimelineConstants.MEGA_DOUBLE); } else { - ((DAChartPlotIntervalMarker) fileChart.getMarkers().get( + ((DAChartPlotIntervalMarker) fileChartBoard.getMarkers().get( UICommonConstants.RANGE_ANALYSIS_MARKER_INDEX)) .setInterval(-1, -1); } - ((DAChartPlotIntervalMarker) fileChart.getMarkers().get( + ((DAChartPlotIntervalMarker) fileChartBoard.getMarkers().get( UICommonConstants.RANGE_MARKER_INDEX)).setInterval( rangeDataManager.getMarkerStartTime() / TimelineConstants.MEGA_DOUBLE, @@ -153,53 +164,59 @@ public class FileChartView extends DAViewComposite { @Override public void updateView(DAViewData data) { - if (!(data instanceof DASelectionData)) - return; - - DASelectionData selData = (DASelectionData) data; - - if(selData.isLogData()) { - Object odata = selData.getData(); - if(!(odata instanceof LogData) || odata == null) - return; - - LogData ldata = (LogData) odata; - int seq = ldata.getSeq(); - int selectedIndex[] = FileChartManager.getInstance() - .getParentChartIndex(seq); - fileChart.selectItem(selectedIndex[0], FileChartManager.getInstance() - .getChildChartIndex(selectedIndex[1], seq)); - } else { - long start = selData.getStartTime(); - long end = selData.getEndTime(); - - double startTime = (double) start / TimelineConstants.MEGA_DOUBLE; - double endTime = (double) end / TimelineConstants.MEGA_DOUBLE; - // double middleTime = (startTime + endTime) / 2.0; - // if (start == end) { - // middleTime = startTime; - // } - - DAChartBoard chartBoard = (DAChartBoard) stackLayout.topControl; + // TODO refactoring + fileChartBoard.updateChart(); + if (data instanceof DASelectionData) { + DASelectionData selData = (DASelectionData) data; + long dataTime = -1; + + if (selData.isLogData()) { + Object obData = selData.getData(); + if (null != obData && (obData instanceof LogData)) { // summary + LogData ldata = (LogData) obData; + dataTime = ldata.getTime(); + + int seq = ldata.getSeq(); + + List event = chartManager.getApiDB().selectFileEventBySeq(seq); + if(event != null) { + int selectedIndex[] = fileChartBoard.getChartIndex(event.get(0)); + fileChartBoard.selectItem(selectedIndex[0], selectedIndex[1]); + + if (null != lastSelectedItemForSummary) { + AnalyzerManager.getCurrentPage().updateView( + new DASelectionData(FilePage.chartViewID, + dataTime, dataTime, + lastSelectedItemForSummary.getData(), + null)); + } + }else{ + DA_LOG.error("It can't find data in DB, seq number:" + seq); + } + } + } else { + dataTime = selData.getStartTime(); + } + double startTime = dataTime / TimelineConstants.MEGA_DOUBLE; + double endTime = selData.getEndTime() / TimelineConstants.MEGA_DOUBLE; - // chartBoard.setVisibleMiddleTime(middleTime); - DAChartPlotIntervalMarker intervalMarker = (DAChartPlotIntervalMarker) chartBoard + DAChartPlotIntervalMarker intervalMarker = (DAChartPlotIntervalMarker)fileChartBoard .getMarkers().get(UICommonConstants.SELECTION_MARKER_INDEX); intervalMarker.setInterval(startTime, endTime); + } } @Override public void clear() { - fileChart.clear(); - initIntervalMarkers(fileChart); - FileChartManager.getInstance().getFileDataMaker().clear(); - FileChartManager.getInstance().getFileDataMaker().setBoard(fileChart); + fileChartBoard.clear(); + initIntervalMarkers(fileChartBoard); + chartManager.getFileChartDataMaker().clear(); } @Override public Control getControl() { - return fileChart; + return fileChartBoard; } private void initIntervalMarkers(DAChartBoard board) { @@ -226,10 +243,10 @@ public class FileChartView extends DAViewComposite { } public void setRangeMarker(double starttime, double endtime) { - fileChart.setTimelineMarkerStartTime(starttime); - fileChart.setTimelineMarkerEndTime(endtime); + fileChartBoard.setTimelineMarkerStartTime(starttime); + fileChartBoard.setTimelineMarkerEndTime(endtime); - ((DAChartPlotIntervalMarker) fileChart.getMarkers().get( + ((DAChartPlotIntervalMarker) fileChartBoard.getMarkers().get( UICommonConstants.RANGE_MARKER_INDEX)).setInterval( starttime, endtime); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileDataMaker.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileDataMaker.java deleted file mode 100644 index 0004f39..0000000 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileDataMaker.java +++ /dev/null @@ -1,600 +0,0 @@ -/* - * Dynamic Analyzer - * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: - * Hyunjong Park - * Jooyoul Lee - * Juyoung Kim - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Contributors: - * - S-Core Co., Ltd - * - */ - -package org.tizen.dynamicanalyzer.ui.file; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import org.tizen.dynamicanalyzer.common.AnalyzerManager; -import org.tizen.dynamicanalyzer.constant.CommonConstants; -import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; -import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; -import org.tizen.dynamicanalyzer.nl.ConfigureLabels; -import org.tizen.dynamicanalyzer.nl.FilePageLabels; -import org.tizen.dynamicanalyzer.nl.ThreadPageLabels; -import org.tizen.dynamicanalyzer.nl.TimelineChartLabels; -import org.tizen.dynamicanalyzer.resources.ColorResources; -import org.tizen.dynamicanalyzer.resources.FontResources; -import org.tizen.dynamicanalyzer.resources.ImageResources; -import org.tizen.dynamicanalyzer.swap.model.data.FileData; -import org.tizen.dynamicanalyzer.swap.model.data.LogData; -import org.tizen.dynamicanalyzer.ui.common.PopupAnalysisMenuItemClickListener; -import org.tizen.dynamicanalyzer.ui.common.PopupClearMenuItemClickListener; -import org.tizen.dynamicanalyzer.ui.common.PopupEndMenuItemClickListener; -import org.tizen.dynamicanalyzer.ui.common.PopupFromSelectionMenuItemClickListener; -import org.tizen.dynamicanalyzer.ui.common.PopupStartMenuItemClickListener; -import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseEventListener; -import org.tizen.dynamicanalyzer.ui.common.TimelineChartMouseTrackAdapter; -import org.tizen.dynamicanalyzer.ui.summary.SummaryDataManager; -import org.tizen.dynamicanalyzer.ui.summary.failed.FailedChecker; -import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData; -import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakDetector; -import org.tizen.dynamicanalyzer.ui.summary.warning.WarningCase; -import org.tizen.dynamicanalyzer.ui.summary.warning.WarningChecker; -import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; -import org.tizen.dynamicanalyzer.ui.toolbar.configuration.ConfigurationDialogDataManager; -import org.tizen.dynamicanalyzer.util.DALogger; -import org.tizen.dynamicanalyzer.widgets.chart.DAChart; -import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot; -import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlot.AutoRangeType; -import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotTooltip; -import org.tizen.dynamicanalyzer.widgets.chart.DAChartSeries; -import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoard; -import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardItem; -import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenu; -import org.tizen.dynamicanalyzer.widgets.popupMenu.DAPopupMenuItem; - -public class FileDataMaker { - private static final DALogger DA_LOG = DALogger.getInstance(); - - private DAChartBoard board; - private List rows = new ArrayList(); - private List fileEventQueue = new ArrayList(); - private List fileEventWarningQueue = new ArrayList(); - private HashMap findPathHashMap = new HashMap(); - private int timeLineFileChartFDCount = 0; - private FailedChecker failedChecker = null; - private WarningChecker warningChecker = null; - private int preSelectionPId = -1; - - public FileDataMaker(FailedChecker failedChecker, - LeakDetector leakDetector, WarningChecker warningChecker) { - this.failedChecker = failedChecker; - this.warningChecker = warningChecker; - } - - public void setBoard(DAChartBoard board) { - this.board = board; - } - - public void clear() { - rows.clear(); - fileEventQueue.clear(); - fileEventWarningQueue.clear(); - findPathHashMap.clear(); - timeLineFileChartFDCount = 0; - } - - public List getFileChartLow() { - return rows; - } - - private boolean isOpenMainLog(FileData input) { - String filePath = input.getFilePath(); - if (filePath.contains(CommonConstants.SLASH)) { - String[] splitApiFilePath = filePath.split(CommonConstants.SLASH); - String strApiFilePath = new String( - splitApiFilePath[splitApiFilePath.length - 1].trim()); - if (AnalyzerManager.getProject().getPackageID().equals(strApiFilePath)) { - return true; - } - } - return false; - } - - private boolean isPrintLog(FileData input) { - String apiName = input.getApiName(); - if (apiName.contains("print")) {//$NON-NLS-1$ - return true; - } - return false; - } - - public void makeData(List inputs) { - int size = inputs.size(); - for (int i = 0; i < size; i++) { - FileData input = (FileData) inputs.get(i); - - if (ConfigurationDialogDataManager.getInstance().getfeatureValue( - ConfigureLabels.INCLUDE_INSIDE_CALL_FILE) == 0) { - if (input.isInternal()) { - continue; - } - } - - if (isPrintLog(input)) { - continue; - } - - if (isOpenMainLog(input)) { - continue; - } - - int fdApiType = input.getFdApiType(); - String path = input.getFilePath(); - long fd = input.getFdValue(); - - long errno = input.getErrno(); - - String name = input.getApiName(); - long time = input.getTime(); - - if (fdApiType != LogCenterConstants.FD_API_TYPE_OPEN) { - path = AnalyzerLabels.EMPTY_STRING; - } - FileChartDataEvent event = new FileChartDataEvent(path, fd, time, - name, input); - - // error check - if (errno != 0) { - switch (input.getFdApiType()) { - case LogCenterConstants.SOCKET_API_ACCEPT_END: - case LogCenterConstants.SOCKET_API_SEND_END: - case LogCenterConstants.SOCKET_API_RECV_END: - case LogCenterConstants.SOCKET_API_EVENT_END: { - FailedData ffd = new FailedData(input); - event.setFailedData(ffd); - this.failedChecker.getFailedList().add(ffd); - event.setFailedAPI(); - } - } - } else if (name.equals("fdopen")) { //$NON-NLS-1$ - DA_LOG.debug("fdopen"); - continue; - } - - if (fdApiType == LogCenterConstants.FD_API_TYPE_OPEN) { - event.setApiType(LogCenterConstants.FD_API_TYPE_OPEN); - checkDuplicateOpen(event); - if (errno == 0) { - timeLineFileChartFDCount++; - } - } else if (fdApiType == LogCenterConstants.FD_API_TYPE_CLOSE) { - event.setApiType(LogCenterConstants.FD_API_TYPE_CLOSE); - if (errno == 0) { - timeLineFileChartFDCount--; - if (timeLineFileChartFDCount < 0) { - timeLineFileChartFDCount = 0; - } - } - } else if (fdApiType == LogCenterConstants.FD_API_TYPE_READ_END - || fdApiType == LogCenterConstants.FD_API_TYPE_WRITE_END) { - long fileSize = input.getFileSize(); - if (fileSize < 0) { - fileSize = 0; - } - if (fdApiType == LogCenterConstants.FD_API_TYPE_READ_END) { - event.setReadSize(fileSize); - event.setApiType(LogCenterConstants.FD_API_TYPE_READ_END); - } else if (fdApiType == LogCenterConstants.FD_API_TYPE_WRITE_END) { - event.setFileSize(fileSize); - event.setWriteSize(fileSize); - event.setApiType(LogCenterConstants.FD_API_TYPE_WRITE_END); - } - } - event.setApiType(fdApiType); - fileEventQueue.add(event); - fileEventWarningQueue.add(event); - if (fdApiType == LogCenterConstants.FD_API_TYPE_CLOSE) { - checkWithoutUsing(event); - } - } - } - - private void checkDuplicateOpen(FileChartDataEvent data) { - if (data.isFailedAPI()) { - return; - } - for (int i = 0; i < fileEventWarningQueue.size(); i++) { - FileChartDataEvent event = fileEventWarningQueue.get(i); - if ((event.getFilePath().equals(data.getFilePath())) - && (event.getApiType() == LogCenterConstants.FD_API_TYPE_OPEN)) { -// if (!warningChecker.isChecked(data.getFilePath(), -// WarningCase.DUPLICATE_OPEN.getType())) { -// WarningData wData = new WarningData( -// WarningCase.DUPLICATE_OPEN.getType(), -// data.getContents(), data.getFilePath()); -// warningChecker.getWarningData().add(wData); - SummaryDataManager.getInstance().getWarningDataMaker().makeData( - data.getContents(), data.getFilePath(), WarningCase.DUPLICATE_OPEN.getType()); -// } - } - } - } - - private void checkWithoutUsing(FileChartDataEvent data) { - int nAPICount = 0; - for (int i = 0; i < fileEventWarningQueue.size(); i++) { - FileChartDataEvent event = fileEventWarningQueue.get(i); - if ((event.getFd() == data.getFd())) { - nAPICount++; - if (event.getApiType() == LogCenterConstants.FD_API_TYPE_OPEN) { - data.setFilePath(event.getFilePath()); - } - fileEventWarningQueue.remove(i--); - } - } - - if ((nAPICount < 3) - && (data.getFilePath().equals(AnalyzerLabels.EMPTY_STRING) == false)) { // open-close -// if (!warningChecker.isChecked(data.getFilePath(), -// WarningCase.WITHOUT_USING.getType())) { -// WarningData wData = new WarningData( -// WarningCase.WITHOUT_USING.getType(), -// data.getContents(), data.getFilePath()); -// warningChecker.getWarningData().add(wData); - SummaryDataManager.getInstance().getWarningDataMaker().makeData( - data.getContents(), data.getFilePath(), WarningCase.WITHOUT_USING.getType()); -// } - } - } - - private void initFileChart(DAChart chart, boolean isParent) { - if (null == chart) { - return; - } - - DAChartSeries apiSeries = new DAChartSeries( - FilePageLabels.FILE_CHART_API, - DAChartSeries.SERIES_STYLE_EVENT, ColorResources.YELLOW); - - DAChartSeries stateSeries = new DAChartSeries( - FilePageLabels.FILE_CHART_SERIES, - DAChartSeries.SERIES_STYLE_STATE, ColorResources.WHITE); - - DAChartSeries accessSeries = new DAChartSeries( - FilePageLabels.FILE_CHART_ACCESS, - DAChartSeries.SERIES_STYLE_EVENT_AREA, ColorResources.WHITE); - - apiSeries.setSummarizeTooltipText(ThreadPageLabels.THREAD_TOOLTIP_APIS); - - chart.addSeries(stateSeries); - chart.addSeries(apiSeries); - chart.addSeries(accessSeries); - - DAChartPlot plot = chart.getPlot(); - if (null == plot) { - return; - } - if (true == isParent) { - plot.setBackgroundImage(ImageResources.BG_GRADIENT); - } else { - plot.setBackgroundImage(ImageResources.BG_CHILD_GRADIENT); - } - plot.setAutoHeightRange(AutoRangeType.MANUAL); - plot.setAxisFont(FontResources.CHART_AXIS_FONT); - plot.setAxisRangeY(0, 101); - plot.setAxisRangeX(board.getVisibleStartTime(), - board.getVisibleEndTime()); - DAChartPlotTooltip tooltip = new DAChartPlotTooltip(-1); - tooltip.setFont(FontResources.CHART_TOOLTIP_FONT); - plot.setTooltip(tooltip); - - DAPopupMenu popupMenu = new DAPopupMenu(chart); - popupMenu.setFont(FontResources.CONTEXT_MENU_ITEM_FONT); - DAPopupMenuItem startItem = new DAPopupMenuItem(popupMenu, - DAPopupMenuItem.NONE); - startItem.setText(TimelineChartLabels.RANGE_CONTEXT_SET_START); - startItem.addListener(new PopupStartMenuItemClickListener(startItem, - board)); - - DAPopupMenuItem endItem = new DAPopupMenuItem(popupMenu, - DAPopupMenuItem.NONE); - endItem.setText(TimelineChartLabels.RANGE_CONTEXT_SET_END); - endItem.addListener(new PopupEndMenuItemClickListener(endItem, board)); - - DAPopupMenuItem fromSelectionItem = new DAPopupMenuItem(popupMenu, - DAPopupMenuItem.NONE); - fromSelectionItem - .setText(TimelineChartLabels.RANGE_CONTEXT_SET_FROM_SELECTION); - fromSelectionItem - .addListener(new PopupFromSelectionMenuItemClickListener( - fromSelectionItem, board)); - - DAPopupMenuItem analysisItem = new DAPopupMenuItem(popupMenu, - DAPopupMenuItem.NONE); - analysisItem.setText(TimelineChartLabels.RANGE_CONTEXT_ANALYSIS); - analysisItem.addListener(new PopupAnalysisMenuItemClickListener()); - - DAPopupMenuItem clearItem = new DAPopupMenuItem(popupMenu, - DAPopupMenuItem.NONE); - clearItem.setText(TimelineChartLabels.RANGE_CONTEXT_CLEAR); - clearItem.addListener(new PopupClearMenuItemClickListener()); - - TimelineChartMouseEventListener timelineChartMouseEventListener = new TimelineChartMouseEventListener( - popupMenu, board.getTimeline()); - chart.addMouseListener(timelineChartMouseEventListener); - chart.addMouseMoveListener(timelineChartMouseEventListener); - chart.addMouseTrackListener(new TimelineChartMouseTrackAdapter(board - .getTimeline())); - plot.setMarkers(board.getMarkers()); - } - - private boolean createFileBoardItem(FileChartData parent, - FileChartData sync, FileChartDataEvent event) { - DAChartBoardItem item; - DAChart chart; - if (null == parent) { - String fileName = sync.getFileName(); - if (sync.getFileName().length() > 12) { - fileName = sync.getFileName().substring(0, 12); - fileName += CommonConstants.NEW_LINE - + sync.getFileName().substring(12, - sync.getFileName().length()); - } - item = new DAChartBoardItem(board, fileName); - chart = item.getChart(); - initFileChart(chart, true); - } else { - DAChartBoardItem parentItem = parent.getItem(); - if (sync.getFD() > 0x10000000) { - item = new DAChartBoardItem(parentItem, "0x"//$NON-NLS-1$ - + Long.toHexString(sync.getFD())); - } else { - item = new DAChartBoardItem(parentItem, Long.toString(sync - .getFD())); - } - - chart = item.getChart(); - initFileChart(chart, false); - } - - sync.setItem(item); - item.setData(sync); - chart.setData(sync); - chart.redraw(); - return true; - } - - private FileChartData findParent(String filePath, long fd) { - filePath = findPathHashMap.get(fd); - int size = rows.size(); - FileChartData returnData = null; - for (int i = 0; i < size; i++) { - returnData = rows.get(i); - if (returnData.getFilePath().equals(filePath) == true) { - return returnData; - } else if ((returnData.getFilePath() - .equals(FilePageLabels.FILE_CHART_UNKNOWN_FILE)) - && (filePath == null)) { - return returnData; - } - } - return null; - } - - private void chartFilteringByPId() { - if (null == board || null == board.getItemList()) { - return; - } - int selectedPid = ToolbarArea.getInstance().getSelectedPid(); - boolean isCheck = false; - - if (fileEventQueue.size() > 0) { - isCheck = true; - } - - if (preSelectionPId != -1 && preSelectionPId != selectedPid) { - isCheck = true; - } - - if (isCheck) { - int parentSize = board.getItemList().getItemSize(); - for (int i = 0; i < parentSize; i++) { - DAChartBoardItem parentItem = board.getItemList().get(i); - int childSize = parentItem.getChildItemList().getItemSize(); - int hidedCount = 0; - for (int j = 0; j < childSize; j++) { - DAChartBoardItem childItem = parentItem.getChildItemList() - .get(j); - int itemPid = getItemPid(childItem); - if (itemPid == selectedPid) { - parentItem.getChildItemList().showItem(j); - board.showItem(i); - } else if (selectedPid == 0) { - parentItem.getChildItemList().showItem(j); - board.showItem(i); - } else if (itemPid == -1) { - board.showItem(i); - } else { - parentItem.getChildItemList().hideItem(j); - hidedCount++; - } - } - if (childSize == 0) { - int itemPid = getItemPid(parentItem); - if (itemPid == selectedPid) { - board.showItem(i); - } else if (selectedPid == 0) { - board.showItem(i); - } else if (itemPid == -1) { - board.showItem(i); - } else { - board.hideItem(i); - hidedCount++; - } - } else { - if (childSize == hidedCount) { - board.hideItem(i); - } - } - } - } - preSelectionPId = selectedPid; - } - - private int getItemPid(DAChartBoardItem item) { - int pid = -1; - if (item.getData() instanceof FileChartData) { - FileChartData chartData = (FileChartData) item.getData(); - if (chartData.getContents().size() > 0) { - pid = chartData.getContents().get(0).getContents().getPid(); - } - } - return pid; - } - - public void checkUpdate() { - if (!AnalyzerManager.isRunning()) { - int size = rows.size(); - FileChartData data; - for (int i = 0; i < size; i++) { - data = rows.get(i); - data.checkUpdate(); - } - } - chartFilteringByPId(); - int size = fileEventQueue.size(); - if (size > 0) { - FileChartData parentChart; - FileChartData childChart; - FileChartDataEvent event; - for (int i = 0; i < size; i++) { - event = fileEventQueue.get(0); - int apiType = event.getApiType(); - String filePath = AnalyzerLabels.EMPTY_STRING; - if (event.getFilePath().trim() - .equals(AnalyzerLabels.EMPTY_STRING)) { - filePath = FilePageLabels.FILE_CHART_UNKNOWN_FILE; - } else { - filePath = event.getFilePath(); - } - if (apiType == LogCenterConstants.FD_API_TYPE_OPEN) { - findPathHashMap.put(event.getFd(), filePath); - } - parentChart = findParent(event.getFilePath(), event.getFd()); - if (null == parentChart) { - findPathHashMap.put(event.getFd(), filePath); - parentChart = new FileChartData(filePath, event.getFd(), - true); - childChart = new FileChartData(filePath, event.getFd(), - false); - if (!event.isFailedAPI()) { - parentChart.setClosed(false); - childChart.setClosed(false); - } - - if (event.isFailedAPI()) { - childChart.setFileOpenFailed(true); - parentChart.setFileOpenFailed(true); - } else if (filePath - .equals(FilePageLabels.FILE_CHART_UNKNOWN_FILE)) { - childChart.setFileOpenFailed(true); - parentChart.setFileOpenFailed(true); - } else { - childChart.setFileOpenFailed(false); - parentChart.setFileOpenFailed(false); - } - - parentChart.pushChild(childChart); - createFileBoardItem(null, parentChart, event); - createFileBoardItem(parentChart, childChart, event); - if (!event.isFailedAPI()) { - parentChart.setFileOpendTime((long) event.getLogTime()); - childChart.setFileOpendTime((long) event.getLogTime()); - } else { - childChart.setFileOpenFailed(true); - parentChart.setFileOpenFailed(true); - } - parentChart.pushEvent(event); - childChart.pushEvent(event); - rows.add(parentChart); - rows.add(childChart); - } else if (null != parentChart) { - childChart = parentChart.findChildData(event); - if (null == childChart) { - childChart = new FileChartData(filePath, event.getFd(), - false); - if (!event.isFailedAPI()) { - childChart.setClosed(false); - } - if (event.isFailedAPI()) { - childChart.setFileOpenFailed(true); - parentChart.setFileOpenFailed(true); - } else if (filePath - .equals(FilePageLabels.FILE_CHART_UNKNOWN_FILE)) { - childChart.setFileOpenFailed(true); - parentChart.setFileOpenFailed(true); - } else { - childChart.setFileOpenFailed(false); - parentChart.setFileOpenFailed(false); - } - rows.add(childChart); - parentChart.pushChild(childChart); - createFileBoardItem(parentChart, childChart, event); - if (!event.isFailedAPI()) { - childChart.setFileOpendTime((long) event - .getLogTime()); - } else { - childChart.setFileOpenFailed(true); - } - childChart.pushEvent(event); - } else if (null != childChart) { - if (apiType == LogCenterConstants.FD_API_TYPE_CLOSE) { - if (!event.isFailedAPI()) { - childChart.setClosed(true); - childChart.setFileClosedTime((long) event - .getLogTime()); - } else { - childChart.setFileOpenFailed(true); - } - - childChart.pushEvent(event); - findPathHashMap.remove(event.getFd()); - } else { - childChart.pushEvent(event); - } - } - parentChart.pushEvent(event); - parentChart.setFileUsedTime(event.getLogTime()); - childChart.setFileUsedTime(event.getLogTime()); - } - fileEventQueue.remove(0); - } - } - size = rows.size(); - if (size > 0) { - FileChartData data; - for (int i = 0; i < size; i++) { - data = rows.get(i); - data.checkUpdate(); - } - } - } -} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileDetailInfoView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileDetailInfoView.java index 2896232..3523d32 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileDetailInfoView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileDetailInfoView.java @@ -4,8 +4,7 @@ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. * * Contact: - * Hyunjong Park - * yeongtaik byeon + * Hyeran kim * Juyoung Kim * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -27,6 +26,8 @@ package org.tizen.dynamicanalyzer.ui.file; +import java.util.List; + import org.eclipse.swt.SWT; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; @@ -41,10 +42,17 @@ import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; import org.tizen.dynamicanalyzer.nl.FilePageLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.FontResources; +import org.tizen.dynamicanalyzer.ui.file.FilePage; +import org.tizen.dynamicanalyzer.ui.file.manager.FileChartManager; +import org.tizen.dynamicanalyzer.ui.file.model.FileEvent; +import org.tizen.dynamicanalyzer.ui.file.model.FileSelectedData; import org.tizen.dynamicanalyzer.utils.Formatter; import org.tizen.dynamicanalyzer.widgets.da.view.DAViewComposite; import org.tizen.dynamicanalyzer.widgets.da.view.DAViewData; +//TODO: contains a lot legacy code, need to refatoring this class +// TODO: comment the contents of the detail view +// TODO: add: process name (PID), thread function name (TID) public class FileDetailInfoView extends DAViewComposite { private Canvas canvas = null; private String fileName = AnalyzerLabels.EMPTY_STRING; @@ -54,8 +62,10 @@ public class FileDetailInfoView extends DAViewComposite { private long writeSize = 0; private long totalUseTime = 0; private int apiCount = 0; - private int failedApiCount = 0; - + private int failedApiCount = 0; + + private FileChartManager fileChartManager = FileChartManager.getInstance(); + private void init() { fileName = AnalyzerLabels.EMPTY_STRING; filePath = AnalyzerLabels.EMPTY_STRING; @@ -162,20 +172,32 @@ public class FileDetailInfoView extends DAViewComposite { private void updateData() { FileApiListView view = (FileApiListView) AnalyzerManager .getCurrentPage().getView(FilePage.apilistViewID); - FileChartData selectData = view.getPageData(); + FileSelectedData selectData = view.getSelectedData(); if (null == selectData) { return; } - - fileName = selectData.getFileName(); - filePath = selectData.getFilePath(); - fileSize = selectData.getFileSize(); - readSize = selectData.getReadSize(); - writeSize = selectData.getWriteSize(); - totalUseTime = (long) selectData.getFileTotalUseTime(); - apiCount = selectData.getApiCount(); - failedApiCount = selectData.getFailedApiCount(); + List events = null; + events = fileChartManager.getApiDB() + .selectAPITable(selectData.getDentry(), + selectData.getPid(), selectData.getTid(), selectData.isParentChart()); + if(events != null) { + filePath = events.get(0).getFilePath(); + fileName = events.get(0).getFileName(); + fileSize = events.get(0).getFileSize(); + apiCount = events.size(); + } + events = fileChartManager.getApiDB() + .selectFailedAPI(selectData.getDentry(), + selectData.getPid(), selectData.getTid(), selectData.isParentChart()); + if(events != null) { + failedApiCount = events.size(); + } + // TODO define What totalUseTime + // totalUseTime = (long) selectData.getFileTotalUseTime(); + // readSize = selectData.getReadSize(); + // writeSize = selectData.getWriteSize(); + canvas.redraw(); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FilePage.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FilePage.java index de74b1e..bc14480 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FilePage.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FilePage.java @@ -37,6 +37,7 @@ import org.tizen.dynamicanalyzer.shortcut.ShortCutManager; import org.tizen.dynamicanalyzer.swap.logparser.DataManagerRegistry; import org.tizen.dynamicanalyzer.ui.page.ScreenshotTabComposite; import org.tizen.dynamicanalyzer.widgets.da.view.DAPageComposite; +import org.tizen.dynamicanalyzer.ui.file.manager.FileChartManager; public class FilePage extends DAPageComposite { // page and view IDs diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileApiListTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileApiListTable.java deleted file mode 100644 index 90c81b2..0000000 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileApiListTable.java +++ /dev/null @@ -1,257 +0,0 @@ -/* - * Dynamic Analyzer - * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: - * Hyeran kim - * Juyoung Kim - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Contributors: - * - S-Core Co., Ltd - * - */ - -package org.tizen.dynamicanalyzer.ui.file.view; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import org.eclipse.nebula.widgets.grid.GridItem; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.widgets.Composite; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; -import org.tizen.dynamicanalyzer.common.DASelectionData; -import org.tizen.dynamicanalyzer.constant.CommonConstants; -import org.tizen.dynamicanalyzer.error.ErrorCodeManager; -import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; -import org.tizen.dynamicanalyzer.model.TableInput; -import org.tizen.dynamicanalyzer.swap.model.data.FileData; -import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; -import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; -import org.tizen.dynamicanalyzer.ui.widgets.table.DAApiListTableComposite; -import org.tizen.dynamicanalyzer.ui.widgets.table.DATableDataFormat; -import org.tizen.dynamicanalyzer.utils.Formatter; -import org.tizen.dynamicanalyzer.ui.file.FilePage; -import org.tizen.dynamicanalyzer.ui.file.manager.FileChartManager; -import org.tizen.dynamicanalyzer.ui.file.model.FileEvent; - - -// TODO: contains a lot legacy code, need to refatoring this class -public class FileApiListTable extends DAApiListTableComposite { - public FileApiListTable(Composite parent, int compStyle, int tableStyle) { - super(parent, compStyle, tableStyle); - table.addSelectionListener(new SelectionListener() { - - @Override - public void widgetSelected(SelectionEvent e) { - - GridItem[] items = table.getSelection(); - if (null == items) { - return; - } - long startTime = 0; - long endTime = 0; - - DATableDataFormat dataFormat; - long itemTime; - for (int i = 0; i < items.length; i++) { - dataFormat = (DATableDataFormat) items[i].getData(); - itemTime = dataFormat.getLogData().getTime(); - if (0 == startTime) { - startTime = itemTime; - } - if (startTime > itemTime) { - startTime = itemTime; - } - if (endTime < itemTime) { - endTime = itemTime; - } - } - DASelectionData selData = new DASelectionData( - FilePage.apilistViewID, startTime, endTime, items, - table); - AnalyzerManager.getCurrentPage().updateView(selData); - } - - @Override - public void widgetDefaultSelected(SelectionEvent e) { - } - }); - } - - @Override - protected List makeTableInput() { - FileApiListView view = (FileApiListView) AnalyzerManager - .getCurrentPage().getView(FilePage.apilistViewID); - - long rangeStartTime = view.getRangeStartTime(); - long rangeEndTime = view.getRangeEndTime(); - - HashMap findStartAPITableIndexHashMap = new HashMap(); - List removeTableIndex = new ArrayList(); - List input = new ArrayList(); - - List contents = FileChartManager.getInstance().getSelectedTableAPIList(); - if(contents == null) { - return null; - } - for (int i = 0; i < contents.size(); i++) { - FileEvent contentTemp = contents.get(i); - int selectedPid = ToolbarArea.getInstance().getSelectedPid(); - if (selectedPid != 0) { - if (selectedPid != contentTemp.getPid()) { - continue; - } - } - List contentText = new ArrayList(); - List contentData = new ArrayList(); - - Integer startLogIndex = 0; - int fdApiType = contentTemp.getApiType(); - - int seq = contentTemp.getSeqNo(); - contentText.add(0, Integer.toString(seq)); - contentData.add(Integer.toString(seq)); - long time = contentTemp.getEventTime(); - - boolean isExistStartTimeLog = false; - if (fdApiType == LogCenterConstants.FD_API_TYPE_READ_START - || fdApiType == LogCenterConstants.FD_API_TYPE_WRITE_START) { - String keString = contentTemp.getApiName() - + contentTemp.getPid() + contentTemp.getTid(); - findStartAPITableIndexHashMap.put(keString, i); - - } else if (fdApiType == LogCenterConstants.FD_API_TYPE_READ_END - || fdApiType == LogCenterConstants.FD_API_TYPE_WRITE_END) { - String keString = contentTemp.getApiName() - + contentTemp.getPid() + contentTemp.getTid(); - startLogIndex = findStartAPITableIndexHashMap.get(keString); - if (null != startLogIndex) { - contentText.add(input.get(startLogIndex.intValue()) - .getText().get(1)); // start time - contentData.add(input.get(startLogIndex.intValue()) - .getText().get(1)); - - long startTime = contents.get(startLogIndex.intValue()).getEventTime(); - String timeFormat = Formatter - .toTimeFormat(time - startTime); - String removeTimeFormat = timeFormat.replace( - "00:", CommonConstants.EMPTY);//$NON-NLS-1$ - - contentText.add(removeTimeFormat); // elapsed time - contentData.add(Long.toString(time - startTime)); - - isExistStartTimeLog = true; - removeTableIndex.add(startLogIndex.intValue()); - } else { - contentText.add(Formatter.toTimeFormat(contentTemp - .getEventTime())); // start// - contentData.add(Long.toString(contentTemp.getEventTime())); - contentText.add("00.000");//$NON-NLS-1$ - contentData.add("00.000");//$NON-NLS-1$ - } - } - - if (!isExistStartTimeLog) { - contentText.add(Formatter.toTimeFormat(time)); // start time - contentData.add(Long.toString(time)); - contentText.add("00.000");//$NON-NLS-1$ //elapsed time - contentData.add("00.000");//$NON-NLS-1$ - } - - contentText.add(Integer.toString(contentTemp.getPid())); - contentData.add(Integer.toString(contentTemp.getPid())); - - contentText.add(Integer.toString(contentTemp.getTid())); - contentData.add(Integer.toString(contentTemp.getTid())); - - contentText.add(contentTemp.getApiName()); - contentData.add(contentTemp.getApiName()); - - contentText.add(contentTemp.getArgs()); - contentData.add(contentTemp.getArgs()); - - contentText.add(contentTemp.getReturnVal()); - contentData.add(contentTemp.getReturnVal()); - - String errMsg = ErrorCodeManager.getInatance() - .getErrorCode(contentTemp.getErrNo()).name(); - if (null == errMsg) { - errMsg = "undefined error code"; //$NON-NLS-1$ - } - contentText.add(errMsg); - contentData.add(errMsg); - contentText.add(Long.toString(contentTemp.getFileSize())); - contentData.add(Long.toString(contentTemp.getFileSize())); - - DATableDataFormat tableData = new DATableDataFormat( - contentTemp.getSeqNo()); - tableData.setLogData(contentTemp); - tableData.getData().addAll(contentData); - TableInput tableInput = new TableInput(); - tableInput.setText(contentText); - tableInput.setData(tableData); - if (!errMsg.contains("SUCCESS")) {//$NON-NLS-1$ - tableInput.setFailed(true); - } - input.add(tableInput); - - if (time >= rangeStartTime && time <= rangeEndTime) { - tableInput.setInRange(true); - } - } - int removeCount = 0; - for (int index : removeTableIndex) { - int removeIndex = index - removeCount; - if (removeIndex > 0) { - input.remove(removeIndex); - removeCount++; - } - } - return input; - } - - protected void actionSetStartEnd(int type) { - GridItem item = table.getItem(mousePoint); - if (null != item) { - FileData data = (FileData) ((DATableDataFormat) item.getData()) - .getLogData(); - long time = data.getTime(); - double startTime = -1; - double endTime = -1; - - if (type == START_TIME) { - rangeDataManager.setMarkerStartTime(time); - startTime = time / TimelineConstants.MEGA_DOUBLE; - endTime = rangeDataManager.getMarkerEndTime() - / TimelineConstants.MEGA_DOUBLE; - - } else if (type == END_TIME) { - rangeDataManager.setMarkerEndTime(time); - endTime = time / TimelineConstants.MEGA_DOUBLE; - startTime = rangeDataManager.getMarkerStartTime() - / TimelineConstants.MEGA_DOUBLE; - } - - FileChartView chartview = (FileChartView) (AnalyzerManager - .getCurrentPage().getView(FilePage.chartViewID)); - - chartview.setRangeMarker(startTime, endTime); - } - } -} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileApiListView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileApiListView.java deleted file mode 100644 index 337aecc..0000000 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileApiListView.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Dynamic Analyzer - * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: - * Hyeran kim - * Juyoung Kim - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Contributors: - * - S-Core Co., Ltd - * - */ - -package org.tizen.dynamicanalyzer.ui.file.view; - -import java.util.List; - -import org.eclipse.nebula.widgets.grid.Grid; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.tizen.dynamicanalyzer.common.AnalyzerConstants; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; -import org.tizen.dynamicanalyzer.common.DASelectionData; -import org.tizen.dynamicanalyzer.nl.FilePageLabels; -import org.tizen.dynamicanalyzer.resources.ColorResources; -import org.tizen.dynamicanalyzer.swap.model.data.LogData; -import org.tizen.dynamicanalyzer.ui.file.FileChartData; -import org.tizen.dynamicanalyzer.ui.file.FilePage; -import org.tizen.dynamicanalyzer.ui.file.model.FileEvent; -import org.tizen.dynamicanalyzer.ui.file.model.FileSelectedData; -import org.tizen.dynamicanalyzer.ui.network.data.NetworkDataManager; -import org.tizen.dynamicanalyzer.ui.network.data.type.NetworkSelectionType; -import org.tizen.dynamicanalyzer.ui.range.RangeDataManager; -import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; -import org.tizen.dynamicanalyzer.ui.widgets.table.TableColumnSizePackListener; -import org.tizen.dynamicanalyzer.widgets.da.view.DAViewComposite; -import org.tizen.dynamicanalyzer.widgets.da.view.DAViewData; -import org.tizen.dynamicanalyzer.ui.file.manager.FileChartManager; - -//TODO: contains a lot legacy code, need to refatoring this class -public class FileApiListView extends DAViewComposite { - // TODO: comment below variables - // TODO: remove unused variables - private long analysisStartTime = 0; - private long analysisEndTime = 0; - private int preSelectionPId = 1; - private long preAnalysisStartTime = 0; - private long preAnalysisEndTime = 0; - private boolean isChangedSelected = true; - private FileSelectedData selectedData = null; - - private String[] columnNames = { FilePageLabels.FILE_API_LIST_VIEW_INDEX, - FilePageLabels.FILE_API_LIST_VIEW_START_TIME, - FilePageLabels.FILE_API_LIST_VIEW_ELAPSED_TIME, - FilePageLabels.FILE_API_LIST_VIEW_PID, - FilePageLabels.FILE_API_LIST_VIEW_THREAD_ID, - FilePageLabels.FILE_API_LIST_VIEW_API, - FilePageLabels.FILE_API_LIST_VIEW_PARAMETER, - FilePageLabels.FILE_API_LIST_VIEW_RETURN, - FilePageLabels.FILE_API_LIST_VIEW_ERRNO }; - - private int[] columnSizes = { 40, 70, 100, 40, 40, 120, 250, 70, 100 }; - private int[] columnAlignment = { SWT.RIGHT, SWT.RIGHT, SWT.RIGHT, - SWT.RIGHT, SWT.RIGHT, SWT.LEFT, SWT.LEFT, SWT.LEFT, SWT.LEFT }; - - int[] sortTypes = { AnalyzerConstants.SORT_TYPE_NUM, - AnalyzerConstants.SORT_TYPE_STRING, - AnalyzerConstants.SORT_TYPE_STRING, - AnalyzerConstants.SORT_TYPE_NUM, AnalyzerConstants.SORT_TYPE_NUM, - AnalyzerConstants.SORT_TYPE_STRING, - AnalyzerConstants.SORT_TYPE_STRING, - AnalyzerConstants.SORT_TYPE_STRING, - AnalyzerConstants.SORT_TYPE_STRING }; - - FileApiListTable tableComp = null; - FileChartManager manager = FileChartManager.getInstance(); - - public FileApiListView(Composite parent, int style) { - super(parent, style, true); - this.setLayout(new FillLayout()); - - setTitle(FilePageLabels.FILE_API_LIST_VIEW_TITLE); - - Composite contents = getContentArea(); - contents.setBackground(ColorResources.WINDOW_BG_COLOR); - contents.setLayout(new FillLayout()); - tableComp = new FileApiListTable(contents, SWT.NONE, SWT.MULTI - | SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL); - tableComp.setSortTypes(sortTypes); - tableComp.setColumnAlignment(columnAlignment); - tableComp.setColumns(columnNames); - tableComp.setColumnSize(columnSizes); - tableComp.setTableName(FilePageLabels.FILE_API_LIST_VIEW_TITLE); - contents.addControlListener(new TableColumnSizePackListener(tableComp, - columnSizes)); - } - - @Override - public void updateView() { - if (null == tableComp || selectedData == null) { - return; - } - - long newAnalysisStartTime = 0; - long newAnalysisEndTime = 0; - - // TODO: comment - if (RangeDataManager.getInstance().isBeingAnalyzed()) { - newAnalysisStartTime = RangeDataManager.getInstance() - .getAnalysisStartTime(); - newAnalysisEndTime = RangeDataManager.getInstance() - .getAnalysisEndTime(); - } else { - newAnalysisStartTime = 0; - newAnalysisEndTime = 0; - } - - if (newAnalysisStartTime != analysisStartTime - || newAnalysisEndTime != analysisEndTime) { - analysisStartTime = newAnalysisStartTime; - analysisEndTime = newAnalysisEndTime; - tableComp.updateTable(); - return; - } - - int selectedPid = ToolbarArea.getInstance().getSelectedPid(); - if (preSelectionPId != -1 && preSelectionPId != selectedPid) { - tableComp.updateTable(); - } - preSelectionPId = selectedPid; - - List events = manager.getApiDB().selectAPITable( - selectedData.getDentry(), selectedData.getPid(), - selectedData.getTid(), selectedData.isParentChart()); - if (tableComp.getTable().getItemCount() > 0 - && events.size() != tableComp.getTable().getItemCount()) { - manager.setSelectedTableAPIList(events); - tableComp.updateTable(); - } - } - - @Override - public Control getControl() { - return tableComp; - } - - @Override - public void clear() { - tableComp.getTable().removeAll(); - } - - @Override - public void updateView(DAViewData data) { - DASelectionData selData = (DASelectionData) data; - long selectionStartTime = selData.getStartTime(); - long selectionEndTime = selData.getEndTime(); - if (selData.getData() instanceof FileSelectedData) { - selectedData = (FileSelectedData) selData.getData(); - if (null == selectedData) { - return; - } - manager.setSelectedTableAPIList( - manager.getApiDB(). - selectAPITable(selectedData.getDentry(), - selectedData.getPid(), - selectedData.getTid(), - selectedData.isParentChart())); - - tableComp.updateTable(); - tableComp.setSelectionByTime(selectionStartTime, - selectionEndTime); - isChangedSelected = true; - } - } - - - public FileSelectedData getSelectedData() { - return selectedData; - } - - public long getRangeStartTime() { - return analysisStartTime; - } - - public long getRangeEndTime() { - return analysisEndTime; - } -} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileChartView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileChartView.java deleted file mode 100644 index becc7c5..0000000 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileChartView.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * Dynamic Analyzer - * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: - * Hyeran kim - * Juyoung Kim - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Contributors: - * - S-Core Co., Ltd - * - */ - -package org.tizen.dynamicanalyzer.ui.file.view; - -import java.util.List; - -import org.eclipse.swt.custom.StackLayout; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; -import org.tizen.dynamicanalyzer.common.DASelectionData; -import org.tizen.dynamicanalyzer.nl.FilePageLabels; -import org.tizen.dynamicanalyzer.resources.ColorResources; -import org.tizen.dynamicanalyzer.resources.FontResources; -import org.tizen.dynamicanalyzer.swap.model.data.LogData; -import org.tizen.dynamicanalyzer.ui.common.SetRangeMarkerMouseMoveListener; -import org.tizen.dynamicanalyzer.ui.common.UICommonConstants; -import org.tizen.dynamicanalyzer.ui.file.FilePage; -import org.tizen.dynamicanalyzer.ui.file.manager.FileChartManager; -import org.tizen.dynamicanalyzer.ui.file.model.FileEvent; -import org.tizen.dynamicanalyzer.ui.range.RangeDataManager; -import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants; -import org.tizen.dynamicanalyzer.ui.timeline.logparser.LifecycleLogParser; -import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; -import org.tizen.dynamicanalyzer.widgets.chart.DAChartPlotIntervalMarker; -import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoard; -import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardItem; -import org.tizen.dynamicanalyzer.widgets.chartBoard.DAChartBoardSelectionListener; -import org.tizen.dynamicanalyzer.widgets.da.view.DAViewComposite; -import org.tizen.dynamicanalyzer.widgets.da.view.DAViewData; -import org.tizen.dynamicanalyzer.widgets.timeline.DATimeline; - -public class FileChartView extends DAViewComposite { - // TODO: the height can be changed - public final static int FILE_CHART_HEIGHT = 40; - - private final Composite contents; - private FileChartBoard fileChartBoard; - private final StackLayout stackLayout; - private DAChartBoardItem lastSelectedItemForSummary = null; - - private final RangeDataManager rangeDataManager = RangeDataManager - .getInstance(); - private FileChartManager chartManager = FileChartManager.getInstance(); - - public FileChartView(Composite parent, int style) { - super(parent, style, false); - this.setLayout(new FillLayout()); - - setTitle(FilePageLabels.FILE_CHART_FILE); - - contents = getContentArea(); - contents.setBackground(ColorResources.WINDOW_BG_COLOR); - stackLayout = new StackLayout(); - contents.setLayout(stackLayout); - fileChartBoard = new FileChartBoard(contents, FilePageLabels.FILE_CHART_FILE); - fileChartBoard.setNameFont(FontResources.CHART_NAME_FONT); - fileChartBoard.addSelectionListener(new DAChartBoardSelectionListener() { - @Override - public void handleSelectionEvent(DAChartBoardItem item) { - lastSelectedItemForSummary = item; - AnalyzerManager - .getCurrentPage().updateView( - new DASelectionData( - FilePage.chartViewID, - (long) (((DAChartPlotIntervalMarker) fileChartBoard - .getMarkers() - .get(UICommonConstants.SELECTION_MARKER_INDEX)) - // TODO: use utility API - .getStartVal() * TimelineConstants.MEGA_DOUBLE), - (long) (((DAChartPlotIntervalMarker) fileChartBoard - .getMarkers() - .get(UICommonConstants.SELECTION_MARKER_INDEX)) - // TODO: use utility API - .getEndVal() * TimelineConstants.MEGA_DOUBLE), - item.getData(), null)); - } - }); - - initIntervalMarkers(fileChartBoard); - - stackLayout.topControl = fileChartBoard; - - // Making title composition using resource of timeline pages. - fileChartBoard.makeDefaultTitleComposite(FilePageLabels.FILE_CHART_FILE, - FontResources.ADDITEM_BUTTON_FONT, - ColorResources.ADD_CHART_FONT_COLOR, - ColorResources.ADD_CHART_NORMAL_START, - ColorResources.ADD_CHART_NORMAL_END, - ColorResources.ADD_CHART_NORMAL_STROKE); - - DATimeline timeline = fileChartBoard.getTimeline(); - - timeline.setTimeTickFont(FontResources.TIMELINE_TICK_FONT); - timeline.setTimeBalloonFont(FontResources.TIMELINE_BALLOON_FONT); - - LifecycleLogParser.getInstance().registerLifecycleBar( - fileChartBoard.getLifecycleBar()); - LifecycleLogParser.getInstance().registerTimeline(timeline); - - timeline.addMouseMoveListener(new SetRangeMarkerMouseMoveListener( - rangeDataManager, fileChartBoard, timeline)); - } - - @Override - public void updateView() { - fileChartBoard.updateChart(); - - fileChartBoard.setTotalEndTime(ToolbarArea.getInstance().getTime()); - - fileChartBoard.setTimelineMarkerStartTime(rangeDataManager - .getMarkerStartTime() / TimelineConstants.MEGA_DOUBLE); - fileChartBoard.setTimelineMarkerEndTime(rangeDataManager.getMarkerEndTime() - / TimelineConstants.MEGA_DOUBLE); - - if (RangeDataManager.getInstance().isBeingAnalyzed()) { - ((DAChartPlotIntervalMarker) fileChartBoard.getMarkers().get( - UICommonConstants.RANGE_ANALYSIS_MARKER_INDEX)) - .setInterval(rangeDataManager.getAnalysisStartTime() - / TimelineConstants.MEGA_DOUBLE, - rangeDataManager.getAnalysisEndTime() - / TimelineConstants.MEGA_DOUBLE); - } else { - ((DAChartPlotIntervalMarker) fileChartBoard.getMarkers().get( - UICommonConstants.RANGE_ANALYSIS_MARKER_INDEX)) - .setInterval(-1, -1); - } - - ((DAChartPlotIntervalMarker) fileChartBoard.getMarkers().get( - UICommonConstants.RANGE_MARKER_INDEX)).setInterval( - rangeDataManager.getMarkerStartTime() - / TimelineConstants.MEGA_DOUBLE, - rangeDataManager.getMarkerEndTime() - / TimelineConstants.MEGA_DOUBLE); - - } - - @Override - // TODO: need to refactoring - public void updateView(DAViewData data) { - fileChartBoard.updateChart(); - if (data instanceof DASelectionData) { - DASelectionData selData = (DASelectionData) data; - long dataTime = -1; - - if (selData.isLogData()) { - Object obData = selData.getData(); - if (null != obData && (obData instanceof LogData)) { // summary - LogData ldata = (LogData) obData; - dataTime = ldata.getTime(); - - int seq = ldata.getSeq(); - List event = chartManager.getApiDB().selectFileEventBySeq(seq); - int selectedIndex[] = fileChartBoard.getChartIndex(event.get(0)); - fileChartBoard.selectItem(selectedIndex[0], selectedIndex[1]); - - if (null != lastSelectedItemForSummary) { - AnalyzerManager.getCurrentPage().updateView( - new DASelectionData(FilePage.chartViewID, - dataTime, dataTime, - lastSelectedItemForSummary.getData(), - null)); - } - } - } else { - dataTime = selData.getStartTime(); - } - double startTime = dataTime / TimelineConstants.MEGA_DOUBLE; - double endTime = selData.getEndTime() / TimelineConstants.MEGA_DOUBLE; - - DAChartPlotIntervalMarker intervalMarker = (DAChartPlotIntervalMarker)fileChartBoard - .getMarkers().get(UICommonConstants.SELECTION_MARKER_INDEX); - intervalMarker.setInterval(startTime, endTime); - - } - } - - @Override - public void clear() { - fileChartBoard.clear(); - initIntervalMarkers(fileChartBoard); - chartManager.getFileChartDataMaker().clear(); - } - - @Override - public Control getControl() { - return fileChartBoard; - } - - private void initIntervalMarkers(DAChartBoard board) { - // selection marker - DAChartPlotIntervalMarker selectionMarker = new DAChartPlotIntervalMarker( - -1, -1, DAChartPlotIntervalMarker.INTERVAL_MARKER_STYLE_AREA); - selectionMarker.setBackgroundColor(ColorResources.SELECTION_RANGE); - selectionMarker.setAlpha((int) (255 * 0.25)); - board.addIntervalMarker(selectionMarker); - - // range analysis marker - DAChartPlotIntervalMarker rangeAnalyzeMarker = new DAChartPlotIntervalMarker( - -1, -1, DAChartPlotIntervalMarker.INTERVAL_MARKER_STYLE_AREA); - rangeAnalyzeMarker.setBackgroundColor(ColorResources.YELLOW); - rangeAnalyzeMarker.setAlpha((int) (255 * 0.25)); - board.addIntervalMarker(rangeAnalyzeMarker); - - // range marker - DAChartPlotIntervalMarker rangeMarker = new DAChartPlotIntervalMarker( - -1, -1, DAChartPlotIntervalMarker.INTERVAL_MARKER_STYLE_LINE); - rangeMarker.setForegroundColor(ColorResources.RED); - rangeMarker.setAlpha((int) (255 * 0.25)); - board.addIntervalMarker(rangeMarker); - } - - public void setRangeMarker(double starttime, double endtime) { - fileChartBoard.setTimelineMarkerStartTime(starttime); - fileChartBoard.setTimelineMarkerEndTime(endtime); - - ((DAChartPlotIntervalMarker) fileChartBoard.getMarkers().get( - UICommonConstants.RANGE_MARKER_INDEX)).setInterval( - starttime, endtime); - } - -} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileDetailInfoView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileDetailInfoView.java deleted file mode 100644 index b38d931..0000000 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/view/FileDetailInfoView.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Dynamic Analyzer - * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. - * - * Contact: - * Hyeran kim - * Juyoung Kim - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Contributors: - * - S-Core Co., Ltd - * - */ - -package org.tizen.dynamicanalyzer.ui.file.view; - -import java.util.List; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.PaintEvent; -import org.eclipse.swt.events.PaintListener; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.widgets.Canvas; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; -import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; -import org.tizen.dynamicanalyzer.nl.FilePageLabels; -import org.tizen.dynamicanalyzer.resources.ColorResources; -import org.tizen.dynamicanalyzer.resources.FontResources; -import org.tizen.dynamicanalyzer.ui.file.FilePage; -import org.tizen.dynamicanalyzer.ui.file.manager.FileChartManager; -import org.tizen.dynamicanalyzer.ui.file.model.FileEvent; -import org.tizen.dynamicanalyzer.ui.file.model.FileSelectedData; -import org.tizen.dynamicanalyzer.utils.Formatter; -import org.tizen.dynamicanalyzer.widgets.da.view.DAViewComposite; -import org.tizen.dynamicanalyzer.widgets.da.view.DAViewData; - -//TODO: contains a lot legacy code, need to refatoring this class -// TODO: comment the contents of the detail view -// TODO: add: process name (PID), thread function name (TID) -public class FileDetailInfoView extends DAViewComposite { - private Canvas canvas = null; - private String fileName = AnalyzerLabels.EMPTY_STRING; - private String filePath = AnalyzerLabels.EMPTY_STRING; - private long fileSize = 0; - private long readSize = 0; - private long writeSize = 0; - private long totalUseTime = 0; - private int apiCount = 0; - private int failedApiCount = 0; - - private FileChartManager fileChartManager = FileChartManager.getInstance(); - - private void init() { - fileName = AnalyzerLabels.EMPTY_STRING; - filePath = AnalyzerLabels.EMPTY_STRING; - fileSize = 0; - readSize = 0; - writeSize = 0; - totalUseTime = 0; - apiCount = 0; - failedApiCount = 0; - } - - public FileDetailInfoView(Composite parent, int style) { - super(parent, style, true); - this.setLayout(new FillLayout()); - - setTitle(FilePageLabels.FILE_DETAILS_TITLE); - - Composite contents = getContentArea(); - contents.setBackground(ColorResources.VIEW_BG_COLOR); - contents.setLayout(new FillLayout()); - canvas = new Canvas(contents, SWT.TRANSPARENT); - canvas.addPaintListener(new PaintListener() { - - @Override - public void paintControl(PaintEvent e) { - int x = 0; - int y = 0; - Rectangle rect = canvas.getBounds(); - e.gc.setBackground(ColorResources.VIEW_BG_COLOR); - e.gc.fillRectangle(rect.x, rect.y, rect.width, rect.height); - e.gc.setForeground(ColorResources.TABLE_CONTENTS_FONT_COLOR); - e.gc.setFont(FontResources.DETAIL_INFO_FONT); - - String fName = FilePageLabels.FILE_DETAILS_FILE_NAME + fileName; - Point textSize = e.gc.textExtent(fName, SWT.DRAW_MNEMONIC); - if (textSize.x > rect.width) { - fName = FilePageLabels.FILE_DETAILS_FILE_NAME_NEWLINE - + fileName; - } - int fontHeight = textSize.y + 5; - e.gc.drawString(fName, x += 10, y += fontHeight); - - // file path bolck - { - String pathLabel = FilePageLabels.FILE_DETAILS_FILE_PATH; - e.gc.drawString(pathLabel, x, y + fontHeight); - Point pathSize = e.gc.textExtent(pathLabel, - SWT.DRAW_MNEMONIC); - int xPos = x + pathSize.x; - int width = rect.width - xPos; - String text = filePath; - if (text.length() > 0) { - while (text.length() > 0) { - Point tSize = e.gc.textExtent(text, - SWT.DRAW_MNEMONIC); - String inputText = AnalyzerLabels.EMPTY_STRING; - if (tSize.x > width) { - int strLen = (width * text.length()) / tSize.x; - inputText += text.substring(0, strLen - 1); - text = text.substring(strLen - 1, text.length()); - } else { - inputText += text; - text = AnalyzerLabels.EMPTY_STRING; - } - e.gc.drawString(inputText, xPos, y += fontHeight); - } - } else { - y += fontHeight; - } - } - - e.gc.drawString( - FilePageLabels.FILE_DETAILS_TOTAL_SIZE - + Long.toString(fileSize), x, y += fontHeight); - e.gc.drawString( - FilePageLabels.FILE_DETAILS_READ_SIZE - + Long.toString(readSize), x, y += fontHeight); - e.gc.drawString( - FilePageLabels.FILE_DETAILS_WRITE_SIZE - + Long.toString(writeSize), x, y += fontHeight); - e.gc.drawString(FilePageLabels.FILE_DETAILS_TOTAL_USE_TIME - + Formatter.toTimeFormat(totalUseTime) - + FilePageLabels.TIME_MS, x, y += fontHeight); - e.gc.drawString( - FilePageLabels.FILE_DETAILS_API_COUNT - + Integer.toString(apiCount), x, - y += fontHeight); - e.gc.drawString(FilePageLabels.FILE_DETAILS_FAILED_API_COUNT - + Integer.toString(failedApiCount), x, y += fontHeight); - } - }); - } - - @Override - public void updateView(DAViewData data) { - updateData(); - } - - @Override - public void updateView() { - updateData(); - } - - private void updateData() { - FileApiListView view = (FileApiListView) AnalyzerManager - .getCurrentPage().getView(FilePage.apilistViewID); - FileSelectedData selectData = view.getSelectedData(); - - if (null == selectData) { - return; - } - List events = null; - events = fileChartManager.getApiDB() - .selectAPITable(selectData.getDentry(), - selectData.getPid(), selectData.getTid(), selectData.isParentChart()); - if(events != null) { - filePath = events.get(0).getFilePath(); - fileName = events.get(0).getFileName(); - fileSize = events.get(0).getFileSize(); - apiCount = events.size(); - } - events = fileChartManager.getApiDB() - .selectFailedAPI(selectData.getDentry(), - selectData.getPid(), selectData.getTid(), selectData.isParentChart()); - if(events != null) { - failedApiCount = events.size(); - } - // TODO define What totalUseTime - // totalUseTime = (long) selectData.getFileTotalUseTime(); - // readSize = selectData.getReadSize(); - // writeSize = selectData.getWriteSize(); - - canvas.redraw(); - } - - @Override - public Control getControl() { - return canvas; - } - - @Override - public void clear() { - init(); - canvas.redraw(); - } -} -- 2.7.4