package org.tizen.dynamicanalyzer.ui.file;
+import java.sql.ResultSet;
+import java.sql.SQLException;
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.graphics.Color;
import org.eclipse.swt.widgets.Composite;
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
import org.tizen.dynamicanalyzer.common.DASelectionData;
import org.tizen.dynamicanalyzer.common.Global;
import org.tizen.dynamicanalyzer.constant.CommonConstants;
+import org.tizen.dynamicanalyzer.database.SqlConnectionManager;
import org.tizen.dynamicanalyzer.error.ErrorCodeManager;
import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
import org.tizen.dynamicanalyzer.model.TableInput;
+import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.swap.model.data.FileData;
+import org.tizen.dynamicanalyzer.swap.model.data.LogData;
+import org.tizen.dynamicanalyzer.ui.file.data.FileApiDB;
+import org.tizen.dynamicanalyzer.ui.file.data.FileApiDB.COLUMN;
import org.tizen.dynamicanalyzer.ui.file.manager.FileDataManager;
import org.tizen.dynamicanalyzer.ui.file.model.FileEvent;
+import org.tizen.dynamicanalyzer.ui.file.model.FileSelectedData;
import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineConstants;
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.widgets.chart.DAChartSeriesItem;
public class FileApiListTable extends DAApiListTableComposite {
+ private FileDataManager fileDataManager = FileDataManager.getInstance();
+
public FileApiListTable(Composite parent, int compStyle, int tableStyle) {
super(parent, compStyle, tableStyle);
table.addSelectionListener(new SelectionListener() {
long rangeEndTime = view.getRangeEndTime();
HashMap<String, Integer> findStartAPITableIndexHashMap = new HashMap<String, Integer>();
+ HashMap<Integer, Long> findStartTimeHashMap = new HashMap<Integer, Long>();
List<Integer> removeTableIndex = new ArrayList<Integer>();
List<TableInput> input = new ArrayList<TableInput>();
- List<FileEvent> contents = FileDataManager.getInstance().getSelectedTableAPIList();
- if(contents == null) {
- return null;
- }
- for (int i = 0; i < contents.size(); i++) {
- FileEvent contentTemp = contents.get(i);
- List<String> contentText = new ArrayList<String>();
- List<String> contentData = new ArrayList<String>();
+ FileSelectedData selectedData = fileDataManager.getSelectedData();
+ ResultSet rs = fileDataManager.getApiDB().selectAPI(
+ selectedData.getFilePath(), selectedData.getPid(),
+ selectedData.getTid(), selectedData.isParentChart());
+ if (rs != null) {
+ try {
+ int i = -1;
+ while (rs.next()) {
+ i++;
+
+ List<String> contentText = new ArrayList<String>();
+ List<String> contentData = new ArrayList<String>();
- Integer startLogIndex = 0;
- int fdApiType = contentTemp.getFdApiType();
+ Integer startLogIndex = 0;
+ int seq = rs.getInt(FileApiDB.COLUMN.SEQ.index );
+ String filePath = rs.getString(FileApiDB.COLUMN.FILE_PATH.index );
+ int pid = rs.getInt(FileApiDB.COLUMN.PID.index);
+ int tid = rs.getInt(FileApiDB.COLUMN.TID.index);
+ long fd = rs.getLong(FileApiDB.COLUMN.FD.index);
+ int fdApiType = rs.getInt(FileApiDB.COLUMN.API_TYPE.index);
+ long time = rs.getLong(FileApiDB.COLUMN.EVENT_TIME.index);
+ int apiId = rs.getInt(FileApiDB.COLUMN.API_ID.index);
+ long errno = rs.getLong(FileApiDB.COLUMN.ERRNO.index);
+ String returns = rs.getString(COLUMN.RETURN_VALUE.index);
+ String args = rs.getString(FileApiDB.COLUMN.ARGS.index);
+ boolean isTarget =rs.getBoolean(COLUMN.TARGET.index);
+ long fileSize = rs.getLong(COLUMN.FILE_SIZE.index);
+ long size = rs.getLong(COLUMN.SIZE.index);
+
+ FileEvent fileEvent = new FileEvent(seq, filePath, pid,
+ tid, fd, fdApiType, apiId, time, fileSize, size,
+ args, returns, errno, isTarget);
+
+ String apiName = Global.getFunctionName(apiId);
+ long startTime = 0;
+
+ contentText.add(0, Integer.toString(seq));
+ contentData.add(Integer.toString(seq));
+
+ boolean isExistStartTimeLog = false;
+ if (fdApiType == LogCenterConstants.FD_API_TYPE_READ_START
+ || fdApiType == LogCenterConstants.FD_API_TYPE_WRITE_START
+ || fdApiType == LogCenterConstants.FD_API_TYPE_LOCK_START) {
+ String keString = apiName + pid + tid + fd;
+ findStartAPITableIndexHashMap.put(keString, i);
+ findStartTimeHashMap.put(i, time);
+ } else if (fdApiType == LogCenterConstants.FD_API_TYPE_READ_END
+ || fdApiType == LogCenterConstants.FD_API_TYPE_WRITE_END
+ || fdApiType == LogCenterConstants.FD_API_TYPE_LOCK_END) {
+ String keString = apiName + pid + tid + fd;
+ startLogIndex = findStartAPITableIndexHashMap.get(keString);
+ findStartAPITableIndexHashMap.remove(keString);
+ if (null != startLogIndex) {
+ contentText.add(input.get(startLogIndex.intValue())
+ .getText().get(1)); // start time
+ contentData.add(input.get(startLogIndex.intValue())
+ .getText().get(1));
- int seq = contentTemp.getSeq();
- contentText.add(0, Integer.toString(seq));
- contentData.add(Integer.toString(seq));
- long time = contentTemp.getTime();
+ startTime = findStartTimeHashMap.get(startLogIndex);
+ String timeFormat = Formatter
+ .toTimeFormat(time - startTime);
+ String removeTimeFormat = timeFormat.replace(
+ "00:", CommonConstants.EMPTY);//$NON-NLS-1$
- boolean isExistStartTimeLog = false;
- if (fdApiType == LogCenterConstants.FD_API_TYPE_READ_START
- || fdApiType == LogCenterConstants.FD_API_TYPE_WRITE_START
- || fdApiType == LogCenterConstants.FD_API_TYPE_LOCK_START) {
- String keString = contentTemp.getApiName()
- + contentTemp.getPid() + contentTemp.getTid() + contentTemp.getFdValue();
- findStartAPITableIndexHashMap.put(keString, i);
+ contentText.add(removeTimeFormat); // elapsed time
+ contentData.add(Long.toString(time - startTime));
+
+ isExistStartTimeLog = true;
+ removeTableIndex.add(startLogIndex.intValue());
+ } else {
+ contentText.add(Formatter.toTimeFormat(time)); // start//
+ contentData.add(Long.toString(time));
+ contentText.add("00.000");//$NON-NLS-1$
+ contentData.add("00.000");//$NON-NLS-1$
+ }
+ }
- } else if (fdApiType == LogCenterConstants.FD_API_TYPE_READ_END
- || fdApiType == LogCenterConstants.FD_API_TYPE_WRITE_END
- || fdApiType == LogCenterConstants.FD_API_TYPE_LOCK_END) {
- String keString = contentTemp.getApiName()
- + contentTemp.getPid() + contentTemp.getTid() + contentTemp.getFdValue();
- startLogIndex = findStartAPITableIndexHashMap.get(keString);
- findStartAPITableIndexHashMap.remove(keString);
- if (null != startLogIndex) {
- contentText.add(input.get(startLogIndex.intValue())
- .getText().get(1)); // start time
- contentData.add(input.get(startLogIndex.intValue())
- .getText().get(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$
+ }
- long startTime = contents.get(startLogIndex.intValue()).getTime();
- String timeFormat = Formatter
- .toTimeFormat(time - startTime);
- String removeTimeFormat = timeFormat.replace(
- "00:", CommonConstants.EMPTY);//$NON-NLS-1$
+ contentText.add(Integer.toString(pid));
+ contentData.add(Integer.toString(pid));
- contentText.add(removeTimeFormat); // elapsed time
- contentData.add(Long.toString(time - startTime));
+ contentText.add(Integer.toString(tid));
+ contentData.add(Integer.toString(tid));
- isExistStartTimeLog = true;
- removeTableIndex.add(startLogIndex.intValue());
- } else {
- contentText.add(Formatter.toTimeFormat(contentTemp
- .getTime())); // start//
- contentData.add(Long.toString(contentTemp.getTime()));
- 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(Long.toString(fd));
+ contentData.add(Long.toString(fd));
- contentText.add(Integer.toString(contentTemp.getPid()));
- contentData.add(Integer.toString(contentTemp.getPid()));
+ contentText.add(apiName);
+ contentData.add(apiName);
- contentText.add(Integer.toString(contentTemp.getTid()));
- contentData.add(Integer.toString(contentTemp.getTid()));
-
- contentText.add(Long.toString(contentTemp.getFdValue()));
- contentData.add(Long.toString(contentTemp.getFdValue()));
-
- contentText.add(Global.getFunctionName(contentTemp.getApiId()));
- contentData.add(Global.getFunctionName(contentTemp.getApiId()));
-
- contentText.add(contentTemp.getArgs());
- contentData.add(contentTemp.getArgs());
-
- contentText.add(contentTemp.getReturn());
- contentData.add(contentTemp.getReturn());
+ contentText.add(args);
+ contentData.add(args);
+
+ contentText.add(returns);
+ contentData.add(returns);
- 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()));
+ String errMsg = ErrorCodeManager.getInatance()
+ .getErrorCode(errno).name();
+ if (null == errMsg) {
+ errMsg = "undefined error code"; //$NON-NLS-1$
+ }
- DATableDataFormat tableData = new DATableDataFormat(
- contentTemp.getSeq());
- 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);
+ // create DATableDataFormat
+ DATableDataFormat tableData = new DATableDataFormat(seq);
+ tableData.setLogData(fileEvent);
+ 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);
+ if (time >= rangeStartTime && time <= rangeEndTime) {
+ tableInput.setInRange(true);
+ }
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } finally {
+ SqlConnectionManager.releaseResultSet(rs);
}
}
+
int removeCount = 0;
for (int index : removeTableIndex) {
int removeIndex = index - removeCount;
package org.tizen.dynamicanalyzer.ui.file;
+import java.sql.ResultSet;
+import java.sql.SQLException;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Control;
import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.DASelectionData;
+import org.tizen.dynamicanalyzer.database.SqlConnectionManager;
import org.tizen.dynamicanalyzer.nl.FilePageLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.ui.file.manager.FileDataManager;
}
// if new event is put from swap, update table
- List<FileEvent> events = manager.getApiDB().selectAPITable(
+ ResultSet rs = manager.getApiDB().selectAPI(
selectedData.getFilePath(), selectedData.getPid(),
selectedData.getTid(),
selectedData.isParentChart());
- if(events != null) {
- if (tableComp.getTable().getItemCount() > 0
- && events.size() != tableComp.getTable().getItemCount()) {
- manager.setSelectedTableAPIList(events);
- isUpdate = true;
+
+ if(rs != null) {
+ try {
+ if(rs.next() && tableComp.getTable().getItemCount() > 0) {
+ manager.setSelectedData(selectedData);
+ isUpdate = true;
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } finally {
+ SqlConnectionManager.releaseResultSet(rs);
}
+ isUpdate = true;
}
-
+
return isUpdate;
}
if (null == selectedData) {
return;
}
- manager.setSelectedTableAPIList(
- manager.getApiDB().
- selectAPITable(selectedData.getFilePath(),
- selectedData.getPid(),
- selectedData.getTid(),
- selectedData.isParentChart()));
+
+ manager.setSelectedData(selectedData);
tableComp.updateTable();
tableComp.setSelectionByTime(selectionStartTime,
package org.tizen.dynamicanalyzer.ui.file;
+import java.sql.ResultSet;
+import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.swt.graphics.Color;
import org.tizen.dynamicanalyzer.common.Global;
+import org.tizen.dynamicanalyzer.database.SqlConnectionManager;
import org.tizen.dynamicanalyzer.logparser.LogCenterConstants;
import org.tizen.dynamicanalyzer.nl.FilePageLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
+import org.tizen.dynamicanalyzer.ui.file.data.FileApiDB;
+import org.tizen.dynamicanalyzer.ui.file.manager.FileDataManager;
import org.tizen.dynamicanalyzer.ui.file.model.FileAccess;
import org.tizen.dynamicanalyzer.ui.file.model.FileEvent;
import org.tizen.dynamicanalyzer.ui.file.model.FileStatus;
private int tid = -1;
private long fd = -1;
private long fileSize = 0;
- //private int parentChartIndex = -1;
private int chartIndex = -1;
private boolean isTarget = false;
+ private FileDataManager fileChartManager = FileDataManager.getInstance();
+
public FileChart(String filePath) {
this.filePath = filePath;
}
* Update API series chart
* @param apiList
*/
- public void updateApiSeries(List<FileEvent> apiList){
- for(int i=0; i < apiList.size(); i++) {
- FileEvent event = apiList.get(i);
- if(!event.getFilePath().equals(this.filePath) ||
- event.getPid() != this.pid ||
- event.getTid() != this.tid) {
- continue;
+ public void updateApiSeries(double startTime, double endTime){
+ ResultSet rs = fileChartManager.getApiDB().selectFailedAPI(
+ startTime, endTime, this.filePath, this.pid, this.tid);
+ if (rs != null) {
+ try {
+ while (rs.next()) {
+ double time = rs.getLong(1) / TimelineConstants.MEGA_DOUBLE;
+ String apiName = Global.getFunctionName(rs.getInt(2));
+ Color color = ColorResources.FILE_API_FAILED;
+
+ DAChartSeriesItem seriesItem = new DAChartSeriesItem(time,
+ DAChartSeriesItem.SERIES_AREA_BAR, color, color, apiName);
+ accessSeries.addSeriesItem(seriesItem);
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } finally {
+ SqlConnectionManager.releaseResultSet(rs);
}
- double time = event.getTime() / TimelineConstants.MEGA_DOUBLE;
- String apiName = Global.getFunctionName(event.getApiId());
- Color color = ColorResources.FILE_API_FAILED;
-
- DAChartSeriesItem seriesItem = new DAChartSeriesItem(time,
- DAChartSeriesItem.SERIES_AREA_BAR, color, color, apiName);
- accessSeries.addSeriesItem(seriesItem);
}
chart.redraw();
}
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.data.FileApiDB;
import org.tizen.dynamicanalyzer.ui.file.manager.FileDataMaker;
import org.tizen.dynamicanalyzer.ui.file.manager.FileDataManager;
import org.tizen.dynamicanalyzer.ui.file.model.FileAccess;
private List<FileChart> chartList = new ArrayList<FileChart>();
private FileDataManager fileChartManager = FileDataManager.getInstance();
private FileDataMaker dataMaker;
- private FileApiDB apiDB;
private int parentChartIndex = -1;
private Map<HashSet<Object>, int[]> chartIndexMap = new HashMap<HashSet<Object>, int[]>();
public FileChartBoard(Composite parent, String title) {
super(parent, title);
dataMaker = fileChartManager.getFileChartDataMaker();
- apiDB = fileChartManager.getApiDB();
}
@Override
*/
private void updateApiSeries() {
if (chartList.size() > 0) {
- /*List<FileEvent> apiList = apiDB.selectAPISeries(
- getVisibleStartTime(), getVisibleEndTime());*/
- List<FileEvent> apiList = apiDB.selectFailedAPISeries(
- getVisibleStartTime(), getVisibleEndTime());
- if (null == apiList) {
- // no file event within the selected time range.
- return;
- }
for (FileChart chart : chartList) {
if (chart.isParentChart()) {
continue;
}
- chart.updateApiSeries(apiList);
+ chart.updateApiSeries(getVisibleStartTime(), getVisibleEndTime());
}
- } else { // chartList.size() <= 0
- // no data at all
}
}
parentChart.getLastChildChartIndex() });
}
- public int[] getChartIndex(FileEvent event) {
+ public int[] getChartIndex(String filePath, int pid, int tid) {
HashSet<Object> set = new HashSet<Object>();
- set.add(event.getFilePath());
- set.add(event.getPid());
- set.add(event.getTid());
+ set.add(filePath);
+ set.add(pid);
+ set.add(tid);
if(chartIndexMap.containsKey(set)) {
return chartIndexMap.get(set);
}
- Logger.error("couldn't find index:" + event.getFilePath() + ","
- + event.getPid() + "," + event.getTid());
+ Logger.error("couldn't find index:" + filePath + ","
+ + pid + "," + tid);
return new int[]{0, 0};
}
package org.tizen.dynamicanalyzer.ui.file;
-import java.util.List;
+import java.sql.ResultSet;
+import java.sql.SQLException;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Control;
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
import org.tizen.dynamicanalyzer.common.DASelectionData;
+import org.tizen.dynamicanalyzer.database.SqlConnectionManager;
import org.tizen.dynamicanalyzer.nl.FilePageLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.resources.FontResources;
import org.tizen.dynamicanalyzer.ui.common.SetRangeMarkerMouseMoveListener;
import org.tizen.dynamicanalyzer.ui.common.UICommonConstants;
import org.tizen.dynamicanalyzer.ui.file.manager.FileDataManager;
-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;
@Override
public void handleSelectionEvent(DAChartBoardItem item) {
lastSelectedItemForSummary = item;
- AnalyzerManager
- .getCurrentPage().updateView(
- new DASelectionData(
- FilePage.chartViewID,
- (long) (((DAChartPlotIntervalMarker) fileChartBoard
- .getMarkers()
- .get(UICommonConstants.SELECTION_MARKER_INDEX))
- .getStartVal() * TimelineConstants.MEGA_DOUBLE),
- (long) (((DAChartPlotIntervalMarker) fileChartBoard
- .getMarkers()
- .get(UICommonConstants.SELECTION_MARKER_INDEX))
- .getEndVal() * TimelineConstants.MEGA_DOUBLE),
- item.getData(), null));
+ DAChartPlotIntervalMarker intervalMarker = (DAChartPlotIntervalMarker) fileChartBoard
+ .getMarkers().get(UICommonConstants.SELECTION_MARKER_INDEX);
+ long selectiedStartTime = (long) (intervalMarker.getStartVal() * TimelineConstants.MEGA_DOUBLE);
+ long selectiedEndTime = (long) (intervalMarker.getEndVal() * TimelineConstants.MEGA_DOUBLE);
+ AnalyzerManager.getCurrentPage().updateView(
+ new DASelectionData(FilePage.chartViewID,
+ selectiedStartTime, selectiedEndTime, item.getData(), null));
}
});
LogData ldata = (LogData) obData;
dataTime = ldata.getTime();
int seq = ldata.getSeq();
- FileEvent event = chartManager.getApiDB().selectFileEventBySeq(seq);
- if(event != null) {
- int selectedIndex[] = fileChartBoard.getChartIndex(event);
- fileChartBoard.selectItem(selectedIndex[0], selectedIndex[1]);
- if (null != lastSelectedItemForSummary) {
- AnalyzerManager.getCurrentPage().updateView(
- new DASelectionData(FilePage.chartViewID,
- dataTime, dataTime,
- lastSelectedItemForSummary.getData(),
- null));
+ ResultSet rs = chartManager.getApiDB().selectFileEventBySeq(seq);
+ if (rs != null) {
+ try {
+ if (rs.next()) {
+ int selectedIndex[] = fileChartBoard.getChartIndex(rs.getString(1),
+ rs.getInt(2), rs.getInt(3));
+ fileChartBoard.selectItem(selectedIndex[0], selectedIndex[1]);
+ if (null != lastSelectedItemForSummary) {
+ AnalyzerManager.getCurrentPage().updateView(
+ new DASelectionData(FilePage.chartViewID,
+ dataTime, dataTime,
+ lastSelectedItemForSummary.getData(),
+ null));
+ }
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } finally {
+ SqlConnectionManager.releaseResultSet(rs);
}
- } // else, no need to update
+ }
}
} else {
dataTime = selData.getStartTime();
package org.tizen.dynamicanalyzer.ui.file;
-import java.util.List;
+import java.sql.ResultSet;
+import java.sql.SQLException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.tizen.dynamicanalyzer.common.DASelectionData;
+import org.tizen.dynamicanalyzer.database.SqlConnectionManager;
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.resources.FontResources;
+import org.tizen.dynamicanalyzer.ui.file.data.FileApiDB;
import org.tizen.dynamicanalyzer.ui.file.manager.FileDataManager;
-import org.tizen.dynamicanalyzer.ui.file.model.FileEvent;
import org.tizen.dynamicanalyzer.ui.file.model.FileSelectedData;
import org.tizen.dynamicanalyzer.widgets.da.view.DAViewComposite;
import org.tizen.dynamicanalyzer.widgets.da.view.DAViewData;
private void updateData(FileSelectedData selectData) {
failedApiCount = 0;
- List<FileEvent> events = null;
- events = fileChartManager.getApiDB().selectAPITable(
+ ResultSet rs = fileChartManager.getApiDB().selectAPI(
selectData.getFilePath(), selectData.getPid(),
selectData.getTid(), selectData.isParentChart());
- if (events != null) {
- filePath = events.get(0).getFilePath();
- fileName = events.get(0).getFileName();
- fileSize = events.get(events.size()-1).getFileSize();
-
- long readSize = 0;
- long writeSize = 0;
- int apiCount = events.size();
- for(FileEvent data : events) {
- switch(data.getFdApiType()) {
- case LogCenterConstants.FD_API_TYPE_OPEN:
- case LogCenterConstants.FD_API_TYPE_CLOSE:
- case LogCenterConstants.FD_API_TYPE_OTHERS:
- case LogCenterConstants.FD_API_TYPE_UNLOCK:
- if(data.getErrno() != 0) {
- failedApiCount++;
- }
- break;
- case LogCenterConstants.FD_API_TYPE_LOCK_END:
- if(data.getErrno() != 0) {
- failedApiCount++;
- }
- apiCount--;
- break;
- case LogCenterConstants.FD_API_TYPE_READ_END:
- if(data.getErrno() != 0) {
- failedApiCount++;
+
+ if (rs != null) {
+ try {
+ long readSize = 0;
+ long writeSize = 0;
+ int apiCount = 0;
+
+ while (rs.next()) {
+ apiCount++;
+
+ if(rs.isFirst()) {
+ filePath = rs.getString(FileApiDB.COLUMN.FILE_PATH.index);
+ String[] splitPath = filePath.split("\\/"); //$NON-NLS-1$
+ fileName = new String(splitPath[splitPath.length - 1]);
+ }else if(rs.isLast()) {
+ fileSize = rs.getLong(FileApiDB.COLUMN.FILE_SIZE.index);
}
- readSize += data.getSize();
- // except *_end event among the API count
- apiCount--;
- break;
- case LogCenterConstants.FD_API_TYPE_WRITE_END:
- if(data.getErrno() != 0) {
- failedApiCount++;
+ int apiType = rs.getInt(FileApiDB.COLUMN.API_TYPE.index);
+ long errno = rs.getInt(FileApiDB.COLUMN.ERRNO.index);
+ long size = rs.getLong(FileApiDB.COLUMN.SIZE.index);
+
+ switch(apiType) {
+ case LogCenterConstants.FD_API_TYPE_OPEN:
+ case LogCenterConstants.FD_API_TYPE_CLOSE:
+ case LogCenterConstants.FD_API_TYPE_OTHERS:
+ case LogCenterConstants.FD_API_TYPE_UNLOCK:
+ if(errno != 0) {
+ failedApiCount++;
+ }
+ break;
+ case LogCenterConstants.FD_API_TYPE_LOCK_END:
+ if(errno != 0) {
+ failedApiCount++;
+ }
+ apiCount--;
+ break;
+ case LogCenterConstants.FD_API_TYPE_READ_END:
+ if(errno != 0) {
+ failedApiCount++;
+ }
+ readSize += size;
+ // except *_end event among the API count
+ apiCount--;
+ break;
+ case LogCenterConstants.FD_API_TYPE_WRITE_END:
+ if(errno != 0) {
+ failedApiCount++;
+ }
+ writeSize += size;
+ // except *_end event among the API count
+ apiCount--;
+ break;
+ default:
+ break;
}
- writeSize += data.getSize();
- // except *_end event among the API count
- apiCount--;
- break;
- default:
- break;
}
+ this.apiCount = apiCount;
+ this.readSize = readSize;
+ this.writeSize = writeSize;
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } finally {
+ SqlConnectionManager.releaseResultSet(rs);
}
- this.apiCount = apiCount;
- this.readSize = readSize;
- this.writeSize = writeSize;
+ canvas.redraw();
}
- canvas.redraw();
}
@Override
package org.tizen.dynamicanalyzer.ui.file.data;
import java.sql.PreparedStatement;
+import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
private static final String TABLE_NAME = FilePageLabels.FILE_ACCESS_DB;
public static enum COLUMN {
- PID(0, "pid"),
- TID(1, "tid"),
- FILE_PATH(2, "filePath"),
- FD(3, "fd"),
- API_TYPE(4, "apiType"),
- START_TIME(5, "startTime"),
- END_TIME(6, "endTime"),
- ERRNO(7, "errNo"),
- FILE_SIZE(8, "fileSize");
+ PID(1, "PID"),
+ TID(2, "TID"),
+ FILE_PATH(3, "FILE_PATH"),
+ FD(4, "FD"),
+ API_TYPE(5, "API_TYPE"),
+ START_TIME(6, "START_TIME"),
+ END_TIME(7, "END_TIME"),
+ ERRNO(8, "ERRNO"),
+ FILE_SIZE(9, "FILE_SIZE");
- private final int value;
+ private final int index;
private final String name;
- private COLUMN(int value, String name) {
- this.value = value;
+ private COLUMN(int index, String name) {
+ this.index = index;
this.name = name;
}
- public int getValue() {
- return value;
+ public int getIndex() {
+ return index;
}
public String getName() {
}
public FileAccessDB() {
- addColumn(new DBColumn(COLUMN.PID.getName(), DBConstants.NOT_NULL, DBConstants.INTEGER));
- addColumn(new DBColumn(COLUMN.TID.getName(), DBConstants.NOT_NULL, DBConstants.INTEGER));
- addColumn(new DBColumn(COLUMN.FILE_PATH.getName(), DBConstants.EMPTY, DBConstants.BIG_TEXT));
- addColumn(new DBColumn(COLUMN.FD.getName(), DBConstants.EMPTY, DBConstants.LONG));
- addColumn(new DBColumn(COLUMN.API_TYPE.getName(), DBConstants.NOT_NULL, DBConstants.INTEGER));
- addColumn(new DBColumn(COLUMN.START_TIME.getName(), DBConstants.NOT_NULL, DBConstants.LONG));
- addColumn(new DBColumn(COLUMN.END_TIME.getName(), DBConstants.NOT_NULL, DBConstants.LONG));
- addColumn(new DBColumn(COLUMN.ERRNO.getName(), DBConstants.EMPTY, DBConstants.LONG));
- addColumn(new DBColumn(COLUMN.FILE_SIZE.getName(), DBConstants.EMPTY, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.PID.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+ addColumn(new DBColumn(COLUMN.TID.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+ addColumn(new DBColumn(COLUMN.FILE_PATH.name, DBConstants.EMPTY, DBConstants.BIG_TEXT));
+ addColumn(new DBColumn(COLUMN.FD.name, DBConstants.EMPTY, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.API_TYPE.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+ addColumn(new DBColumn(COLUMN.START_TIME.name, DBConstants.NOT_NULL, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.END_TIME.name, DBConstants.NOT_NULL, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.ERRNO.name, DBConstants.EMPTY, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.FILE_SIZE.name, DBConstants.EMPTY, DBConstants.LONG));
}
+
@Override
public String getTableName() {
return TABLE_NAME;
+ selectAll
+ " from " + TABLE_NAME; //$NON-NLS-1$
+ public List<FileAccess> executeQueryRS(String query) {
+ List<FileAccess> resultData = new ArrayList<FileAccess>();
+ ResultSet rs = SqlConnectionManager.executeQueryRS(query);
+ if (rs != null) {
+ try {
+ while (rs.next()) {
+ FileAccess access= getDataFromResultSet(rs);
+ if (access != null) {
+ resultData.add(access);
+ }
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } finally {
+ SqlConnectionManager.releaseResultSet(rs);
+ }
+ }
+ return resultData;
+ }
+
+ public FileAccess getDataFromResultSet(ResultSet rs) {
+ FileAccess access = null;
+ try {
+ access = new FileAccess(
+ rs.getInt(COLUMN.PID.index),
+ rs.getInt(COLUMN.TID.index),
+ rs.getString(COLUMN.FILE_PATH.index),
+ rs.getLong(COLUMN.FD.index),
+ rs.getInt(COLUMN.API_TYPE.index),
+ rs.getLong(COLUMN.START_TIME.index),
+ rs.getLong(COLUMN.END_TIME.index),
+ rs.getLong(COLUMN.ERRNO.index),
+ rs.getLong(COLUMN.FILE_SIZE.index)
+ );
+ } catch (SQLException e) {
+ e.printStackTrace();
+ return null;
+ }
+ return access;
+ }
+
public void insert(FileAccess insertData) {
List<List<Object>> insertDataList = new ArrayList<List<Object>>();
insertDataList.add(insertData.getDBData());
String query = String.format(SELECT_QUERY);
List<FileAccess> accessList = new ArrayList<FileAccess>();
-
- List<List<Object>> result = SqlConnectionManager.executeQuery(query);
- if (null == result || result.size() == 0 || result.get(0).size() == 0) {
- return accessList;
- }
-
- for (List<Object> data : result) {
- accessList.add(new FileAccess(data));
- }
+ accessList = executeQueryRS(query);
return accessList;
}
public static String selectAll() {
StringBuffer selectAllColumn = new StringBuffer();
- selectAllColumn.append(COLUMN.PID.getName());
+ selectAllColumn.append(COLUMN.PID.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.TID.getName());
+ selectAllColumn.append(COLUMN.TID.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.FILE_PATH.getName());
+ selectAllColumn.append(COLUMN.FILE_PATH.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.FD.getName());
+ selectAllColumn.append(COLUMN.FD.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.API_TYPE.getName());
+ selectAllColumn.append(COLUMN.API_TYPE.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.START_TIME.getName());
+ selectAllColumn.append(COLUMN.START_TIME.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.END_TIME.getName());
+ selectAllColumn.append(COLUMN.END_TIME.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.ERRNO.getName());
+ selectAllColumn.append(COLUMN.ERRNO.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.FILE_SIZE.getName());
+ selectAllColumn.append(COLUMN.FILE_SIZE.name);
return selectAllColumn.toString();
}
isPrepared = false;
} else {
try {
- prep.setInt(1, (Integer)(rowData.get(COLUMN.PID.getValue())));
- prep.setInt(2, (Integer)(rowData.get(COLUMN.TID.getValue())));
- prep.setString(3, (String)(rowData.get(COLUMN.FILE_PATH.getValue())));
- prep.setLong(4, (Long)(rowData.get(COLUMN.FD.getValue())));
- prep.setInt(5, (Integer)(rowData.get(COLUMN.API_TYPE.getValue())));
- prep.setLong(6, (Long)(rowData.get(COLUMN.START_TIME.getValue())));
- prep.setLong(7, (Long)(rowData.get(COLUMN.END_TIME.getValue())));
- prep.setLong(8, (Long)(rowData.get(COLUMN.ERRNO.getValue())));
- prep.setLong(9, (Long)(rowData.get(COLUMN.FILE_SIZE.getValue())));
+ prep.setInt(1, (Integer)(rowData.get(0)));
+ prep.setInt(2, (Integer)(rowData.get(1)));
+ prep.setString(3, (String)(rowData.get(2)));
+ prep.setLong(4, (Long)(rowData.get(3)));
+ prep.setInt(5, (Integer)(rowData.get(4)));
+ prep.setLong(6, (Long)(rowData.get(5)));
+ prep.setLong(7, (Long)(rowData.get(6)));
+ prep.setLong(8, (Long)(rowData.get(7)));
+ prep.setLong(9, (Long)(rowData.get(8)));
} catch (SQLException e) {
e.printStackTrace();
isPrepared = false;
package org.tizen.dynamicanalyzer.ui.file.data;
import java.sql.PreparedStatement;
+import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
private static final String TABLE_NAME = FilePageLabels.FILE_API_DB;
public static enum COLUMN {
- SEQ(0, "seq"),
- FILE_PATH(1, "filePath"),
- PID(2, "pid"),
- TID(3, "tid"),
- FD(4, "fd"),
- API_TYPE(5, "apiType"),
- EVENT_TIME(6, "eventTime"),
- API_ID(7, "apiId"),
- ERRNO(8, "errNo"),
- IO_SIZE(9, "ioSize"),
- FILE_SIZE(10, "fileSize"),
- SIZE(11, "size"),
- RETURN_VALUE(12, "returnValue"),
- ARGS(13, "args"),
- TARGET(14, "target");
+ SEQ(1, "SEQ"),
+ FILE_PATH(2, "FILE_PATH"),
+ PID(3, "PID"),
+ TID(4, "TID"),
+ FD(5, "FD"),
+ API_TYPE(6, "API_TYPE"),
+ EVENT_TIME(7, "EVENT_TIME"),
+ API_ID(8, "API_ID"),
+ ERRNO(9, "ERRNO"),
+ IO_SIZE(10, "IO_SIZE"),
+ FILE_SIZE(11, "FILE_SIZE"),
+ SIZE(12, "SIZE"),
+ RETURN_VALUE(13, "RETURN_VALUE"),
+ ARGS(14, "ARGS"),
+ TARGET(15, "TARGET");
- private final int value;
- private final String name;
+ public final int index;
+ public final String name;
- private COLUMN(int value, String name) {
- this.value = value;
+ private COLUMN(int index, String name) {
+ this.index = index;
this.name = name;
}
- public int getValue() {
- return value;
+ public int getIndex() {
+ return index;
}
public String getName() {
}
public FileApiDB() {
- addColumn(new DBColumn(COLUMN.SEQ.getName(), DBConstants.NOT_NULL, DBConstants.INTEGER));
- addColumn(new DBColumn(COLUMN.FILE_PATH.getName(), DBConstants.EMPTY, DBConstants.BIG_TEXT));
- addColumn(new DBColumn(COLUMN.PID.getName(), DBConstants.NOT_NULL, DBConstants.INTEGER));
- addColumn(new DBColumn(COLUMN.TID.getName(), DBConstants.NOT_NULL, DBConstants.INTEGER));
- addColumn(new DBColumn(COLUMN.FD.getName(), DBConstants.EMPTY, DBConstants.LONG));
- addColumn(new DBColumn(COLUMN.API_TYPE.getName(), DBConstants.NOT_NULL, DBConstants.INTEGER));
- addColumn(new DBColumn(COLUMN.EVENT_TIME.getName(), DBConstants.NOT_NULL, DBConstants.LONG));
- addColumn(new DBColumn(COLUMN.API_ID.getName(), DBConstants.EMPTY, DBConstants.INTEGER));
- addColumn(new DBColumn(COLUMN.ERRNO.getName(), DBConstants.EMPTY, DBConstants.LONG));
- addColumn(new DBColumn(COLUMN.IO_SIZE.getName(), DBConstants.EMPTY, DBConstants.LONG));
- addColumn(new DBColumn(COLUMN.FILE_SIZE.getName(), DBConstants.EMPTY, DBConstants.LONG));
- addColumn(new DBColumn(COLUMN.SIZE.getName(), DBConstants.EMPTY, DBConstants.LONG));
- addColumn(new DBColumn(COLUMN.RETURN_VALUE.getName(), DBConstants.EMPTY, DBConstants.BIG_TEXT));
- addColumn(new DBColumn(COLUMN.ARGS.getName(), DBConstants.EMPTY, DBConstants.BIG_TEXT));
- addColumn(new DBColumn(COLUMN.TARGET.getName(), DBConstants.NOT_NULL, DBConstants.BOOLEAN));
+ addColumn(new DBColumn(COLUMN.SEQ.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+ addColumn(new DBColumn(COLUMN.FILE_PATH.name, DBConstants.EMPTY, DBConstants.BIG_TEXT));
+ addColumn(new DBColumn(COLUMN.PID.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+ addColumn(new DBColumn(COLUMN.TID.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+ addColumn(new DBColumn(COLUMN.FD.name, DBConstants.EMPTY, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.API_TYPE.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+ addColumn(new DBColumn(COLUMN.EVENT_TIME.name, DBConstants.NOT_NULL, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.API_ID.name, DBConstants.EMPTY, DBConstants.INTEGER));
+ addColumn(new DBColumn(COLUMN.ERRNO.name, DBConstants.EMPTY, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.IO_SIZE.name, DBConstants.EMPTY, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.FILE_SIZE.name, DBConstants.EMPTY, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.SIZE.name, DBConstants.EMPTY, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.RETURN_VALUE.name, DBConstants.EMPTY, DBConstants.BIG_TEXT));
+ addColumn(new DBColumn(COLUMN.ARGS.name, DBConstants.EMPTY, DBConstants.BIG_TEXT));
+ addColumn(new DBColumn(COLUMN.TARGET.name, DBConstants.NOT_NULL, DBConstants.BOOLEAN));
}
private static final String selectAllColumn = selectAllColumn();
- private static final String SELECT_API_SERIES = "select "
- + selectAllColumn
- +" from "
- + TABLE_NAME + " where %s <= "
- + COLUMN.EVENT_TIME.getName() + " and "
- + COLUMN.EVENT_TIME.getName()
- + " <= %s";
-
+
private static final String SELECT_FAILED_API_SERIES = "select "
- + selectAllColumn
+ + COLUMN.EVENT_TIME + " , "
+ + COLUMN.API_ID
+" from "
+ TABLE_NAME + " where %s <= "
- + COLUMN.EVENT_TIME.getName() + " and "
- + COLUMN.EVENT_TIME.getName()
+ + COLUMN.EVENT_TIME.name + " and "
+ + COLUMN.EVENT_TIME.name
+ " <= %s" + " and "
- + COLUMN.ERRNO.getName() + " != '0'" + " and "
- + COLUMN.TARGET.getName() + " = 'true'";
+ + COLUMN.FILE_PATH.name + " = '%s'" + " and "
+ + COLUMN.PID.name + " = '%d'" + " and "
+ + COLUMN.TID.name + " = '%d'" + " and "
+ + COLUMN.ERRNO.name + " != '0'" + " and "
+ + COLUMN.TARGET.name + " = 'true'";
private static final String SELECT_APIS_FOR_CHILD = "select "
+ selectAllColumn
+" from "
+ TABLE_NAME + " where "
- + COLUMN.FILE_PATH.getName() + " = '%s'" + " and "
- + COLUMN.PID.getName() + " = '%d'" + " and "
- + COLUMN.TID.getName() + " = '%d'" + " and "
- + COLUMN.TARGET.getName() + " = 'true'";
+ + COLUMN.FILE_PATH.name + " = '%s'" + " and "
+ + COLUMN.PID.name + " = '%d'" + " and "
+ + COLUMN.TID.name + " = '%d'" + " and "
+ + COLUMN.TARGET.name + " = 'true'";
private static final String SELECT_APIS_FOR_PARENT= "select "
+ selectAllColumn
+ " from "
+ TABLE_NAME + " where "
- + COLUMN.FILE_PATH.getName() + " = '%s'" + " and "
- + COLUMN.TARGET.getName() + " = 'true'";
+ + COLUMN.FILE_PATH.name + " = '%s'" + " and "
+ + COLUMN.TARGET.name + " = 'true'";
private static final String SELECT_FILE_EVENT_BY_SEQ = "select "
- //+ selectAllColumn
- + COLUMN.SEQ.getName() + " , "
- + COLUMN.FILE_PATH.getName() + " , "
- + COLUMN.PID.getName() + " , "
- + COLUMN.TID.getName()
+ + COLUMN.FILE_PATH.name + " , "
+ + COLUMN.PID.name + " , "
+ + COLUMN.TID.name
+ " from "
+ TABLE_NAME + " where "
- + COLUMN.SEQ.getName() + " = '%d'"+ " and "
- + COLUMN.TARGET.getName() + " = 'true'";
+ + COLUMN.SEQ.name + " = '%d'"+ " and "
+ + COLUMN.TARGET.name + " = 'true'";
private static final String SELECT_ALL = "select "
+ selectAllColumn
+ " from "
+ TABLE_NAME + " where "
- + COLUMN.TARGET.getName() + " = 'true'";
+ + COLUMN.TARGET.name + " = 'true'";
- public void insert(List<List<Object>> insertData) {
- insertData(insertData);
+ public ResultSet executeQuery(String query) {
+ ResultSet rs = SqlConnectionManager.executeQueryRS(query);
+ return rs;
}
- // for updating api series chart
- public List<FileEvent> selectAPISeries(double visibleStartTime,
- double visibleEndTime) {
- double selectStartTime = visibleStartTime * TimelineConstants.MEGA_DOUBLE;
- double selectEndTime = visibleEndTime * TimelineConstants.MEGA_DOUBLE;
-
- String query = String.format(SELECT_API_SERIES, selectStartTime, selectEndTime);
-
- List<List<Object>> result = SqlConnectionManager.executeQuery(query);
- if (null == result || result.size() == 0 || result.get(0).size() == 0) {
- return null;
+ public List<FileEvent> executeQueryRS(String query) {
+ List<FileEvent> resultData = new ArrayList<FileEvent>();
+ ResultSet rs = SqlConnectionManager.executeQueryRS(query);
+ if (rs != null) {
+ try {
+ while (rs.next()) {
+ FileEvent event= getDataFromResultSet(rs);
+ if (event != null) {
+ resultData.add(event);
+ }
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } finally {
+ SqlConnectionManager.releaseResultSet(rs);
+ }
}
- List<FileEvent> apiList = new ArrayList<FileEvent>();
- for (List<Object> data : result) {
- apiList.add(new FileEvent(data));
+ return resultData;
+ }
+
+ public FileEvent getDataFromResultSet(ResultSet rs) {
+ FileEvent event = null;
+ try {
+ event = new FileEvent(
+ rs.getInt(COLUMN.SEQ.index),
+ rs.getString(COLUMN.FILE_PATH.index),
+ rs.getInt(COLUMN.PID.index),
+ rs.getInt(COLUMN.TID.index),
+ rs.getLong(COLUMN.FD.index),
+ rs.getInt(COLUMN.API_TYPE.index),
+ rs.getInt(COLUMN.API_ID.index),
+ rs.getLong(COLUMN.EVENT_TIME.index),
+ rs.getLong(COLUMN.FILE_SIZE.index),
+ rs.getLong(COLUMN.SIZE.index),
+ rs.getString(COLUMN.ARGS.index),
+ rs.getString(COLUMN.RETURN_VALUE.index),
+ rs.getLong(COLUMN.ERRNO.index),
+ rs.getBoolean(COLUMN.TARGET.index)
+ );
+ } catch (SQLException e) {
+ e.printStackTrace();
+ return null;
}
- return apiList;
+ return event;
+ }
+
+ public void insert(List<List<Object>> insertData) {
+ insertData(insertData);
}
// for updating api series chart
- public List<FileEvent> selectFailedAPISeries(double visibleStartTime,
- double visibleEndTime) {
+ public ResultSet selectFailedAPI(double visibleStartTime,
+ double visibleEndTime, String filePath, int pid, int tid) {
double selectStartTime = visibleStartTime
* TimelineConstants.MEGA_DOUBLE;
double selectEndTime = visibleEndTime * TimelineConstants.MEGA_DOUBLE;
-
String query = String.format(SELECT_FAILED_API_SERIES, selectStartTime,
- selectEndTime);
-
- List<List<Object>> result = SqlConnectionManager.executeQuery(query);
- if (null == result || result.size() == 0 || result.get(0).size() == 0) {
- return null;
- }
- List<FileEvent> apiList = new ArrayList<FileEvent>();
- for (List<Object> data : result) {
- apiList.add(new FileEvent(data));
- }
- return apiList;
+ selectEndTime, filePath, pid, tid);
+
+ return SqlConnectionManager.executeQueryRS(query);
}
+
- // for updating api table view
- public List<FileEvent> selectAPITable(String filePath, int pid, int tid,
+ // for updating api table view and detail view
+ public ResultSet selectAPI(String filePath, int pid, int tid,
boolean isParentChart) {
String query = String.format(SELECT_APIS_FOR_CHILD, filePath, pid, tid);
if (isParentChart) {
- query = String
- .format(SELECT_APIS_FOR_PARENT, filePath);
- }
- List<List<Object>> result = SqlConnectionManager.executeQuery(query);
- if (null == result || result.size() == 0 || result.get(0).size() == 0) {
- return null;
+ query = String.format(SELECT_APIS_FOR_PARENT, filePath);
}
- List<FileEvent> apiList = new ArrayList<FileEvent>();
- for (List<Object> data : result) {
- apiList.add(new FileEvent(data));
- }
- return apiList;
+ return SqlConnectionManager.executeQueryRS(query);
}
- public FileEvent selectFileEventBySeq(long seq) {
+ // to get chart row index
+ public ResultSet selectFileEventBySeq(long seq) {
String query = String.format(SELECT_FILE_EVENT_BY_SEQ, seq);
- List<List<Object>> result = SqlConnectionManager.executeQuery(query);
- if (null == result || result.size() == 0 || result.get(0).size() == 0) {
- return null;
- }
- List<Object> data = result.get(0);
- FileEvent fileEvent = new FileEvent(
- (Integer) data.get(FileApiDB.COLUMN.SEQ.getValue()),
- (String) data.get(FileApiDB.COLUMN.FILE_PATH.getValue()),
- (Integer) data.get(FileApiDB.COLUMN.PID.getValue()),
- (Integer) data.get(FileApiDB.COLUMN.TID.getValue()));
- return fileEvent;
+
+ return SqlConnectionManager.executeQueryRS(query);
}
public List<FileEvent> select() {
String query = String.format(SELECT_ALL);
-
- List<FileEvent> apiList = new ArrayList<FileEvent>();
-
- List<List<Object>> result = SqlConnectionManager.executeQuery(query);
- if (null == result || result.size() == 0 || result.get(0).size() == 0) {
- return apiList;
- }
-
- for (List<Object> data : result) {
- apiList.add(new FileEvent(data));
- }
+ List<FileEvent> apiList = executeQueryRS(query);
+
return apiList;
}
public static String selectAllColumn() {
StringBuffer selectAllColumn = new StringBuffer();
- selectAllColumn.append(COLUMN.SEQ.getName());
+ selectAllColumn.append(COLUMN.SEQ.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.FILE_PATH.getName());
+ selectAllColumn.append(COLUMN.FILE_PATH.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.PID.getName());
+ selectAllColumn.append(COLUMN.PID.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.TID.getName());
+ selectAllColumn.append(COLUMN.TID.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.FD.getName());
+ selectAllColumn.append(COLUMN.FD.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.API_TYPE.getName());
+ selectAllColumn.append(COLUMN.API_TYPE.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.EVENT_TIME.getName());
+ selectAllColumn.append(COLUMN.EVENT_TIME.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.API_ID.getName());
+ selectAllColumn.append(COLUMN.API_ID.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.ERRNO.getName());
+ selectAllColumn.append(COLUMN.ERRNO.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.IO_SIZE.getName());
+ selectAllColumn.append(COLUMN.IO_SIZE.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.FILE_SIZE.getName());
+ selectAllColumn.append(COLUMN.FILE_SIZE.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.SIZE.getName());
+ selectAllColumn.append(COLUMN.SIZE.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.RETURN_VALUE.getName());
+ selectAllColumn.append(COLUMN.RETURN_VALUE.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.ARGS.getName());
+ selectAllColumn.append(COLUMN.ARGS.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.TARGET.getName());
+ selectAllColumn.append(COLUMN.TARGET.name);
return selectAllColumn.toString();
}
isPrepared = false;
} else {
try {
- prep.setInt(1, (Integer)(rowData.get(COLUMN.SEQ.getValue())));
- prep.setString(2, (String)(rowData.get(COLUMN.FILE_PATH.getValue())));
- prep.setInt(3, (Integer)(rowData.get(COLUMN.PID.getValue())));
- prep.setInt(4, (Integer)(rowData.get(COLUMN.TID.getValue())));
- prep.setLong(5, (Long)(rowData.get(COLUMN.FD.getValue())));
- prep.setInt(6, (Integer)(rowData.get(COLUMN.API_TYPE.getValue())));
- prep.setLong(7, (Long)(rowData.get(COLUMN.EVENT_TIME.getValue())));
- prep.setInt(8, (Integer)(rowData.get(COLUMN.API_ID.getValue())));
- prep.setLong(9, (Long)(rowData.get(COLUMN.ERRNO.getValue())));
- prep.setLong(10, (Long)(rowData.get(COLUMN.IO_SIZE.getValue())));
- prep.setLong(11, (Long)(rowData.get(COLUMN.FILE_SIZE.getValue())));
- prep.setLong(12, (Long)(rowData.get(COLUMN.SIZE.getValue())));
- prep.setString(13, (String)(rowData.get(COLUMN.RETURN_VALUE.getValue())));
- prep.setString(14, (String)(rowData.get(COLUMN.ARGS.getValue())));
- prep.setBoolean(15, (Boolean)(rowData.get(COLUMN.TARGET.getValue())));
+ prep.setInt(1, (Integer)(rowData.get(0)));
+ prep.setString(2, (String)(rowData.get(1)));
+ prep.setInt(3, (Integer)(rowData.get(2)));
+ prep.setInt(4, (Integer)(rowData.get(3)));
+ prep.setLong(5, (Long)(rowData.get(4)));
+ prep.setInt(6, (Integer)(rowData.get(5)));
+ prep.setLong(7, (Long)(rowData.get(6)));
+ prep.setInt(8, (Integer)(rowData.get(7)));
+ prep.setLong(9, (Long)(rowData.get(8)));
+ prep.setLong(10, (Long)(rowData.get(9)));
+ prep.setLong(11, (Long)(rowData.get(10)));
+ prep.setLong(12, (Long)(rowData.get(11)));
+ prep.setString(13, (String)(rowData.get(12)));
+ prep.setString(14, (String)(rowData.get(13)));
+ prep.setBoolean(15, (Boolean)(rowData.get(14)));
} catch (SQLException e) {
e.printStackTrace();
isPrepared = false;
package org.tizen.dynamicanalyzer.ui.file.data;
import java.sql.PreparedStatement;
+import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
private static final String TABLE_NAME = FilePageLabels.FILE_STATUS_DB;
public static enum COLUMN {
- PID(0, "pid"),
- TID(1, "tid"),
- FILE_PATH(2, "filePath"),
- FD(3, "FD"),
- API_TYPE(4, "apiType"),
- EVENT_TIME(5, "eventTime"),
- ERRNO(6, "errNo");
+ PID(1, "PID"),
+ TID(2, "TID"),
+ FILE_PATH(3, "FILE_PATH"),
+ FD(4, "FD"),
+ API_TYPE(5, "API_TYPE"),
+ EVENT_TIME(6, "EVENT_TIME"),
+ ERRNO(7, "ERRNO");
- private final int value;
+ private final int index;
private final String name;
- private COLUMN(int value, String name) {
- this.value = value;
+ private COLUMN(int index, String name) {
+ this.index = index;
this.name = name;
}
- public int getValue() {
- return value;
+ public int getIndex() {
+ return index;
}
public String getName() {
}
public FileStatusDB() {
- addColumn(new DBColumn(COLUMN.PID.getName(), DBConstants.NOT_NULL, DBConstants.INTEGER));
- addColumn(new DBColumn(COLUMN.TID.getName(), DBConstants.NOT_NULL, DBConstants.INTEGER));
- addColumn(new DBColumn(COLUMN.FILE_PATH.getName(), DBConstants.NOT_NULL, DBConstants.BIG_TEXT));
- addColumn(new DBColumn(COLUMN.FD.getName(), DBConstants.EMPTY, DBConstants.LONG));
- addColumn(new DBColumn(COLUMN.API_TYPE.getName(), DBConstants.NOT_NULL, DBConstants.INTEGER));
- addColumn(new DBColumn(COLUMN.EVENT_TIME.getName(), DBConstants.NOT_NULL, DBConstants.LONG));
- addColumn(new DBColumn(COLUMN.ERRNO.getName(), DBConstants.NOT_NULL, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.PID.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+ addColumn(new DBColumn(COLUMN.TID.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+ addColumn(new DBColumn(COLUMN.FILE_PATH.name, DBConstants.NOT_NULL, DBConstants.BIG_TEXT));
+ addColumn(new DBColumn(COLUMN.FD.name, DBConstants.EMPTY, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.API_TYPE.name, DBConstants.NOT_NULL, DBConstants.INTEGER));
+ addColumn(new DBColumn(COLUMN.EVENT_TIME.name, DBConstants.NOT_NULL, DBConstants.LONG));
+ addColumn(new DBColumn(COLUMN.ERRNO.name, DBConstants.NOT_NULL, DBConstants.LONG));
}
@Override
+ selectAll
+ " from " + TABLE_NAME; //$NON-NLS-1$
+ public List<FileStatus> executeQueryRS(String query) {
+ List<FileStatus> resultData = new ArrayList<FileStatus>();
+ ResultSet rs = SqlConnectionManager.executeQueryRS(query);
+ if (rs != null) {
+ try {
+ while (rs.next()) {
+ FileStatus status= getDataFromResultSet(rs);
+ if (status != null) {
+ resultData.add(status);
+ }
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } finally {
+ SqlConnectionManager.releaseResultSet(rs);
+ }
+ }
+ return resultData;
+ }
+
+ public FileStatus getDataFromResultSet(ResultSet rs) {
+ FileStatus status = null;
+ try {
+ status = new FileStatus(
+ rs.getInt(COLUMN.PID.index),
+ rs.getInt(COLUMN.TID.index),
+ rs.getLong(COLUMN.FD.index),
+ rs.getString(COLUMN.FILE_PATH.index),
+ rs.getInt(COLUMN.API_TYPE.index),
+ rs.getLong(COLUMN.EVENT_TIME.index),
+ rs.getLong(COLUMN.ERRNO.index)
+ );
+ } catch (SQLException e) {
+ e.printStackTrace();
+ return null;
+ }
+ return status;
+ }
+
public void insert(FileStatus insertData) {
List<List<Object>> insertDataList = new ArrayList<List<Object>>();
insertDataList.add(insertData.getDBData());
String query = String.format(SELECT_QUERY);
List<FileStatus> statusList = new ArrayList<FileStatus>();
-
- List<List<Object>> result = SqlConnectionManager.executeQuery(query);
- if (null == result || result.size() == 0 || result.get(0).size() == 0) {
- return statusList;
- }
-
- for (List<Object> data : result) {
- statusList.add(new FileStatus(data));
- }
+ statusList = executeQueryRS(query);
return statusList;
}
public static String selectAll() {
StringBuffer selectAllColumn = new StringBuffer();
- selectAllColumn.append(COLUMN.PID.getName());
+ selectAllColumn.append(COLUMN.PID.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.TID.getName());
+ selectAllColumn.append(COLUMN.TID.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.FILE_PATH.getName());
+ selectAllColumn.append(COLUMN.FILE_PATH.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.FD.getName());
+ selectAllColumn.append(COLUMN.FD.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.API_TYPE.getName());
+ selectAllColumn.append(COLUMN.API_TYPE.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.EVENT_TIME.getName());
+ selectAllColumn.append(COLUMN.EVENT_TIME.name);
selectAllColumn.append(",");
- selectAllColumn.append(COLUMN.ERRNO.getName());
+ selectAllColumn.append(COLUMN.ERRNO.name);
return selectAllColumn.toString();
}
isPrepared = false;
} else {
try {
- prep.setInt(1, (Integer)(rowData.get(COLUMN.PID.getValue())));
- prep.setInt(2, (Integer)(rowData.get(COLUMN.TID.getValue())));
- prep.setString(3, (String)(rowData.get(COLUMN.FILE_PATH.getValue())));
- prep.setLong(4, (Long)(rowData.get(COLUMN.FD.getValue())));
- prep.setInt(5, (Integer)(rowData.get(COLUMN.API_TYPE.getValue())));
- prep.setLong(6, (Long)(rowData.get(COLUMN.EVENT_TIME.getValue())));
- prep.setLong(7, (Long)(rowData.get(COLUMN.ERRNO.getValue())));
+ prep.setInt(1, (Integer)(rowData.get(0)));
+ prep.setInt(2, (Integer)(rowData.get(1)));
+ prep.setString(3, (String)(rowData.get(2)));
+ prep.setLong(4, (Long)(rowData.get(3)));
+ prep.setInt(5, (Integer)(rowData.get(4)));
+ prep.setLong(6, (Long)(rowData.get(5)));
+ prep.setLong(7, (Long)(rowData.get(6)));
} catch (SQLException e) {
e.printStackTrace();
isPrepared = false;
package org.tizen.dynamicanalyzer.ui.file.manager;
-import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.tizen.dynamicanalyzer.ui.file.data.FileApiDB;
import org.tizen.dynamicanalyzer.ui.file.data.FileStatusDB;
import org.tizen.dynamicanalyzer.ui.file.model.FileAccess;
-import org.tizen.dynamicanalyzer.ui.file.model.FileEvent;
+import org.tizen.dynamicanalyzer.ui.file.model.FileSelectedData;
public class FileDataManager extends PageDataManager {
private FileApiDB apiDB = null;
private FileStatusDB statusDB = null;
- private List<FileEvent> selectedTableAPIList = new ArrayList<FileEvent>();
+ private FileSelectedData selectedData = null;
private FileDataManager() {
dataMaker = new FileDataMaker();
accessDB = null;
apiDB = null;
statusDB = null;
- selectedTableAPIList = new ArrayList<FileEvent>();
+ selectedData = null;
}
public FileAccessDB getAccessDB(){
return dataMaker;
}
- public List<FileEvent> getSelectedTableAPIList() {
- return selectedTableAPIList;
+ public void setSelectedData(FileSelectedData selectedData) {
+ this.selectedData = selectedData;
}
-
- public void setSelectedTableAPIList(
- List<FileEvent> selectedTableAPIList) {
- this.selectedTableAPIList = selectedTableAPIList;
+
+ public FileSelectedData getSelectedData() {
+ return selectedData;
}
/**
this.apiType = apiType;
this.startTime = startTime;
}
+
+ public FileAccess(int pid, int tid, String filePath, long fd, int apiType, long startTime,
+ long endTime, long erroNo, long fileSize) {
+ this.pid = pid;
+ this.tid = tid;
+ this.filePath = filePath;
+ this.fd = fd;
+ this.apiType = apiType;
+ this.startTime = startTime;
+ this.endTime = endTime;
+ this.erroNo = erroNo;
+ this.fileSize = fileSize;
+ }
public List<Object> getDBData() {
List<Object> data = new ArrayList<Object>();
return data;
}
- public FileAccess(List<Object> data) {
- this.pid = (Integer)data.get(FileAccessDB.COLUMN.PID.getValue());
- this.tid = (Integer)data.get(FileAccessDB.COLUMN.TID.getValue());
- this.filePath = (String)data.get(FileAccessDB.COLUMN.FILE_PATH.getValue());
- this.fd = (Long)data.get(FileAccessDB.COLUMN.FD.getValue());
- this.apiType = (Integer)data.get(FileAccessDB.COLUMN.API_TYPE.getValue());
- this.startTime = (Long)data.get(FileAccessDB.COLUMN.START_TIME.getValue());
- this.endTime = (Long)data.get(FileAccessDB.COLUMN.END_TIME.getValue());
- this.erroNo = (Long)data.get(FileAccessDB.COLUMN.ERRNO.getValue());
- this.fileSize = (Long)data.get(FileAccessDB.COLUMN.FILE_SIZE.getValue());
- }
-
public String getFilePath() {
return filePath;
}
this.tid = tid;
}
- public FileEvent(List<Object> data) {
- this.seq = (Integer) data.get(FileApiDB.COLUMN.SEQ.getValue());
- this.filePath = (String) data.get(FileApiDB.COLUMN.FILE_PATH.getValue());
- this.pid = (Integer) data.get(FileApiDB.COLUMN.PID.getValue());
- this.tid = (Integer) data.get(FileApiDB.COLUMN.TID.getValue());
- this.fdValue = (Long) data.get(FileApiDB.COLUMN.FD.getValue());
- this.fdApiType = (Integer) data.get(FileApiDB.COLUMN.API_TYPE.getValue());
- this.apiId = (Integer) data.get(FileApiDB.COLUMN.API_ID.getValue());
- this.time = (Long) data.get(FileApiDB.COLUMN.EVENT_TIME.getValue());
- this.fileSize = (Long) data.get(FileApiDB.COLUMN.FILE_SIZE.getValue());
- this.size = (Long) data.get(FileApiDB.COLUMN.SIZE.getValue());
- this.ret = (String) data.get(FileApiDB.COLUMN.RETURN_VALUE.getValue());
- this.args = (String) data.get(FileApiDB.COLUMN.ARGS.getValue());
- this.errno = (Long) data.get(FileApiDB.COLUMN.ERRNO.getValue());
- this.target = (Boolean) data.get(FileApiDB.COLUMN.TARGET.getValue());
- }
-
public List<Object> getDBData() {
List<Object> data = new ArrayList<Object>();
data.add(this.seq);
return data;
}
- public FileStatus(List<Object> data) {
- this.pid = (Integer)data.get(FileStatusDB.COLUMN.PID.getValue());
- this.tid = (Integer)data.get(FileStatusDB.COLUMN.TID.getValue());
- this.filePath = (String)data.get(FileStatusDB.COLUMN.FILE_PATH.getValue());
- this.fd = (Long)data.get(FileStatusDB.COLUMN.FD.getValue());
- this.apiType = (Integer)data.get(FileStatusDB.COLUMN.API_TYPE.getValue());
- this.eventTime = (Long)data.get(FileStatusDB.COLUMN.EVENT_TIME.getValue());
- this.errNo = (Long)data.get(FileStatusDB.COLUMN.ERRNO.getValue());
- }
-
public String getFilePath() {
return filePath;
}