📄 jobmatch.java
字号:
package data;
import java.util.*;
import javax.ejb.*;
import javax.jms.*;
import javax.naming.*;
public class JobMatch implements MessageDrivenBean, MessageListener
{
private ApplicantLocalHome applicantHome;
private ApplicantSkillLocalHome applicantSkillHome;
private JobLocalHome jobHome;
private JobSkillLocalHome jobSkillHome;
private MatchedLocalHome matchedHome;
public void onMessage(Message message) {
JobPK jobKey = null;
if (!(message instanceof TextMessage)) {
System.out.println("JobMatch: bad message:" + message.getClass());
return;
}
try {
String msg = ((TextMessage)message).getText();
int ix = msg.indexOf("+");
if (ix == -1)
throw new EJBException("JobMatch: Bad message format - missing +: "+msg);
jobKey = new JobPK(msg.substring(0,ix),msg.substring(ix+1));
if (! message.getBooleanProperty("NewJob")) {
matchedHome.deleteByJob(jobKey.getRef(),jobKey.getCustomer());
}
}
catch (JMSException ex) {
error ("Error getting JMS property: NewJob",ex);
}
try {
JobLocal job = jobHome.findByPrimaryKey(jobKey);
String location = job.getLocation();
Collection skills = jobSkillHome.findByJob(jobKey.getRef(),jobKey.getCustomer());
Collection jobSkills = new ArrayList();
Iterator jobIt = skills.iterator();
while (jobIt.hasNext()) {
JobSkillLocal js = (JobSkillLocal)jobIt.next();
jobSkills.add(js.getSkill());
}
Collection col = applicantHome.findByLocation(location);
Iterator appIter = col.iterator();
while (appIter.hasNext()) {
ApplicantLocal app = (ApplicantLocal)appIter.next();
Collection appSkills = applicantSkillHome.findByApplicant(app.getLogin());
int skillMatch = 0;
Iterator appSkillIter = appSkills.iterator();
while (appSkillIter.hasNext()) {
ApplicantSkillLocal appSkill = (ApplicantSkillLocal)appSkillIter.next();
if (jobSkills.contains(appSkill.getSkill()))
skillMatch++;
}
if (jobSkills.size() > 0 && skillMatch == 0)
continue;
boolean exact = skillMatch == jobSkills.size();
MatchedPK key = new MatchedPK(app.getLogin(),jobKey.getRef(),jobKey.getCustomer());
try {
matchedHome.create(key.getApplicant(),key.getJob(),key.getCustomer(), exact);
}
catch (CreateException ex) {
System.out.println("JobMatch: failed to create matched entry: "+key);
}
}
}
catch (FinderException ex) {
System.out.println("JobMatch: failed to find Job data: "+jobKey);
}
catch (RuntimeException ex) {
System.out.println("JobMatch: "+ex);
ex.printStackTrace();
throw ex;
}
}
// EJB methods start here
public void setMessageDrivenContext(MessageDrivenContext ctx) {
InitialContext ic = null;
try {
ic = new InitialContext();
applicantHome = (ApplicantLocalHome)ic.lookup("java:comp/env/ejb/ApplicantLocal");
}
catch (NamingException ex) {
error("Error connecting to java:comp/env/ejb/ApplicantLocal:",ex);
}
try {
applicantSkillHome = (ApplicantSkillLocalHome)ic.lookup("java:comp/env/ejb/ApplicantSkillLocal");
}
catch (NamingException ex) {
error("Error connecting to java:comp/env/ejb/ApplicantSkillLocal:",ex);
}
try {
jobHome = (JobLocalHome)ic.lookup("java:comp/env/ejb/JobLocal");
}
catch (NamingException ex) {
error("Error connecting to java:comp/env/ejb/JobLocal:",ex);
}
try {
jobSkillHome = (JobSkillLocalHome)ic.lookup("java:comp/env/ejb/JobSkillLocal");
}
catch (NamingException ex) {
error("Error connecting to java:comp/env/ejb/JobSkillLocal:",ex);
}
try {
matchedHome = (MatchedLocalHome)ic.lookup("java:comp/env/ejb/MatchedLocal");
}
catch (NamingException ex) {
error("Error connecting to java:comp/env/ejb/MatchedLocal:",ex);
}
}
public void ejbCreate(){
}
public void ejbRemove(){
applicantHome = null;
applicantSkillHome= null;
jobHome = null;
jobSkillHome = null;
matchedHome = null;
}
private void error (String msg, Exception ex) {
String s = "JobMatch: "+msg + "\n" + ex;
System.out.println(s);
throw new EJBException(s,ex);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -