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 + "]";
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 + "]";
Clone fragments detected by clone detection tool
File path: /columba-1.4-src/mail/src/main/java/org/columba/mail/folder/command/CreateVFolderOnMessageCommand.java File path: /columba-1.4-src/mail/src/main/java/org/columba/mail/folder/command/CreateFilterOnMessageCommand.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(
5
                "No virtual folder created since no message was selected");
4
			LOG.fine("No filter created since no message was selected");
6
            return; // no message selected.
5
			return; // no message selected.
7
        }
8
        
6
		}
9
Object uid = uids[0];
7
		Object uid = uids[0];
10
        parentFolder = (IMailbox) r.getSourceFolder();
8
		srcFolder = (IMailbox) r.getSourceFolder();
11
        //register for status events
9
		// register for status events
12
        ((StatusObservableImpl) parentFolder.getObservable()).setWorker(worker);
10
		((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker);
13
        // get value of Subject, From or To header
11
		// get value of Subject, From or To header
14
        Header header = parentFolder.getHeaderFields(uid,
12
		Header header = srcFolder.getHeaderFields(uid,
15
                new String[] {
13
 new String[] {
16
"Subject", "From", "To"});
14
				"Subject", "From", "To" });
17
        String headerValue = (String) header.get(vfolderType);
15
		String headerValue = (String) header.get(filterType);
18
        if (headerValue == null) {
16
		if (headerValue == null) {
19
            LOG.warning("Error getting " + vfolderType
17
			LOG.warning("Error getting " + filterType
20
                    + " header. No virtual folder created");
18
					+ " header. No filter created");
21
            return;
22
        }
23
        // create virtual folder (is attached to parentFolder)
24
        
19
			return;
20
		}
21
		// create filter
25
String name = vfolderType + " contains [" + headerValue + "]";
22
		String descr = filterType + " 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.5
Clones locationClones are in different classes having the same super class
Number of node comparisons70
  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)8.4
    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 virtual folder created since no message was selected");
    4
    LOG.fine("No virtual folder created since no message was selected");
    4
    LOG.fine("No filter created since no message was selected");
    Differences
    Expression1Expression2Difference
    "No virtual folder created since no message was selected""No filter created since no message was selected"LITERAL_VALUE_MISMATCH
    4
    LOG.fine("No filter 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
    parentFolder = (IMailbox)r.getSourceFolder();
    7
    parentFolder = (IMailbox)r.getSourceFolder();
    7
    srcFolder = (IMailbox)r.getSourceFolder();
    Differences
    Expression1Expression2Difference
    parentFoldersrcFolderVARIABLE_NAME_MISMATCH
    7
    srcFolder = (IMailbox)r.getSourceFolder();
    8
    ((StatusObservableImpl)parentFolder.getObservable()).setWorker(worker);
    8
    ((StatusObservableImpl)parentFolder.getObservable()).setWorker(worker);
    8
    ((StatusObservableImpl)srcFolder.getObservable()).setWorker(worker);
    Differences
    Expression1Expression2Difference
    parentFoldersrcFolderVARIABLE_NAME_MISMATCH
    8
    ((StatusObservableImpl)srcFolder.getObservable()).setWorker(worker);
    9
    Header header = parentFolder.getHeaderFields(uid, new String[] {"Subject", "From", "To"});
    9
    Header header = parentFolder.getHeaderFields(uid, new String[] {"Subject", "From", "To"});
    9
    Header header = srcFolder.getHeaderFields(uid, new String[] {"Subject", "From", "To"});
    Differences
    Expression1Expression2Difference
    parentFoldersrcFolderVARIABLE_NAME_MISMATCH
    9
    Header header = srcFolder.getHeaderFields(uid, new String[] {"Subject", "From", "To"});
    10
    String headerValue = (String)header.get(vfolderType);
    10
    String headerValue = (String)header.get(vfolderType);
    10
    String headerValue = (String)header.get(filterType);
    Differences
    Expression1Expression2Difference
    vfolderTypefilterTypeVARIABLE_NAME_MISMATCH
    10
    String headerValue = (String)header.get(filterType);
    11
    if (headerValue == null)
    11
    if (headerValue == null)
    12
    LOG.warning("Error getting " + vfolderType + " header. No virtual folder created");
    12
    LOG.warning("Error getting " + vfolderType + " header. No virtual folder created");
    12
    LOG.warning("Error getting " + filterType + " header. No filter created");
    Differences
    Expression1Expression2Difference
    " header. No virtual folder created"" header. No filter created"LITERAL_VALUE_MISMATCH
    vfolderTypefilterTypeVARIABLE_NAME_MISMATCH
    12
    LOG.warning("Error getting " + filterType + " header. No filter created");
    13
    return;
    13
    return;
    13
    return;
    Preondition Violations
    Conditional return;
    Conditional return;
    13
    return;
    14
    String name = vfolderType + " contains [" + headerValue + "]";
    14
    String name = vfolderType + " contains [" + headerValue + "]";
    14
    String descr = filterType + " contains [" + headerValue + "]";
    Differences
    Expression1Expression2Difference
    namedescrVARIABLE_NAME_MISMATCH
    vfolderTypefilterTypeVARIABLE_NAME_MISMATCH
    14
    String descr = filterType + " contains [" + headerValue + "]";
    Precondition Violations (5)
    Row Violation
    1Conditional return;
    2Conditional return;
    3Conditional return;
    4Conditional return;
    5Clone fragment #1 returns variables headerValue, name , while Clone fragment #2 returns variables headerValue, descr