1 | public void trainMessageAsSpam(IMailbox mailbox, Object uid)↵ | | 1 | public void trainMessageAsHam(IMailbox mailbox, Object uid)↵
|
2 | throws Exception {↵ | | 2 | throws Exception {↵
|
3 | // get inputstream of message body↵ | | 3 | // get inputstream of message body↵
|
4 | InputStream istream = CommandHelper.getBodyPart(mailbox, uid);↵ | | 4 | InputStream istream = CommandHelper.getBodyPart(mailbox, uid);↵
|
|
5 | // get headers↵ | | 5 | // get headers↵
|
6 | Header h = mailbox.getHeaderFields(uid, Message.HEADERFIELDS);↵ | | 6 | Header h = mailbox.getHeaderFields(uid, Message.HEADERFIELDS);↵
|
|
7 | // put headers in list↵ | | 7 | // put headers in list↵
|
8 | Enumeration e = h.getKeys();↵ | | 8 | Enumeration e = h.getKeys();↵
|
9 | List list = new ArrayList();↵ | | 9 | List list = new ArrayList();↵
|
|
10 | while (e.hasMoreElements()) {↵ | | 10 | while (e.hasMoreElements()) {↵
|
11 | String key = (String) e.nextElement();↵ | | 11 | String key = (String) e.nextElement();↵
|
12 | list.add(h.get(key));↵ | | 12 | list.add(h.get(key));↵
|
13 | }↵ | | 13 | }↵
|
|
14 | // load database from file↵ | | 14 | // load database from file↵
|
15 | load();↵ | | 15 | load();↵
|
|
16 | try {↵ | | 16 | try {↵
|
17 | CloneStreamMaster master = new CloneStreamMaster(istream);↵ | | 17 | CloneStreamMaster master = new CloneStreamMaster(istream);↵
|
18 | InputStream inputStream = master.getClone();↵ | | 18 | InputStream inputStream = master.getClone();↵
|
|
19 | byte[] md5sum = MD5SumHelper.createMD5(inputStream);↵ | | 19 | byte[] md5sum = MD5SumHelper.createMD5(inputStream);↵
|
20 | // close stream↵ | | 20 | // close stream↵
|
21 | inputStream.close();↵ | | 21 | inputStream.close();↵
|
|
22 | // get new inputstream↵ | | 22 | // get new inputstream↵
|
23 | inputStream = master.getClone();↵ | | 23 | inputStream = master.getClone();↵
|
|
24 | Message message = new Message(inputStream, list, md5sum);↵ | | 24 | Message message = new Message(inputStream, list, md5sum);↵
|
|
25 | // check if this message was already learned↵ | | 25 | // check if this message was already learned↵
|
26 | // -> only add if this is not the case↵ | | 26 | ↵
|
27 | if (db.MD5SumExists(md5sum)) {↵ | | 27 | if (db.MD5SumExists(md5sum)) {↵
|
28 | // message already exists↵ | | 28 | // message already exists↵
|
|
29 | // --> correct token data↵ | | 29 | // --> correct token data↵
|
30 | filter.correctMessageAsSpam(message);↵ | | 30 | filter.correctMessageAsHam(message);↵
|
31 | } else {↵ | | 31 | } else {↵
|
32 | // new message↵ | | 32 | // new message↵
|
|
33 | filter.trainMessageAsSpam(message);↵ | | 33 | filter.trainMessageAsHam(message);↵
|
34 | }↵ | | 34 | }↵
|
|
35 | // close stream↵ | | 35 | // close stream↵
|
36 | inputStream.close();↵ | | 36 | inputStream.close();↵
|
|
37 | // set dirty flag↵ | | 37 | // set dirty flag↵
|
38 | hasChanged = true;↵ | | 38 | hasChanged = true;↵
|
39 | } catch (IOException e1) {↵ | | 39 | } catch (IOException e1) {↵
|
40 | LOG.severe(e1.getMessage());↵ | | 40 | LOG.severe(e1.getMessage());↵
|
41 | if (Logging.DEBUG)↵ | | 41 | if (Logging.DEBUG)↵
|
42 | e1.printStackTrace();↵ | | 42 | e1.printStackTrace();↵
|
43 | } catch (NoSuchAlgorithmException nsae) {↵ | | 43 | } catch (NoSuchAlgorithmException nsae) {↵
|
44 | | | 44 |
|