Package er.javamail.mailer

Source Code of er.javamail.mailer.Application

//
// Application.java
// Project ERMailer
//
// Created by Max Muller on Tue Oct 22 2002
//
package er.javamail.mailer;

import java.util.Timer;

import com.webobjects.eocontrol.EOEditingContext;
import com.webobjects.foundation.NSArray;

import er.corebusinesslogic.ERCMailDelivery;
import er.corebusinesslogic.ERCMailMessage;
import er.corebusinesslogic.ERCoreBusinessLogic;
import er.extensions.appserver.ERXApplication;
import er.extensions.eof.ERXEC;
import er.extensions.foundation.ERXProperties;
import er.extensions.foundation.ERXUtilities;
import er.extensions.logging.ERXLogger;
import er.javamail.ERJavaMail;

public class Application extends ERXApplication {

    /** logging support */
    public static final ERXLogger log = ERXLogger.getERXLogger(Application.class);

    /**
     * Main initialization function.
     * @param argv command line arguements
     */
    public static void main(String argv[]) {
        ERXApplication.main(argv, Application.class);
    }

    /** holds a reference to the mail timer when launched in daemon mode */
    protected Timer mailTimer;
   
    /**
     * Public application constructor.
     */
    public Application() {
        super();
    }

    /**
     * Method invoked when the application has finished launching.
     * Either processes the outgoing mail and then exits or sets up
     * a daemon process to process the outgoing mail at the specified
     * daemon frequency which is specified in the property:
     * <b>er.javamail.mailer.ERBatchMailerDaemonFrequency</b>
     */
    @Override
    public void didFinishLaunching() {
        if (ERXProperties.booleanForKey("er.javamail.mailer.ERTestSendingMail"));
            testSendingMail();
        int frequency = ERXProperties.intForKey("er.javamail.mailer.ERBatchMailerDaemonFrequency");
        if (frequency > 0) {
            log.debug("Scheduling timer for frequency: " + frequency + "(s)");
            mailTimer = new Timer(true);
            mailTimer.schedule(new ERMailerTimerTask(), frequency*1000l, frequency*1000l);
        } else {
            ERMailer.instance().processOutgoingMail();
            log.debug("Done processing mail. Exiting.");
            System.exit(0);           
        }
    }

    public void testSendingMail() {
        log.info("Sending test mail");
        EOEditingContext ec = ERXEC.newEditingContext();
        ec.lock();
        try {
            if(false) {
                // ak: you may need to tweak with ERXSQLHelper.createSchemaSQLForEntitiesInModelWithName() options for this to work
                // if the tables weren't already present
                ERCoreBusinessLogic.sharedInstance().createTables(ec);
            }
            ERCMailMessage message = ERCMailDelivery.sharedInstance().composeEmail(ERJavaMail.sharedInstance().adminEmail(),
                    new NSArray(ERJavaMail.sharedInstance().adminEmail()),
                    new NSArray(ERJavaMail.sharedInstance().adminEmail()),
                    null,
                    "This is a test",
                    "This is the body",
                    ec);
            ec.saveChanges();
        } catch (Exception e) {
            log.error("Caught exception: " + e.getMessage() + " stack: " + ERXUtilities.stackTrace(e));
            System.exit(1);
        } finally {
            ec.unlock();
        }
        log.info("Done.");
    }   
}
TOP

Related Classes of er.javamail.mailer.Application

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.