if (paramTable.isEditing()) { TableCellEditor cellEditor = paramTable.getCellEditor(paramTable.getEditingRow(), paramTable .getEditingColumn()); cellEditor.cancelCellEditing(); } int colSelected = paramTable.getSelectedColumn(); if (colSelected == 0 || colSelected == 1) { JOptionPane.showMessageDialog(null, JMeterUtils.getResString("column_delete_disallowed"), // $NON-NLS-1$ "Error", JOptionPane.ERROR_MESSAGE); return; } if (colSelected >= 0) { tableModel.removeColumn(colSelected); tableModel.fireTableDataChanged(); // Disable DELETE if there are no rows in the table to delete. if (tableModel.getColumnCount() == 0) { deleteColumnButton.setEnabled(false); } // Table still contains one or more rows, so highlight (select) // the appropriate one. else { if (colSelected >= tableModel.getColumnCount()) { colSelected = colSelected - 1; } paramTable.setColumnSelectionInterval(colSelected, colSelected); } }
if (tableModel.getRowCount() > 0) { // If a table cell is being edited, we must cancel the editing // before deleting the row. if (cookieTable.isEditing()) { TableCellEditor cellEditor = cookieTable.getCellEditor(cookieTable.getEditingRow(), cookieTable.getEditingColumn()); cellEditor.cancelCellEditing(); } int rowSelected = cookieTable.getSelectedRow(); if (rowSelected != -1) { tableModel.removeRow(rowSelected); tableModel.fireTableDataChanged(); // Disable the DELETE and SAVE buttons if no rows remaining // after delete. if (tableModel.getRowCount() == 0) { deleteButton.setEnabled(false); saveButton.setEnabled(false); } // Table still contains one or more rows, so highlight // (select) the appropriate one. else { int rowToSelect = rowSelected; if (rowSelected >= tableModel.getRowCount()) { rowToSelect = rowSelected - 1; } cookieTable.setRowSelectionInterval(rowToSelect, rowToSelect); } } }
Clone fragments detected by clone detection tool
File path: /jakarta-jmeter-2.3.2/src/org/apache/jmeter/modifiers/gui/UserParametersGui.java File path: /jakarta-jmeter-2.3.2/src/org/apache/jmeter/protocol/http/gui/CookiePanel.java
Method name: void actionPerformed(ActionEvent) Method name: void actionPerformed(ActionEvent)
Number of AST nodes: 15 Number of AST nodes: 15
1
if (param
1
if (tableModel.getRowCount() > 0) {
2
				// If a table cell is being edited, we must cancel the editing
3
				// before deleting the row.
2
Table.isEditing()) {
4
				if (cookieTable.isEditing()) {
3
				TableCellEditor cellEditor = paramTable.getCellEditor(paramTable.getEditingRow(), paramTable
5
					TableCellEditor cellEditor = cookieTable.getCellEditor(cookieTable.getEditingRow(),
4
						
5
.getEditingColumn());
6
							cookieTable.getEditingColumn());
6
				cellEditor.cancelCellEditing();
7
					cellEditor.cancelCellEditing();
7
			}
8
				}
8
			int colSelected = paramTable.getSelectedColumn();
9
				int rowSelected = 
9
			if (colSelected == 0 || colSelected == 1) {
10
				JOptionPane.showMessageDialog(null, 
11
						JMeterUtils.getResString("column_delete_disallowed"), // $NON-NLS-1$
10
cookieTable.getSelecte
12
						"Error",
13
						JOptionPane.ERROR_MESSAGE);
14
				return;
15
			}
11
dRow();
16
			if (colSelected >= 0) {
12
				if (rowSelected != -1) {
17
				tableModel.removeColumn(colSelected);
13
					tableModel.removeRow(rowSelected);
18
				tableModel.fireTableDataChanged();
14
					tableModel.fireTableDataChanged();
19
				// Disable DELETE if there are no rows in the table to
15
					// Disable the DELETE and SAVE buttons if no rows remaining
20
 delete.
16
					// after delete.
21
				if (tableModel.getColumnCount() == 0) {
17
					if (tableModel.getRowCount() == 0) {
22
					deleteColumn
18
						deleteButton.setEnabled(false);
23
Button.setEnabled(false);
19
						saveButton.setEnabled(false);
24
				}
20
					}
25
				// Table still contains one or more rows, so highlight
21
					// Table still contains one or more rows, so highlight
26
 (select)
22
					// (select)
27
				// the appropriate one.
23
 the appropriate one.
28
				else {
24
					else {
25
						int rowToSelect = rowSelected;
29
					if (colSelected >= tableModel.getColumnCount()) {
26
						if (rowSelected >= tableModel.getRowCount()) {
30
						colSelected = colSelected - 1;
27
							rowToSelect = rowSelected - 1;
31
					}
28
						}
32
					paramTable.setColumnSelectionInterval(colSelected, colSelected);
29
						cookieTable.setRowSelectionInterval(rowToSelect, rowToSelect);
30
					}
33
				}
31
				}
34
			}
32
			}
Summary
Number of common nesting structure subtrees1
Number of refactorable cases0
Number of non-refactorable cases1
Time elapsed for finding largest common nesting structure subtrees (ms)0.5
Clones locationClones are in different classes
Number of node comparisons24
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements7
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment2
    Time elapsed for statement mapping (ms)5.0
    Clone typeType 3
    Mapped Statements
    ID Statement ID Statement
    9
    tableModel.removeColumn(colSelected);
    9
    tableModel.removeColumn(colSelected);
    9
    tableModel.removeRow(rowSelected);
    Differences
    Expression1Expression2Difference
    removeColumnremoveRowMETHOD_INVOCATION_NAME_MISMATCH
    colSelectedrowSelectedVARIABLE_NAME_MISMATCH
    Preondition Violations
    Expression tableModel.removeColumn(colSelected) is a void method call, and thus it cannot be parameterized
    Expression tableModel.removeRow(rowSelected) is a void method call, and thus it cannot be parameterized
    9
    tableModel.removeRow(rowSelected);
    10
    tableModel.fireTableDataChanged();
    10
    tableModel.fireTableDataChanged();
    11
    if (tableModel.getColumnCount() == 0)
    11
    if (tableModel.getColumnCount() == 0)
    11
    if (tableModel.getRowCount() == 0)
    Differences
    Expression1Expression2Difference
    getColumnCountgetRowCountMETHOD_INVOCATION_NAME_MISMATCH
    Preondition Violations
    Expression tableModel.getColumnCount() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression tableModel.getRowCount() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    11
    if (tableModel.getRowCount() == 0)
    12
    deleteColumnButton.setEnabled(false);
    12
    deleteColumnButton.setEnabled(false);
    12
    deleteButton.setEnabled(false);
    Differences
    Expression1Expression2Difference
    deleteColumnButtondeleteButtonVARIABLE_NAME_MISMATCH
    12
    deleteButton.setEnabled(false);
                                                                      
    13
    saveButton.setEnabled(false);
    else
    else
                                                                    
    14
    int rowToSelect = rowSelected;
    13
    if (colSelected >= tableModel.getColumnCount())
    13
    if (colSelected >= tableModel.getColumnCount())
    15
    if (rowSelected >= tableModel.getRowCount())
    Differences
    Expression1Expression2Difference
    colSelectedrowSelectedVARIABLE_NAME_MISMATCH
    getColumnCountgetRowCountMETHOD_INVOCATION_NAME_MISMATCH
    Preondition Violations
    Expression tableModel.getColumnCount() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression tableModel.getRowCount() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    15
    if (rowSelected >= tableModel.getRowCount())
    14
    colSelected = colSelected - 1;
    14
    colSelected = colSelected - 1;
    16
    rowToSelect = rowSelected - 1;
    Differences
    Expression1Expression2Difference
    colSelectedrowToSelectVARIABLE_NAME_MISMATCH
    colSelectedrowSelectedVARIABLE_NAME_MISMATCH
    16
    rowToSelect = rowSelected - 1;
    15
    paramTable.setColumnSelectionInterval(colSelected, colSelected);
    15
    paramTable.setColumnSelectionInterval(colSelected, colSelected);
    17
    cookieTable.setRowSelectionInterval(rowToSelect, rowToSelect);
    Differences
    Expression1Expression2Difference
    setColumnSelectionIntervalsetRowSelectionIntervalMETHOD_INVOCATION_NAME_MISMATCH
    colSelectedrowToSelectVARIABLE_NAME_MISMATCH
    colSelectedrowToSelectVARIABLE_NAME_MISMATCH
    paramTablecookieTableVARIABLE_NAME_MISMATCH
    Preondition Violations
    Expression paramTable.setColumnSelectionInterval(colSelected,colSelected) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression cookieTable.setRowSelectionInterval(rowToSelect,rowToSelect) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression paramTable.setColumnSelectionInterval(colSelected,colSelected) is a void method call, and thus it cannot be parameterized
    Expression cookieTable.setRowSelectionInterval(rowToSelect,rowToSelect) is a void method call, and thus it cannot be parameterized
    Expression colSelected cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression rowToSelect cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression colSelected cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression rowToSelect cannot be parameterized, because it has dependencies to/from statements that will be extracted
    17
    cookieTable.setRowSelectionInterval(rowToSelect, rowToSelect);
    Precondition Violations (14)
    Row Violation
    1Expression tableModel.removeColumn(colSelected) is a void method call, and thus it cannot be parameterized
    2Expression tableModel.removeRow(rowSelected) is a void method call, and thus it cannot be parameterized
    3Expression tableModel.getColumnCount() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    4Expression tableModel.getRowCount() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    5Expression tableModel.getColumnCount() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    6Expression tableModel.getRowCount() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    7Expression paramTable.setColumnSelectionInterval(colSelected,colSelected) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    8Expression cookieTable.setRowSelectionInterval(rowToSelect,rowToSelect) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    9Expression paramTable.setColumnSelectionInterval(colSelected,colSelected) is a void method call, and thus it cannot be parameterized
    10Expression cookieTable.setRowSelectionInterval(rowToSelect,rowToSelect) is a void method call, and thus it cannot be parameterized
    11Expression colSelected cannot be parameterized, because it has dependencies to/from statements that will be extracted
    12Expression rowToSelect cannot be parameterized, because it has dependencies to/from statements that will be extracted
    13Expression colSelected cannot be parameterized, because it has dependencies to/from statements that will be extracted
    14Expression rowToSelect cannot be parameterized, because it has dependencies to/from statements that will be extracted