IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); // uid for messages to save if (uids.length == 0) { LOG.fine("No filter created since no message was selected"); return; // no message selected. } Object uid = uids[0]; srcFolder = (IMailbox) r.getSourceFolder(); // register for status events ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); // get value of Subject, From or To header Header header = srcFolder.getHeaderFields(uid, new String[] { "Subject", "From", "To" }); String headerValue = (String) header.get(filterType); if (headerValue == null) { LOG.warning("Error getting " + filterType + " header. No filter created"); return; } // create filter String descr = filterType + " contains [" + headerValue + "]";
IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); Object[] uids = r.getUids(); // uid for messages to save if (uids.length == 0) { LOG.fine( "No virtual folder created since no message was selected"); return; // no message selected. } Object uid = uids[0]; parentFolder = (IMailbox) r.getSourceFolder(); //register for status events ((StatusObservableImpl) parentFolder.getObservable()).setWorker(worker); // get value of Subject, From or To header Header header = parentFolder.getHeaderFields(uid, new String[] {"Subject", "From", "To"}); String headerValue = (String) header.get(vfolderType); if (headerValue == null) { LOG.warning("Error getting " + vfolderType + " header. No virtual folder created"); return; } // create virtual folder (is attached to parentFolder) String name = vfolderType + " contains [" + headerValue + "]";
Clone fragments detected by clone detection tool
File path: /columba-1.4-src/mail/src/main/java/org/columba/mail/folder/command/CreateFilterOnMessageCommand.java File path: /columba-1.4-src/mail/src/main/java/org/columba/mail/folder/command/CreateVFolderOnMessageCommand.java
Method name: void execute(IWorkerStatusController) Method name: void execute(IWorkerStatusController)
Number of AST nodes: 14 Number of AST nodes: 14
1
IMailFolderCommandReference r = (IMailFolderCommandReference) getReference();
1
IMailFolderCommandReference r = (IMailFolderCommandReference) getReference();
2
		Object[] uids = r.getUids(); // uid for messages to save
2
        Object[] uids = r.getUids(); // uid for messages to save
