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 (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; } authTable.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/AuthPanel.java
Method name: void actionPerformed(ActionEvent) Method name: void actionPerformed(ActionEvent)
Number of AST nodes: 8 Number of AST nodes: 10
1
if (colSelected >= 0) {
1
if (rowSelected != -1) {
2
				tableModel.removeColumn(colSelected);
2
					tableModel.removeRow(rowSelected);
3
				tableModel.fireTableDataChanged();
3
					tableModel.fireTableDataChanged();
4
				// Disable DELETE if there are no rows in the table to
4
					// Disable the DELETE and SAVE buttons if no rows remaining
5
 delete.
5
					// after delete.
6
				if (tableModel.getColumnCount() == 0) {
6
					if (tableModel.getRowCount() == 0) {
7
					deleteColumn
7
						deleteButton.setEnabled(false);
8
Button.setEnabled(false);
8
						saveButton.setEnabled(false);
9
				}
9
					}
10
				// Table still contains one or more rows, so highlight
10
					// Table still contains one or more rows, so highlight
11
 (select)
11
					// (select)
12
				// the appropriate one.
12
 the appropriate one.
13
				else {
13
					else {
14
						int rowToSelect = rowSelected;
14
					if (colSelected >= tableModel.getColumnCount()) {
15
						if (rowSelected >= tableModel.getRowCount()) {
15
						colSelected = colSelected - 1;
16
							rowToSelect = rowSelected - 1;
16
					}
17
						}
17
					paramTable.setColumnSelectionInterval(colSelected, colSelected);
18
						authTable.setRowSelectionInterval(rowToSelect, rowToSelect);
18
				}
19
					}
19
			}
20
				}
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
    org.apache.jmeter.gui.util.PowerTableModelorg.apache.jmeter.protocol.http.gui.AuthPanel.InnerTableModelSUBCLASS_TYPE_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();
    10
    tableModel.fireTableDataChanged();
    Differences
    Expression1Expression2Difference
    org.apache.jmeter.gui.util.PowerTableModelorg.apache.jmeter.protocol.http.gui.AuthPanel.InnerTableModelSUBCLASS_TYPE_MISMATCH
    10
    tableModel.fireTableDataChanged();
    11
    if (tableModel.getColumnCount() == 0)
    11
    if (tableModel.getColumnCount() == 0)
    11
    if (tableModel.getRowCount() == 0)
    Differences
    Expression1Expression2Difference
    getColumnCountgetRowCountMETHOD_INVOCATION_NAME_MISMATCH
    org.apache.jmeter.gui.util.PowerTableModelorg.apache.jmeter.protocol.http.gui.AuthPanel.InnerTableModelSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression tableModel.getColumnCount() 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
    org.apache.jmeter.gui.util.PowerTableModelorg.apache.jmeter.protocol.http.gui.AuthPanel.InnerTableModelSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression tableModel.getColumnCount() 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
    authTable.setRowSelectionInterval(rowToSelect, rowToSelect);
    Differences
    Expression1Expression2Difference
    setColumnSelectionIntervalsetRowSelectionIntervalMETHOD_INVOCATION_NAME_MISMATCH
    colSelectedrowToSelectVARIABLE_NAME_MISMATCH
    colSelectedrowToSelectVARIABLE_NAME_MISMATCH
    paramTableauthTableVARIABLE_NAME_MISMATCH
    Preondition Violations
    Expression paramTable.setColumnSelectionInterval(colSelected,colSelected) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression authTable.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 authTable.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
    authTable.setRowSelectionInterval(rowToSelect, rowToSelect);
    Precondition Violations (12)
    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.getColumnCount() cannot be parameterized, because it has dependencies to/from statements that will be extracted
    5Expression paramTable.setColumnSelectionInterval(colSelected,colSelected) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    6Expression authTable.setRowSelectionInterval(rowToSelect,rowToSelect) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    7Expression paramTable.setColumnSelectionInterval(colSelected,colSelected) is a void method call, and thus it cannot be parameterized
    8Expression authTable.setRowSelectionInterval(rowToSelect,rowToSelect) is a void method call, and thus it cannot be parameterized
    9Expression colSelected cannot be parameterized, because it has dependencies to/from statements that will be extracted
    10Expression rowToSelect cannot be parameterized, because it has dependencies to/from statements that will be extracted
    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