From 4a3911e9fb945e539e019d167aeab3ab8c73b0b9 Mon Sep 17 00:00:00 2001 From: "Hyunjong,park" Date: Wed, 20 Nov 2013 18:29:40 +0900 Subject: [PATCH] [Title] add feature replay edit dlg. [Desc.] make replay data for DB [Issue] - --- .../handlers/ReplayTraceHandler.java | 8 +- .../tizen/dynamicanalyzer/nl/ReplayEditLabels.java | 4 + .../dynamicanalyzer/nl/ReplayEditLabels.properties | 6 +- .../org/tizen/dynamicanalyzer/sql/SqlManager.java | 254 ++++++++---- .../swap/model/RecordEventObject.java | 1 + .../ui/timeline/calltrace/CallTraceTable.java | 24 +- .../toolbar/replayEditor/RepalyEditSaveDialog.java | 291 +++++++++++++ .../ui/toolbar/replayEditor/ReplayEditDialog.java | 62 ++- .../replayEditor/ReplayEditDialogDataManager.java | 452 ++++++++++++++++++++- .../ui/toolbar/replayEditor/ReplayEditTable.java | 218 ++++++++-- .../replayEditor/ReplayEditTableCellRenderer.java | 8 +- .../toolbar/replayEditor/ReplayEditTableData.java | 19 +- .../ReplayEditTableItemListSortComparator.java | 52 +++ .../uirecorder/UIRecorderRecordThread.java | 2 +- 14 files changed, 1207 insertions(+), 194 deletions(-) create mode 100755 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/RepalyEditSaveDialog.java create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTableItemListSortComparator.java diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/ReplayTraceHandler.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/ReplayTraceHandler.java index 2796fa6..f4d6937 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/ReplayTraceHandler.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/ReplayTraceHandler.java @@ -79,16 +79,20 @@ public class ReplayTraceHandler extends AbstractHandler { // make replay event // on/off , replay start time, count, event objs - ReplayData replayData = SqlManager.getInstance().getReplayLogs(); + ReplayData replayData = SqlManager.getInstance().getReplayLogs(true); int count = replayData.getObjectCount(); byte[] eventObjs = null; for (int i = 0; i < count; i++) { eventObjs = ByteUtils.concatByteArray(eventObjs, replayData .getRecordEvent().get(i).getByteValues()); + System.out.println("Replay code : "+replayData + .getRecordEvent().get(i).getEventCode()+" type : "+replayData + .getRecordEvent().get(i).getEventType()+" value : "+replayData + .getRecordEvent().get(i).getEventValue()); } replayEvent = ByteUtils.getByte(REPLAY_ON, startTime.getSec(), startTime.getNano(), count, eventObjs); - SqlManager.getInstance().closeReplayConnection(); + // SqlManager.getInstance().closeReplayConnection(); } return null; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ReplayEditLabels.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ReplayEditLabels.java index 5482182..cae8a69 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ReplayEditLabels.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ReplayEditLabels.java @@ -65,6 +65,10 @@ public class ReplayEditLabels extends NLS { public static String CONTEXT_VALUE_Y; public static String CONTEXT_VALUE_S; + public static String SAVE; + public static String OK; + public static String CANCEL; + static { NLS.initializeMessages(BUNDLE_NAME, ReplayEditLabels.class); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ReplayEditLabels.properties b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ReplayEditLabels.properties index 7ce46ae..d24dc464 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ReplayEditLabels.properties +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/ReplayEditLabels.properties @@ -30,4 +30,8 @@ CONTEXT_KEY_VOLUME_DOWN=VOLUME - CONTEXT_VALUE_X =x : CONTEXT_VALUE_Y =y : -CONTEXT_VALUE_S=s \ No newline at end of file +CONTEXT_VALUE_S=s + +SAVE = Save +OK =Ok +CANCEL=Cancel \ No newline at end of file diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java index 2f83fa2..02f2fb7 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java @@ -98,7 +98,6 @@ public class SqlManager { + AnalyzerConstants.DATABASE_NAME + ";shutdown=true"; //$NON-NLS-1$ //$NON-NLS-2$ replayConnection = DriverManager.getConnection(dbUrl, "SA", ""); SQLWarning warning = replayConnection.getWarnings(); - System.out.println("dbUrl : " + dbUrl); while (warning != null) { System.out.println("Message: " + warning.getMessage()); System.out.println("SQL state: " + warning.getSQLState()); @@ -308,7 +307,7 @@ public class SqlManager { return false; } } - + /** * Insert query function * @@ -469,6 +468,7 @@ public class SqlManager { insertQuery(insertQuery, insetData); } + public boolean insertQuery(String query, List> input) { PreparedStatement prep = null; try { @@ -568,43 +568,6 @@ public class SqlManager { } } - // public void updateProfileTable(List input) - // throws InterruptedException { - // Statement stat = null; - // ProfileData logData = null; - // int dataRowSize = input.size(); - // for (int i = 0; i < dataRowSize; i++) { - // logData = (ProfileData) input.get(i); - // PreparedStatement prep = null; - // try { - // semaphoreAcquire(); - // Connection conn = getConnection(); - // if (null == conn) { - // System.out.println("failed sql inset : " + input); - // return; - // } - // stat = conn.createStatement(); - // String query = String - // .format("update profiling set ret = '%s' where pcaddr = %s and messageid = %s", - // logData.getReturn(), - // logData.getPcAddr(), - // DataChannelConstants.MSG_FUNCTION_ENTRY);//$NON-NLS-1$ - // stat.executeUpdate(query); - // } catch (SQLException e) { - // e.printStackTrace(); - // } finally { - // if (null != prep) { - // try { - // prep.close(); - // } catch (SQLException e) { - // e.printStackTrace(); - // } - // } - // semaphoreRelease(); - // } - // } - // } - public void saveLeakData() { LeakDetector leakDectector = AnalyzerManager.getLeakDetector(); DBTableInfo leakTableInfo = DBTableManager.getInstance().getTableInfo( @@ -1015,54 +978,6 @@ public class SqlManager { return logs; } - public ReplayData getReplayLogs() { - String query = null; - Statement stat = null; - ResultSet rs = null; - Connection conn = null; - ReplayData output = null; - try { - conn = getReplayConnection(AnalyzerManager.getProject() - .getSavePath()); - if (null == conn) { - return null; - } - semaphoreAcquire(); - StringBuffer buffer = new StringBuffer(); - List columnNames = ReplayLogFormat.getInstance() - .getDBColumnNames(); - for (int i = 0; i < columnNames.size(); i++) { - buffer.append(columnNames.get(i)); - if (i + 1 != columnNames.size()) { - buffer.append(","); - } - } - stat = conn.createStatement(); - rs = stat.executeQuery("select * from replay;"); - if (null == rs) { - return null; - } - output = new ReplayData(); - List eventObjs = output.getRecordEvent(); - while (rs.next()) { - RecordEventObject reObj = new RecordEventObject(); - reObj.loadData(rs); - eventObjs.add(reObj); - } - - output.setObjectCount(eventObjs.size()); - } catch (SQLException e) { - System.out.println("SQLException - select : " + query); - e.printStackTrace(); - } finally { - AnalyzerUtil.tryClose(stat, rs); - if (null != conn) { - semaphoreRelease(); - } - } - return output; - } - public List> selectQuery(String dbFilePath, String[] columnName, String tableName, String option) { List> dbInfo = null; @@ -1535,4 +1450,169 @@ public class SqlManager { } return 0; } + + public ReplayData getReplayLogs(boolean isReplay) { + String query = null; + Statement stat = null; + ResultSet rs = null; + Connection conn = null; + ReplayData output = null; + try { + if(isReplay){ + conn = getReplayConnection(AnalyzerManager.getProject() + .getSavePath()); + }else{ + conn = getConnection(); + } + + if (null == conn) { + return null; + } + semaphoreAcquire(); + StringBuffer buffer = new StringBuffer(); + List columnNames = ReplayLogFormat.getInstance() + .getDBColumnNames(); + for (int i = 0; i < columnNames.size(); i++) { + buffer.append(columnNames.get(i)); + if (i + 1 != columnNames.size()) { + buffer.append(","); + } + } + stat = conn.createStatement(); + rs = stat.executeQuery("select * from replay;"); + if (null == rs) { + return null; + } + output = new ReplayData(); + List eventObjs = output.getRecordEvent(); + while (rs.next()) { + RecordEventObject reObj = new RecordEventObject(); + reObj.loadData(rs); + eventObjs.add(reObj); + } + + output.setObjectCount(eventObjs.size()); + } catch (SQLException e) { + System.out.println("SQLException - select : " + query); + e.printStackTrace(); + } finally { + AnalyzerUtil.tryClose(stat, rs); + if (null != conn) { + semaphoreRelease(); + } + } + return output; + } + + public boolean deleteReplayTableItems(boolean isSave, String dbPath, List input){ + Statement stat = null; + PreparedStatement prep = null; + try { + semaphoreAcquire(); + Connection conn = null; + if(isSave){ + conn = getReplayConnection(dbPath); + }else{ + conn = getConnection(); + } + + if (null == conn) { + return false; + } + stat = conn.createStatement(); + String query = String.format("delete from replay");//$NON-NLS-1$ + StringBuffer queryBuffer = new StringBuffer(query); + for(int i = 0 ; i < input.size() ; i++){ + if(i == 0 ){ + queryBuffer.append(" where "); + } + queryBuffer.append(" rid = ").append(input.get(i)); + if(i < input.size()-1){ + queryBuffer.append(" or "); + } + } + stat.executeUpdate(queryBuffer.toString()); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + if (null != prep) { + try { + prep.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + semaphoreRelease(); + } + return true; + } + + public void insertRepalyTableItem(boolean isSave, String dbPath, List> dataList) { + LogFormat logFormat = LogDataFactory + .getLogFormatById(DataChannelConstants.MSG_DATA_RECORD); + + StringBuffer buffer = new StringBuffer(); + buffer.append("insert into ").append(logFormat.getName()) + .append(" values( "); + + int columnCount = logFormat.getDBTotalColumnCount(); + for (int i = 0; i < columnCount; i++) { + if (i + 1 == columnCount) { + buffer.append(" ? );"); + } else { + buffer.append("?, "); + } + } + insertRepalyQuery(isSave, dbPath, buffer.toString(), dataList); + } + + public boolean insertRepalyQuery(boolean isSave, String dbPath, String query, List> input) { + PreparedStatement prep = null; + try { + Connection conn = null; + if(isSave){ + conn = getReplayConnection(dbPath); + }else{ + conn = getConnection(); + } + if (null == conn || null == query || null == input) { + System.out.println("failed sql inset : " + input); + return false; + } + semaphoreAcquire(); + prep = conn.prepareStatement(query); + int dataRowSize = input.size(); + for (int i = 0; i < dataRowSize; i++) { + List rowData = input.get(i); + prep.setInt(1, Integer.parseInt(rowData.get(0))); + prep.setInt(2, Integer.parseInt(rowData.get(1))); + prep.setLong(3, Long.parseLong(rowData.get(2))); + prep.setLong(4, Long.parseLong(rowData.get(3))); + prep.setInt(5, Integer.parseInt(rowData.get(4))); + prep.setInt(6, Integer.parseInt(rowData.get(5))); + prep.setInt(7, Integer.parseInt(rowData.get(6))); + prep.setInt(8, Integer.parseInt(rowData.get(7))); + prep.setInt(9, Integer.parseInt(rowData.get(8))); + prep.setInt(10, Integer.parseInt(rowData.get(9))); + prep.addBatch(); + } + conn.setAutoCommit(false); + prep.executeBatch(); + conn.setAutoCommit(true); + } catch (SQLException e) { + System.out.println("[Error insert] query = " + query); + e.printStackTrace(); + } finally { + if (null != prep) { + try { + prep.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + semaphoreRelease(); + + } + return true; + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/RecordEventObject.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/RecordEventObject.java index f12e42e..4a14c40 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/RecordEventObject.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/RecordEventObject.java @@ -95,6 +95,7 @@ public class RecordEventObject extends LogData { public void loadData(ResultSet rs) throws SQLException { super.loadData(rs); int index = LogData.STATE_COUNT + 1; + setId(rs.getInt(1)); eventTime.setSec(rs.getInt(index++)); eventTime.setNano(rs.getInt(index++)); eventId = rs.getInt(index++); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceTable.java index 37d4e7c..7b67ea0 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceTable.java @@ -50,7 +50,8 @@ import org.tizen.dynamicanalyzer.ui.widgets.table.DAWindowingTableComposite; import org.tizen.dynamicanalyzer.utils.Formatter; public class CallTraceTable extends DAWindowingTableComposite { - private String dbOptionQuery = "messageid = "+DataChannelConstants.MSG_FUNCTION_ENTRY;//$NON-NLS-1$ + private String selectOptionQuery = "messageid = " + DataChannelConstants.MSG_FUNCTION_ENTRY + "order by time";//$NON-NLS-1$ + private String rangeOptionQuery = "messageid = " + DataChannelConstants.MSG_FUNCTION_ENTRY;//$NON-NLS-1$ public CallTraceTable(Composite parent, int compStyle, int tableStyle) { super(parent, compStyle, tableStyle); @@ -142,17 +143,18 @@ public class CallTraceTable extends DAWindowingTableComposite { } return input; } - protected int getTableLogId(){ + + protected int getTableLogId() { return DataChannelConstants.MSG_FUNCTION_ENTRY; } - + protected int getItemCount() { if (AnalyzerManager.isRunning()) { // trace setDbInsetedItemCount(LogDataFactory.getProfilingLogNum()); } else { if (getDbInsetedItemCount() == 0) { // open setDbInsetedItemCount(SqlManager.getInstance() - .getTableItemCount(getDBTableName(), dbOptionQuery)); + .getTableItemCount(getDBTableName(), rangeOptionQuery)); } else if (LogDataFactory.getProfilingLogNum() > 0) { // stop setDbInsetedItemCount(LogDataFactory.getProfilingLogNum()); } @@ -162,19 +164,19 @@ public class CallTraceTable extends DAWindowingTableComposite { public void setSelectionByTime(long startTime, long endTime) { selectionStartTime = SqlManager.getInstance().getSelectionTime( - getDBTableName(), startTime, dbOptionQuery); + getDBTableName(), startTime, rangeOptionQuery); selectionEndTime = selectionStartTime; if (startTime != endTime) { selectionEndTime = SqlManager.getInstance().getSelectionTime( - getDBTableName(), endTime, dbOptionQuery); + getDBTableName(), endTime, rangeOptionQuery); } - + int selectionRid = SqlManager.getInstance().getSelectionRid( - getDBTableName(), selectionStartTime, dbOptionQuery); + getDBTableName(), selectionStartTime, rangeOptionQuery); getScrollBar().setSelection(selectionRid); } - - protected String getSelectQueryOption(){ - return dbOptionQuery; + + protected String getSelectQueryOption() { + return selectOptionQuery; } } \ No newline at end of file diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/RepalyEditSaveDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/RepalyEditSaveDialog.java new file mode 100755 index 0000000..51ef916 --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/RepalyEditSaveDialog.java @@ -0,0 +1,291 @@ +/* + * Dynamic Analyzer + * + * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * 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.toolbar.replayEditor; + +import java.io.File; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.KeyListener; +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; +import org.tizen.dynamicanalyzer.common.AnalyzerConstants; +import org.tizen.dynamicanalyzer.common.AnalyzerManager; +import org.tizen.dynamicanalyzer.common.AnalyzerPaths; +import org.tizen.dynamicanalyzer.common.CommonConstants; +import org.tizen.dynamicanalyzer.common.DesignConstants; +import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; +import org.tizen.dynamicanalyzer.project.Project; +import org.tizen.dynamicanalyzer.resources.ColorResources; +import org.tizen.dynamicanalyzer.resources.ImageResources; +import org.tizen.dynamicanalyzer.ui.widgets.DAButton; +import org.tizen.dynamicanalyzer.ui.widgets.DADialog; +import org.tizen.dynamicanalyzer.ui.widgets.DAMessageBox; +import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButton; +import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener; + +public class RepalyEditSaveDialog extends DAMessageBox { + + public int MAX_SAVE_FILE_NAME_LENGTH = 35; + + public Text textBox = null; + public String saveFileName = null; + private DAButton okButton = null; + private DAButton cancelButton = null; + + private String targetPath = ""; + + public RepalyEditSaveDialog(Shell parentShell) { + super(parentShell); + } + + protected boolean run() { + shell.setLayout(new FormLayout()); + shell.setSize(446, 127 + 22); + shell.setBackground(ColorResources.DIALOG_BG_UPPER); + + Label label = new Label(shell, SWT.TRANSPARENT); + FormData data = new FormData(); + data.top = new FormAttachment(0, 11); + data.left = new FormAttachment(0, 12); + data.height = 15; + data.width = 150; + label.setLayoutData(data); + label.setForeground(ColorResources.BLACK); + label.setText(AnalyzerLabels.SAVE_TRACE_DLG_SAVE_FILE_NAME); + label.setBackground(ColorResources.DIALOG_BG_UPPER); + + textBox = new Text(shell, SWT.SINGLE); + data = new FormData(); + data.top = new FormAttachment(label, 10); + data.left = new FormAttachment(0, 9); + data.height = 26; + data.width = 410; + textBox.setLayoutData(data); + textBox.setBackground(ColorResources.VIEW_BG_COLOR); + textBox.addKeyListener(keyListener); + textBox.addPaintListener(new PaintListener() { + + @Override + public void paintControl(PaintEvent e) { + e.gc.setForeground(ColorResources.BUTTON_OUTLINE_HOVER_IN_COLOR); + Text text = (Text) e.widget; + Rectangle rect = text.getClientArea(); + e.gc.drawRectangle(rect.x, rect.y, rect.width - 1, + rect.height - 1); + } + }); + + Composite buttonComp = new Composite(shell, SWT.NONE); + buttonComp.setLayout(new FormLayout()); + buttonComp.setBackground(ColorResources.DIALOG_BG_LOWER); + + buttonComp.addPaintListener(new PaintListener() { + + @Override + public void paintControl(PaintEvent e) { + Composite comp = (Composite) e.widget; + Rectangle rect = comp.getClientArea(); + e.gc.setForeground(ColorResources.DIALOG_SUNKEN_1); + e.gc.drawLine(rect.x, rect.y, rect.x + rect.width, rect.y); + e.gc.setForeground(ColorResources.DIALOG_SUNKEN_2); + e.gc.drawLine(rect.x, rect.y + 1, rect.x + rect.width, + rect.y + 1); + } + }); + + FormData compData = new FormData(); + compData.top = new FormAttachment(0, 76); + compData.left = new FormAttachment(0, 0); + compData.right = new FormAttachment(100, 0); + compData.bottom = new FormAttachment(100, 0); + buttonComp.setLayoutData(compData); + + okButton = new DAButton(buttonComp, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(0, 11); + data.left = new FormAttachment(50, -DesignConstants.DA_BUTTON_WIDTH - 4); + data.height = DesignConstants.DA_BUTTON_HEIGHT; + data.width = DesignConstants.DA_BUTTON_WIDTH; + okButton.setLayoutData(data); + okButton.setText(AnalyzerLabels.OK); + okButton.addClickListener(okButtonListener); + + cancelButton = new DAButton(buttonComp, SWT.NONE); + data = new FormData(); + data.top = new FormAttachment(0, 11); + data.left = new FormAttachment(50, 4); + data.height = DesignConstants.DA_BUTTON_HEIGHT; + data.width = DesignConstants.DA_BUTTON_WIDTH; + cancelButton.setLayoutData(data); + cancelButton.setText(AnalyzerLabels.CANCEL); + cancelButton.addClickListener(cancelButtonListener); + + saveFileName = getSaveFileName(); + if (null == saveFileName) { + // create warning message box + System.out.println("save file name is null"); + return false; + } else { + textBox.setText(saveFileName); + String textString = textBox.getText(); + textBox.setSelection(0, textString.length()); + } + + return true; + } + + private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + saveFileName = textBox.getText(); + + if (saveFileName.length() > MAX_SAVE_FILE_NAME_LENGTH) { + String old = saveFileName; + saveFileName = old.substring(0, MAX_SAVE_FILE_NAME_LENGTH - 1); + } + + if (executeSaveTrace()) { + result = AnalyzerConstants.SUCCESS; + } + shell.dispose(); + } + }; + + private DACustomButtonClickEventListener cancelButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + shell.dispose(); + } + }; + private KeyListener keyListener = new KeyListener() { + + @Override + public void keyReleased(KeyEvent e) { + if (!checkValidFileName(textBox.getText())) { + okButton.setButtonEnabled(false); + } else { + okButton.setButtonEnabled(true); + } + } + + @Override + public void keyPressed(KeyEvent e) { + + } + }; + + private String getSaveFileName() { + Project project = AnalyzerManager.getProject(); + String sourcePath = project.getSavePath(); + String[] splitSourcePath = null; + if (AnalyzerUtil.isWin()) { + splitSourcePath = sourcePath.split("\\\\"); //$NON-NLS-1$ + } else if (AnalyzerUtil.isMac()) { + splitSourcePath = sourcePath.split("\\/"); //$NON-NLS-1$ + } else if (AnalyzerUtil.isLinux()) { + splitSourcePath = sourcePath.split("\\/"); //$NON-NLS-1$ + } else { + final Shell shell = AnalyzerUtil.getWorkbenchWindow().getShell(); + DADialog dialog = new DADialog(shell, SWT.NONE); // FIXME + dialog.setIcon(ImageResources.DIALOG_WARNING_ICON); + dialog.setMessage(AnalyzerLabels.OS_WARNING); + dialog.open(); + return null; + } + + if (null == splitSourcePath) { + return null; + } + String saveFileName = new String( + splitSourcePath[splitSourcePath.length - 1]); + if (null == saveFileName || saveFileName.isEmpty()) { + return null; + } + return saveFileName; + } + + private boolean executeSaveTrace() { + Project project = AnalyzerManager.getProject(); + String sourcePath = project.getSavePath(); + targetPath = AnalyzerPaths.DYNAMIC_ANALYZER_SAVE_PATH + + File.separator + saveFileName; + + if(AnalyzerManager.getProject().getSavePath().equals(targetPath)){ + return true; + } + + File sourceFolder = new File(sourcePath); + if (!sourceFolder.isDirectory()) { + if (!sourceFolder.mkdirs()) { + System.out.println("source directory create failed..."); + return false; + } + } + + File targetFolder = new File(targetPath); + if (!targetFolder.isDirectory()) { + if (!targetFolder.mkdirs()) { + System.out.println("target directory create failed..."); + return false; + } + } + AnalyzerUtil.copyDirectory(sourceFolder, targetFolder); + + return true; + } + + private boolean checkValidFileName(String str) { + if (str == null + || str.isEmpty() + || str.contains("\\") //$NON-NLS-1$ + || str.contains(CommonConstants.SLASH) + || str.contains(CommonConstants.COLON) + || str.contains(CommonConstants.ASTERISK) + || str.contains("\\?") || str.contains("\"") //$NON-NLS-1$ //$NON-NLS-2$ + || str.contains("<") || str.contains(">") //$NON-NLS-1$ //$NON-NLS-2$ + || str.contains(CommonConstants.CMD_SPLIT)) { + return false; + } + return true; + } + public String getSavedPath(){ + return this.targetPath; + } + +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditDialog.java index 81e0183..6c3430a 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditDialog.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditDialog.java @@ -37,8 +37,9 @@ import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; -import org.tizen.dynamicanalyzer.communicator.DACommunicator; +import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; +import org.tizen.dynamicanalyzer.nl.ReplayEditLabels; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.resources.ImageResources; @@ -51,7 +52,7 @@ import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener public class ReplayEditDialog extends DAMessageBox { private static boolean opened = false; -// private DACustomButton applyButton = null; + private DACustomButton saveButton = null; private DACustomButton okButton = null; private DACustomButton cancelButton = null; DATabComposite tabView = null; @@ -60,19 +61,20 @@ public class ReplayEditDialog extends DAMessageBox { super(parent); } -// private DACustomButtonClickEventListener applyButtonListener = new DACustomButtonClickEventListener() { -// -// @Override -// public void handleClickEvent(DACustomButton button) { -// doApply(); -// } -// }; + private DACustomButtonClickEventListener saveButtonListener = new DACustomButtonClickEventListener() { + + @Override + public void handleClickEvent(DACustomButton button) { + ReplayEditDialogDataManager.getInstance().saveDialog(); + } + }; private DACustomButtonClickEventListener okButtonListener = new DACustomButtonClickEventListener() { @Override public void handleClickEvent(DACustomButton button) { - doApply(); + ReplayEditDialogDataManager.getInstance().insertDB(false, + AnalyzerManager.getProject().getSavePath()); shell.dispose(); } }; @@ -80,27 +82,15 @@ public class ReplayEditDialog extends DAMessageBox { @Override public void handleClickEvent(DACustomButton button) { - doBack(); shell.dispose(); } }; - private void doApply() { - ReplayEditDialogDataManager.getInstance().clean(); - - if (DACommunicator.isRunning()) { - DACommunicator.sendRuntimeMessage(DACommunicator.MSG_TYPE_CONFIG, - null); - } - } - - private void doBack() { - } - protected boolean run() { if (opened) { return false; } + ReplayEditDialogDataManager.getInstance().clean(); shell.setSize(608, 480); shell.setLayout(new FormLayout()); shell.setText(AnalyzerLabels.REPLAYEDIT); @@ -156,7 +146,7 @@ public class ReplayEditDialog extends DAMessageBox { Composite featuresPage = new ReplayEditTableView( tabView.getContentComposite(), SWT.NONE); tabView.addView(featuresPage, false); - + // button Composite buttonContentsComp = new Composite(shell, SWT.NONE); buttonContentsComp.addPaintListener(new PaintListener() { @@ -182,7 +172,7 @@ public class ReplayEditDialog extends DAMessageBox { cancelButton = new DAButton(buttonContentsComp, SWT.NONE); cancelButton.addClickListener(cancelButtonListener); - cancelButton.setText(AnalyzerLabels.CANCEL); + cancelButton.setText(ReplayEditLabels.CANCEL); cancelButton.setFont(FontResources.DIALOG_BUTTON_FONT); FormData buttonData = new FormData(); buttonData.right = new FormAttachment(100, -9); @@ -193,7 +183,7 @@ public class ReplayEditDialog extends DAMessageBox { okButton = new DAButton(buttonContentsComp, SWT.NONE); okButton.addClickListener(okButtonListener); - okButton.setText(AnalyzerLabels.OK); + okButton.setText(ReplayEditLabels.OK); okButton.setFont(FontResources.DIALOG_BUTTON_FONT); buttonData = new FormData(); buttonData.right = new FormAttachment(cancelButton, -8); @@ -202,16 +192,16 @@ public class ReplayEditDialog extends DAMessageBox { buttonData.height = 28; okButton.setLayoutData(buttonData); -// applyButton = new DAButton(buttonContentsComp, SWT.NONE); -// applyButton.addClickListener(applyButtonListener); -// applyButton.setText(AnalyzerLabels.APPLY); -// applyButton.setFont(FontResources.DIALOG_BUTTON_FONT); -// buttonData = new FormData(); -// buttonData.right = new FormAttachment(okButton, -8); -// buttonData.top = new FormAttachment(0, 11); -// buttonData.width = 100; -// buttonData.height = 28; -// applyButton.setLayoutData(buttonData); + saveButton = new DAButton(buttonContentsComp, SWT.NONE); + saveButton.addClickListener(saveButtonListener); + saveButton.setText(ReplayEditLabels.SAVE); + saveButton.setFont(FontResources.DIALOG_BUTTON_FONT); + buttonData = new FormData(); + buttonData.right = new FormAttachment(okButton, -8); + buttonData.top = new FormAttachment(0, 11); + buttonData.width = 100; + buttonData.height = 28; + saveButton.setLayoutData(buttonData); opened = true; ShortCutManager.getInstance().setEnabled(!opened); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditDialogDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditDialogDataManager.java index e32246b..dc3176b 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditDialogDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditDialogDataManager.java @@ -26,23 +26,32 @@ package org.tizen.dynamicanalyzer.ui.toolbar.replayEditor; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import org.eclipse.swt.widgets.Shell; +import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.CommonConstants; import org.tizen.dynamicanalyzer.nl.ReplayEditLabels; import org.tizen.dynamicanalyzer.sql.SqlManager; import org.tizen.dynamicanalyzer.swap.model.RecordEventObject; import org.tizen.dynamicanalyzer.swap.model.data.ReplayData; +import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; public class ReplayEditDialogDataManager { - public static int MODIFIABILITY_FALSE = 0; - public static int MODIFIABILITY_TRUE = 1; - public static int SELECTED_ITEM_COPY = 2; + private final int MESSAGE_ID = 7; + + //public static String MODIFIABILITY_FALSE = 0; + public static String MODIFIABILITY_TRUE = "MODIFIABILITY_TRUE "; + public static String SELECTED_ITEM_COPY = "SELECTED_ITEM_COPY "; + + private final int TOUCH_EVENT_CODE_MOUSED_DOWN_START = 57; + private final int TOUCH_EVENT_CODE_SECOND_ITEM = 48; + private final int TOUCH_EVENT_CODE_X = 53; + private final int TOUCH_EVENT_CODE_Y = 54; + private final int TOUCH_EVENT_CODE_MOUSED_UP_START = 57; + private final int TOUCH_EVENT_VALUE_SECOND_ITEM = 10; - private final int TOUCH_START_EVENT_CODE = 57; - private final int TOUCH_X_EVENT_CODE = 53; - private final int TOUCH_Y_EVENT_CODE = 54; - private final int KEY = 1; private final int TOUCH = 3; private final int KEY_MENU = 169; @@ -51,10 +60,30 @@ public class ReplayEditDialogDataManager { private final int KEY_POWER = 116; private final int KEY_VOLUME_UP = 115; private final int KEY_VOLUME_DOWN = 114; + + + private final int EVENT_MOUSE_DOWN_TIME_TABLE_INDEX = 2; + private final int EVENT_MOUSE_UP_TIME_TABLE_INDEX = 3; + private final int EVENT_TYPE_TABLE_INDEX = 4; + private final int EVENT_VALUE1_TABLE_INDEX = 5; + private final int EVENT_VALUE2_TABLE_INDEX = 6; + + private int insertDBRid = 0; + private int insertkeySequence = 1; + private int insertSecTimeSequence = 0; + + private long preMouseUpTime = 0; + + private long repalyStartTime = 0; + private long replayStartSecTime = 0; + private long replayStartNanoTime = 0; private static ReplayEditDialogDataManager instance = null; private ReplayData replayDBData = null; private List replayModifyDataList = null; + private List> tableItemsList = null; + + private List removeDBIndex = new ArrayList(); public static ReplayEditDialogDataManager getInstance() { if (null == instance) { @@ -64,15 +93,16 @@ public class ReplayEditDialogDataManager { } public void clean(){ - replayModifyDataList.clear(); replayModifyDataList = null; replayDBData = null; + tableItemsList = null; } public ReplayData getReplayDBData() { if (null == replayDBData) { replayDBData = new ReplayData(); - replayDBData = SqlManager.getInstance().getReplayLogs(); + replayDBData = SqlManager.getInstance().getReplayLogs(false); + // SqlManager.getInstance().closeReplayConnection(); } return replayDBData; } @@ -85,10 +115,27 @@ public class ReplayEditDialogDataManager { if (null == replayModifyDataList) { replayModifyDataList = new ArrayList(); makeReplayEditData(getReplayDBData()); + removeNotExistMouseUpTimeItem(replayModifyDataList); + setRemoveDBIndex(); + sortTableItem(); + } return replayModifyDataList; } + private void removeNotExistMouseUpTimeItem(List listData){ + for(int i = 0 ;i < listData.size() ; i++){ + if(listData.get(i).getStrEventMouseUpTime().length() < 1){ + listData.remove(i); + } + } + } + + + private void sortTableItem(){ + Collections.sort(getReplayModifyData(), new ReplayEditTableItemListSortComparator()); + } + private ReplayEditTableData getLastReplayEditTableData(){ return getReplayModifyData().get(getReplayModifyData().size() - 1); } @@ -97,6 +144,7 @@ public class ReplayEditDialogDataManager { int size = dbData.getRecordEvent().size(); for (int i = 0; i < size; i++) { RecordEventObject reo = dbData.getRecordEvent().get(i); + setEventStartTime(i, reo); if (reo.getEventType() == 0) { // event end log continue; } @@ -110,6 +158,45 @@ public class ReplayEditDialogDataManager { } } } + + private void setRemoveDBIndex() { + int nSize = getReplayModifyData().size(); + for (int i = 0; i < nSize; i++) { + int rid = getReplayModifyData().get(i).getEventRid(); + if (rid > -1) { + System.out.println(getReplayModifyData().get(i) + .getStrEventType() + + " getReplayModifyData().get(i).getEventRid() : " + + getReplayModifyData().get(i).getEventRid()); + if (getReplayModifyData().get(i).getStrEventType() + .equals(ReplayEditLabels.CONTEXT_TOUCH)) { + for (int j = rid; j < rid + 7; j++) { + removeDBIndex.add(j); + } + } else if (getReplayModifyData().get(i).getStrEventType() + .equals(ReplayEditLabels.CONTEXT_KEY)) { + for (int j = rid; j < rid + 4; j++) { + removeDBIndex.add(j); + } + } + + } + + } + } + + private void setEventStartTime(int i, RecordEventObject reo){ + if( i == 0){ + repalyStartTime = reo.getTime(); + replayStartSecTime = reo.getEventTime().getSec(); + replayStartNanoTime = reo.getEventTime().getNano(); + } + if(repalyStartTime >= reo.getTime()){ + repalyStartTime = reo.getTime(); + replayStartSecTime = reo.getEventTime().getSec(); + replayStartNanoTime = reo.getEventTime().getNano(); + } + } private boolean isEventMouseUpTime(RecordEventObject reo) { if (getReplayModifyData().size() < 1) { @@ -145,15 +232,18 @@ public class ReplayEditDialogDataManager { switch (reo.getEventType()) { case KEY: { + replayType = new ReplayEditTableData(); replayType.setEventMouseDownTime(reo.getTime()); replayType.setStrEventType(setEventType(reo.getEventType())); replayType.setStrEventValue1(setEventValue1(reo.getEventCode())); replayType.setStrEventValue2(CommonConstants.DASH); + replayType.setEventRid(reo.getId()); + System.out.println("reo.getId() : "+reo.getId()); break; } case TOUCH: { - if (reo.getEventCode() == TOUCH_START_EVENT_CODE + if (reo.getEventCode() == TOUCH_EVENT_CODE_MOUSED_DOWN_START && reo.getEventValue() != -1) { if (isDrawEvnet()) { return null; @@ -161,20 +251,20 @@ public class ReplayEditDialogDataManager { replayType = new ReplayEditTableData(); replayType.setEventMouseDownTime(reo.getTime()); replayType.setStrEventType(setEventType(reo.getEventType())); - } else if (reo.getEventCode() == TOUCH_X_EVENT_CODE) { + replayType.setEventRid(reo.getId()); + System.out.println("reo.getId() : "+reo.getId()); + } else if (reo.getEventCode() == TOUCH_EVENT_CODE_X) { getReplayModifyData() .get(getReplayModifyData().size() - 1) .setStrEventValue1( ReplayEditLabels.CONTEXT_VALUE_X + Integer.toString(reo.getEventValue())); - } else if (reo.getEventCode() == TOUCH_Y_EVENT_CODE) { + } else if (reo.getEventCode() == TOUCH_EVENT_CODE_Y) { getReplayModifyData() .get(getReplayModifyData().size() - 1) .setStrEventValue2( ReplayEditLabels.CONTEXT_VALUE_Y + Integer.toString(reo.getEventValue())); - } else { - replayType = null; } break; } @@ -247,8 +337,342 @@ public class ReplayEditDialogDataManager { getLastReplayEditTableData().setStrEventType( ReplayEditLabels.CONTEXT_DRAW); getLastReplayEditTableData().setModifiabilityEvent(false); + getLastReplayEditTableData().setEventRid(-1); isDrawEvnet = true; } return isDrawEvnet; } + + public void saveDialog() { + SqlManager.getInstance().closeConnection(); + Shell shell = AnalyzerUtil.getWorkbenchWindow().getShell(); + RepalyEditSaveDialog dialog = new RepalyEditSaveDialog(shell); + Object result = dialog.open(); + if (null != result) { + String dbPath = dialog.getSavedPath(); + if (dbPath.equals(AnalyzerManager.getProject().getSavePath())) { + dbPath = AnalyzerManager.getProject().getSavePath(); + } + insertDB(true, dbPath); + SqlManager.getInstance().closeReplayConnection(); + } + } + + public void insertDB(boolean isSave, String dbPath){ + SqlManager.getInstance().deleteReplayTableItems(isSave, dbPath,removeDBIndex); + insertDBData(isSave, dbPath); + } + + private void cleanInsertData(){ + insertDBRid = 0; + insertkeySequence = 1; + insertSecTimeSequence = 0; + preMouseUpTime = 0; + } + + private void insertDBData(boolean isSave, String dbPath){ + cleanInsertData(); + int size = getTableItemsList().size(); + for (int i = 0; i < size; i++) { + List item = getTableItemsList().get(i); + List> dataList = new ArrayList>(); + if(item.get(EVENT_TYPE_TABLE_INDEX).equals(ReplayEditLabels.CONTEXT_TOUCH)){ + dataList = makeDBTouchData(item); + }else if(item.get(EVENT_TYPE_TABLE_INDEX).equals(ReplayEditLabels.CONTEXT_KEY)){ + dataList = makeDBKeyData(item); + }else{ //Draw + + } + if(dataList.size() > 0 ){ + SqlManager.getInstance().insertRepalyTableItem(isSave, dbPath, dataList); + } + } + } + + public String getDBTime(String time) { + String strTime = time; + if (strTime.contains(ReplayEditLabels.CONTEXT_VALUE_S)) { + strTime = time.replace(ReplayEditLabels.CONTEXT_VALUE_S, + CommonConstants.EMPTY); + } + + if (strTime.contains(CommonConstants.DOT)) { + strTime = strTime.replace(CommonConstants.DOT, + CommonConstants.EMPTY); + } + strTime += 10000; + return strTime; + } + + private String getDBPoint(String point) { + String strPoint = point; + if (strPoint.contains(ReplayEditLabels.CONTEXT_VALUE_X)) { + strPoint = strPoint.replace(ReplayEditLabels.CONTEXT_VALUE_X, + CommonConstants.EMPTY); + } + + if (strPoint.contains(ReplayEditLabels.CONTEXT_VALUE_Y)) { + strPoint = strPoint.replace(ReplayEditLabels.CONTEXT_VALUE_Y, + CommonConstants.EMPTY); + } + return strPoint; + } + + + + private long getEventNanoTime(long time){ + long mouseEventSec = (replayStartSecTime + insertSecTimeSequence); + long mouseDelaytime = time - repalyStartTime; + if(mouseDelaytime == 0){ + return replayStartNanoTime; + } + System.out.println("mouseDelaytime : "+mouseDelaytime); + if((time - repalyStartTime) < 1){ + return replayStartNanoTime; + } + long mouseDelaySec = (mouseEventSec - replayStartSecTime) * 1000000; + System.out.println("mouseDelaySec : "+mouseDelaySec); + long mouseEventNano = ((mouseDelaytime - mouseDelaySec) * 1000) +replayStartNanoTime; + System.out.println("replayStartNanoTime : "+replayStartNanoTime); + System.out.println("mouseEventNano : "+mouseEventNano); + + return mouseEventNano; + } + + private String getSecTime(){ + long mouseDownEventSec = (replayStartSecTime + insertSecTimeSequence); + return Long.toString(mouseDownEventSec); + } + + private String getMouseDownNanoTime(List item){ + String itemMouseDownTime = getDBTime(item.get(EVENT_MOUSE_DOWN_TIME_TABLE_INDEX)); + long downTime = Long.parseLong(itemMouseDownTime); + if(preMouseUpTime > 0 && downTime - preMouseUpTime > 1000000){ + long delayTime = (downTime - preMouseUpTime) / 1000000; + insertSecTimeSequence += delayTime; + } + + long mouseDownEventNano = getEventNanoTime(downTime); + while(mouseDownEventNano > 1000000000){ + insertSecTimeSequence++; + mouseDownEventNano = getEventNanoTime(downTime); + } + + return Long.toString(mouseDownEventNano); + } + + private String getMouseUpNanoTime(List item){ + String itemMouseDownTime = getDBTime(item.get(EVENT_MOUSE_DOWN_TIME_TABLE_INDEX)); + String itemMouseUpTime = getDBTime(item.get(EVENT_MOUSE_UP_TIME_TABLE_INDEX)); + long downTime = Long.parseLong(itemMouseDownTime); + long upTime = Long.parseLong(itemMouseUpTime); + + if(upTime - downTime > 1000000){ + long delayTime = (downTime - downTime) / 1000000; + insertSecTimeSequence += delayTime; + } + + long mouseUpEventNano =getEventNanoTime(upTime); + while(mouseUpEventNano > 1000000000){ + insertSecTimeSequence++; + mouseUpEventNano = getEventNanoTime(upTime); + } + + preMouseUpTime = upTime; + return Long.toString(mouseUpEventNano); + } + + private String getKeyValue(List item){ + String keyValue = item.get(EVENT_VALUE1_TABLE_INDEX); + int nKey = 0; + if(keyValue.equals(ReplayEditLabels.CONTEXT_KEY_MENU)){ + nKey = 169; + }else if(keyValue.equals(ReplayEditLabels.CONTEXT_KEY_HOME)){ + nKey = 139; + }else if(keyValue.equals(ReplayEditLabels.CONTEXT_KEY_BACK)){ + nKey = 158; + }else if(keyValue.equals(ReplayEditLabels.CONTEXT_KEY_POWER)){ + nKey = 116; + }else if(keyValue.equals(ReplayEditLabels.CONTEXT_KEY_VOLUME_DOWN)){ + nKey = 115; + }else if(keyValue.equals(ReplayEditLabels.CONTEXT_KEY_VOLUME_UP)){ + nKey = 114; + } + return Integer.toString(nKey); + } + private List> makeDBKeyData(List item){ + String itemMouseDownTime = getDBTime(item.get(EVENT_MOUSE_DOWN_TIME_TABLE_INDEX)); + String itemMouseUpTime = getDBTime(item.get(EVENT_MOUSE_UP_TIME_TABLE_INDEX)); + String mouseDownNanoTime = getMouseDownNanoTime(item); + String mouseUpNanoTime = getMouseUpNanoTime(item); + String itemValue1 = getKeyValue(item); + + System.out.println("item : "+item+" mouseDownNanoTime : "+mouseDownNanoTime+" mouseUpNanoTime : "+mouseUpNanoTime); + + List> dbKeyDataList = new ArrayList>(); + for(int i = 0; i < 4 ; i++){ + List keyData = new ArrayList(); + if (i == 0) { + keyData.add(Integer.toString(insertDBRid++)); + keyData.add(Integer.toString(MESSAGE_ID)); + keyData.add(Integer.toString(8815)); + keyData.add(itemMouseDownTime); + keyData.add(getSecTime()); + keyData.add(mouseDownNanoTime); + keyData.add("1"); + keyData.add(Integer.toString(KEY)); + keyData.add(itemValue1); + keyData.add("1"); + } else if (i == 1) { + keyData.add(Integer.toString(insertDBRid++)); + keyData.add(Integer.toString(MESSAGE_ID)); + keyData.add(Integer.toString(8815)); + keyData.add(itemMouseDownTime); + keyData.add(getSecTime()); + keyData.add(mouseDownNanoTime); + keyData.add("1"); + keyData.add("0"); + keyData.add("0"); + keyData.add("0"); + } else if (i == 2) { + keyData.add(Integer.toString(insertDBRid++)); + keyData.add(Integer.toString(MESSAGE_ID)); + keyData.add(Integer.toString(8815)); + keyData.add(itemMouseUpTime); + keyData.add(getSecTime()); + keyData.add(mouseUpNanoTime); + keyData.add("1"); + keyData.add(Integer.toString(KEY)); + keyData.add(itemValue1); + keyData.add("0"); + } else if (i == 3) { + keyData.add(Integer.toString(insertDBRid++)); + keyData.add(Integer.toString(MESSAGE_ID)); + keyData.add(Integer.toString(8815)); + keyData.add(itemMouseUpTime); + keyData.add(getSecTime()); + keyData.add(mouseUpNanoTime); + keyData.add("1"); + keyData.add("0"); + keyData.add("0"); + keyData.add("0"); + } + dbKeyDataList.add(keyData); + } + return dbKeyDataList; + } + + private List> makeDBTouchData(List item){ + String itemMouseDownTime = getDBTime(item.get(EVENT_MOUSE_DOWN_TIME_TABLE_INDEX)); + String itemMouseUpTime = getDBTime(item.get(EVENT_MOUSE_UP_TIME_TABLE_INDEX)); + String mouseDownNanoTime = getMouseDownNanoTime(item); + String mouseUpNanoTime = getMouseUpNanoTime(item); + String itemValue1 = item.get(EVENT_VALUE1_TABLE_INDEX); + String itemValue2 = item.get(EVENT_VALUE2_TABLE_INDEX); + + System.out.println("item : "+item+" mouseDownNanoTime : "+mouseDownNanoTime+" mouseUpNanoTime : "+mouseUpNanoTime); + + List> dbKeyDataList = new ArrayList>(); + for(int i = 0; i < 7 ; i++){ + List keyData = new ArrayList(); + if (i == 0) { + keyData.add(Integer.toString(insertDBRid++)); + keyData.add(Integer.toString(MESSAGE_ID)); + keyData.add(Integer.toString(8815)); + keyData.add(itemMouseDownTime); + keyData.add(getSecTime()); + keyData.add(mouseDownNanoTime); + keyData.add("0"); + keyData.add(Integer.toString(TOUCH)); + keyData.add(Integer.toString(TOUCH_EVENT_CODE_MOUSED_DOWN_START)); + keyData.add(Integer.toString(insertkeySequence++)); + } else if (i == 1) { + keyData.add(Integer.toString(insertDBRid++)); + keyData.add(Integer.toString(MESSAGE_ID)); + keyData.add(Integer.toString(8815)); + keyData.add(itemMouseDownTime); + keyData.add(getSecTime()); + keyData.add(mouseDownNanoTime); + keyData.add("0"); + keyData.add(Integer.toString(TOUCH)); + keyData.add(Integer.toString(TOUCH_EVENT_CODE_SECOND_ITEM)); + keyData.add(Integer.toString(TOUCH_EVENT_VALUE_SECOND_ITEM)); + } else if (i == 2) { + keyData.add(Integer.toString(insertDBRid++)); + keyData.add(Integer.toString(MESSAGE_ID)); + keyData.add(Integer.toString(8815)); + keyData.add(itemMouseDownTime); + keyData.add(getSecTime()); + keyData.add(mouseDownNanoTime); + keyData.add("0"); + keyData.add(Integer.toString(TOUCH)); + keyData.add(Integer.toString(TOUCH_EVENT_CODE_X)); + keyData.add(getDBPoint(itemValue1)); + } else if (i == 3) { + keyData.add(Integer.toString(insertDBRid++)); + keyData.add(Integer.toString(MESSAGE_ID)); + keyData.add(Integer.toString(8815)); + keyData.add(itemMouseDownTime); + keyData.add(getSecTime()); + keyData.add(mouseDownNanoTime); + keyData.add("0"); + keyData.add(Integer.toString(TOUCH)); + keyData.add(Integer.toString(TOUCH_EVENT_CODE_Y)); + keyData.add(getDBPoint(itemValue2)); + } else if (i == 4) { + keyData.add(Integer.toString(insertDBRid++)); + keyData.add(Integer.toString(MESSAGE_ID)); + keyData.add(Integer.toString(8815)); + keyData.add(itemMouseDownTime); + keyData.add(getSecTime()); + keyData.add(mouseDownNanoTime); + keyData.add("0"); + keyData.add("0"); + keyData.add("0"); + keyData.add("0"); + } else if (i == 5) { + keyData.add(Integer.toString(insertDBRid++)); + keyData.add(Integer.toString(MESSAGE_ID)); + keyData.add(Integer.toString(9164)); + keyData.add(itemMouseUpTime); + keyData.add(getSecTime()); + keyData.add(mouseUpNanoTime); + keyData.add("0"); + keyData.add(Integer.toString(TOUCH)); + keyData.add(Integer.toString(TOUCH_EVENT_CODE_MOUSED_UP_START)); + keyData.add("-1"); + }else if (i == 6) { + keyData.add(Integer.toString(insertDBRid++)); + keyData.add(Integer.toString(MESSAGE_ID)); + keyData.add(Integer.toString(9164)); + keyData.add(itemMouseUpTime); + keyData.add(getSecTime()); + keyData.add(mouseUpNanoTime); + keyData.add("0"); + keyData.add("0"); + keyData.add("0"); + keyData.add("0"); + } + dbKeyDataList.add(keyData); + } + return dbKeyDataList; + } + + + private List> getTableItemsList() { + if(null == tableItemsList){ + tableItemsList = new ArrayList>(); + } + return tableItemsList; + } + + public void setTableItemsList(List> tableItemsList) { + if(null == tableItemsList){ + tableItemsList = new ArrayList>(); + } + this.tableItemsList = tableItemsList; + } } + + + diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTable.java index 2692696..cad4468 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTable.java @@ -67,7 +67,11 @@ public class ReplayEditTable extends DATableComposite { private int selectedCutItemIndex = -1; private int selectedCopyItemIndex = -1; + DAPopupMenuItem copyItem = null; + DAPopupMenuItem cutItem = null; + DAPopupMenuItem insertItem = null; DAPopupMenuItem pasteItem = null; + DAPopupMenuItem deleteItem = null; @Override protected List makeTableInput() { @@ -82,7 +86,7 @@ public class ReplayEditTable extends DATableComposite { ReplayEditTableData replayTableType = ReplayEditDialogDataManager .getInstance().getReplayModifyData().get(i); - text.add(Integer.toString(replayTableType.getModifiabilityEvent())); + text.add(replayTableType.getModifiabilityEvent()); text.add(Integer.toString(i)); text.add(replayTableType.getStrEventMouseDownTime()); text.add(replayTableType.getStrEventMouseUpTime()); @@ -114,6 +118,11 @@ public class ReplayEditTable extends DATableComposite { } } table.update(); + tableRedraw(); + } + + public void saveEditData() { + } private List getSelectedItemText(int index) { @@ -149,8 +158,9 @@ public class ReplayEditTable extends DATableComposite { } } table.update(); + tableRedraw(); } - + private void addTableItems(int index, List itemText) { List> gridItemTextList = new ArrayList>(); for (int i = 0; i < table.getItemCount(); i++) { @@ -174,6 +184,7 @@ public class ReplayEditTable extends DATableComposite { } } table.update(); + tableRedraw(); } private void updateTableSequenceNumber() { @@ -181,7 +192,7 @@ public class ReplayEditTable extends DATableComposite { for (int i = 0; i < size; i++) { table.getItem(i).setText(1, Integer.toString(i)); } - table.redraw(); + tableRedraw(); } public ReplayEditTable(Composite parent, int style) { @@ -244,7 +255,7 @@ public class ReplayEditTable extends DATableComposite { break; } case MOUSE_RIGHT: { - popupMenuMouseDownSequenceColumn(event); + popupMenuMouseDownSequenceColumn(item, event); break; } default: { @@ -262,7 +273,7 @@ public class ReplayEditTable extends DATableComposite { popupMenu = new ReplayEditPopupMenu(table); popupMenu.setMouseListener(); popupMenu.setFont(FontResources.CONTEXT_MENU_ITEM_FONT); - DAPopupMenuItem cutItem = new DAPopupMenuItem(popupMenu); + cutItem = new DAPopupMenuItem(popupMenu); cutItem.setText(ReplayEditLabels.CONTEXT_CUT); cutItem.addListener(new DAPopupMenuListener() { @Override @@ -279,7 +290,7 @@ public class ReplayEditTable extends DATableComposite { enableCopyItem(); } }); - DAPopupMenuItem copyItem = new DAPopupMenuItem(popupMenu); + copyItem = new DAPopupMenuItem(popupMenu); copyItem.setText(ReplayEditLabels.CONTEXT_COPY); copyItem.addListener(new DAPopupMenuListener() { @Override @@ -305,54 +316,68 @@ public class ReplayEditTable extends DATableComposite { replaceTableItems(mouseSelectedItemIndex - 1, copyItemText); updateTableSequenceNumber(); } else if (selectedCutItemIndex > 0) { - // disableCopyItem(selectedCutItemIndex); + disableCopyItem(selectedCutItemIndex); replaceTableItems(mouseSelectedItemIndex - 1, copyItemText); table.remove(selectedCutItemIndex - 1); - table.redraw(); - // disableCopyItem(mouseSelectedItemIndex-1); - pasteItem.setEnabled(false); updateTableSequenceNumber(); + tableRedraw(); } } }); - pasteItem.setEnabled(false); - DAPopupMenuItem insertItem = new DAPopupMenuItem(popupMenu); + insertItem = new DAPopupMenuItem(popupMenu); insertItem.setText(ReplayEditLabels.CONTEXT_INSERT); insertItem.addListener(new DAPopupMenuListener() { @Override public void widgetSelected(DAPopupMenuItem menuItem) { - addTableItems(mouseSelectedItemIndex - 1, - getSelectedItemText(mouseSelectedItemIndex - 1)); + if (selectedCopyItemIndex > 0 || selectedCutItemIndex > 0) { + if (selectedCopyItemIndex > 0) { + addTableItems(mouseSelectedItemIndex - 1, copyItemText); + } else if (selectedCutItemIndex > 0) { + disableCopyItem(selectedCutItemIndex); + addTableItems(mouseSelectedItemIndex - 1, copyItemText); + table.remove(selectedCutItemIndex - 1); + updateTableSequenceNumber(); + tableRedraw(); + } + } else { + addTableItems(mouseSelectedItemIndex - 1, + getSelectedItemText(mouseSelectedItemIndex - 1)); + } updateTableSequenceNumber(); + tableRedraw(); } }); - DAPopupMenuItem deleteItem = new DAPopupMenuItem(popupMenu); + deleteItem = new DAPopupMenuItem(popupMenu); deleteItem.setText(ReplayEditLabels.CONTEXT_DELETE); deleteItem.addListener(new DAPopupMenuListener() { @Override public void widgetSelected(DAPopupMenuItem menuItem) { table.remove(mouseSelectedItemIndex - 1); - table.redraw(); updateTableSequenceNumber(); + tableRedraw(); + } }); } - - private void enableCopyItem(){ - pasteItem.setEnabled(true); - int itemOption = Integer.parseInt(table.getItem(mouseSelectedItemIndex - 1).getText(0)); - itemOption += ReplayEditDialogDataManager.SELECTED_ITEM_COPY; - table.getItem(mouseSelectedItemIndex - 1).setText(0, Integer.toString(itemOption)); + + private void enableCopyItem() { + String itemOption = table.getItem(mouseSelectedItemIndex - 1) + .getText(0); + table.getItem(mouseSelectedItemIndex - 1).setText(0, + itemOption + ReplayEditDialogDataManager.SELECTED_ITEM_COPY); } - - private void disableCopyItem(int index){ - if(index < 0){ + + private void disableCopyItem(int index) { + if (index < 0) { return; } - int itemOption = Integer.parseInt(table.getItem(index - 1).getText(0)); - itemOption -= ReplayEditDialogDataManager.SELECTED_ITEM_COPY; - table.getItem(index - 1).setText(0, Integer.toString(itemOption)); + String itemOption = table.getItem(index - 1).getText(0); + if (itemOption.contains(ReplayEditDialogDataManager.SELECTED_ITEM_COPY)) { + itemOption = itemOption.replace( + ReplayEditDialogDataManager.SELECTED_ITEM_COPY, ""); + } + table.getItem(index - 1).setText(0, itemOption); } private void setTyepMenu() { @@ -466,7 +491,7 @@ public class ReplayEditTable extends DATableComposite { table.getItem(mouseSelectedItemIndex - 1).setText( mouseSelectedColumnIndex + 1, inputString); - table.redraw(); + tableRedraw(); } else if (getColumnName(mouseSelectedColumnIndex + 1).equals( ReplayEditLabels.TABLE_COLUMN_VALUE1) || getColumnName(mouseSelectedColumnIndex + 1).equals( @@ -496,7 +521,7 @@ public class ReplayEditTable extends DATableComposite { inputString.append(event.character).toString(); table.getItem(mouseSelectedItemIndex - 1).setText( mouseSelectedColumnIndex + 1, inputString.toString()); - table.redraw(); + tableRedraw(); } } @@ -507,7 +532,7 @@ public class ReplayEditTable extends DATableComposite { ReplayEditLabels.TABLE_COLUMN_TYPE)) { table.getItem(mouseSelectedItemIndex - 1).setText( mouseSelectedColumnIndex + 1, text); - table.redraw(); + tableRedraw(); return; } @@ -545,7 +570,7 @@ public class ReplayEditTable extends DATableComposite { + CommonConstants.ZERO); } } - table.redraw(); + tableRedraw(); } private void savedSelectedContext(String text) { @@ -625,10 +650,82 @@ public class ReplayEditTable extends DATableComposite { } } + updateNextItemsSavedTime(); resetText(); mouseSelectedItem = false; item.setChecked(selectedColumnIndex, true); + tableRedraw(); + } + + private long getLongTableTime(String time) { + String strTime = time; + if (strTime.contains(ReplayEditLabels.CONTEXT_VALUE_S)) { + strTime = time.replace(ReplayEditLabels.CONTEXT_VALUE_S, + CommonConstants.EMPTY); + } + + if (strTime.contains(CommonConstants.DOT)) { + strTime = strTime.replace(CommonConstants.DOT, + CommonConstants.EMPTY); + } + return Long.parseLong(strTime); + } + + private String getStrTableTime(Long time) { + String reverseStrTime = reverseString(Long.toString(time)); + String strTime = CommonConstants.EMPTY; + for (int i = 0; i < reverseStrTime.length(); i++) { + strTime += reverseStrTime.charAt(i); + if (i == 0) { + strTime += CommonConstants.DOT; + } + } + return reverseString(strTime) + ReplayEditLabels.CONTEXT_VALUE_S; + } + + private String reverseString(String str) { + return (new StringBuffer(str).reverse().toString()); + } + + private void addTableTime(boolean isMouseDown) { + String eventTime = updateDotChartAtTime(); + long preTime = getLongTableTime(savedItemTextForReset); + long nowTime = getLongTableTime(eventTime); + long addTime = nowTime - preTime; + int nSize = table.getItemCount(); + int startItem = mouseSelectedItemIndex - 1; + for (int i = startItem; i < nSize; i++) { + long mouseDowntime = getLongTableTime(table.getItem(i).getText(2)); + long mouseUptime = getLongTableTime(table.getItem(i).getText(3)); + mouseDowntime += addTime; + mouseUptime += addTime; + if (i == startItem) { + if (isMouseDown) { + table.getItem(i).setText(3, getStrTableTime(mouseUptime)); + } + } else { + table.getItem(i).setText(2, getStrTableTime(mouseDowntime)); + table.getItem(i).setText(3, getStrTableTime(mouseUptime)); + } + } + + } + + private void updateNextItemsSavedTime() { + if (mouseSelectedItem) { + String savedString = table.getItem(mouseSelectedItemIndex - 1) + .getText(mouseSelectedColumnIndex + 1); + if (savedString.length() > 0) { + if (getColumnName(mouseSelectedColumnIndex + 1).equals( + ReplayEditLabels.TABLE_COLUMN_MOUSE_DOWN_TIME)) { + addTableTime(true); + } else if (getColumnName(mouseSelectedColumnIndex + 1).equals( + ReplayEditLabels.TABLE_COLUMN_MOUSE_UP_TIME)) { + addTableTime(false); + } + } + } } private void resetText() { @@ -775,8 +872,12 @@ public class ReplayEditTable extends DATableComposite { } private void enableKeyInsert(GridItem item, Event event) { - int optionColumn = Integer.parseInt(item.getText(0)); - if (optionColumn == 0 || optionColumn == 2) { + if (!item.getText(0).contains( + ReplayEditDialogDataManager.MODIFIABILITY_TRUE)) { + deleteItem.setEnabled(false); + } else if (mouseSelectedItemIndex == 1 + && item.getText(mouseSelectedColumnIndex + 1).contains( + ReplayEditLabels.CONTEXT_VALUE_S)) { return; } @@ -826,7 +927,35 @@ public class ReplayEditTable extends DATableComposite { } } - private void popupMenuMouseDownSequenceColumn(Event event) { + private void popupMenuMouseDownSequenceColumn(GridItem item, Event event) { + if (!item.getText(0).contains( + ReplayEditDialogDataManager.MODIFIABILITY_TRUE)) { + if (selectedCutItemIndex > 0 || selectedCopyItemIndex > 0) { + insertItem.setEnabled(true); + } else { + insertItem.setEnabled(false); + } + copyItem.setEnabled(false); + cutItem.setEnabled(false); + pasteItem.setEnabled(false); + deleteItem.setEnabled(false); + + } else if (mouseSelectedItemIndex == 1) { + deleteItem.setEnabled(false); + } else if (selectedCutItemIndex > 0 || selectedCopyItemIndex > 0) { + copyItem.setEnabled(true); + cutItem.setEnabled(true); + insertItem.setEnabled(true); + pasteItem.setEnabled(true); + deleteItem.setEnabled(true); + } else { + copyItem.setEnabled(true); + cutItem.setEnabled(true); + insertItem.setEnabled(true); + pasteItem.setEnabled(false); + deleteItem.setEnabled(true); + } + GridColumn[] columns = table.getColumns(); if (event.x <= columns[0].getWidth()) { Point pt = Display.getCurrent().getCursorLocation(); @@ -879,6 +1008,25 @@ public class ReplayEditTable extends DATableComposite { return -1; } + private void tableRedraw() { + table.redraw(); + setTableItemsList(); + } + + private void setTableItemsList() { + List> gridItemTextList = new ArrayList>(); + for (int i = 0; i < table.getItemCount(); i++) { + List text = new ArrayList(); + int size = table.getColumns().length; + for (int j = 0; j < size + 1; j++) { + text.add(table.getItem(i).getText(j)); + } + gridItemTextList.add(text); + } + ReplayEditDialogDataManager.getInstance().setTableItemsList( + gridItemTextList); + } + @Override public void setColumns(String[] columnNames) { this.columnNames = columnNames; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTableCellRenderer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTableCellRenderer.java index 4d7bb3c..fbf02d2 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTableCellRenderer.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTableCellRenderer.java @@ -58,11 +58,11 @@ public class ReplayEditTableCellRenderer extends DefaultCellRenderer { private void paintBackground(GC gc, GridItem item) { boolean drawBackground = true; - int optionColumn = Integer.parseInt(item.getText(0)); + String optionColumn = item.getText(0); if (item.getChecked() && getColumn() == 0) { gc.setForeground(ColorResources.TABLE_CONTENTS_SELECTED_START); gc.setBackground(ColorResources.TABLE_CONTENTS_SELECTED_END); - } else if (optionColumn == 0 || optionColumn == 2) { + } else if (!optionColumn.contains(ReplayEditDialogDataManager.MODIFIABILITY_TRUE)) { gc.setBackground(ColorResources.YELLOW); } else { if (item.getParent().isEnabled()) { @@ -144,8 +144,8 @@ public class ReplayEditTableCellRenderer extends DefaultCellRenderer { } private void paintSelectedCopy(GC gc, GridItem item) { - int optionColumn = Integer.parseInt(item.getText(0)); - if (optionColumn == 2 || optionColumn == 3) { + String optionColumn = item.getText(0); + if (optionColumn.contains(ReplayEditDialogDataManager.SELECTED_ITEM_COPY)) { gc.setForeground(ColorResources.BLACK); gc.setLineWidth(2); gc.setLineStyle(SWT.LINE_DOT); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTableData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTableData.java index 52eeece..ca312f9 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTableData.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTableData.java @@ -4,6 +4,7 @@ import org.tizen.dynamicanalyzer.common.CommonConstants; import org.tizen.dynamicanalyzer.nl.ReplayEditLabels; public class ReplayEditTableData { + private int eventRid = -1; private int eventSeq = -1; private long eventMouseDownTime = -1; private long eventMouseUpTime = -1; @@ -27,6 +28,10 @@ public class ReplayEditTableData { return getStrTime(eventMouseDownTime); } } + + public long getLongEventMouseDownTime(){ + return this.eventMouseDownTime; + } public void setEventMouseDownTime(long eventMouseDownTime) { this.eventMouseDownTime = eventMouseDownTime; @@ -60,11 +65,11 @@ public class ReplayEditTableData { this.eventMouseUpTime = eventMouseUpTime; } - public int getModifiabilityEvent() { + public String getModifiabilityEvent() { if (modifiabilityEvent) { return ReplayEditDialogDataManager.MODIFIABILITY_TRUE; - } else { - return ReplayEditDialogDataManager.MODIFIABILITY_FALSE; + }else{ + return CommonConstants.EMPTY; } } @@ -96,4 +101,12 @@ public class ReplayEditTableData { this.strEventValue2 = strEventValue2; } + public int getEventRid() { + return eventRid; + } + + public void setEventRid(int eventRid) { + this.eventRid = eventRid; + } + } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTableItemListSortComparator.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTableItemListSortComparator.java new file mode 100644 index 0000000..2519e9f --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/replayEditor/ReplayEditTableItemListSortComparator.java @@ -0,0 +1,52 @@ +/* + * Dynamic Analyzer + * + * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * 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.toolbar.replayEditor; + +import java.io.Serializable; +import java.util.Comparator; + + +public class ReplayEditTableItemListSortComparator implements Comparator, + Serializable { + + private static final long serialVersionUID = 1L; + + @Override + public int compare(ReplayEditTableData one, ReplayEditTableData two) { + long time1 = one.getLongEventMouseDownTime(); + long time2 = two.getLongEventMouseDownTime(); + + if (time1 > time2) { + return 1; + } else if (time1 < time2) { + return -1; + } + + return 0; + } + +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/uirecorder/UIRecorderRecordThread.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/uirecorder/UIRecorderRecordThread.java index 6c7e293..a39198b 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/uirecorder/UIRecorderRecordThread.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/uirecorder/UIRecorderRecordThread.java @@ -51,7 +51,7 @@ public class UIRecorderRecordThread extends Thread { break; } -// System.out.println("record data : " + record); + System.out.println("record data : " + record); recordData = xml.setEvent(record, coolbarArea.getTime() / 1000); if (null != recordData) { -- 2.7.4