【Java开源代码栏目提醒】:网学会员在Java开源代码频道为大家收集整理了ApplicantMatch.java提供大家参考,希望对大家有所帮助!
package data;
import java.util.*;
import javax.ejb.*;
import javax.jms.*;
import javax.naming.*;
public class ApplicantMatch implements MessageDrivenBean, MessageListener
{
private ApplicantLocalHome applicantHome;
private JobLocalHome jobHome;
private MatchedLocalHome matchedHome;
public void onMessage(Message message) {
String login = null;
if (!(message instanceof TextMessage)) {
System.out.println("ApplicantMatch: bad message:" + message.getClass());
return;
}
try {
login = ((TextMessage)message).getText();
if (! message.getBooleanProperty("NewApplicant")) {
matchedHome.deleteByApplicant(login);
}
}
catch (JMSException ex) {
error ("Error getting JMS property: NewApplicant",ex);
}
try {
ApplicantLocal applicant = applicantHome.findByPrimaryKey(login);
String location = applicant.getLocation().getName();
Collection skills = applicant.getSkills();
Collection appSkills = new ArrayList();
Iterator appIt = skills.iterator();
while (appIt.hasNext()) {
SkillLocal as = (SkillLocal)appIt.next();
appSkills.add(as.getName());
}
Collection col = jobHome.findByLocation(location);
Iterator jobsIter = col.iterator();
while (jobsIter.hasNext()) {
JobLocal job = (JobLocal)jobsIter.next();
Collection jobSkills = job.getSkills();
int skillMatch = 0;
Iterator jobSkillIter = jobSkills.iterator();
while (jobSkillIter.hasNext()) {
SkillLocal jobSkill = (SkillLocal)jobSkillIter.next();
if (appSkills.contains(jobSkill.getName()))
skillMatch++;
}
if (jobSkills.size() > 0 && skillMatch == 0)
continue;
boolean exact = skillMatch == jobSkills.size();
MatchedPK key = new MatchedPK(login,job.getRef(),job.getCustomer());
try {
matchedHome.create(key.getApplicant(),key.getJob(),key.getCustomer(), exact);
}
catch (CreateException ex) {
System.out.println("ApplicantMatch: failed to create matched entry: "+key);
}
}
}
catch (FinderException ex) {
System.out.println("ApplicantMatch: failed to find applicant data: "+login);
}
catch (RuntimeException ex) {
System.out.println("ApplicantMatch: "+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 {
jobHome = (JobLocalHome)ic.lookup("java:comp/env/ejb/JobLocal");
}
catch (NamingException ex) {
error("Error connecting to java:comp/env/ejb/JobLocal:",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;
jobHome = null;
matchedHome = null;
}
private void error (String msg, Exception ex) {
String s = "ApplicantMatch: "+msg + "\n" + ex;
System.out.println(s);
throw new EJBException(s,ex);
}
}
上一篇:
ApplicantLocalHome.java
下一篇:
基于web二手汽车交易管理系统(含录像)