try { CloneStreamMaster master = new CloneStreamMaster(istream); InputStream inputStream = master.getClone(); byte[] md5sum = MD5SumHelper.createMD5(inputStream); // close stream inputStream.close(); // get new inputstream inputStream = master.getClone(); Message message = new Message(inputStream, list, md5sum); // check if this message was already learned // -> only add if this is not the case if (db.MD5SumExists(md5sum)) { // message already exists // --> correct token data filter.correctMessageAsSpam(message); } else { // new message filter.trainMessageAsSpam(message); } // close stream inputStream.close(); // set dirty flag hasChanged = true; } catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); } catch (NoSuchAlgorithmException nsae) {
try { CloneStreamMaster master = new CloneStreamMaster(istream); InputStream inputStream = master.getClone(); byte[] md5sum = MD5SumHelper.createMD5(inputStream); // close stream inputStream.close(); // get new inputstream inputStream = master.getClone(); Message message = new Message(inputStream, list, md5sum); // check if this message was already learned if (db.MD5SumExists(md5sum)) { // message already exists // --> correct token data filter.correctMessageAsHam(message); } else { // new message filter.trainMessageAsHam(message); } // close stream inputStream.close(); // set dirty flag hasChanged = true; } catch (IOException e1) { LOG.severe(e1.getMessage()); if (Logging.DEBUG) e1.printStackTrace(); } catch (NoSuchAlgorithmException nsae) {
Clone fragments detected by clone detection tool
File path: /columba-1.4-src/mail/src/main/java/org/columba/mail/spam/MacchiatoPlugin.java File path: /columba-1.4-src/mail/src/main/java/org/columba/mail/spam/MacchiatoPlugin.java
Method name: Method name:
Number of AST nodes: 0 Number of AST nodes: 0
1
try {
1
try {
2
			CloneStreamMaster master = new CloneStreamMaster(istream);
2
			CloneStreamMaster master = new CloneStreamMaster(istream);
3
			InputStream inputStream = master.getClone();
3
			InputStream inputStream = master.getClone();
4
			byte[] md5sum = MD5SumHelper.createMD5(inputStream);
4
			byte[] md5sum = MD5SumHelper.createMD5(inputStream);
5
			// close stream
5
			// close stream
6
			inputStream.close();
6
			inputStream.close();
7
			// get new inputstream
7
			// get new inputstream
8
			inputStream = master.getClone();
8
			inputStream = master.getClone();
9
			Message message = new Message(inputStream, list, md5sum);
9
			Message message = new Message(inputStream, list, md5sum);
10
			// check if this message was already learned
10
			// check if this message was already learned
11
			// -> only add if this is not the case
11
			
12
			if (db.MD5SumExists(md5sum)) {
12
if (db.MD5SumExists(md5sum)) {
13
				// message already exists
13
				// message already exists
14
				// --> correct token data
14
				// --> correct token data
15
				filter.correctMessageAsSpam(message);
15
				filter.correctMessageAsHam(message);
16
			} else {
16
			} else {
17
				// new message
17
				// new message
18
				filter.trainMessageAsSpam(message);
18
				filter.trainMessageAsHam(message);
19
			}
19
			}
20
			// close stream
20
			// close stream
21
			inputStream.close();
21
			inputStream.close();
22
			// set dirty flag
22
			// set dirty flag
23
			hasChanged = true;
23
			hasChanged = true;
24
		} catch (IOException e1) {
24
		} catch (IOException e1) {
25
			LOG.severe(e1.getMessage());
25
			LOG.severe(e1.getMessage());
26
			if (Logging.DEBUG)
26
			if (Logging.DEBUG)
27
				e1.printStackTrace();
27
				e1.printStackTrace();
28
		} catch (NoSuchAlgorithmException nsae) {
28
		} catch (NoSuchAlgorithmException nsae) {
29
		
29
		
Summary
Number of common nesting structure subtrees0
Number of refactorable cases0
Number of non-refactorable cases0
Time elapsed for finding largest common nesting structure subtrees (ms)0.0
Clones location
Number of node comparisons0