⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jobmatch.java

📁 21天精通Java,这是一本英文书
💻 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 JobLocalHome jobHome;
    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().getName();
            Collection skills = job.getSkills();
            Collection jobSkills = new ArrayList();
            Iterator jobIt = skills.iterator();
            while (jobIt.hasNext()) {
                SkillLocal js = (SkillLocal)jobIt.next();
                jobSkills.add(js.getName());
            }
            Collection col = applicantHome.findByLocation(location);
            Iterator appIter = col.iterator();
            while (appIter.hasNext()) {
                ApplicantLocal app = (ApplicantLocal)appIter.next();
                Collection appSkills = app.getSkills();
                int skillMatch = 0;
                Iterator appSkillIter = appSkills.iterator();
                while (appSkillIter.hasNext()) {
                    SkillLocal appSkill = (SkillLocal)appSkillIter.next();
                    if (jobSkills.contains(appSkill.getName()))
                       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 {
            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 = "JobMatch: "+msg + "\n" + ex;
        System.out.println(s);
        throw new EJBException(s,ex);
    }
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -