package oracle.otnsamples.ibfbs.admin.ejb;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.naming.Context;
import javax.naming.InitialContext;
public class AlertQueue
implements MessageDrivenBean, MessageListener {
private transient MessageDrivenContext messageContext;
private MailServiceHome mailServiceHome = null;
public void ejbCreate() {
try {
Context ctx = new InitialContext();
mailServiceHome = (MailServiceHome)ctx.lookup("MailService");
} catch(Exception ex) {
System.err.println(" AlertQueue.ejbCreate: Error initializing MailService "+
ex.toString());
}
}
public void onMessage(Message message) {
try {
MailService mailService = mailServiceHome.create();
if(message.getStringProperty("alertMode").equals("M")) {
mailService.sendMail(message.getStringProperty("mobile"),
"alerts@fbs.com", "Stock Price Alert",
getTextMsg(message.getStringProperty("accountNumber"),
message.getStringProperty("name"),
message.getStringProperty("symbol"),
message.getStringProperty("minlimit"),
message.getStringProperty("maxlimit"),
message.getFloatProperty("rate")));
} else {
mailService.sendMail(message.getStringProperty("email"),
"alerts@fbs.com", "Stock Price Alert",
getHTMLMsg(message.getStringProperty("accountNumber"),
message.getStringProperty("name"),
message.getStringProperty("symbol"),
message.getStringProperty("minlimit"),
message.getStringProperty("maxlimit"),
message.getFloatProperty("rate")));
}
} catch(Exception ex) {
System.out.println(" AlertQueue.onMessage(): Error sending Alert : "+ex.toString());
}
}
private String getHTMLMsg(String accountNumber, String name, String symbol,
String minlimit, String maxlimit, float rate) {
StringBuffer sb = new StringBuffer();
sb.append("<br><br>").append(" Hi,<br><br>")
.append("<h4><u>Alert Details</u></h4>").append("<table border='1'>")
.append(" <tr><th> Account Number</th><td>").append(accountNumber)
.append("</td></tr>")
.append(" <tr><th> Name</th><td>" + name + "</td></tr>")
.append(" <tr><th> Symbol</th><td>" + symbol + "</td></tr>")
.append(" <tr><th> Min Limit</th><td>" + minlimit + "</td></tr>")
.append(" <tr><th> Max Limit</th><td>" + maxlimit + "</td></tr>")
.append(" <tr><th> Current Stock Price</th><th>" + rate + "</th></tr>")
.append("</table><br>")
.append("<font color='##990000' size='3'><b> You have a Stock Alert !!")
.append("</b></font><br><br>")
.append("<br><br>Happy Trading !! <br> FBS Team.");
return sb.toString();
}
private String getTextMsg(String accountNumber, String name, String symbol,
String minlimit, String maxlimit, float rate) {
StringBuffer sb = new StringBuffer();
sb.append("\nAlert Details \n\n")
.append("Account Number" + accountNumber + "\n")
.append("Name :" + name + "\n").append("Symbol :" + symbol + "\n")
.append("Min Limit :" + minlimit + "\n")
.append("Max Limit :" + maxlimit + "\n")
.append("Current Stock Price :" + rate + "\n");
return sb.toString();
}
public void setMessageDrivenContext(MessageDrivenContext context) {
messageContext = context;
}
public void ejbRemove() {
}
}