com.softlanding.rse.extensions.messages.MessageHandler.java Source code

Java tutorial

Introduction

Here is the source code for com.softlanding.rse.extensions.messages.MessageHandler.java

Source

/*******************************************************************************
 * Copyright (c) 2005-2009 SoftLanding Systems, Inc. and others.
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Common Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/cpl-v10.html
 * 
 * Contributors:
 *     SoftLanding - initial API and implementation
 *******************************************************************************/
package com.softlanding.rse.extensions.messages;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;

import com.ibm.as400.access.QueuedMessage;
import com.softlanding.rse.extensions.ExtensionsPlugin;

public class MessageHandler implements IMessageHandler {
    private QueuedMessageSubSystem queuedMessageSubSystem;
    private QueuedMessage msg;
    private boolean remove;

    public MessageHandler(QueuedMessageSubSystem queuedMessageSubSystem, boolean remove) {
        super();
        this.queuedMessageSubSystem = queuedMessageSubSystem;
        this.remove = remove;
    }

    public void handleMessage(QueuedMessage message, MonitoredMessageQueue messageQueue) {
        String monString = queuedMessageSubSystem.getVendorAttribute(MonitoringProperties.VENDOR_ID,
                MonitoringProperties.MONITOR);
        if ((monString == null) || (monString.equals("false"))) //$NON-NLS-1$
            return;
        msg = message;
        Display.getDefault().syncExec(new Runnable() {
            public void run() {
                String handling;
                if (msg.getType() == QueuedMessage.INQUIRY) {
                    handling = queuedMessageSubSystem.getVendorAttribute(MonitoringProperties.VENDOR_ID,
                            MonitoringProperties.INQUIRY_NOTIFICATION);
                    if (handling == null)
                        handling = "Dialog"; //$NON-NLS-1$
                } else {
                    handling = queuedMessageSubSystem.getVendorAttribute(MonitoringProperties.VENDOR_ID,
                            MonitoringProperties.INFORMATIONAL_NOTIFICATION);
                    if (handling == null)
                        handling = "eMail"; //$NON-NLS-1$
                }
                if (handling.equals("Beep")) //$NON-NLS-1$
                    Display.getDefault().beep();
                if (handling.equals("eMail")) { //$NON-NLS-1$
                    String eMail = queuedMessageSubSystem.getVendorAttribute(MonitoringProperties.VENDOR_ID,
                            MonitoringProperties.EMAIL_ADDRESS);
                    String from = queuedMessageSubSystem.getVendorAttribute(MonitoringProperties.VENDOR_ID,
                            MonitoringProperties.EMAIL_FROM);
                    String port = queuedMessageSubSystem.getVendorAttribute(MonitoringProperties.VENDOR_ID,
                            MonitoringProperties.EMAIL_PORT);
                    String host = queuedMessageSubSystem.getVendorAttribute(MonitoringProperties.VENDOR_ID,
                            MonitoringProperties.EMAIL_HOST);
                    if (from == null)
                        from = ExtensionsPlugin.getResourceString("MessageHandler.5") //$NON-NLS-1$
                                + queuedMessageSubSystem.getHost().getHostName();
                    if (port == null)
                        port = "25"; //$NON-NLS-1$
                    if ((eMail == null) || (eMail.trim().length() == 0) || (host == null)
                            || (host.trim().length() == 0)) {
                        if (MessageDialog.openQuestion(Display.getDefault().getActiveShell(),
                                ExtensionsPlugin.getResourceString("MessageHandler.7"), //$NON-NLS-1$
                                ExtensionsPlugin.getResourceString("MessageHandler.8"))) { //$NON-NLS-1$
                            QueuedMessageDialog dialog = new QueuedMessageDialog(
                                    Display.getDefault().getActiveShell(), msg);
                            Display.getDefault().beep();
                            dialog.open();
                            return;
                        }
                    }
                    MessageQueueMailMessenger messenger = new MessageQueueMailMessenger();
                    String[] recipients = { eMail };
                    messenger.setRecipients(recipients);
                    messenger.setMailFrom(from);
                    messenger.setPort(port);
                    messenger.setHost(host);
                    try {
                        messenger.sendMail(msg);
                    } catch (Exception e) {
                        String errorMessage = e.getMessage();
                        if (errorMessage == null)
                            errorMessage = e.toString();
                        errorMessage = errorMessage + ExtensionsPlugin.getResourceString("MessageHandler.9"); //$NON-NLS-1$
                        Display.getDefault().beep();
                        if (MessageDialog.openQuestion(Display.getDefault().getActiveShell(),
                                ExtensionsPlugin.getResourceString("MessageHandler.10"), errorMessage)) //$NON-NLS-1$
                            handling = "Dialog"; //$NON-NLS-1$
                    }
                }
                if (handling.equals("Dialog")) { //$NON-NLS-1$
                    Display.getDefault().beep();
                    QueuedMessageDialog dialog = new QueuedMessageDialog(Display.getDefault().getActiveShell(),
                            msg);
                    dialog.open();
                }
                if (remove && (msg.getType() != QueuedMessage.INQUIRY)) {
                    try {
                        msg.getQueue().remove(msg.getKey());
                    } catch (Exception e) {
                    }
                }
            }
        });
    }

}