Example usage for javax.mail.search ComparisonTerm LT

List of usage examples for javax.mail.search ComparisonTerm LT

Introduction

In this page you can find the example usage for javax.mail.search ComparisonTerm LT.

Prototype

int LT

To view the source code for javax.mail.search ComparisonTerm LT.

Click Source Link

Usage

From source file:search.java

public static void main(String argv[]) {
    int optind;/*from  ww w  . j a  v a 2  s .  co  m*/

    String subject = null;
    String from = null;
    boolean or = false;
    boolean today = false;
    int size = -1;

    for (optind = 0; optind < argv.length; optind++) {
        if (argv[optind].equals("-T")) {
            protocol = argv[++optind];
        } else if (argv[optind].equals("-H")) {
            host = argv[++optind];
        } else if (argv[optind].equals("-U")) {
            user = argv[++optind];
        } else if (argv[optind].equals("-P")) {
            password = argv[++optind];
        } else if (argv[optind].equals("-or")) {
            or = true;
        } else if (argv[optind].equals("-D")) {
            debug = true;
        } else if (argv[optind].equals("-f")) {
            mbox = argv[++optind];
        } else if (argv[optind].equals("-L")) {
            url = argv[++optind];
        } else if (argv[optind].equals("-subject")) {
            subject = argv[++optind];
        } else if (argv[optind].equals("-from")) {
            from = argv[++optind];
        } else if (argv[optind].equals("-today")) {
            today = true;
        } else if (argv[optind].equals("-size")) {
            size = Integer.parseInt(argv[++optind]);
        } else if (argv[optind].equals("--")) {
            optind++;
            break;
        } else if (argv[optind].startsWith("-")) {
            System.out.println("Usage: search [-D] [-L url] [-T protocol] [-H host] "
                    + "[-U user] [-P password] [-f mailbox] "
                    + "[-subject subject] [-from from] [-or] [-today]");
            System.exit(1);
        } else {
            break;
        }
    }

    try {

        if ((subject == null) && (from == null) && !today && size < 0) {
            System.out.println("Specify either -subject, -from, -today, or -size");
            System.exit(1);
        }

        // Get a Properties object
        Properties props = System.getProperties();

        // Get a Session object
        Session session = Session.getInstance(props, null);
        session.setDebug(debug);

        // Get a Store object
        Store store = null;
        if (url != null) {
            URLName urln = new URLName(url);
            store = session.getStore(urln);
            store.connect();
        } else {
            if (protocol != null)
                store = session.getStore(protocol);
            else
                store = session.getStore();

            // Connect
            if (host != null || user != null || password != null)
                store.connect(host, user, password);
            else
                store.connect();
        }

        // Open the Folder

        Folder folder = store.getDefaultFolder();
        if (folder == null) {
            System.out.println("Cant find default namespace");
            System.exit(1);
        }

        folder = folder.getFolder(mbox);
        if (folder == null) {
            System.out.println("Invalid folder");
            System.exit(1);
        }

        folder.open(Folder.READ_ONLY);
        SearchTerm term = null;

        if (subject != null)
            term = new SubjectTerm(subject);
        if (from != null) {
            FromStringTerm fromTerm = new FromStringTerm(from);
            if (term != null) {
                if (or)
                    term = new OrTerm(term, fromTerm);
                else
                    term = new AndTerm(term, fromTerm);
            } else
                term = fromTerm;
        }
        if (today) {
            Calendar c = Calendar.getInstance();
            c.set(Calendar.HOUR, 0);
            c.set(Calendar.MINUTE, 0);
            c.set(Calendar.SECOND, 0);
            c.set(Calendar.MILLISECOND, 0);
            c.set(Calendar.AM_PM, Calendar.AM);
            ReceivedDateTerm startDateTerm = new ReceivedDateTerm(ComparisonTerm.GE, c.getTime());
            c.add(Calendar.DATE, 1); // next day
            ReceivedDateTerm endDateTerm = new ReceivedDateTerm(ComparisonTerm.LT, c.getTime());
            SearchTerm dateTerm = new AndTerm(startDateTerm, endDateTerm);
            if (term != null) {
                if (or)
                    term = new OrTerm(term, dateTerm);
                else
                    term = new AndTerm(term, dateTerm);
            } else
                term = dateTerm;
        }

        if (size >= 0) {
            SizeTerm sizeTerm = new SizeTerm(ComparisonTerm.GT, size);
            if (term != null) {
                if (or)
                    term = new OrTerm(term, sizeTerm);
                else
                    term = new AndTerm(term, sizeTerm);
            } else
                term = sizeTerm;
        }

        Message[] msgs = folder.search(term);
        System.out.println("FOUND " + msgs.length + " MESSAGES");
        if (msgs.length == 0) // no match
            System.exit(1);

        // Use a suitable FetchProfile
        FetchProfile fp = new FetchProfile();
        fp.add(FetchProfile.Item.ENVELOPE);
        folder.fetch(msgs, fp);

        for (int i = 0; i < msgs.length; i++) {
            System.out.println("--------------------------");
            System.out.println("MESSAGE #" + (i + 1) + ":");
            dumpPart(msgs[i]);
        }

        folder.close(false);
        store.close();
    } catch (Exception ex) {
        System.out.println("Oops, got exception! " + ex.getMessage());
        ex.printStackTrace();
    }

    System.exit(1);
}

From source file:edu.stanford.muse.email.Filter.java

public SearchTerm convertToSearchTerm(boolean useReceivedDateTerms) {
    // FLAG DEBUG: end date = null
    //endDate = null;
    SearchTerm sentOnlyTerm = null;//from www  .  j  a v  a  2  s .co  m
    if (sentMessagesOnly) {
        List<SearchTerm> fromAddrTerms = new ArrayList<SearchTerm>();
        if (ownCI != null) {
            for (String e : ownCI.emails)
                try {
                    fromAddrTerms.add(new FromTerm(new InternetAddress(e, ""))); // the name doesn't matter for equality of InternetAddress            
                } catch (Exception ex) {
                    Util.print_exception(ex, log);
                }

            // or all the from terms (not and)
            if (fromAddrTerms.size() >= 1) {
                sentOnlyTerm = fromAddrTerms.get(0);
                for (int i = 1; i < fromAddrTerms.size(); i++)
                    sentOnlyTerm = new OrTerm(sentOnlyTerm, fromAddrTerms.get(i));
            }
        }
    }

    SearchTerm result = sentOnlyTerm;

    if (startDate != null) {
        SearchTerm startTerm = useReceivedDateTerms ? new ReceivedDateTerm(ComparisonTerm.GT, startDate)
                : new SentDateTerm(ComparisonTerm.GT, startDate);
        if (result != null)
            result = new AndTerm(result, startTerm);
        else
            result = startTerm;
    }

    if (endDate != null) {
        SearchTerm endTerm = useReceivedDateTerms ? new ReceivedDateTerm(ComparisonTerm.LT, endDate)
                : new SentDateTerm(ComparisonTerm.LT, endDate);
        if (result != null)
            result = new AndTerm(result, endTerm);
        else
            result = endTerm;
    }

    if (keywords != null)
        for (String s : keywords) {
            if (Util.nullOrEmpty(s))
                continue;
            // look for this keyword in both subject and body
            SearchTerm sTerm = new OrTerm(new BodyTerm(s), new SubjectTerm(s));
            if (result != null)
                result = new AndTerm(result, sTerm);
            else
                result = sTerm;
        }
    return result;
}

From source file:org.exist.xquery.modules.mail.MessageListFunctions.java

private int parseComparisonAttribute(Node terms) throws XPathException {
    int cp = ComparisonTerm.EQ;

    String comp = ((Element) terms).getAttribute("comparison");

    if (comp != null && comp.length() > 0) {
        if (comp.equalsIgnoreCase("eq")) {
            cp = ComparisonTerm.EQ;//  www .j av a  2  s  . com
        } else if (comp.equalsIgnoreCase("ge")) {
            cp = ComparisonTerm.GE;
        } else if (comp.equalsIgnoreCase("gt")) {
            cp = ComparisonTerm.GT;
        } else if (comp.equalsIgnoreCase("le")) {
            cp = ComparisonTerm.LE;
        } else if (comp.equalsIgnoreCase("lt")) {
            cp = ComparisonTerm.LT;
        } else if (comp.equalsIgnoreCase("ne")) {
            cp = ComparisonTerm.NE;
        } else {
            throw (new XPathException(this, "Invalid comparison: " + comp + ", for term with type: "
                    + ((Element) terms).getAttribute("type")));
        }
    } else {
        throw (new XPathException(this, "comparison attribute must be specified for term with type: "
                + ((Element) terms).getAttribute("type")));
    }

    return (cp);
}

From source file:org.pentaho.di.job.entries.getpop.MailConnection.java

/**
 * Set filter on message received date./*from  w  w w  .  ja  v a  2  s.co  m*/
 *
 * @param futureDate
 *          messages will be filtered on futureDate
 */
public void setReceivedDateTermLT(Date futureDate) {
    if (this.protocol == MailConnectionMeta.PROTOCOL_POP3) {
        log.logError(BaseMessages.getString(PKG, "MailConnection.Error.ReceivedDatePOP3Unsupported"));
    } else {
        addSearchTerm(new ReceivedDateTerm(ComparisonTerm.LT, futureDate));
    }
}

From source file:org.pentaho.di.job.entries.getpop.MailConnection.java

public void setReceivedDateTermBetween(Date beginDate, Date endDate) {
    if (this.protocol == MailConnectionMeta.PROTOCOL_POP3) {
        log.logError(BaseMessages.getString(PKG, "MailConnection.Error.ReceivedDatePOP3Unsupported"));
    } else {/*from   w  w w.  j  av a 2s.  c om*/
        addSearchTerm(new AndTerm(new ReceivedDateTerm(ComparisonTerm.LT, endDate),
                new ReceivedDateTerm(ComparisonTerm.GT, beginDate)));
    }
}