3
		if (uids.length == 0) {
3
        if (uids.length == 0) {
4
			LOG.fine("No filt
4
            LOG.fine(
5
er created since no message was selected");
5
                "No virtual folder created since no message was selected");
6
			return; // no message selected.
6
            return; // no message selected.
7
		}
8
		
7
        }
9
Object uid = uids[0];
8
        Object uid = uids[0];
10
		srcFolder = (IMailbox) r.getSourceFolder();
9
        parentFolder = (IMailbox) r.getSourceFolder();
11
		// register for status events
10
        //register for status events
12
		((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker);
11
        ((StatusObservableImpl) parentFolder.getObservable()).setWorker(worker);
13
		// get value of Subject, From or To header
12
        // get value of Subject, From or To header
14
		Header header = srcFolder.getHeaderFields(uid,
13
        Header header = parentFolder.getHeaderFields(uid,
15
 new String[] {
14
                new String[] {
16
				"Subject", "From", "To" });
15
"Subject", "From", "To"});
17
		String headerValue = (String) header.get(filterType);
16
        String headerValue = (String) header.get(vfolderType);
18
		if (headerValue == null) {
17
        if (headerValue == null) {
19
			LOG.warning("Error getting " + filterType
18
            LOG.warning("Error getting " + vfolderType
20
					+ " header. No filter created");
19
                    + " header. No virtual folder created");
21
			return;
22
		}
23
		// create filter
24
		
20
            return;
21
        }
22
        // create virtual folder (is attached to parentFolder)
25
String descr = filterType + " contains [" + headerValue + "]";
23
        String name = vfolderType + " contains [" + headerValue + "]";
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.4
Clones locationClones are in different classes having the same super class
Number of node comparisons78
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements14
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment0
    Time elapsed for statement mapping (ms)2.6
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    1
    IMailFolderCommandReference r = (IMailFolderCommandReference)getReference();
    1
    IMailFolderCommandReference r = (IMailFolderCommandReference)getReference();
    2
    Object[] uids = r.getUids();
    2
    Object[] uids = r.getUids();
    3
    if (uids.length == 0)
    3
    if (uids.length == 0)
    4
    LOG.fine("No filter created since no message was selected");
    4
    LOG.fine("No filter created since no message was selected");
    4
    LOG.fine("No virtual folder created since no message was selected");
    Differences
    Expression1Expression2Difference
    "No filter created since no message was selected""No virtual folder created since no message was selected"LITERAL_VALUE_MISMATCH
    4
    LOG.fine("No virtual folder created since no message was selected");
    5
    return;
    5
    return;
    5
    return;
    Preondition Violations
    Conditional return;
    Conditional return;
    5
    return;
    6
    Object uid = uids[0];
    6
    Object uid = uids[0];
    7
    srcFolder = (IMailbox)r.getSourceFolder();
    7
    srcFolder = (IMailbox)r.getSourceFolder();
    7
    parentFolder = (IMailbox)r.getSourceFolder();
    Differences
    Expression1Expression2Difference
    srcFolderparentFolderVARIABLE_NAME_MISMATCH
    Preondition Violations
    Expression srcFolder is a field being modified, and thus it cannot be parameterized
    Expression parentFolder is a field being modified, and thus it cannot be parameterized
    7
    parentFolder = (IMailbox)r.getSourceFolder();
    8
    ((StatusObservableImpl)srcFolder.getObservable()).setWorker(worker);
    8
    ((StatusObservableImpl)srcFolder.getObservable()).setWorker(worker);
    8
    ((StatusObservableImpl)parentFolder.getObservable()).setWorker(worker);
    Differences
    Expression1Expression2Difference
    srcFolderparentFolderVARIABLE_NAME_MISMATCH
    Preondition Violations
    Expression srcFolder cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression parentFolder cannot be parameterized, because it has dependencies to/from statements that will be extracted
    8
    ((StatusObservableImpl)parentFolder.getObservable()).setWorker(worker);
    9
    Header header = srcFolder.getHeaderFields(uid, new String[] {"Subject", "From", "To"});
    9
    Header header = srcFolder.getHeaderFields(uid, new String[] {"Subject", "From", "To"});
    9
    Header header = parentFolder.getHeaderFields(uid, new String[] {"Subject", "From", "To"});
    Differences
    Expression1Expression2Difference
    srcFolderparentFolderVARIABLE_NAME_MISMATCH
    Preondition Violations
    Expression srcFolder cannot be parameterized, because it has dependencies to/from statements that will be extracted
    Expression parentFolder cannot be parameterized, because it has dependencies to/from statements that will be extracted
    9
    Header header = parentFolder.getHeaderFields(uid, new String[] {"Subject", "From", "To"});
    10
    String headerValue = (String)header.get(filterType);
    10
    String headerValue = (String)header.get(filterType);
    10
    String headerValue = (String)header.get(vfolderType);
    Differences
    Expression1Expression2Difference
    filterTypevfolderTypeVARIABLE_NAME_MISMATCH
    10
    String headerValue = (String)header.get(vfolderType);
    11
    if (headerValue == null)
    11
    if (headerValue == null)
    12
    LOG.warning("Error getting " + filterType + " header. No filter created");
    12
    LOG.warning("Error getting " + filterType + " header. No filter created");
    12
    LOG.warning("Error getting " + vfolderType + " header. No virtual folder created");
    Differences
    Expression1Expression2Difference
    " header. No filter created"" header. No virtual folder created"LITERAL_VALUE_MISMATCH
    filterTypevfolderTypeVARIABLE_NAME_MISMATCH
    12
    LOG.warning("Error getting " + vfolderType + " header. No virtual folder created");
    13
    return;
    13
    return;
    13
    return;
    Preondition Violations
    Conditional return;
    Conditional return;
    13
    return;
    14
    String descr = filterType + " contains [" + headerValue + "]";
    14
    String descr = filterType + " contains [" + headerValue + "]";
    14
    String name = vfolderType + " contains [" + headerValue + "]";
    Differences
    Expression1Expression2Difference
    descrnameVARIABLE_NAME_MISMATCH
    filterTypevfolderTypeVARIABLE_NAME_MISMATCH
    14
    String name = vfolderType + " contains [" + headerValue + "]";
    Precondition Violations (11)
    Row Violation
    1Conditional return;
    2Conditional return;
    3Expression srcFolder is a field being modified, and thus it cannot be parameterized
    4Expression parentFolder is a field being modified, and thus it cannot be parameterized
    5Expression srcFolder cannot be parameterized, because it has dependencies to/from statements that will be extracted
    6Expression parentFolder cannot be parameterized, because it has dependencies to/from statements that will be extracted
    7Expression srcFolder cannot be parameterized, because it has dependencies to/from statements that will be extracted
    8Expression parentFolder cannot be parameterized, because it has dependencies to/from statements that will be extracted
    9Conditional return;
    10Conditional return;
    11Clone fragment #1 returns variables headerValue, descr , while Clone fragment #2 returns variables headerValue, name