importmatcher.java

来自「开源项目CRM之OpenCustomer」· Java 代码 · 共 88 行

JAVA
88
字号
package org.opencustomer.mail.james;

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.StringTokenizer;

import javax.mail.MessagingException;

import org.apache.mailet.GenericMatcher;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
import org.opencustomer.application.db.dao.crm.PersonDAO;
import org.opencustomer.db.Database;

public class ImportMatcher extends GenericMatcher
{
    private Collection adresses;

    private Set<String> blacklist;

    public void init() throws MessagingException
    {
        Database.doInit();

        StringTokenizer st = new StringTokenizer(getCondition(), ", \t", false);
        blacklist = new HashSet<String>();
        while (st.hasMoreTokens())
        {
            blacklist.add(st.nextToken());
        }
    }

    public Collection match(Mail mail) throws MessagingException
    {
        // System.out.println("OcImport");
        
        boolean rcnfound = true;

        // Blacklist
        boolean found = false;
        Collection<MailAddress> recipients = mail.getRecipients();
        Collection<MailAddress> addresses = new HashSet<MailAddress>();
        addresses.addAll(recipients);
        addresses.add(mail.getSender());
        
        for(MailAddress address : addresses)
        {
            Iterator bit = blacklist.iterator();
            found = false;
            String addressitem = address.toString();
            for(String pattern : blacklist)
            {
                if (addressitem.contains(pattern))
                {
                    found = true;
                    break;
                }
            }
            if (!found)
                break;
        }
        if (found)
            return null;

        // Emfaenger im OC
        if (new PersonDAO().getByMail(mail.getSender().toString()).isEmpty())
            return null;

        // Absender im OC
        for (MailAddress address : recipients)
        {
            if (!(new PersonDAO().getByMail(address.toString()).isEmpty()))
                rcnfound = false;
        }
        if (rcnfound)
            return null;

        return mail.getRecipients();
    }

    public void destroy()
    {
        Database.closeFactory();
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?